223 lines
14 KiB
Plaintext
223 lines
14 KiB
Plaintext
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)
|