From be51fc021f18aa6c0fc0006ebbc4fa34ebca4c62 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Thu, 23 Mar 2017 20:49:25 +0100 Subject: created bios/kernel source code structure --- sw/z80/crt0.s.old | 43 +++++++++++++++++++++++++++++++++++++++++++ sw/z80/kernel.c | 7 +++++++ sw/z80/loader.asm | 18 ++++++++++++++++++ sw/z80/serial.h | 15 +++++++++++++++ sw/z80/types.h | 9 +++++++++ sw/z80/zcc_opt.def | 6 ++++++ 6 files changed, 98 insertions(+) create mode 100644 sw/z80/crt0.s.old create mode 100644 sw/z80/kernel.c create mode 100644 sw/z80/loader.asm create mode 100644 sw/z80/serial.h create mode 100644 sw/z80/types.h create mode 100644 sw/z80/zcc_opt.def diff --git a/sw/z80/crt0.s.old b/sw/z80/crt0.s.old new file mode 100644 index 0000000..f3bf8e8 --- /dev/null +++ b/sw/z80/crt0.s.old @@ -0,0 +1,43 @@ + .module crt0 + .globl _main + + .area _HEADER (ABS) +;; reset vector + .org 0x0000 + jp init + + .org 0x0100 + +init: +;; Stack at the top of memory. + ld sp,#0xffff + + ;; initialise global variables + call gsinit + call _main + jp _exit + + ;; Ordering of segments for the linker. + .area _HOME + .area _CODE + .area _GSINIT + .area _GSFINAL + + .area _DATA + .area _BSS + .area _HEAP + + .area _CODE +__clock:: + ret + +_exit:: + ret + + .area _GSINIT + +gsinit:: + +.area _GSFINAL + ret + diff --git a/sw/z80/kernel.c b/sw/z80/kernel.c new file mode 100644 index 0000000..172eee1 --- /dev/null +++ b/sw/z80/kernel.c @@ -0,0 +1,7 @@ +#include "types.h" + + +void main(void) +{ + +} diff --git a/sw/z80/loader.asm b/sw/z80/loader.asm new file mode 100644 index 0000000..85f5abe --- /dev/null +++ b/sw/z80/loader.asm @@ -0,0 +1,18 @@ +; C crt0 loader +; + module crt0 + +; general scope declarations + extern _main ; C code + +; startup code + org 0000h ; reset vector + jp _start + +_start: + ld sp, 0xffff + call _main + jp _exit + +_exit: + ret diff --git a/sw/z80/serial.h b/sw/z80/serial.h new file mode 100644 index 0000000..3dc9b18 --- /dev/null +++ b/sw/z80/serial.h @@ -0,0 +1,15 @@ +#ifndef __SERIAL_H__ +#define __SERIAL_H__ + +#include "types.h" + +// define all +#define USART_BAUD_9600 +#define USART_BAUD_115200 + +uint8_t usart_registers[8]; +usart_registers = 0x80FF; // TODO: set real address + +void usart_init(int16_t baudprescale); + +#endif diff --git a/sw/z80/types.h b/sw/z80/types.h new file mode 100644 index 0000000..adde214 --- /dev/null +++ b/sw/z80/types.h @@ -0,0 +1,9 @@ +#ifndef __TYPES_H__ +#define __TYPES_H__ + +#define int8_t char +#define uint8_t unsigned char +#define int16_t int +#define uint16_t unsigned int + +#endif diff --git a/sw/z80/zcc_opt.def b/sw/z80/zcc_opt.def new file mode 100644 index 0000000..de830a9 --- /dev/null +++ b/sw/z80/zcc_opt.def @@ -0,0 +1,6 @@ + +IF !DEFINED_startup + defc DEFINED_startup = 1 + defc startup = 1 +ENDIF + -- cgit v1.2.1