summaryrefslogtreecommitdiffstats
path: root/sw/z80/drivers/build/usart.lst
diff options
context:
space:
mode:
Diffstat (limited to 'sw/z80/drivers/build/usart.lst')
-rw-r--r--sw/z80/drivers/build/usart.lst440
1 files changed, 0 insertions, 440 deletions
diff --git a/sw/z80/drivers/build/usart.lst b/sw/z80/drivers/build/usart.lst
deleted file mode 100644
index 65365fe..0000000
--- a/sw/z80/drivers/build/usart.lst
+++ /dev/null
@@ -1,440 +0,0 @@
- 1 ;--------------------------------------------------------
- 2 ; File Created by SDCC : free open source ANSI-C Compiler
- 3 ; Version 3.6.0 #9615 (Linux)
- 4 ;--------------------------------------------------------
- 5 .module usart
- 6 .optsdcc -mz80
- 7
- 8 ;--------------------------------------------------------
- 9 ; Public variables in this module
- 10 ;--------------------------------------------------------
- 11 .globl _usart_word_length
- 12 .globl _usart_set_baudrate
- 13 .globl _usart_set_parity
- 14 .globl _usart_set_stop_bits
- 15 .globl _usart_set_autoflow
- 16 .globl _usart_init
- 17 .globl _usart_transmit
- 18 .globl _usart_receive
- 19 .globl _usart_write
- 20 .globl _usart_read
- 21 ;--------------------------------------------------------
- 22 ; special function registers
- 23 ;--------------------------------------------------------
- 24 ;--------------------------------------------------------
- 25 ; ram data
- 26 ;--------------------------------------------------------
- 27 .area _DATA
- 28 ;--------------------------------------------------------
- 29 ; ram data
- 30 ;--------------------------------------------------------
- 31 .area _INITIALIZED
- 0000 32 __usart:
- 0000 33 .ds 2
- 34 ;--------------------------------------------------------
- 35 ; absolute external ram data
- 36 ;--------------------------------------------------------
- 37 .area _DABS (ABS)
- 38 ;--------------------------------------------------------
- 39 ; global & static initialisations
- 40 ;--------------------------------------------------------
- 41 .area _HOME
- 42 .area _GSINIT
- 43 .area _GSFINAL
- 44 .area _GSINIT
- 45 ;--------------------------------------------------------
- 46 ; Home
- 47 ;--------------------------------------------------------
- 48 .area _HOME
- 49 .area _HOME
- 50 ;--------------------------------------------------------
- 51 ; code
- 52 ;--------------------------------------------------------
- 53 .area _CODE
- 54 ;usart.c:5: void usart_set_baudrate(uint16_t baudrate)
- 55 ; ---------------------------------
- 56 ; Function usart_set_baudrate
- 57 ; ---------------------------------
- 0000 58 _usart_set_baudrate::
- 0000 DD E5 [15] 59 push ix
- 0002 DD 21 00 00 [14] 60 ld ix,#0
- 0006 DD 39 [15] 61 add ix,sp
- 62 ;usart.c:8: _usart->LCR.divisor_latch_access = 1;
- 0008 2Ar00r00 [16] 63 ld hl,(__usart)
- 000B 01 04 00 [10] 64 ld bc,#0x0004
- 000E 09 [11] 65 add hl,bc
- 000F 7E [ 7] 66 ld a,(hl)
- 0010 F6 80 [ 7] 67 or a,#0x80
- 0012 77 [ 7] 68 ld (hl),a
- 69 ;usart.c:9: _usart->buffer = 0x00FF & baudrate; // LSBs
- 0013 2Ar00r00 [16] 70 ld hl,(__usart)
- 0016 DD 4E 04 [19] 71 ld c,4 (ix)
- 0019 71 [ 7] 72 ld (hl),c
- 73 ;usart.c:10: memcpy(&_usart->IER, &(baudrate >>8), 1);
- 001A ED 5Br00r00 [20] 74 ld de,(__usart)
- 001E 13 [ 6] 75 inc de
- 001F DD 6E 05 [19] 76 ld l,5 (ix)
- 0022 26 00 [ 7] 77 ld h,#0x00
- 0024 7E [ 7] 78 ld a, (hl)
- 0025 12 [ 7] 79 ld (de), a
- 80 ;usart.c:12: _usart->LCR.divisor_latch_access = 0;
- 0026 2Ar00r00 [16] 81 ld hl,(__usart)
- 0029 01 04 00 [10] 82 ld bc,#0x0004
- 002C 09 [11] 83 add hl,bc
- 002D 7E [ 7] 84 ld a,(hl)
- 002E E6 7F [ 7] 85 and a,#0x7f
- 0030 77 [ 7] 86 ld (hl),a
- 0031 DD E1 [14] 87 pop ix
- 0033 C9 [10] 88 ret
- 89 ;usart.c:15: void usart_set_parity(int mode)
- 90 ; ---------------------------------
- 91 ; Function usart_set_parity
- 92 ; ---------------------------------
- 0034 93 _usart_set_parity::
- 94 ;usart.c:18: _usart->LCR.even_parity = 1;
- 0034 2Ar00r00 [16] 95 ld hl,(__usart)
- 0037 01 04 00 [10] 96 ld bc,#0x0004
- 003A 09 [11] 97 add hl,bc
- 98 ;usart.c:17: if (mode == USART_PARITY_EVEN) {
- 003B FD 21 02 00 [14] 99 ld iy,#2
- 003F FD 39 [15] 100 add iy,sp
- 0041 FD 7E 00 [19] 101 ld a,0 (iy)
- 0044 3D [ 4] 102 dec a
- 0045 20 0C [12] 103 jr NZ,00104$
- 0047 FD 7E 01 [19] 104 ld a,1 (iy)
- 004A B7 [ 4] 105 or a, a
- 004B 20 06 [12] 106 jr NZ,00104$
- 107 ;usart.c:18: _usart->LCR.even_parity = 1;
- 004D 7E [ 7] 108 ld a,(hl)
- 004E F6 10 [ 7] 109 or a,#0x10
- 0050 77 [ 7] 110 ld (hl),a
- 0051 18 17 [12] 111 jr 00105$
- 0053 112 00104$:
- 113 ;usart.c:20: else if (mode == USART_PARITY_ODD) {
- 0053 FD 21 02 00 [14] 114 ld iy,#2
- 0057 FD 39 [15] 115 add iy,sp
- 0059 FD 7E 00 [19] 116 ld a,0 (iy)
- 005C D6 02 [ 7] 117 sub a, #0x02
- 005E 20 0A [12] 118 jr NZ,00105$
- 0060 FD 7E 01 [19] 119 ld a,1 (iy)
- 0063 B7 [ 4] 120 or a, a
- 0064 20 04 [12] 121 jr NZ,00105$
- 122 ;usart.c:21: _usart->LCR.even_parity = 0;
- 0066 7E [ 7] 123 ld a,(hl)
- 0067 E6 EF [ 7] 124 and a,#0xef
- 0069 77 [ 7] 125 ld (hl),a
- 006A 126 00105$:
- 127 ;usart.c:24: _usart->LCR.parity = (mode == USART_PARITY_NONE) ? 0 : 1;
- 006A 2Ar00r00 [16] 128 ld hl,(__usart)
- 006D 01 04 00 [10] 129 ld bc,#0x0004
- 0070 09 [11] 130 add hl,bc
- 0071 FD 21 02 00 [14] 131 ld iy,#2
- 0075 FD 39 [15] 132 add iy,sp
- 0077 FD 7E 00 [19] 133 ld a,0 (iy)
- 007A 07 [ 4] 134 rlca
- 007B 07 [ 4] 135 rlca
- 007C 07 [ 4] 136 rlca
- 007D E6 F8 [ 7] 137 and a,#0xf8
- 007F E6 08 [ 7] 138 and a,#0x08
- 0081 4F [ 4] 139 ld c,a
- 0082 7E [ 7] 140 ld a,(hl)
- 0083 E6 F7 [ 7] 141 and a,#0xf7
- 0085 B1 [ 4] 142 or a,c
- 0086 77 [ 7] 143 ld (hl),a
- 0087 C9 [10] 144 ret
- 145 ;usart.c:27: void usart_set_stop_bits(int count)
- 146 ; ---------------------------------
- 147 ; Function usart_set_stop_bits
- 148 ; ---------------------------------
- 0088 149 _usart_set_stop_bits::
- 150 ;usart.c:29: _usart->LCR.stop_bits = (count == USART_STOP_BITS_1) ? 0 : 1;
- 0088 ED 4Br00r00 [20] 151 ld bc,(__usart)
- 008C 03 [ 6] 152 inc bc
- 008D 03 [ 6] 153 inc bc
- 008E 03 [ 6] 154 inc bc
- 008F 03 [ 6] 155 inc bc
- 0090 FD 21 02 00 [14] 156 ld iy,#2
- 0094 FD 39 [15] 157 add iy,sp
- 0096 FD 7E 00 [19] 158 ld a,0 (iy)
- 0099 D6 0A [ 7] 159 sub a, #0x0a
- 009B 20 0A [12] 160 jr NZ,00103$
- 009D FD 7E 01 [19] 161 ld a,1 (iy)
- 00A0 B7 [ 4] 162 or a, a
- 00A1 20 04 [12] 163 jr NZ,00103$
- 00A3 3E 01 [ 7] 164 ld a,#0x01
- 00A5 18 01 [12] 165 jr 00104$
- 00A7 166 00103$:
- 00A7 AF [ 4] 167 xor a,a
- 00A8 168 00104$:
- 00A8 EE 01 [ 7] 169 xor a, #0x01
- 00AA 87 [ 4] 170 add a, a
- 00AB 87 [ 4] 171 add a, a
- 00AC E6 04 [ 7] 172 and a,#0x04
- 00AE 6F [ 4] 173 ld l,a
- 00AF 0A [ 7] 174 ld a,(bc)
- 00B0 E6 FB [ 7] 175 and a,#0xfb
- 00B2 B5 [ 4] 176 or a,l
- 00B3 02 [ 7] 177 ld (bc),a
- 00B4 C9 [10] 178 ret
- 179 ;usart.c:32: void usart_word_length(int length)
- 180 ; ---------------------------------
- 181 ; Function usart_word_length
- 182 ; ---------------------------------
- 00B5 183 _usart_word_length::
- 184 ;usart.c:34: _usart->LCR.word_length = length;
- 00B5 2Ar00r00 [16] 185 ld hl,(__usart)
- 00B8 01 04 00 [10] 186 ld bc,#0x0004
- 00BB 09 [11] 187 add hl,bc
- 00BC FD 21 02 00 [14] 188 ld iy,#2
- 00C0 FD 39 [15] 189 add iy,sp
- 00C2 FD 7E 00 [19] 190 ld a,0 (iy)
- 00C5 E6 03 [ 7] 191 and a,#0x03
- 00C7 4F [ 4] 192 ld c,a
- 00C8 7E [ 7] 193 ld a,(hl)
- 00C9 E6 FC [ 7] 194 and a,#0xfc
- 00CB B1 [ 4] 195 or a,c
- 00CC 77 [ 7] 196 ld (hl),a
- 00CD C9 [10] 197 ret
- 198 ;usart.c:37: void usart_set_autoflow(int mode)
- 199 ; ---------------------------------
- 200 ; Function usart_set_autoflow
- 201 ; ---------------------------------
- 00CE 202 _usart_set_autoflow::
- 203 ;usart.c:39: _usart->MCR.autoflow = (mode == USART_AUTOFLOW_OFF) ? 0 : 1;
- 00CE 2Ar00r00 [16] 204 ld hl,(__usart)
- 00D1 01 0C 00 [10] 205 ld bc,#0x000c
- 00D4 09 [11] 206 add hl,bc
- 00D5 FD 21 02 00 [14] 207 ld iy,#2
- 00D9 FD 39 [15] 208 add iy,sp
- 00DB FD 7E 00 [19] 209 ld a,0 (iy)
- 00DE E6 01 [ 7] 210 and a,#0x01
- 00E0 4F [ 4] 211 ld c,a
- 00E1 7E [ 7] 212 ld a,(hl)
- 00E2 E6 FE [ 7] 213 and a,#0xfe
- 00E4 B1 [ 4] 214 or a,c
- 00E5 77 [ 7] 215 ld (hl),a
- 216 ;usart.c:40: _usart->MCR.data_terminal_ready = (mode == USART_AUTOFLOW_ALL);
- 00E6 2Ar00r00 [16] 217 ld hl,(__usart)
- 00E9 01 05 00 [10] 218 ld bc,#0x0005
- 00EC 09 [11] 219 add hl,bc
- 00ED FD 7E 00 [19] 220 ld a,0 (iy)
- 00F0 D6 03 [ 7] 221 sub a, #0x03
- 00F2 20 0A [12] 222 jr NZ,00103$
- 00F4 FD 7E 01 [19] 223 ld a,1 (iy)
- 00F7 B7 [ 4] 224 or a, a
- 00F8 20 04 [12] 225 jr NZ,00103$
- 00FA 3E 01 [ 7] 226 ld a,#0x01
- 00FC 18 01 [12] 227 jr 00104$
- 00FE 228 00103$:
- 00FE AF [ 4] 229 xor a,a
- 00FF 230 00104$:
- 00FF E6 01 [ 7] 231 and a,#0x01
- 0101 4F [ 4] 232 ld c,a
- 0102 7E [ 7] 233 ld a,(hl)
- 0103 E6 FE [ 7] 234 and a,#0xfe
- 0105 B1 [ 4] 235 or a,c
- 0106 77 [ 7] 236 ld (hl),a
- 0107 C9 [10] 237 ret
- 238 ;usart.c:43: inline void usart_init(uint16_t baudrate, int parity, int stop_bits)
- 239 ; ---------------------------------
- 240 ; Function usart_init
- 241 ; ---------------------------------
- 0108 242 _usart_init::
- 243 ;usart.c:45: usart_set_baudrate(baudrate);
- 0108 C1 [10] 244 pop bc
- 0109 E1 [10] 245 pop hl
- 010A E5 [11] 246 push hl
- 010B C5 [11] 247 push bc
- 010C E5 [11] 248 push hl
- 010D CDr00r00 [17] 249 call _usart_set_baudrate
- 0110 F1 [10] 250 pop af
- 251 ;usart.c:46: usart_set_parity(parity);
- 0111 21 04 00 [10] 252 ld hl, #4
- 0114 39 [11] 253 add hl, sp
- 0115 4E [ 7] 254 ld c, (hl)
- 0116 23 [ 6] 255 inc hl
- 0117 46 [ 7] 256 ld b, (hl)
- 0118 C5 [11] 257 push bc
- 0119 CDr34r00 [17] 258 call _usart_set_parity
- 011C F1 [10] 259 pop af
- 260 ;usart.c:47: usart_set_stop_bits(stop_bits);
- 011D 21 06 00 [10] 261 ld hl, #6
- 0120 39 [11] 262 add hl, sp
- 0121 4E [ 7] 263 ld c, (hl)
- 0122 23 [ 6] 264 inc hl
- 0123 46 [ 7] 265 ld b, (hl)
- 0124 C5 [11] 266 push bc
- 0125 CDr88r00 [17] 267 call _usart_set_stop_bits
- 268 ;usart.c:48: usart_set_autoflow(USART_AUTOFLOW_OFF);
- 0128 21 00 00 [10] 269 ld hl, #0x0000
- 012B E3 [19] 270 ex (sp),hl
- 012C CDrCEr00 [17] 271 call _usart_set_autoflow
- 012F F1 [10] 272 pop af
- 0130 C9 [10] 273 ret
- 274 ;usart.c:51: void usart_transmit(uint8_t data)
- 275 ; ---------------------------------
- 276 ; Function usart_transmit
- 277 ; ---------------------------------
- 0131 278 _usart_transmit::
- 279 ;usart.c:53: _usart->buffer = data;
- 0131 2Ar00r00 [16] 280 ld hl,(__usart)
- 0134 FD 21 02 00 [14] 281 ld iy,#2
- 0138 FD 39 [15] 282 add iy,sp
- 013A FD 7E 00 [19] 283 ld a,0 (iy)
- 013D 77 [ 7] 284 ld (hl),a
- 285 ;usart.c:54: while (_usart->LSR.transmitter_holder_empty == 0); // wait
- 013E 286 00101$:
- 013E 2Ar00r00 [16] 287 ld hl,(__usart)
- 0141 01 0D 00 [10] 288 ld bc,#0x000d
- 0144 09 [11] 289 add hl,bc
- 0145 7E [ 7] 290 ld a,(hl)
- 0146 07 [ 4] 291 rlca
- 0147 07 [ 4] 292 rlca
- 0148 07 [ 4] 293 rlca
- 0149 30 F3 [12] 294 jr NC,00101$
- 014B C9 [10] 295 ret
- 296 ;usart.c:57: uint8_t usart_receive()
- 297 ; ---------------------------------
- 298 ; Function usart_receive
- 299 ; ---------------------------------
- 014C 300 _usart_receive::
- 301 ;usart.c:59: return _usart->buffer;
- 014C 2Ar00r00 [16] 302 ld hl,(__usart)
- 014F 6E [ 7] 303 ld l,(hl)
- 0150 C9 [10] 304 ret
- 305 ;usart.c:62: int usart_write(uint8_t *data, size_t size)
- 306 ; ---------------------------------
- 307 ; Function usart_write
- 308 ; ---------------------------------
- 0151 309 _usart_write::
- 0151 DD E5 [15] 310 push ix
- 0153 DD 21 00 00 [14] 311 ld ix,#0
- 0157 DD 39 [15] 312 add ix,sp
- 0159 F5 [11] 313 push af
- 314 ;usart.c:64: uint8_t *dp = data;
- 015A DD 7E 04 [19] 315 ld a,4 (ix)
- 015D DD 77 FE [19] 316 ld -2 (ix),a
- 0160 DD 7E 05 [19] 317 ld a,5 (ix)
- 0163 DD 77 FF [19] 318 ld -1 (ix),a
- 319 ;usart.c:66: while (size--) {
- 0166 DD 4E 06 [19] 320 ld c,6 (ix)
- 0169 DD 46 07 [19] 321 ld b,7 (ix)
- 016C 322 00104$:
- 016C 59 [ 4] 323 ld e, c
- 016D 50 [ 4] 324 ld d, b
- 016E 0B [ 6] 325 dec bc
- 016F 7A [ 4] 326 ld a,d
- 0170 B3 [ 4] 327 or a,e
- 0171 28 1E [12] 328 jr Z,00106$
- 329 ;usart.c:67: _usart->buffer = *(dp++);
- 0173 ED 5Br00r00 [20] 330 ld de,(__usart)
- 0177 E1 [10] 331 pop hl
- 0178 E5 [11] 332 push hl
- 0179 7E [ 7] 333 ld a,(hl)
- 017A DD 34 FE [23] 334 inc -2 (ix)
- 017D 20 03 [12] 335 jr NZ,00126$
- 017F DD 34 FF [23] 336 inc -1 (ix)
- 0182 337 00126$:
- 0182 12 [ 7] 338 ld (de),a
- 339 ;usart.c:68: while (_usart->LSR.transmitter_empty);
- 0183 340 00101$:
- 0183 2Ar00r00 [16] 341 ld hl,(__usart)
- 0186 11 0D 00 [10] 342 ld de,#0x000d
- 0189 19 [11] 343 add hl,de
- 018A 7E [ 7] 344 ld a,(hl)
- 018B 07 [ 4] 345 rlca
- 018C 07 [ 4] 346 rlca
- 018D 30 DD [12] 347 jr NC,00104$
- 018F 18 F2 [12] 348 jr 00101$
- 0191 349 00106$:
- 350 ;usart.c:72: return size;
- 0191 69 [ 4] 351 ld l, c
- 0192 60 [ 4] 352 ld h, b
- 0193 DD F9 [10] 353 ld sp, ix
- 0195 DD E1 [14] 354 pop ix
- 0197 C9 [10] 355 ret
- 356 ;usart.c:75: int usart_read(uint8_t *buffer, size_t count)
- 357 ; ---------------------------------
- 358 ; Function usart_read
- 359 ; ---------------------------------
- 0198 360 _usart_read::
- 0198 DD E5 [15] 361 push ix
- 019A DD 21 00 00 [14] 362 ld ix,#0
- 019E DD 39 [15] 363 add ix,sp
- 01A0 21 FA FF [10] 364 ld hl,#-6
- 01A3 39 [11] 365 add hl,sp
- 01A4 F9 [ 6] 366 ld sp,hl
- 367 ;usart.c:77: uint8_t *bp = buffer;
- 01A5 DD 7E 04 [19] 368 ld a,4 (ix)
- 01A8 DD 77 FC [19] 369 ld -4 (ix),a
- 01AB DD 7E 05 [19] 370 ld a,5 (ix)
- 01AE DD 77 FD [19] 371 ld -3 (ix),a
- 372 ;usart.c:80: while (count--) {
- 01B1 DD 4E 06 [19] 373 ld c,6 (ix)
- 01B4 DD 46 07 [19] 374 ld b,7 (ix)
- 01B7 21 00 00 [10] 375 ld hl,#0x0000
- 01BA E3 [19] 376 ex (sp), hl
- 01BB 377 00105$:
- 01BB 59 [ 4] 378 ld e, c
- 01BC 50 [ 4] 379 ld d, b
- 01BD 0B [ 6] 380 dec bc
- 01BE 7A [ 4] 381 ld a,d
- 01BF B3 [ 4] 382 or a,e
- 01C0 28 55 [12] 383 jr Z,00107$
- 384 ;usart.c:81: *(bp++) = _usart->buffer;
- 01C2 2Ar00r00 [16] 385 ld hl,(__usart)
- 01C5 5E [ 7] 386 ld e,(hl)
- 01C6 DD 6E FC [19] 387 ld l,-4 (ix)
- 01C9 DD 66 FD [19] 388 ld h,-3 (ix)
- 01CC 73 [ 7] 389 ld (hl),e
- 01CD DD 34 FC [23] 390 inc -4 (ix)
- 01D0 20 03 [12] 391 jr NZ,00123$
- 01D2 DD 34 FD [23] 392 inc -3 (ix)
- 01D5 393 00123$:
- 01D5 ED 5Br00r00 [20] 394 ld de,(__usart)
- 395 ;usart.c:83: if (_usart->LSR.framing_error || _usart->LSR.parity_error) {
- 01D9 21 0D 00 [10] 396 ld hl,#0x000d
- 01DC 19 [11] 397 add hl,de
- 01DD DD 75 FE [19] 398 ld -2 (ix),l
- 01E0 DD 74 FF [19] 399 ld -1 (ix),h
- 01E3 DD 6E FE [19] 400 ld l,-2 (ix)
- 01E6 DD 66 FF [19] 401 ld h,-1 (ix)
- 01E9 7E [ 7] 402 ld a,(hl)
- 01EA 0F [ 4] 403 rrca
- 01EB 0F [ 4] 404 rrca
- 01EC 0F [ 4] 405 rrca
- 01ED E6 01 [ 7] 406 and a,#0x01
- 01EF 20 0D [12] 407 jr NZ,00101$
- 01F1 DD 6E FE [19] 408 ld l,-2 (ix)
- 01F4 DD 66 FF [19] 409 ld h,-1 (ix)
- 01F7 7E [ 7] 410 ld a,(hl)
- 01F8 0F [ 4] 411 rrca
- 01F9 0F [ 4] 412 rrca
- 01FA E6 01 [ 7] 413 and a,#0x01
- 01FC 28 0F [12] 414 jr Z,00102$
- 01FE 415 00101$:
- 416 ;usart.c:84: bp--; // delete last byte (?)
- 01FE DD 6E FC [19] 417 ld l,-4 (ix)
- 0201 DD 66 FD [19] 418 ld h,-3 (ix)
- 0204 2B [ 6] 419 dec hl
- 0205 DD 75 FC [19] 420 ld -4 (ix),l
- 0208 DD 74 FD [19] 421 ld -3 (ix),h
- 020B 18 AE [12] 422 jr 00105$
- 020D 423 00102$:
- 424 ;usart.c:86: read_count++;
- 020D DD 34 FA [23] 425 inc -6 (ix)
- 0210 20 A9 [12] 426 jr NZ,00105$
- 0212 DD 34 FB [23] 427 inc -5 (ix)
- 0215 18 A4 [12] 428 jr 00105$
- 0217 429 00107$:
- 430 ;usart.c:90: return read_count;
- 0217 E1 [10] 431 pop hl
- 0218 E5 [11] 432 push hl
- 0219 DD F9 [10] 433 ld sp, ix
- 021B DD E1 [14] 434 pop ix
- 021D C9 [10] 435 ret
- 436 .area _CODE
- 437 .area _INITIALIZER
- 0000 438 __xinit___usart:
- 0000 00 40 439 .dw #0x4000
- 440 .area _CABS (ABS)