summaryrefslogtreecommitdiffstats
path: root/sw/z80/tests/pio
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sw/z80/tests/pio/build/crt0.rel (renamed from sw/z80_tests/usart/build/crt0.rel)0
-rw-r--r--sw/z80/tests/pio/build/main.asm (renamed from sw/z80_tests/usart/build/main.asm)54
-rw-r--r--sw/z80/tests/pio/build/main.lst (renamed from sw/z80_tests/usart/build/main.lst)78
-rw-r--r--sw/z80/tests/pio/build/main.rel29
-rw-r--r--sw/z80/tests/pio/build/main.sym (renamed from sw/z80_tests/usart/build/main.sym)9
-rw-r--r--sw/z80/tests/pio/build/pio_test.lk (renamed from sw/z80_tests/usart/build/sample.lk)5
-rw-r--r--sw/z80/tests/pio/build/pio_test.map (renamed from sw/z80_tests/usart/build/sample.map)57
-rw-r--r--sw/z80/tests/pio/build/pio_test.noi (renamed from sw/z80_tests/usart/build/sample.noi)41
-rw-r--r--sw/z80/tests/pio/crt0.s (renamed from sw/z80_tests/usart/crt0.s)0
-rw-r--r--sw/z80/tests/pio/main.c12
-rw-r--r--sw/z80/tests/pio/makefile (renamed from sw/z80_tests/usart/makefile)22
11 files changed, 164 insertions, 143 deletions
diff --git a/sw/z80_tests/usart/build/crt0.rel b/sw/z80/tests/pio/build/crt0.rel
index 809c0e6..809c0e6 100644
--- a/sw/z80_tests/usart/build/crt0.rel
+++ b/sw/z80/tests/pio/build/crt0.rel
diff --git a/sw/z80_tests/usart/build/main.asm b/sw/z80/tests/pio/build/main.asm
index 44f199a..453eead 100644
--- a/sw/z80_tests/usart/build/main.asm
+++ b/sw/z80/tests/pio/build/main.asm
@@ -9,8 +9,8 @@
; Public variables in this module
;--------------------------------------------------------
.globl _main
- .globl _usart_write
- .globl _usart_init
+ .globl _pio_write
+ .globl _pio_set_mode
;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
@@ -47,44 +47,34 @@
; Function main
; ---------------------------------
_main::
-;main.c:5: usart_init(USART_BAUDRATE_1200, USART_PARITY_EVEN, USART_STOP_BITS_1);
- ld hl,#0x000a
+;main.c:7: pio_set_mode(PIO_A, PIO_MODE_BYTE_OUT, 0);
+ xor a, a
+ push af
+ inc sp
+ ld hl,#0x0001
push hl
- ld l, #0x01
+ ld l, #0x00
push hl
- ld l, #0x60
- push hl
- call _usart_init
- ld hl,#6
- add hl,sp
- ld sp,hl
-;main.c:6: usart_write("Hello, World!\n", 13);
- ld hl,#0x000d
- push hl
- ld hl,#___str_0
- push hl
- call _usart_write
+ call _pio_set_mode
pop af
pop af
-;main.c:8: while(1) {
+ inc sp
+;main.c:9: while (1) {
+ ld c,#0x00
00102$:
-;main.c:9: usart_write("done\n", 5);
- ld hl,#0x0005
+;main.c:10: pio_write(PIO_A, j++);
+ ld b,c
+ inc c
+ push bc
+ push bc
+ inc sp
+ ld hl,#0x0000
push hl
- ld hl,#___str_1
- push hl
- call _usart_write
- pop af
+ call _pio_write
pop af
+ inc sp
+ pop bc
jr 00102$
-___str_0:
- .ascii "Hello, World!"
- .db 0x0a
- .db 0x00
-___str_1:
- .ascii "done"
- .db 0x0a
- .db 0x00
.area _CODE
.area _INITIALIZER
.area _CABS (ABS)
diff --git a/sw/z80_tests/usart/build/main.lst b/sw/z80/tests/pio/build/main.lst
index c7b4201..4a1a872 100644
--- a/sw/z80_tests/usart/build/main.lst
+++ b/sw/z80/tests/pio/build/main.lst
@@ -9,8 +9,8 @@
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl _main
- 12 .globl _usart_write
- 13 .globl _usart_init
+ 12 .globl _pio_write
+ 13 .globl _pio_set_mode
14 ;--------------------------------------------------------
15 ; special function registers
16 ;--------------------------------------------------------
@@ -47,46 +47,34 @@
47 ; Function main
48 ; ---------------------------------
0000 49 _main::
- 50 ;main.c:5: usart_init(USART_BAUDRATE_1200, USART_PARITY_EVEN, USART_STOP_BITS_1);
- 0000 21 0A 00 [10] 51 ld hl,#0x000a
- 0003 E5 [11] 52 push hl
- 0004 2E 01 [ 7] 53 ld l, #0x01
- 0006 E5 [11] 54 push hl
- 0007 2E 60 [ 7] 55 ld l, #0x60
- 0009 E5 [11] 56 push hl
- 000A CDr00r00 [17] 57 call _usart_init
- 000D 21 06 00 [10] 58 ld hl,#6
- 0010 39 [11] 59 add hl,sp
- 0011 F9 [ 6] 60 ld sp,hl
- 61 ;main.c:6: usart_write("Hello, World!\n", 13);
- 0012 21 0D 00 [10] 62 ld hl,#0x000d
- 0015 E5 [11] 63 push hl
- 0016 21r2Er00 [10] 64 ld hl,#___str_0
- 0019 E5 [11] 65 push hl
- 001A CDr00r00 [17] 66 call _usart_write
- 001D F1 [10] 67 pop af
- 001E F1 [10] 68 pop af
- 69 ;main.c:8: while(1) {
- 001F 70 00102$:
- 71 ;main.c:9: usart_write("done\n", 5);
- 001F 21 05 00 [10] 72 ld hl,#0x0005
- 0022 E5 [11] 73 push hl
- 0023 21r3Dr00 [10] 74 ld hl,#___str_1
- 0026 E5 [11] 75 push hl
- 0027 CDr00r00 [17] 76 call _usart_write
- 002A F1 [10] 77 pop af
- 002B F1 [10] 78 pop af
- 002C 18 F1 [12] 79 jr 00102$
- 002E 80 ___str_0:
- 002E 48 65 6C 6C 6F 2C 81 .ascii "Hello, World!"
- 20 57 6F 72 6C 64
- 21
- 003B 0A 82 .db 0x0a
- 003C 00 83 .db 0x00
- 003D 84 ___str_1:
- 003D 64 6F 6E 65 85 .ascii "done"
- 0041 0A 86 .db 0x0a
- 0042 00 87 .db 0x00
- 88 .area _CODE
- 89 .area _INITIALIZER
- 90 .area _CABS (ABS)
+ 50 ;main.c:7: pio_set_mode(PIO_A, PIO_MODE_BYTE_OUT, 0);
+ 0000 AF [ 4] 51 xor a, a
+ 0001 F5 [11] 52 push af
+ 0002 33 [ 6] 53 inc sp
+ 0003 21 01 00 [10] 54 ld hl,#0x0001
+ 0006 E5 [11] 55 push hl
+ 0007 2E 00 [ 7] 56 ld l, #0x00
+ 0009 E5 [11] 57 push hl
+ 000A CDr00r00 [17] 58 call _pio_set_mode
+ 000D F1 [10] 59 pop af
+ 000E F1 [10] 60 pop af
+ 000F 33 [ 6] 61 inc sp
+ 62 ;main.c:9: while (1) {
+ 0010 0E 00 [ 7] 63 ld c,#0x00
+ 0012 64 00102$:
+ 65 ;main.c:10: pio_write(PIO_A, j++);
+ 0012 41 [ 4] 66 ld b,c
+ 0013 0C [ 4] 67 inc c
+ 0014 C5 [11] 68 push bc
+ 0015 C5 [11] 69 push bc
+ 0016 33 [ 6] 70 inc sp
+ 0017 21 00 00 [10] 71 ld hl,#0x0000
+ 001A E5 [11] 72 push hl
+ 001B CDr00r00 [17] 73 call _pio_write
+ 001E F1 [10] 74 pop af
+ 001F 33 [ 6] 75 inc sp
+ 0020 C1 [10] 76 pop bc
+ 0021 18 EF [12] 77 jr 00102$
+ 78 .area _CODE
+ 79 .area _INITIALIZER
+ 80 .area _CABS (ABS)
diff --git a/sw/z80/tests/pio/build/main.rel b/sw/z80/tests/pio/build/main.rel
new file mode 100644
index 0000000..bc2bd98
--- /dev/null
+++ b/sw/z80/tests/pio/build/main.rel
@@ -0,0 +1,29 @@
+XL2
+H 9 areas 4 global symbols
+M main
+O -mz80
+S _pio_set_mode Ref0000
+S .__.ABS. Def0000
+S _pio_write Ref0000
+A _CODE size 23 flags 0 addr 0
+S _main Def0000
+A _DATA size 0 flags 0 addr 0
+A _INITIALIZED size 0 flags 0 addr 0
+A _DABS size 0 flags 8 addr 0
+A _HOME size 0 flags 0 addr 0
+A _GSINIT size 0 flags 0 addr 0
+A _GSFINAL size 0 flags 0 addr 0
+A _INITIALIZER size 0 flags 0 addr 0
+A _CABS size 0 flags 8 addr 0
+T 00 00
+R 00 00 00 00
+T 00 00 AF F5 33 21 01 00 E5 2E 00 E5 CD 00 00 F1
+R 00 00 00 00 02 0D 00 00
+T 0E 00 F1 33 0E 00
+R 00 00 00 00
+T 12 00
+R 00 00 00 00
+T 12 00 41 0C C5 C5 33 21 00 00 E5 CD 00 00 F1 33
+R 00 00 00 00 02 0C 02 00
+T 20 00 C1 18 EF
+R 00 00 00 00
diff --git a/sw/z80_tests/usart/build/main.sym b/sw/z80/tests/pio/build/main.sym
index df02e0d..08d28a3 100644
--- a/sw/z80_tests/usart/build/main.sym
+++ b/sw/z80/tests/pio/build/main.sym
@@ -7,18 +7,17 @@ Symbol Table
.__.ABS. = 0000 G
.__.CPU. = 0000 L
.__.H$L. = 0000 L
- 0 ___str_0 002E R
- 0 ___str_1 003D R
0 _main 0000 GR
- _usart_init **** GX
- _usart_write **** GX
+ _pio_set_mode **** GX
+ _pio_write **** GX
+
ASxxxx Assembler V02.00 + NoICE + SDCC mods (Zilog Z80 / Hitachi HD64180), page 2.
Hexadecimal [16-Bits]
Area Table
- 0 _CODE size 43 flags 0
+ 0 _CODE size 23 flags 0
1 _DATA size 0 flags 0
2 _INITIALIZED size 0 flags 0
3 _DABS size 0 flags 8
diff --git a/sw/z80_tests/usart/build/sample.lk b/sw/z80/tests/pio/build/pio_test.lk
index dc99ff1..20c32cc 100644
--- a/sw/z80_tests/usart/build/sample.lk
+++ b/sw/z80/tests/pio/build/pio_test.lk
@@ -1,12 +1,13 @@
-mjwx
--i build/sample.hex
+-i build/pio_test.hex
-b _CODE = 0x0800
-b _DATA = 0x2000
+-k ../../drivers/build/
-k /usr/libexec/../share/sdcc/lib/z80
-k /usr/share/sdcc/lib/z80
+-l drivers.a
-l z80
build/crt0.rel
build/main.rel
-build/usart.rel
-e
diff --git a/sw/z80_tests/usart/build/sample.map b/sw/z80/tests/pio/build/pio_test.map
index e812f09..e91ef69 100644
--- a/sw/z80_tests/usart/build/sample.map
+++ b/sw/z80/tests/pio/build/pio_test.map
@@ -7,7 +7,7 @@ Area Addr Size Decimal Bytes (A
Value Global Global Defined In Module
----- -------------------------------- ------------------------
- 00000000 .__.ABS. usart
+ 00000000 .__.ABS. pio
00000000 l__BSEG
00000000 l__BSS
00000000 l__CABS
@@ -36,44 +36,41 @@ Area Addr Size Decimal Bytes (A
00000002 l__HEADER5
00000002 l__HEADER6
00000002 l__HEADER7
- 00000002 l__INITIALIZED
- 00000002 l__INITIALIZER
00000003 l__HEADER0
+ 00000004 l__INITIALIZED
+ 00000004 l__INITIALIZER
00000006 l__GSINIT
0000000C l__HEADER8
- 00000264 l__CODE
+ 000000FD l__CODE
00000800 s__CODE
- 00000A64 s__HOME
- 00000A64 s__INITIALIZER
- 00000A66 s__GSINIT
- 00000A6C s__GSFINAL
+ 000008FD s__HOME
+ 000008FD s__INITIALIZER
+ 00000901 s__GSINIT
+ 00000907 s__GSFINAL
00002000 s__DATA
00002000 s__INITIALIZED
- 00002002 s__BSEG
- 00002002 s__BSS
- 00002002 s__HEAP
+ 00002004 s__BSEG
+ 00002004 s__BSS
+ 00002004 s__HEAP
ASxxxx Linker V03.00 + NoICE + sdld, page 2.
Hexadecimal [32-Bits]
Area Addr Size Decimal Bytes (Attributes)
-------------------------------- ---- ---- ------- ----- ------------
-_CODE 00000800 00000264 = 612. bytes (REL,CON)
+_CODE 00000800 000000FD = 253. bytes (REL,CON)
Value Global Global Defined In Module
----- -------------------------------- ------------------------
00000800 __clock crt0
00000804 _exit crt0
0000080A _main main
- 0000084D _usart_set_baudrate usart
- 00000881 _usart_set_parity usart
- 000008D5 _usart_set_stop_bits usart
- 00000902 _usart_word_length usart
- 0000091B _usart_set_autoflow usart
- 00000955 _usart_init usart
- 0000097E _usart_transmit usart
- 00000999 _usart_receive usart
- 0000099E _usart_write usart
- 000009E5 _usart_read usart
+ 0000082D __pio_data pio
+ 00000847 __pio_control pio
+ 00000861 _pio_set_mode pio
+ 0000089D _pio_set_interrupts pio
+ 000008B0 _pio_set_interrupts_mask pio
+ 000008D7 _pio_read pio
+ 000008ED _pio_write pio
ASxxxx Linker V03.00 + NoICE + sdld, page 3.
Hexadecimal [32-Bits]
@@ -161,7 +158,7 @@ Hexadecimal [32-Bits]
Area Addr Size Decimal Bytes (Attributes)
-------------------------------- ---- ---- ------- ----- ------------
-_INITIALIZER 00000A64 00000002 = 2. bytes (REL,CON)
+_INITIALIZER 000008FD 00000004 = 4. bytes (REL,CON)
Value Global Global Defined In Module
----- -------------------------------- ------------------------
@@ -170,18 +167,18 @@ Hexadecimal [32-Bits]
Area Addr Size Decimal Bytes (Attributes)
-------------------------------- ---- ---- ------- ----- ------------
-_GSINIT 00000A66 00000006 = 6. bytes (REL,CON)
+_GSINIT 00000901 00000006 = 6. bytes (REL,CON)
Value Global Global Defined In Module
----- -------------------------------- ------------------------
- 00000A66 gsinit crt0
+ 00000901 gsinit crt0
ASxxxx Linker V03.00 + NoICE + sdld, page 14.
Hexadecimal [32-Bits]
Area Addr Size Decimal Bytes (Attributes)
-------------------------------- ---- ---- ------- ----- ------------
-_GSFINAL 00000A6C 00000001 = 1. bytes (REL,CON)
+_GSFINAL 00000907 00000001 = 1. bytes (REL,CON)
Value Global Global Defined In Module
----- -------------------------------- ------------------------
@@ -190,7 +187,7 @@ Hexadecimal [32-Bits]
Area Addr Size Decimal Bytes (Attributes)
-------------------------------- ---- ---- ------- ----- ------------
-_INITIALIZED 00002000 00000002 = 2. bytes (REL,CON)
+_INITIALIZED 00002000 00000004 = 4. bytes (REL,CON)
Value Global Global Defined In Module
----- -------------------------------- ------------------------
@@ -200,7 +197,11 @@ Files Linked [ module(s) ]
build/crt0.rel [ crt0 ]
build/main.rel [ main ]
-build/usart.rel [ usart ]
+
+
+Libraries Linked [ object file ]
+
+../../drivers/build/drivers.a [ pio.rel ]
ASxxxx Linker V03.00 + NoICE + sdld, page 17.
diff --git a/sw/z80_tests/usart/build/sample.noi b/sw/z80/tests/pio/build/pio_test.noi
index 6d97288..3ddefe7 100644
--- a/sw/z80_tests/usart/build/sample.noi
+++ b/sw/z80/tests/pio/build/pio_test.noi
@@ -27,34 +27,31 @@ DEF l__HEADER4 0x2
DEF l__HEADER5 0x2
DEF l__HEADER6 0x2
DEF l__HEADER7 0x2
-DEF l__INITIALIZED 0x2
-DEF l__INITIALIZER 0x2
DEF l__HEADER0 0x3
+DEF l__INITIALIZED 0x4
+DEF l__INITIALIZER 0x4
DEF l__GSINIT 0x6
DEF l__HEADER8 0xC
-DEF l__CODE 0x264
+DEF l__CODE 0xFD
DEF s__CODE 0x800
-DEF s__HOME 0xA64
-DEF s__INITIALIZER 0xA64
-DEF s__GSINIT 0xA66
-DEF s__GSFINAL 0xA6C
+DEF s__HOME 0x8FD
+DEF s__INITIALIZER 0x8FD
+DEF s__GSINIT 0x901
+DEF s__GSFINAL 0x907
DEF s__DATA 0x2000
DEF s__INITIALIZED 0x2000
-DEF s__BSEG 0x2002
-DEF s__BSS 0x2002
-DEF s__HEAP 0x2002
+DEF s__BSEG 0x2004
+DEF s__BSS 0x2004
+DEF s__HEAP 0x2004
DEF __clock 0x800
DEF _exit 0x804
DEF _main 0x80A
-DEF _usart_set_baudrate 0x84D
-DEF _usart_set_parity 0x881
-DEF _usart_set_stop_bits 0x8D5
-DEF _usart_word_length 0x902
-DEF _usart_set_autoflow 0x91B
-DEF _usart_init 0x955
-DEF _usart_transmit 0x97E
-DEF _usart_receive 0x999
-DEF _usart_write 0x99E
-DEF _usart_read 0x9E5
-DEF gsinit 0xA66
-LOAD build/sample.ihx
+DEF __pio_data 0x82D
+DEF __pio_control 0x847
+DEF _pio_set_mode 0x861
+DEF _pio_set_interrupts 0x89D
+DEF _pio_set_interrupts_mask 0x8B0
+DEF _pio_read 0x8D7
+DEF _pio_write 0x8ED
+DEF gsinit 0x901
+LOAD build/pio_test.ihx
diff --git a/sw/z80_tests/usart/crt0.s b/sw/z80/tests/pio/crt0.s
index c272f06..c272f06 100644
--- a/sw/z80_tests/usart/crt0.s
+++ b/sw/z80/tests/pio/crt0.s
diff --git a/sw/z80/tests/pio/main.c b/sw/z80/tests/pio/main.c
new file mode 100644
index 0000000..4b0bcdb
--- /dev/null
+++ b/sw/z80/tests/pio/main.c
@@ -0,0 +1,12 @@
+#include "pio.h"
+
+void main(void)
+{
+ uint8_t j = 0;
+
+ pio_set_mode(PIO_A, PIO_MODE_BYTE_OUT, 0);
+
+ while (1) {
+ pio_write(PIO_A, j++);
+ }
+}
diff --git a/sw/z80_tests/usart/makefile b/sw/z80/tests/pio/makefile
index 080f41c..bd9d5bf 100644
--- a/sw/z80_tests/usart/makefile
+++ b/sw/z80/tests/pio/makefile
@@ -1,13 +1,13 @@
####
# source code settings
#
-OSNAME := sample
+NAME := pio_test
-CSOURCES := $(wildcard *.c)
+CSOURCES := $(wildcard *.c)
OBJECTS := $(patsubst %.c,build/%.rel,$(CSOURCES))
-HEXFILE := build/$(OSNAME).hex
-BINARY := build/$(OSNAME).bin
+HEXFILE := build/$(NAME).hex
+BINARY := build/$(NAME).bin
###
# compiler settings
@@ -15,12 +15,18 @@ BINARY := build/$(OSNAME).bin
CC := sdcc
CFLAGS := -mz80 \
+ -pedantic \
-I . \
+ -I ../../arch \
+ -I ../../drivers/include \
-DDEBUG
-LDFLAGS := -mz80 --no-std-crt0 build/crt0.rel \
- --std-c89 -pedantic \
- --code-loc 0x0800 --data-loc 0x2000
+LDFLAGS := -mz80 \
+ -L ../../drivers/build/ \
+ -l drivers.a \
+ --no-std-crt0 build/crt0.rel \
+ --code-loc 0x0800 \
+ --data-loc 0x2000
.PHONY: dirs dis clean
all: $(BINARY)
@@ -28,8 +34,6 @@ all: $(BINARY)
# build binary
$(BINARY): $(OBJECTS) dirs
$(CC) $(LDFLAGS) $(OBJECTS) -o $(HEXFILE)
- @# xxd -r -p $(HEXFILE) $(BINARY)
- @# makebin -s 16384 $(HEXFILE) $(BINARY)
makebin -s 8192 $(HEXFILE) $(BINARY)
$(OBJECTS): build/%.rel : %.c $(CSOURCES) dirs build/crt0.rel