From 43be150dc6e84f6f6eeb071cd3cdb7fc21125d60 Mon Sep 17 00:00:00 2001
From: Nao Pross <naopross@thearcway.org>
Date: Tue, 30 Oct 2018 11:41:24 +0100
Subject: Move sw to sw-old and hw to hw-altium, add kicad files

---
 sw-old/z80/tests/pio/crt0.s   | 38 +++++++++++++++++++++++
 sw-old/z80/tests/pio/main.c   | 50 ++++++++++++++++++++++++++++++
 sw-old/z80/tests/pio/makefile | 72 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 160 insertions(+)
 create mode 100644 sw-old/z80/tests/pio/crt0.s
 create mode 100644 sw-old/z80/tests/pio/main.c
 create mode 100644 sw-old/z80/tests/pio/makefile

(limited to 'sw-old/z80/tests/pio')

diff --git a/sw-old/z80/tests/pio/crt0.s b/sw-old/z80/tests/pio/crt0.s
new file mode 100644
index 0000000..c900065
--- /dev/null
+++ b/sw-old/z80/tests/pio/crt0.s
@@ -0,0 +1,38 @@
+    .module crt0
+    .area   _HEADER (ABS)
+
+;; Reset vectors
+    .org    0
+    jp  init
+
+    .org    0x38 ; the instruction 0xff (not written) resets to this location
+    jp init
+
+;; main code
+    .org    0x100
+    .globl  _main
+
+init:
+    ;; Set stack pointer directly above top of memory.
+    ld  sp,#0xffff
+
+    ;; Start of the program
+    call    _main
+    jp      _exit
+
+_exit:
+    halt
+    ; jp  _exit
+
+;; Ordering of segments for the linker.
+    .area   _HOME
+    .area   _CODE
+    .area   _INITIALIZER
+    .area   _GSINIT
+    .area   _GSFINAL
+
+    .area   _DATA
+    .area   _INITIALIZED
+    .area   _BSEG
+    .area   _BSS
+    .area   _HEAP
diff --git a/sw-old/z80/tests/pio/main.c b/sw-old/z80/tests/pio/main.c
new file mode 100644
index 0000000..7ac64bc
--- /dev/null
+++ b/sw-old/z80/tests/pio/main.c
@@ -0,0 +1,50 @@
+// #include "pio.h"
+
+#include <stdint.h>
+
+#define PIO_A_DATA  0x10
+#define PIO_B_DATA  0x11
+#define PIO_A_CMD   0x12
+#define PIO_B_CMD   0x13
+
+void main(void)
+{
+    __asm
+    ;; output variable
+    ld h, #0x00
+
+    ;; set bit mode
+    ld c, #PIO_B_CMD
+
+    ld a, #0xCF
+    out (c), a
+
+    ;; set all pins to output
+    ld a, #0x00
+    out (c), a
+
+    ;; disable interrupts
+    ld a, #0x0C
+    out (c), a
+
+    ;; load data addr
+    ld c, #PIO_B_DATA
+loop:
+    out (c), h
+    ld a, h
+
+    cpl
+    ld h, a
+    jr loop
+    __endasm; 
+
+    // uint8_t i = 0;
+
+    // pio_set_mode(PIO_A, PIO_MODE_BIT_IO, 0x00);
+    // pio_set_interrupts(PIO_A, PIO_INT_DISABLE);
+
+    // while (1) {
+    //     pio_write(PIO_A, i);
+    //     i = ~i;
+    // }
+}
\ No newline at end of file
diff --git a/sw-old/z80/tests/pio/makefile b/sw-old/z80/tests/pio/makefile
new file mode 100644
index 0000000..1213902
--- /dev/null
+++ b/sw-old/z80/tests/pio/makefile
@@ -0,0 +1,72 @@
+####
+# source code settings
+#
+OSNAME := pio_test
+ 
+CSOURCES 	:=  $(wildcard *.c)
+LIBS 		:= ../../arch/build/arch.a \
+			   ../../drivers/build/drivers.a
+
+OBJECTS 	:= $(patsubst %.c,build/%.rel,$(CSOURCES))
+HEXFILE		:= build/$(OSNAME).hex
+BINARY  	:= build/$(OSNAME).bin
+
+### 
+# compiler settings
+#
+CC 		:= sdcc
+
+CFLAGS	:= -mz80 \
+			--no-std-crt0 build/crt0.rel \
+			--allow-unsafe-read \
+			-I . \
+			-I ../../arch/include \
+			-I ../../drivers/include \
+			-DDEBUG
+
+LDFLAGS := -mz80 \
+			--no-std-crt0 build/crt0.rel \
+			-L ../../drivers/build \
+			-l drivers.a \
+			-pedantic \
+			--code-loc 0x0200
+			# --data-loc 0x2000
+
+.PHONY: flash dirs dis clean
+all: $(BINARY)
+
+flash: $(BINARY)
+	minipro -p M28C64 -w $< 
+
+# build binary
+$(BINARY): $(OBJECTS) dirs
+	$(CC) $(LDFLAGS) $(OBJECTS) -o $(HEXFILE)
+	makebin -s 8192 -yo 1 $(HEXFILE) $(BINARY)
+
+$(OBJECTS): build/%.rel : %.c $(CSOURCES) dirs build/crt0.rel $(LIBS)
+	@printf "\n"
+	$(CC) $(CFLAGS) -c $< -o $@
+
+$(LIBS): %.a:
+	@printf "\n"
+	make -C $(shell printf $@ | sed 's:build.*.::')
+
+build/crt0.rel: crt0.s
+	sdasz80 -o $<
+	@mv crt0.rel build/
+
+dirs:
+	mkdir -p build
+
+dis: $(BINARY)
+	dz80 -b -n -t $(BINARY)
+	r2 -a z80 $< \
+	-c 'afn main 0x200; \
+		pd 0x10; \
+		s 0x100; \
+		pd 10; \
+		s 0x200; \
+		pd 0x95' | tee build/dis.txt
+
+clean:
+	- rm -rd build
-- 
cgit v1.2.1