This commit is contained in:
2026-08-23 15:47:46 +02:00
commit 11c508bc24
18 changed files with 1350 additions and 0 deletions

222
build/main.lst Normal file
View File

@@ -0,0 +1,222 @@
1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ISO C Compiler
3 ; Version 4.5.0 #15242 (Linux)
4 ;--------------------------------------------------------
5 .module main
6
7 .optsdcc -mz80 sdcccall(1)
8 ;--------------------------------------------------------
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl _main
12 .globl _delay_ms
13 .globl _io_in
14 .globl _io_out
15 ;--------------------------------------------------------
16 ; special function registers
17 ;--------------------------------------------------------
18 ;--------------------------------------------------------
19 ; ram data
20 ;--------------------------------------------------------
21 .area _DATA
22 ;--------------------------------------------------------
23 ; ram data
24 ;--------------------------------------------------------
25 .area _INITIALIZED
26 ;--------------------------------------------------------
27 ; absolute external ram data
28 ;--------------------------------------------------------
29 .area _DABS (ABS)
30 ;--------------------------------------------------------
31 ; global & static initialisations
32 ;--------------------------------------------------------
33 .area _HOME
34 .area _GSINIT
35 .area _GSFINAL
36 .area _GSINIT
37 ;--------------------------------------------------------
38 ; Home
39 ;--------------------------------------------------------
40 .area _HOME
41 .area _HOME
42 ;--------------------------------------------------------
43 ; code
44 ;--------------------------------------------------------
45 .area _CODE
46 ;main.c:19: static void acia_init(void)
47 ; ---------------------------------
48 ; Function acia_init
49 ; ---------------------------------
00000000 50 _acia_init:
51 ;main.c:21: io_out(ACIA_CTRL_STATUS, ACIA_CMD_MASTER_RESET);
00000000 2E 03 [ 7] 52 ld l, #0x03
00000002 3E 20 [ 7] 53 ld a, #0x20
00000004 CDr00r00 [17] 54 call _io_out
55 ;main.c:22: io_out(ACIA_CTRL_STATUS, ACIA_CMD_8N1_DIV16);
00000007 2E 15 [ 7] 56 ld l, #0x15
00000009 3E 20 [ 7] 57 ld a, #0x20
58 ;main.c:23: }
0000000B C3r00r00 [10] 59 jp _io_out
60 ;main.c:25: static uint8_t acia_status(void)
61 ; ---------------------------------
62 ; Function acia_status
63 ; ---------------------------------
0000000E 64 _acia_status:
65 ;main.c:27: return io_in(ACIA_CTRL_STATUS);
0000000E 3E 20 [ 7] 66 ld a, #0x20
67 ;main.c:28: }
00000010 C3r00r00 [10] 68 jp _io_in
69 ;main.c:30: static void acia_putc(uint8_t value)
70 ; ---------------------------------
71 ; Function acia_putc
72 ; ---------------------------------
00000013 73 _acia_putc:
00000013 6F [ 4] 74 ld l, a
75 ;main.c:32: while ((acia_status() & ACIA_STATUS_TDRE) == 0) {
00000014 76 00101$:
00000014 E5 [11] 77 push hl
00000015 CDr0Er00 [17] 78 call _acia_status
00000018 E1 [10] 79 pop hl
00000019 CB 4F [ 8] 80 bit 1, a
0000001B 28 F7 [12] 81 jr Z, 00101$
82 ;main.c:34: io_out(ACIA_DATA, value);
0000001D 3E 21 [ 7] 83 ld a, #0x21
84 ;main.c:35: }
0000001F C3r00r00 [10] 85 jp _io_out
86 ;main.c:37: static uint8_t acia_getc_nonblocking(uint8_t *value)
87 ; ---------------------------------
88 ; Function acia_getc_nonblocking
89 ; ---------------------------------
00000022 90 _acia_getc_nonblocking:
91 ;main.c:39: if ((acia_status() & ACIA_STATUS_RDRF) == 0) {
00000022 E5 [11] 92 push hl
00000023 CDr0Er00 [17] 93 call _acia_status
00000026 E1 [10] 94 pop hl
00000027 0F [ 4] 95 rrca
00000028 38 02 [12] 96 jr C, 00102$
97 ;main.c:40: return 0;
0000002A AF [ 4] 98 xor a, a
0000002B C9 [10] 99 ret
0000002C 100 00102$:
101 ;main.c:43: *value = io_in(ACIA_DATA);
0000002C E5 [11] 102 push hl
0000002D 3E 21 [ 7] 103 ld a, #0x21
0000002F CDr00r00 [17] 104 call _io_in
00000032 E1 [10] 105 pop hl
00000033 77 [ 7] 106 ld (hl), a
107 ;main.c:44: return 1;
00000034 3E 01 [ 7] 108 ld a, #0x01
109 ;main.c:45: }
00000036 C9 [10] 110 ret
111 ;main.c:47: static void acia_puts(const char *text)
112 ; ---------------------------------
113 ; Function acia_puts
114 ; ---------------------------------
00000037 115 _acia_puts:
116 ;main.c:49: while (*text) {
00000037 117 00101$:
00000037 7E [ 7] 118 ld a, (hl)
00000038 B7 [ 4] 119 or a, a
00000039 C8 [11] 120 ret Z
121 ;main.c:50: acia_putc((uint8_t)*text++);
0000003A 23 [ 6] 122 inc hl
0000003B E5 [11] 123 push hl
0000003C CDr13r00 [17] 124 call _acia_putc
0000003F E1 [10] 125 pop hl
126 ;main.c:52: }
00000040 18 F5 [12] 127 jr 00101$
128 ;main.c:54: void main(void)
129 ; ---------------------------------
130 ; Function main
131 ; ---------------------------------
00000042 132 _main::
00000042 F5 [11] 133 push af
134 ;main.c:57: uint8_t ch = 0;
00000043 FD 21 00 00 [14] 135 ld iy, #0
00000047 FD 39 [15] 136 add iy, sp
00000049 FD 36 00 00 [19] 137 ld 0 (iy), #0x00
138 ;main.c:59: io_out(PIO_A_CTRL, 0x0F);
0000004D 2E 0F [ 7] 139 ld l, #0x0f
0000004F 3E 42 [ 7] 140 ld a, #0x42
00000051 CDr00r00 [17] 141 call _io_out
142 ;main.c:60: io_out(PIO_A_DATA, 0x00);
00000054 2E 00 [ 7] 143 ld l, #0x00
00000056 3E 40 [ 7] 144 ld a, #0x40
00000058 CDr00r00 [17] 145 call _io_out
146 ;main.c:62: acia_init();
0000005B CDr00r00 [17] 147 call _acia_init
148 ;main.c:63: acia_puts("ACIA 6850 test ready\r\n");
0000005E 21rCAr00 [10] 149 ld hl, #___str_0
00000061 CDr37r00 [17] 150 call _acia_puts
00000064 FD 21 01 00 [14] 151 ld iy, #1
00000068 FD 39 [15] 152 add iy, sp
0000006A FD 36 00 00 [19] 153 ld 0 (iy), #0x00
0000006E 154 00106$:
155 ;main.c:66: uint8_t status = acia_status();
0000006E CDr0Er00 [17] 156 call _acia_status
157 ;main.c:68: if (acia_getc_nonblocking(&ch)) {
00000071 21 00 00 [10] 158 ld hl, #0
00000074 39 [11] 159 add hl, sp
00000075 CDr22r00 [17] 160 call _acia_getc_nonblocking
00000078 B7 [ 4] 161 or a, a
00000079 28 2A [12] 162 jr Z, 00104$
163 ;main.c:69: io_out(PIO_A_DATA, ch);
0000007B FD 21 00 00 [14] 164 ld iy, #0
0000007F FD 39 [15] 165 add iy, sp
00000081 FD 6E 00 [19] 166 ld l, 0 (iy)
00000084 3E 40 [ 7] 167 ld a, #0x40
00000086 CDr00r00 [17] 168 call _io_out
169 ;main.c:70: acia_putc(ch);
00000089 21 00 00 [10] 170 ld hl, #0
0000008C 39 [11] 171 add hl, sp
0000008D 7E [ 7] 172 ld a, (hl)
0000008E CDr13r00 [17] 173 call _acia_putc
174 ;main.c:71: if (ch == '\r') {
00000091 21 00 00 [10] 175 ld hl, #0
00000094 39 [11] 176 add hl, sp
00000095 7E [ 7] 177 ld a, (hl)
00000096 D6 0D [ 7] 178 sub a, #0x0d
00000098 20 05 [12] 179 jr NZ, 00102$
180 ;main.c:72: acia_putc('\n');
0000009A 3E 0A [ 7] 181 ld a, #0x0a
0000009C CDr13r00 [17] 182 call _acia_putc
0000009F 183 00102$:
184 ;main.c:74: delay_ms(50);
0000009F 21 32 00 [10] 185 ld hl, #0x0032
000000A2 CDr00r00 [17] 186 call _delay_ms
000000A5 187 00104$:
188 ;main.c:77: acia_putc((uint8_t)('0' + (cnt & 0x07)));
000000A5 21 01 00 [10] 189 ld hl, #1
000000A8 39 [11] 190 add hl, sp
000000A9 7E [ 7] 191 ld a, (hl)
000000AA E6 07 [ 7] 192 and a, #0x07
000000AC C6 30 [ 7] 193 add a, #0x30
000000AE CDr13r00 [17] 194 call _acia_putc
195 ;main.c:78: acia_puts("\r\n");
000000B1 21rE1r00 [10] 196 ld hl, #___str_1
000000B4 CDr37r00 [17] 197 call _acia_puts
198 ;main.c:79: cnt++;
000000B7 FD 21 01 00 [14] 199 ld iy, #1
000000BB FD 39 [15] 200 add iy, sp
000000BD FD 34 00 [23] 201 inc 0 (iy)
202 ;main.c:80: delay_ms(250);
000000C0 21 FA 00 [10] 203 ld hl, #0x00fa
000000C3 CDr00r00 [17] 204 call _delay_ms
000000C6 18 A6 [12] 205 jr 00106$
206 ;main.c:82: }
000000C8 F1 [10] 207 pop af
000000C9 C9 [10] 208 ret
000000CA 209 ___str_0:
000000CA 41 43 49 41 20 36 38 210 .ascii "ACIA 6850 test ready"
35 30 20 74 65 73 74
20 72 65 61 64 79
000000DE 0D 211 .db 0x0d
000000DF 0A 212 .db 0x0a
000000E0 00 213 .db 0x00
000000E1 214 ___str_1:
000000E1 0D 215 .db 0x0d
000000E2 0A 216 .db 0x0a
000000E3 00 217 .db 0x00
218 .area _CODE
219 .area _INITIALIZER
220 .area _CABS (ABS)