From 3b2f2ea6c6fbfcb23ea9ab324c83d602d45a8820 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Thu, 9 Nov 2017 13:17:35 +0100 Subject: Update makefile, and bug fix in pio driver and usart --- sw/z80/arch/addresses.h | 15 --------------- sw/z80/arch/include/addresses.h | 15 +++++++++++++++ sw/z80/arch/include/sleep.h | 14 ++++++++++++++ sw/z80/arch/makefile | 27 +++++++++++++++++++++++++++ sw/z80/arch/sleep.c | 16 ++++++++++++++++ 5 files changed, 72 insertions(+), 15 deletions(-) delete mode 100644 sw/z80/arch/addresses.h create mode 100644 sw/z80/arch/include/addresses.h create mode 100644 sw/z80/arch/include/sleep.h create mode 100644 sw/z80/arch/makefile create mode 100644 sw/z80/arch/sleep.c (limited to 'sw/z80/arch') diff --git a/sw/z80/arch/addresses.h b/sw/z80/arch/addresses.h deleted file mode 100644 index 07ab473..0000000 --- a/sw/z80/arch/addresses.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef __ADDRESSES_H__ -#define __ADDRESSES_H__ - -#define ADDR_DEV_ROM_L 0x0000 -#define ADDR_DEV_ROM_H 0x2000 - -#define ADDR_DEV_USART 0x4000 -#define ADDR_DEV_CTC 0x4100 -#define ADDR_DEV_PIO 0x4200 - -#define ADDR_DEV_MMU - -#define ADDR_DEV_RAM 0x8000 - -#endif diff --git a/sw/z80/arch/include/addresses.h b/sw/z80/arch/include/addresses.h new file mode 100644 index 0000000..07ab473 --- /dev/null +++ b/sw/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_USART 0x4000 +#define ADDR_DEV_CTC 0x4100 +#define ADDR_DEV_PIO 0x4200 + +#define ADDR_DEV_MMU + +#define ADDR_DEV_RAM 0x8000 + +#endif 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 + +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 -- cgit v1.2.1