diff options
Diffstat (limited to 'sw-old/z80/arch')
-rw-r--r-- | sw-old/z80/arch/include/addresses.h | 15 | ||||
-rw-r--r-- | sw-old/z80/arch/include/sleep.h | 14 | ||||
-rw-r--r-- | sw-old/z80/arch/makefile | 27 | ||||
-rw-r--r-- | sw-old/z80/arch/sleep.c | 16 |
4 files changed, 72 insertions, 0 deletions
diff --git a/sw-old/z80/arch/include/addresses.h b/sw-old/z80/arch/include/addresses.h new file mode 100644 index 0000000..32f1997 --- /dev/null +++ b/sw-old/z80/arch/include/addresses.h @@ -0,0 +1,15 @@ +#ifndef __ADDRESSES_H__ +#define __ADDRESSES_H__ + +#define ADDR_DEV_ROM_L 0x0000 +#define ADDR_DEV_ROM_H 0x2000 + +#define ADDR_DEV_PIO 0x0010 +#define ADDR_DEV_CTC 0x0020 +#define ADDR_DEV_USART 0x0030 + +#define ADDR_DEV_MMU + +#define ADDR_DEV_RAM 0x8000 + +#endif diff --git a/sw-old/z80/arch/include/sleep.h b/sw-old/z80/arch/include/sleep.h new file mode 100644 index 0000000..bd4214b --- /dev/null +++ b/sw-old/z80/arch/include/sleep.h @@ -0,0 +1,14 @@ +#ifndef __SLEEP_H__ +#define __SLEEP_H__ + +#ifndef F_CPU +#error undefined CPU clock speed +#endif + +#define SLEEP_UNIT ((F_CPU/4)/2) + +#include <stdint.h> + +void usleep(uint16_t microseconds); + +#endif // __SLEEP_H__
\ No newline at end of file diff --git a/sw-old/z80/arch/makefile b/sw-old/z80/arch/makefile new file mode 100644 index 0000000..2763c10 --- /dev/null +++ b/sw-old/z80/arch/makefile @@ -0,0 +1,27 @@ +# Drivers library + +LIB := build/arch.a +SOURCES := $(wildcard *.c) +OBJECTS := $(patsubst %.c,build/%.rel,$(SOURCES)) + +F_CPU := 10000 + +CC := sdcc +AR := sdar +CFLAGS := -mz80 \ + -Iinclude \ + -DDEBUG \ + -DF_CPU=$(F_CPU) + +.PHONY: dirs clean +$(LIB): $(OBJECTS) + $(AR) rcs $@ $(OBJECTS) + +$(OBJECTS): build/%.rel: %.c $(SOURCES) dirs + $(CC) $(CFLAGS) -c $< -o $@ + +dirs: + mkdir -p build + +clean: + - rm -rd build diff --git a/sw-old/z80/arch/sleep.c b/sw-old/z80/arch/sleep.c new file mode 100644 index 0000000..154e7ec --- /dev/null +++ b/sw-old/z80/arch/sleep.c @@ -0,0 +1,16 @@ +#include "sleep.h" + +void usleep(uint16_t microseconds) +{ + __asm + pop hl +loop: + ld bc, #SLEEP_UNIT +unit: + nop + dec bc + jr nz, unit + dec hl + jr nz,loop + __endasm; +}
\ No newline at end of file |