diff options
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.rel | 29 | ||||
-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.c | 12 | ||||
-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 |