diff options
Diffstat (limited to 'sw/z80/arch')
-rw-r--r-- | sw/z80/arch/include/addresses.h (renamed from sw/z80/arch/addresses.h) | 0 | ||||
-rw-r--r-- | sw/z80/arch/include/sleep.h | 14 | ||||
-rw-r--r-- | sw/z80/arch/makefile | 27 | ||||
-rw-r--r-- | sw/z80/arch/sleep.c | 16 |
4 files changed, 57 insertions, 0 deletions
diff --git a/sw/z80/arch/addresses.h b/sw/z80/arch/include/addresses.h index 07ab473..07ab473 100644 --- a/sw/z80/arch/addresses.h +++ b/sw/z80/arch/include/addresses.h diff --git a/sw/z80/arch/include/sleep.h b/sw/z80/arch/include/sleep.h new file mode 100644 index 0000000..bd4214b --- /dev/null +++ b/sw/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/z80/arch/makefile b/sw/z80/arch/makefile new file mode 100644 index 0000000..2763c10 --- /dev/null +++ b/sw/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/z80/arch/sleep.c b/sw/z80/arch/sleep.c new file mode 100644 index 0000000..154e7ec --- /dev/null +++ b/sw/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 |