diff options
-rw-r--r-- | .gitignore | 61 | ||||
-rw-r--r-- | sw/z80/crt0.s.old | 43 | ||||
-rw-r--r-- | sw/z80/kernel.c | 7 | ||||
-rw-r--r-- | sw/z80/loader.asm | 18 | ||||
-rw-r--r-- | sw/z80/makefile | 27 | ||||
-rw-r--r-- | sw/z80/serial.h | 15 | ||||
-rw-r--r-- | sw/z80/types.h | 9 | ||||
-rw-r--r-- | sw/z80/zcc_opt.def | 6 |
8 files changed, 159 insertions, 27 deletions
@@ -13,36 +13,43 @@ doc/**/*.log ## sw related # autotools -sw/**/makefile -sw/**/makefile.in -sw/**/ar-lib -sw/**/mdate-sh -sw/**/py-compile -sw/**/test-driver -sw/**/ylwrap -sw/**/autom4te.cache -sw/**/autoscan.log -sw/**/autoscan-*.log -sw/**/aclocal.m4 -sw/**/compile -sw/**/config.guess -sw/**/config.h.in -sw/**/config.log -sw/**/config.status -sw/**/config.sub -sw/**/configure -sw/**/configure.scan -sw/**/depcomp -sw/**/install-sh -sw/**/missing -sw/**/stamp-h* -sw/**/build-aux -sw/**/ltmain.sh -sw/**/texinfo.tex -sw/**/.deps +sw/linux/**/makefile +sw/linux/**/makefile.in +sw/linux/**/ar-lib +sw/linux/**/mdate-sh +sw/linux/**/py-compile +sw/linux/**/test-driver +sw/linux/**/ylwrap +sw/linux/**/autom4te.cache +sw/linux/**/autoscan.log +sw/linux/**/autoscan-*.log +sw/linux/**/aclocal.m4 +sw/linux/**/compile +sw/linux/**/config.guess +sw/linux/**/config.h.in +sw/linux/**/config.log +sw/linux/**/config.status +sw/linux/**/config.sub +sw/linux/**/configure +sw/linux/**/configure.scan +sw/linux/**/depcomp +sw/linux/**/install-sh +sw/linux/**/missing +sw/linux/**/stamp-h* +sw/linux/**/build-aux +sw/linux/**/ltmain.sh +sw/linux/**/texinfo.tex +sw/linux/**/.deps # binaries sw/**/*.hex sw/**/*.bin sw/**/*.o sw/**/*.a + +# custom +various/* + +# sublime +z80.sublime-project +z80.sublime-workspace 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/makefile b/sw/z80/makefile new file mode 100644 index 0000000..94646a9 --- /dev/null +++ b/sw/z80/makefile @@ -0,0 +1,27 @@ +#### +# source code settings +# +OSNAME := helvetiOS + +CSOURCES := $(wildcard *.c) +BINARY := $(OSNAME).bin + +### +# compiler settings +# +CC := zcc +CARGS := -Wall -I . -DDEBUG -crt0 loader -asm z80asm -nostdlib + +all: $(BINARY) + +# build binary +$(BINARY): $(CSOURCES) + cp loader.asm loader.opt + $(CC) $(CARGS) $(CSOURCES) -o $@ + +dis: $(BINARY) + z80dasm -a -g 0h $< + +clean: + - rm $(BINARY) + - rm loader.opt 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 + |