Files
xmplayer/obj/out.lst
T
2026-08-30 19:47:39 +03:00

1837 lines
107 KiB
Plaintext

1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ISO C Compiler
3 ; Version 4.6.0 #16555 (MINGW64)
4 ;--------------------------------------------------------
5 .module main
6
7 .optsdcc -mz80 sdcccall(1)
8 ;--------------------------------------------------------
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl _main
12 .globl _main_start
13 .globl _xm_update_info
14 .globl _xm_draw_stats_labels
15 .globl _put_time
16 .globl _put_dec3
17 .globl _put_hex2
18 .globl _xm_draw_static_labels
19 .globl _copy_file_name
20 .globl _error_playback
21 .globl _error_oom
22 .globl _error_esp
23 .globl _about
24 .globl _wait_frames
25 .globl _wait_esc_key
26 .globl _play_xm
27 .globl _esp_init
28 .globl _esp_create_obj
29 .globl _esp_wait_status
30 .globl _esp_rd_end
31 .globl _esp_send_dma
32 .globl _esp_wr_end
33 .globl _esp_wr_reg32
34 .globl _esp_wr_reg8
35 .globl _esp_rd_regs
36 .globl _esp_rd_reg32
37 .globl _esp_rd_reg8
38 .globl _esp_cmd
39 .globl _wc_exit
40 .globl _wc_prsrw_attr
41 .globl _wc_prsrw
42 .globl _wc_key_pgdn
43 .globl _wc_key_pgup
44 .globl _wc_key_esc
45 .globl _wc_load512
46 .globl _wc_rresb
47 .globl _wc_prwow
48 .globl _strlen
49 .globl _xm_handle
50 .globl _total_samples
51 .globl _file_name
52 .globl _p_file_name
53 .globl _last_esp_status
54 .globl _call_type
55 .globl _file_ext
56 .globl _filesize
57 .globl _ret_sp
58 .globl _fs_buf
59 .globl _state_esp
60 .globl _win_about
61 .globl _win_xm
62 .globl _err_playback
63 .globl _err_out_of_mem
64 .globl _err_no_esp
65 .globl _esp_wait_busy
66 ;--------------------------------------------------------
67 ; special function registers
68 ;--------------------------------------------------------
00000057 69 _SPI_DATA = 0x0057
00000077 70 _SPI_CTRL = 0x0077
000000FE 71 _BORDER = 0x00fe
000000AF 72 _TS_VCONFIG = 0x00af
000000AF 73 _TS_STATUS = 0x00af
000001AF 74 _TS_VPAGE = 0x01af
000002AF 75 _TS_GXOFFSL = 0x02af
000003AF 76 _TS_GXOFFSH = 0x03af
000004AF 77 _TS_GYOFFSL = 0x04af
000005AF 78 _TS_GYOFFSH = 0x05af
000006AF 79 _TS_TSCONFIG = 0x06af
000007AF 80 _TS_PALSEL = 0x07af
00000FAF 81 _TS_BORDER = 0x0faf
000010AF 82 _TS_PAGE0 = 0x10af
000011AF 83 _TS_PAGE1 = 0x11af
000012AF 84 _TS_PAGE2 = 0x12af
000013AF 85 _TS_PAGE3 = 0x13af
000015AF 86 _TS_FMADDR = 0x15af
000016AF 87 _TS_TMPAGE = 0x16af
000017AF 88 _TS_T0GPAGE = 0x17af
000018AF 89 _TS_T1GPAGE = 0x18af
000019AF 90 _TS_SGPAGE = 0x19af
00001AAF 91 _TS_DMASADDRL = 0x1aaf
00001BAF 92 _TS_DMASADDRH = 0x1baf
00001CAF 93 _TS_DMASADDRX = 0x1caf
00001DAF 94 _TS_DMADADDRL = 0x1daf
00001EAF 95 _TS_DMADADDRH = 0x1eaf
00001FAF 96 _TS_DMADADDRX = 0x1faf
000020AF 97 _TS_SYSCONFIG = 0x20af
000021AF 98 _TS_MEMCONFIG = 0x21af
000022AF 99 _TS_HSINT = 0x22af
000023AF 100 _TS_VSINTL = 0x23af
000024AF 101 _TS_VSINTH = 0x24af
000025AF 102 _TS_DMAWPD = 0x25af
000026AF 103 _TS_DMALEN = 0x26af
000027AF 104 _TS_DMACTR = 0x27af
000027AF 105 _TS_DMASTATUS = 0x27af
000028AF 106 _TS_DMANUM = 0x28af
000029AF 107 _TS_FDDVIRT = 0x29af
00002AAF 108 _TS_INTMASK = 0x2aaf
00002BAF 109 _TS_CACHECONF = 0x2baf
00002CAF 110 _TS_DMANUMH = 0x2caf
00002DAF 111 _TS_DMAWPA = 0x2daf
000040AF 112 _TS_T0XOFFSL = 0x40af
000041AF 113 _TS_T0XOFFSH = 0x41af
000042AF 114 _TS_T0YOFFSL = 0x42af
000043AF 115 _TS_T0YOFFSH = 0x43af
000044AF 116 _TS_T1XOFFSL = 0x44af
000045AF 117 _TS_T1XOFFSH = 0x45af
000046AF 118 _TS_T1YOFFSL = 0x46af
000047AF 119 _TS_T1YOFFSH = 0x47af
120 ;--------------------------------------------------------
121 ; ram data
122 ;--------------------------------------------------------
123 .area _DATA
00000000 124 _state_esp::
00000000 125 .ds 1
00000001 126 _fs_buf::
00000001 127 .ds 4096
00001001 128 _ret_sp::
00001001 129 .ds 2
00001003 130 _filesize::
00001003 131 .ds 4
00001007 132 _file_ext::
00001007 133 .ds 1
00001008 134 _call_type::
00001008 135 .ds 1
00001009 136 _last_esp_status::
00001009 137 .ds 1
0000100A 138 _p_file_name::
0000100A 139 .ds 2
0000100C 140 _file_name::
0000100C 141 .ds 33
0000102D 142 _total_samples::
0000102D 143 .ds 4
00001031 144 _xm_handle::
00001031 145 .ds 1
00001032 146 _hexbuf:
00001032 147 .ds 2
00001034 148 _decbuf:
00001034 149 .ds 3
00001037 150 _timebuf:
00001037 151 .ds 5
152 ;--------------------------------------------------------
153 ; ram data
154 ;--------------------------------------------------------
155 .area _INITIALIZED
156 ;--------------------------------------------------------
157 ; absolute ram data
158 ;--------------------------------------------------------
159 .area _DABS (ABS)
160 .area _DABS (ABS)
161 ;--------------------------------------------------------
162 ; global & static initialisations
163 ;--------------------------------------------------------
164 .area _HOME
165 .area _GSINIT
166 .area _GSFINAL
167 .area _GSINIT
168 ;--------------------------------------------------------
169 ; Home
170 ;--------------------------------------------------------
171 .area _HOME
172 .area _HOME
173 ;--------------------------------------------------------
174 ; code
175 ;--------------------------------------------------------
176 .area _CODE
177 ;src/wc_api.c:34: void wc_exit(u8 rc) __naked
178 ; ---------------------------------
179 ; Function wc_exit
180 ; ---------------------------------
00000000 181 _wc_exit::
182 ;src/wc_api.c:40: __endasm;
00000000 ED 7Br01r10 [20] 183 ld sp, (_ret_sp)
00000004 C9 [10] 184 ret
185 ;src/wc_api.c:41: }
186 ;src/esp32.c:18: void esp_cmd(u8 cmd)
187 ; ---------------------------------
188 ; Function esp_cmd
189 ; ---------------------------------
00000005 190 _esp_cmd::
00000005 4F [ 4] 191 ld c, a
192 ;src/esp32.c:20: SPI_CTRL = SPI_ESP_CS_ON;
00000006 3E 13 [ 7] 193 ld a, #0x13
00000008 D3 77 [11] 194 out (_SPI_CTRL), a
195 ;src/esp32.c:21: SPI_DATA = ESP_SPI_CMD_WR_REGS;
0000000A 3E 01 [ 7] 196 ld a, #0x01
0000000C D3 57 [11] 197 out (_SPI_DATA), a
198 ;src/esp32.c:22: SPI_DATA = ESP_REG_COMMAND;
0000000E AF [ 4] 199 xor a, a
0000000F D3 57 [11] 200 out (_SPI_DATA), a
201 ;src/esp32.c:23: SPI_DATA; // dummy
00000011 DB 57 [11] 202 in a, (_SPI_DATA)
203 ;src/esp32.c:24: SPI_DATA = cmd; // Command
00000013 79 [ 4] 204 ld a, c
00000014 D3 57 [11] 205 out (_SPI_DATA), a
206 ;src/esp32.c:25: SPI_DATA = ESP_ST_IDLE; // Reset status
00000016 AF [ 4] 207 xor a, a
00000017 D3 57 [11] 208 out (_SPI_DATA), a
209 ;src/esp32.c:26: SPI_CTRL = SPI_ESP_CS_OFF;
00000019 3E 03 [ 7] 210 ld a, #0x03
0000001B D3 77 [11] 211 out (_SPI_CTRL), a
212 ;src/esp32.c:27: }
0000001D C9 [10] 213 ret
214 ;src/esp32.c:29: u8 esp_rd_reg8(u8 reg)
215 ; ---------------------------------
216 ; Function esp_rd_reg8
217 ; ---------------------------------
0000001E 218 _esp_rd_reg8::
0000001E 4F [ 4] 219 ld c, a
220 ;src/esp32.c:31: SPI_CTRL = SPI_ESP_CS_ON;
0000001F 3E 13 [ 7] 221 ld a, #0x13
00000021 D3 77 [11] 222 out (_SPI_CTRL), a
223 ;src/esp32.c:32: SPI_DATA = ESP_SPI_CMD_RD_REGS;
00000023 3E 02 [ 7] 224 ld a, #0x02
00000025 D3 57 [11] 225 out (_SPI_DATA), a
226 ;src/esp32.c:33: SPI_DATA = reg;
00000027 79 [ 4] 227 ld a, c
00000028 D3 57 [11] 228 out (_SPI_DATA), a
229 ;src/esp32.c:34: SPI_DATA; // dummy
0000002A DB 57 [11] 230 in a, (_SPI_DATA)
231 ;src/esp32.c:35: SPI_DATA; // dummy
0000002C DB 57 [11] 232 in a, (_SPI_DATA)
233 ;src/esp32.c:36: u8 rc = SPI_DATA;
0000002E DB 57 [11] 234 in a, (_SPI_DATA)
00000030 4F [ 4] 235 ld c, a
236 ;src/esp32.c:37: SPI_CTRL = SPI_ESP_CS_OFF;
00000031 3E 03 [ 7] 237 ld a, #0x03
00000033 D3 77 [11] 238 out (_SPI_CTRL), a
239 ;src/esp32.c:39: return rc;
00000035 79 [ 4] 240 ld a, c
241 ;src/esp32.c:40: }
00000036 C9 [10] 242 ret
243 ;src/esp32.c:42: u32 esp_rd_reg32(u8 reg)
244 ; ---------------------------------
245 ; Function esp_rd_reg32
246 ; ---------------------------------
00000037 247 _esp_rd_reg32::
00000037 DD E5 [15] 248 push ix
00000039 DD 21 00 00 [14] 249 ld ix, #0
0000003D DD 39 [15] 250 add ix, sp
0000003F F5 [11] 251 push af
00000040 F5 [11] 252 push af
00000041 4F [ 4] 253 ld c, a
254 ;src/esp32.c:44: SPI_CTRL = SPI_ESP_CS_ON;
00000042 3E 13 [ 7] 255 ld a, #0x13
00000044 D3 77 [11] 256 out (_SPI_CTRL), a
257 ;src/esp32.c:45: SPI_DATA = ESP_SPI_CMD_RD_REGS;
00000046 3E 02 [ 7] 258 ld a, #0x02
00000048 D3 57 [11] 259 out (_SPI_DATA), a
260 ;src/esp32.c:46: SPI_DATA = reg;
0000004A 79 [ 4] 261 ld a, c
0000004B D3 57 [11] 262 out (_SPI_DATA), a
263 ;src/esp32.c:47: SPI_DATA; // dummy
0000004D DB 57 [11] 264 in a, (_SPI_DATA)
265 ;src/esp32.c:48: SPI_DATA; // dummy
0000004F DB 57 [11] 266 in a, (_SPI_DATA)
267 ;src/esp32.c:49: u32 rc = SPI_DATA;
00000051 DB 57 [11] 268 in a, (_SPI_DATA)
00000053 4F [ 4] 269 ld c, a
270 ;src/esp32.c:50: rc |= (u32)SPI_DATA << 8;
00000054 DB 57 [11] 271 in a, (_SPI_DATA)
00000056 57 [ 4] 272 ld d, a
00000057 59 [ 4] 273 ld e, c
274 ;src/esp32.c:51: rc |= (u32)SPI_DATA << 16;
00000058 DB 57 [11] 275 in a, (_SPI_DATA)
0000005A DD 77 FC [19] 276 ld -4 (ix), a
0000005D AF [ 4] 277 xor a, a
0000005E DD 77 FD [19] 278 ld -3 (ix), a
00000061 DD 77 FE [19] 279 ld -2 (ix), a
00000064 DD 77 FF [19] 280 ld -1 (ix), a
00000067 DD 7E FC [19] 281 ld a, -4 (ix)
0000006A DD 77 FE [19] 282 ld -2 (ix), a
0000006D AF [ 4] 283 xor a, a
0000006E DD 77 FF [19] 284 ld -1 (ix), a
00000071 DD 77 FC [19] 285 ld -4 (ix), a
00000074 DD 77 FD [19] 286 ld -3 (ix), a
00000077 DD 6E FE [19] 287 ld l, -2 (ix)
288 ;src/esp32.c:52: rc |= (u32)SPI_DATA << 24;
0000007A DB 57 [11] 289 in a, (_SPI_DATA)
0000007C DD 77 FC [19] 290 ld -4 (ix), a
0000007F AF [ 4] 291 xor a, a
00000080 DD 77 FD [19] 292 ld -3 (ix), a
00000083 DD 77 FE [19] 293 ld -2 (ix), a
00000086 DD 77 FF [19] 294 ld -1 (ix), a
00000089 DD 7E FC [19] 295 ld a, -4 (ix)
0000008C DD 77 FF [19] 296 ld -1 (ix), a
0000008F AF [ 4] 297 xor a, a
00000090 DD 77 FC [19] 298 ld -4 (ix), a
00000093 DD 77 FD [19] 299 ld -3 (ix), a
00000096 DD 77 FE [19] 300 ld -2 (ix), a
00000099 DD 66 FF [19] 301 ld h, -1 (ix)
302 ;src/esp32.c:53: SPI_CTRL = SPI_ESP_CS_OFF;
0000009C 3E 03 [ 7] 303 ld a, #0x03
0000009E D3 77 [11] 304 out (_SPI_CTRL), a
305 ;src/esp32.c:55: return rc;
306 ;src/esp32.c:56: }
000000A0 DD F9 [10] 307 ld sp, ix
000000A2 DD E1 [14] 308 pop ix
000000A4 C9 [10] 309 ret
310 ;src/esp32.c:58: void esp_rd_regs(u8 reg, void *data, u8 size)
311 ; ---------------------------------
312 ; Function esp_rd_regs
313 ; ---------------------------------
000000A5 314 _esp_rd_regs::
000000A5 4F [ 4] 315 ld c, a
316 ;src/esp32.c:60: u8 *d = (u8*)data;
317 ;src/esp32.c:62: SPI_CTRL = SPI_ESP_CS_ON;
000000A6 3E 13 [ 7] 318 ld a, #0x13
000000A8 D3 77 [11] 319 out (_SPI_CTRL), a
320 ;src/esp32.c:63: SPI_DATA = ESP_SPI_CMD_RD_REGS;
000000AA 3E 02 [ 7] 321 ld a, #0x02
000000AC D3 57 [11] 322 out (_SPI_DATA), a
323 ;src/esp32.c:64: SPI_DATA = reg;
000000AE 79 [ 4] 324 ld a, c
000000AF D3 57 [11] 325 out (_SPI_DATA), a
326 ;src/esp32.c:65: SPI_DATA; // dummy
000000B1 DB 57 [11] 327 in a, (_SPI_DATA)
328 ;src/esp32.c:66: SPI_DATA; // dummy
000000B3 DB 57 [11] 329 in a, (_SPI_DATA)
330 ;src/esp32.c:67: while (size--) *d++ = SPI_DATA;
000000B5 FD 21 02 00 [14] 331 ld iy, #2
000000B9 FD 39 [15] 332 add iy, sp
000000BB FD 4E 00 [19] 333 ld c, 0 (iy)
000000BE 334 00101$:
000000BE 79 [ 4] 335 ld a, c
000000BF 0D [ 4] 336 dec c
000000C0 B7 [ 4] 337 or a, a
000000C1 28 07 [12] 338 jr z, 00103$
000000C3 DB 57 [11] 339 in a, (_SPI_DATA)
000000C5 12 [ 7] 340 ld (de), a
000000C6 13 [ 6] 341 inc de
000000C7 C3rBEr00 [10] 342 jp 00101$
000000CA 343 00103$:
344 ;src/esp32.c:68: SPI_CTRL = SPI_ESP_CS_OFF;
000000CA 3E 03 [ 7] 345 ld a, #0x03
000000CC D3 77 [11] 346 out (_SPI_CTRL), a
347 ;src/esp32.c:69: }
000000CE E1 [10] 348 pop hl
000000CF 33 [ 6] 349 inc sp
000000D0 E9 [ 4] 350 jp (hl)
351 ;src/esp32.c:71: void esp_wr_reg8(u8 reg, u8 data)
352 ; ---------------------------------
353 ; Function esp_wr_reg8
354 ; ---------------------------------
000000D1 355 _esp_wr_reg8::
000000D1 47 [ 4] 356 ld b, a
000000D2 4D [ 4] 357 ld c, l
358 ;src/esp32.c:73: SPI_CTRL = SPI_ESP_CS_ON;
000000D3 3E 13 [ 7] 359 ld a, #0x13
000000D5 D3 77 [11] 360 out (_SPI_CTRL), a
361 ;src/esp32.c:74: SPI_DATA = ESP_SPI_CMD_WR_REGS;
000000D7 3E 01 [ 7] 362 ld a, #0x01
000000D9 D3 57 [11] 363 out (_SPI_DATA), a
364 ;src/esp32.c:75: SPI_DATA = reg;
000000DB 78 [ 4] 365 ld a, b
000000DC D3 57 [11] 366 out (_SPI_DATA), a
367 ;src/esp32.c:76: SPI_DATA; // dummy
000000DE DB 57 [11] 368 in a, (_SPI_DATA)
369 ;src/esp32.c:77: SPI_DATA = data;
000000E0 79 [ 4] 370 ld a, c
000000E1 D3 57 [11] 371 out (_SPI_DATA), a
372 ;src/esp32.c:78: SPI_CTRL = SPI_ESP_CS_OFF;
000000E3 3E 03 [ 7] 373 ld a, #0x03
000000E5 D3 77 [11] 374 out (_SPI_CTRL), a
375 ;src/esp32.c:79: }
000000E7 C9 [10] 376 ret
377 ;src/esp32.c:81: void esp_wr_reg32(u8 reg, u32 data)
378 ; ---------------------------------
379 ; Function esp_wr_reg32
380 ; ---------------------------------
000000E8 381 _esp_wr_reg32::
000000E8 4F [ 4] 382 ld c, a
383 ;src/esp32.c:83: SPI_CTRL = SPI_ESP_CS_ON;
000000E9 3E 13 [ 7] 384 ld a, #0x13
000000EB D3 77 [11] 385 out (_SPI_CTRL), a
386 ;src/esp32.c:84: SPI_DATA = ESP_SPI_CMD_WR_REGS;
000000ED 3E 01 [ 7] 387 ld a, #0x01
000000EF D3 57 [11] 388 out (_SPI_DATA), a
389 ;src/esp32.c:85: SPI_DATA = reg;
000000F1 79 [ 4] 390 ld a, c
000000F2 D3 57 [11] 391 out (_SPI_DATA), a
392 ;src/esp32.c:86: SPI_DATA; // dummy
000000F4 DB 57 [11] 393 in a, (_SPI_DATA)
394 ;src/esp32.c:87: SPI_DATA = (u8)data;
000000F6 FD 21 02 00 [14] 395 ld iy, #2
000000FA FD 39 [15] 396 add iy, sp
000000FC FD 7E 00 [19] 397 ld a, 0 (iy)
000000FF D3 57 [11] 398 out (_SPI_DATA), a
399 ;src/esp32.c:88: SPI_DATA = (u8)(data >> 8);
00000101 FD 7E 01 [19] 400 ld a, 1 (iy)
00000104 D3 57 [11] 401 out (_SPI_DATA), a
402 ;src/esp32.c:89: SPI_DATA = (u8)(data >> 16);
00000106 FD 7E 02 [19] 403 ld a, 2 (iy)
00000109 D3 57 [11] 404 out (_SPI_DATA), a
405 ;src/esp32.c:90: SPI_DATA = (u8)(data >> 24);
0000010B FD 7E 03 [19] 406 ld a, 3 (iy)
0000010E D3 57 [11] 407 out (_SPI_DATA), a
408 ;src/esp32.c:91: SPI_CTRL = SPI_ESP_CS_OFF;
00000110 3E 03 [ 7] 409 ld a, #0x03
00000112 D3 77 [11] 410 out (_SPI_CTRL), a
411 ;src/esp32.c:92: }
00000114 E1 [10] 412 pop hl
00000115 F1 [10] 413 pop af
00000116 F1 [10] 414 pop af
00000117 E9 [ 4] 415 jp (hl)
416 ;src/esp32.c:94: void esp_wr_end()
417 ; ---------------------------------
418 ; Function esp_wr_end
419 ; ---------------------------------
00000118 420 _esp_wr_end::
421 ;src/esp32.c:96: SPI_CTRL = SPI_ESP_CS_ON;
00000118 3E 13 [ 7] 422 ld a, #0x13
0000011A D3 77 [11] 423 out (_SPI_CTRL), a
424 ;src/esp32.c:97: SPI_DATA = ESP_SPI_CMD_W_END;
0000011C 3E 07 [ 7] 425 ld a, #0x07
0000011E D3 57 [11] 426 out (_SPI_DATA), a
427 ;src/esp32.c:98: SPI_DATA; // dummy
00000120 DB 57 [11] 428 in a, (_SPI_DATA)
429 ;src/esp32.c:99: SPI_CTRL = SPI_ESP_CS_OFF;
00000122 3E 03 [ 7] 430 ld a, #0x03
00000124 D3 77 [11] 431 out (_SPI_CTRL), a
432 ;src/esp32.c:100: }
00000126 C9 [10] 433 ret
434 ;src/esp32.c:102: void esp_send_dma(u16 a, u8 p, u16 l, u16 n)
435 ; ---------------------------------
436 ; Function esp_send_dma
437 ; ---------------------------------
00000127 438 _esp_send_dma::
00000127 7D [ 4] 439 ld a, l
440 ;src/esp32.c:105: TS_DMASADDRL = (u8)a;
00000128 01 AF 1A [10] 441 ld bc, #_TS_DMASADDRL
0000012B ED 79 [12] 442 out (c), a
443 ;src/esp32.c:106: TS_DMASADDRH = (u8)((u16)a >> 8);
0000012D 7C [ 4] 444 ld a, h
0000012E 01 AF 1B [10] 445 ld bc, #_TS_DMASADDRH
00000131 ED 79 [12] 446 out (c), a
447 ;src/esp32.c:107: TS_DMASADDRX = p;
00000133 FD 21 02 00 [14] 448 ld iy, #2
00000137 FD 39 [15] 449 add iy, sp
00000139 FD 7E 00 [19] 450 ld a, 0 (iy)
0000013C 01 AF 1C [10] 451 ld bc, #_TS_DMASADDRX
0000013F ED 79 [12] 452 out (c), a
453 ;src/esp32.c:108: TS_DMALEN = (u8)((l >> 1) - 1);
00000141 FD 7E 01 [19] 454 ld a, 1 (iy)
00000144 FD 4E 02 [19] 455 ld c, 2 (iy)
00000147 FD 23 [10] 456 inc iy
00000149 CB 39 [ 8] 457 srl c
0000014B CB 1F [ 8] 458 rr a
0000014D 3D [ 4] 459 dec a
0000014E 01 AF 26 [10] 460 ld bc, #_TS_DMALEN
00000151 ED 79 [12] 461 out (c), a
462 ;src/esp32.c:109: TS_DMANUM = (u8)(n - 1);
00000153 FD 7E 02 [19] 463 ld a, 2 (iy)
00000156 3D [ 4] 464 dec a
00000157 01 AF 28 [10] 465 ld bc, #_TS_DMANUM
0000015A ED 79 [12] 466 out (c), a
467 ;src/esp32.c:111: SPI_CTRL = SPI_ESP_CS_ON;
0000015C 3E 13 [ 7] 468 ld a, #0x13
0000015E D3 77 [11] 469 out (_SPI_CTRL), a
470 ;src/esp32.c:112: SPI_DATA = ESP_SPI_CMD_WR_DATA;
00000160 3E 03 [ 7] 471 ld a, #0x03
00000162 D3 57 [11] 472 out (_SPI_DATA), a
473 ;src/esp32.c:113: SPI_DATA; // dummy
00000164 DB 57 [11] 474 in a, (_SPI_DATA)
475 ;src/esp32.c:114: SPI_DATA; // dummy
00000166 DB 57 [11] 476 in a, (_SPI_DATA)
477 ;src/esp32.c:115: TS_DMACTR = TS_DMA_RAM_SPI;
00000168 3E 82 [ 7] 478 ld a, #0x82
0000016A 01 AF 27 [10] 479 ld bc, #_TS_DMACTR
0000016D ED 79 [12] 480 out (c), a
481 ;src/esp32.c:116: while (TS_DMASTATUS & 0x80);
0000016F 482 00101$:
0000016F 3E 27 [ 7] 483 ld a, #>(_TS_DMASTATUS)
00000171 DB AF [11] 484 in a, (#<(_TS_DMASTATUS))
00000173 07 [ 4] 485 rlca
00000174 38 F9 [12] 486 jr c, 00101$
487 ;src/esp32.c:117: SPI_CTRL = SPI_ESP_CS_OFF;
00000176 3E 03 [ 7] 488 ld a, #0x03
00000178 D3 77 [11] 489 out (_SPI_CTRL), a
490 ;src/esp32.c:119: esp_wr_end();
0000017A CDr18r01 [17] 491 call _esp_wr_end
492 ;src/esp32.c:120: esp_wait_busy(60000);
0000017D 11 60 EA [10] 493 ld de, #0xea60
00000180 21 00 00 [10] 494 ld hl, #0x0000
00000183 CDrD5r01 [17] 495 call _esp_wait_busy
496 ;src/esp32.c:121: }
00000186 E1 [10] 497 pop hl
00000187 F1 [10] 498 pop af
00000188 F1 [10] 499 pop af
00000189 33 [ 6] 500 inc sp
0000018A E9 [ 4] 501 jp (hl)
502 ;src/esp32.c:123: void esp_rd_end()
503 ; ---------------------------------
504 ; Function esp_rd_end
505 ; ---------------------------------
0000018B 506 _esp_rd_end::
507 ;src/esp32.c:125: SPI_CTRL = SPI_ESP_CS_ON;
0000018B 3E 13 [ 7] 508 ld a, #0x13
0000018D D3 77 [11] 509 out (_SPI_CTRL), a
510 ;src/esp32.c:126: SPI_DATA = ESP_SPI_CMD_R_END;
0000018F 3E 08 [ 7] 511 ld a, #0x08
00000191 D3 57 [11] 512 out (_SPI_DATA), a
513 ;src/esp32.c:127: SPI_DATA; // dummy
00000193 DB 57 [11] 514 in a, (_SPI_DATA)
515 ;src/esp32.c:128: SPI_CTRL = SPI_ESP_CS_OFF;
00000195 3E 03 [ 7] 516 ld a, #0x03
00000197 D3 77 [11] 517 out (_SPI_CTRL), a
518 ;src/esp32.c:129: }
00000199 C9 [10] 519 ret
520 ;src/esp32.c:131: u32 esp_wait_status(u8 status, u32 timeout)
521 ; ---------------------------------
522 ; Function esp_wait_status
523 ; ---------------------------------
0000019A 524 _esp_wait_status::
0000019A DD E5 [15] 525 push ix
0000019C DD 21 00 00 [14] 526 ld ix, #0
000001A0 DD 39 [15] 527 add ix, sp
000001A2 4F [ 4] 528 ld c, a
529 ;src/esp32.c:133: while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) == status) break;
000001A3 DD 5E 04 [19] 530 ld e, 4 (ix)
000001A6 DD 56 05 [19] 531 ld d, 5 (ix)
000001A9 DD 6E 06 [19] 532 ld l, 6 (ix)
000001AC DD 66 07 [19] 533 ld h, 7 (ix)
000001AF 534 00103$:
000001AF 7B [ 4] 535 ld a, e
000001B0 C6 FF [ 7] 536 add a, #0xff
000001B2 5F [ 4] 537 ld e, a
000001B3 7A [ 4] 538 ld a, d
000001B4 CE FF [ 7] 539 adc a, #0xff
000001B6 57 [ 4] 540 ld d, a
000001B7 7D [ 4] 541 ld a, l
000001B8 CE FF [ 7] 542 adc a, #0xff
000001BA 6F [ 4] 543 ld l, a
000001BB 7C [ 4] 544 ld a, h
000001BC CE FF [ 7] 545 adc a, #0xff
000001BE 67 [ 4] 546 ld h, a
000001BF B5 [ 4] 547 or a, l
000001C0 B2 [ 4] 548 or a, d
000001C1 B3 [ 4] 549 or a, e
000001C2 28 0E [12] 550 jr z, 00105$
000001C4 E5 [11] 551 push hl
000001C5 C5 [11] 552 push bc
000001C6 D5 [11] 553 push de
000001C7 3E 01 [ 7] 554 ld a, #0x01
000001C9 CDr1Er00 [17] 555 call _esp_rd_reg8
000001CC D1 [10] 556 pop de
000001CD C1 [10] 557 pop bc
000001CE E1 [10] 558 pop hl
000001CF 91 [ 4] 559 sub a, c
000001D0 20 DD [12] 560 jr nz, 00103$
000001D2 561 00105$:
562 ;src/esp32.c:135: return timeout;
563 ;src/esp32.c:136: }
000001D2 DD E1 [14] 564 pop ix
000001D4 C9 [10] 565 ret
566 ;src/esp32.c:138: u32 esp_wait_busy(u32 timeout)
567 ; ---------------------------------
568 ; Function esp_wait_busy
569 ; ---------------------------------
000001D5 570 _esp_wait_busy::
571 ;src/esp32.c:140: while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY) break;
000001D5 572 00103$:
000001D5 7B [ 4] 573 ld a, e
000001D6 C6 FF [ 7] 574 add a, #0xff
000001D8 5F [ 4] 575 ld e, a
000001D9 7A [ 4] 576 ld a, d
000001DA CE FF [ 7] 577 adc a, #0xff
000001DC 57 [ 4] 578 ld d, a
000001DD 7D [ 4] 579 ld a, l
000001DE CE FF [ 7] 580 adc a, #0xff
000001E0 6F [ 4] 581 ld l, a
000001E1 7C [ 4] 582 ld a, h
000001E2 CE FF [ 7] 583 adc a, #0xff
000001E4 67 [ 4] 584 ld h, a
000001E5 B5 [ 4] 585 or a, l
000001E6 B2 [ 4] 586 or a, d
000001E7 B3 [ 4] 587 or a, e
000001E8 C8 [11] 588 ret z
000001E9 E5 [11] 589 push hl
000001EA D5 [11] 590 push de
000001EB 3E 01 [ 7] 591 ld a, #0x01
000001ED CDr1Er00 [17] 592 call _esp_rd_reg8
000001F0 D1 [10] 593 pop de
000001F1 E1 [10] 594 pop hl
000001F2 FE 02 [ 7] 595 cp a, #0x02
000001F4 28 DF [12] 596 jr z, 00103$
597 ;src/esp32.c:142: return timeout;
598 ;src/esp32.c:143: }
000001F6 C9 [10] 599 ret
600 ;src/esp32.c:145: int esp_create_obj(u32 size, u8 type)
601 ; ---------------------------------
602 ; Function esp_create_obj
603 ; ---------------------------------
000001F7 604 _esp_create_obj::
605 ;src/esp32.c:147: esp_wr_reg32(ESP_REG_DATA_SIZE, size);
000001F7 E5 [11] 606 push hl
000001F8 D5 [11] 607 push de
000001F9 3E 03 [ 7] 608 ld a, #0x03
000001FB CDrE8r00 [17] 609 call _esp_wr_reg32
610 ;src/esp32.c:148: esp_wr_reg8(ESP_REG_OBJ_TYPE, type);
000001FE FD 21 02 00 [14] 611 ld iy, #2
00000202 FD 39 [15] 612 add iy, sp
00000204 FD 6E 00 [19] 613 ld l, 0 (iy)
00000207 3E 02 [ 7] 614 ld a, #0x02
00000209 CDrD1r00 [17] 615 call _esp_wr_reg8
616 ;src/esp32.c:149: esp_cmd(ESP_CMD_MAKE_OBJECT);
0000020C 3E E0 [ 7] 617 ld a, #0xe0
0000020E CDr05r00 [17] 618 call _esp_cmd
619 ;src/esp32.c:150: esp_wait_busy(20000);
00000211 11 20 4E [10] 620 ld de, #0x4e20
00000214 21 00 00 [10] 621 ld hl, #0x0000
00000217 CDrD5r01 [17] 622 call _esp_wait_busy
623 ;src/esp32.c:153: return esp_rd_reg8(ESP_REG_OBJ_HANDLE);
0000021A 3E 0B [ 7] 624 ld a, #0x0b
0000021C CDr1Er00 [17] 625 call _esp_rd_reg8
0000021F 5F [ 4] 626 ld e, a
00000220 16 00 [ 7] 627 ld d, #0x00
628 ;src/esp32.c:154: }
00000222 E1 [10] 629 pop hl
00000223 33 [ 6] 630 inc sp
00000224 E9 [ 4] 631 jp (hl)
632 ;src/main.c:129: bool esp_init()
633 ; ---------------------------------
634 ; Function esp_init
635 ; ---------------------------------
00000225 636 _esp_init::
637 ;src/main.c:131: esp_cmd(ESP_CMD_NOP);
00000225 AF [ 4] 638 xor a, a
00000226 CDr05r00 [17] 639 call _esp_cmd
640 ;src/main.c:132: esp_rd_end();
00000229 CDr8Br01 [17] 641 call _esp_rd_end
642 ;src/main.c:133: esp_wr_end();
0000022C CDr18r01 [17] 643 call _esp_wr_end
644 ;src/main.c:137: return true;
0000022F 3E 01 [ 7] 645 ld a, #0x01
646 ;src/main.c:138: }
00000231 C9 [10] 647 ret
00000232 648 _err_no_esp:
00000232 01 649 .db #0x01 ; 1
00000233 00 650 .db #0x00 ; 0
00000234 18 651 .db #0x18 ; 24
00000235 0A 652 .db #0x0a ; 10
00000236 20 653 .db #0x20 ; 32
00000237 05 654 .db #0x05 ; 5
00000238 2F 655 .db #0x2f ; 47
00000239 00 656 .db #0x00 ; 0
0000023A 00 00 657 .dw #0x0000
0000023C 00 658 .db #0x00 ; 0
0000023D 00 659 .db #0x00 ; 0
0000023Er8Cr02 660 .dw __str_0
00000240r96r02 661 .dw __str_1
00000242r97r02 662 .dw __str_2
00000244 663 _err_out_of_mem:
00000244 01 664 .db #0x01 ; 1
00000245 00 665 .db #0x00 ; 0
00000246 FF 666 .db #0xff ; 255
00000247 FF 667 .db #0xff ; 255
00000248 20 668 .db #0x20 ; 32
00000249 05 669 .db #0x05 ; 5
0000024A 2F 670 .db #0x2f ; 47
0000024B 00 671 .db #0x00 ; 0
0000024C 00 00 672 .dw #0x0000
0000024E 00 673 .db #0x00 ; 0
0000024F 00 674 .db #0x00 ; 0
00000250r8Cr02 675 .dw __str_0
00000252r96r02 676 .dw __str_1
00000254rADr02 677 .dw __str_3
00000256 678 _err_playback:
00000256 01 679 .db #0x01 ; 1
00000257 00 680 .db #0x00 ; 0
00000258 FF 681 .db #0xff ; 255
00000259 FF 682 .db #0xff ; 255
0000025A 20 683 .db #0x20 ; 32
0000025B 05 684 .db #0x05 ; 5
0000025C 2F 685 .db #0x2f ; 47
0000025D 00 686 .db #0x00 ; 0
0000025E 00 00 687 .dw #0x0000
00000260 00 688 .db #0x00 ; 0
00000261 00 689 .db #0x00 ; 0
00000262r8Cr02 690 .dw __str_0
00000264r96r02 691 .dw __str_1
00000266rCDr02 692 .dw __str_4
00000268 693 _win_xm:
00000268 81 694 .db #0x81 ; 129
00000269 00 695 .db #0x00 ; 0
0000026A 19 696 .db #0x19 ; 25
0000026B 0A 697 .db #0x0a ; 10
0000026C 28 698 .db #0x28 ; 40
0000026D 0B 699 .db #0x0b ; 11
0000026E 4F 700 .db #0x4f ; 79 'O'
0000026F 00 701 .db #0x00 ; 0
00000270 00 00 702 .dw #0x0000
00000272 00 703 .db #0x00 ; 0
00000273 00 704 .db #0x00 ; 0
00000274rEBr02 705 .dw __str_5
00000276r96r02 706 .dw __str_1
00000278r00r03 707 .dw __str_6
0000027A 708 _win_about:
0000027A 01 709 .db #0x01 ; 1
0000027B 00 710 .db #0x00 ; 0
0000027C 16 711 .db #0x16 ; 22
0000027D 0A 712 .db #0x0a ; 10
0000027E 24 713 .db #0x24 ; 36
0000027F 05 714 .db #0x05 ; 5
00000280 4F 715 .db #0x4f ; 79 'O'
00000281 00 716 .db #0x00 ; 0
00000282 00 00 717 .dw #0x0000
00000284 00 718 .db #0x00 ; 0
00000285 00 719 .db #0x00 ; 0
00000286r0Er03 720 .dw __str_7
00000288r96r02 721 .dw __str_1
0000028Ar17r03 722 .dw __str_8
0000028C 723 __str_0:
0000028C 0E 724 .db 0x0e
0000028D 20 45 72 72 6F 72 21 725 .ascii " Error! "
20
00000295 00 726 .db 0x00
00000296 727 __str_1:
00000296 00 728 .db 0x00
00000297 729 __str_2:
00000297 0E 730 .db 0x0e
00000298 0C 731 .db 0x0c
00000299 01 732 .db 0x01
0000029A 4E 6F 20 45 53 50 33 733 .ascii "No ESP32 detected!"
32 20 64 65 74 65 63
74 65 64 21
000002AC 00 734 .db 0x00
000002AD 735 __str_3:
000002AD 0E 736 .db 0x0e
000002AE 0C 737 .db 0x0c
000002AF 01 738 .db 0x01
000002B0 4F 75 74 20 6F 66 20 739 .ascii "Out of memory (file too big)"
6D 65 6D 6F 72 79 20
28 66 69 6C 65 20 74
6F 6F 20 62 69 67 29
000002CC 00 740 .db 0x00
000002CD 741 __str_4:
000002CD 0E 742 .db 0x0e
000002CE 0C 743 .db 0x0c
000002CF 01 744 .db 0x01
000002D0 50 6C 61 79 62 61 63 745 .ascii "Playback error (bad file?)"
6B 20 65 72 72 6F 72
20 28 62 61 64 20 66
69 6C 65 3F 29
000002EA 00 746 .db 0x00
000002EB 747 __str_5:
000002EB 0E 748 .db 0x0e
000002EC 20 58 4D 2F 58 4D 5A 749 .ascii " XM/XMZ/S3M Player "
2F 53 33 4D 20 50 6C
61 79 65 72 20
000002FF 00 750 .db 0x00
00000300 751 __str_6:
00000300 0E 752 .db 0x0e
00000301 0C 753 .db 0x0c
00000302 01 754 .db 0x01
00000303 50 6C 61 79 69 6E 67 755 .ascii "Playing..."
2E 2E 2E
0000030D 00 756 .db 0x00
0000030E 757 __str_7:
0000030E 0E 758 .db 0x0e
0000030F 20 41 62 6F 75 74 20 759 .ascii " About "
00000316 00 760 .db 0x00
00000317 761 __str_8:
00000317 0E 762 .db 0x0e
00000318 0C 763 .db 0x0c
00000319 01 764 .db 0x01
0000031A 58 4D 20 50 6C 61 79 765 .ascii "XM Player v1.0"
65 72 20 76 31 2E 30
00000328 00 766 .db 0x00
767 ;src/main.c:142: bool play_xm()
768 ; ---------------------------------
769 ; Function play_xm
770 ; ---------------------------------
00000329 771 _play_xm::
00000329 DD E5 [15] 772 push ix
0000032B DD 21 00 00 [14] 773 ld ix, #0
0000032F DD 39 [15] 774 add ix, sp
00000331 21 EC FF [10] 775 ld hl, #-20
00000334 39 [11] 776 add hl, sp
00000335 F9 [ 6] 777 ld sp, hl
778 ;src/main.c:144: esp_cmd(ESP_CMD_TRACK_STOP);
00000336 3E A2 [ 7] 779 ld a, #0xa2
00000338 CDr05r00 [17] 780 call _esp_cmd
781 ;src/main.c:145: esp_wait_busy(10000);
0000033B 11 10 27 [10] 782 ld de, #0x2710
0000033E 21 00 00 [10] 783 ld hl, #0x0000
00000341 CDrD5r01 [17] 784 call _esp_wait_busy
785 ;src/main.c:146: esp_cmd(ESP_CMD_KILL_OBJECTS);
00000344 3E E4 [ 7] 786 ld a, #0xe4
00000346 CDr05r00 [17] 787 call _esp_cmd
788 ;src/main.c:147: esp_wait_busy(10000);
00000349 11 10 27 [10] 789 ld de, #0x2710
0000034C 21 00 00 [10] 790 ld hl, #0x0000
0000034F CDrD5r01 [17] 791 call _esp_wait_busy
792 ;src/main.c:150: switch (file_ext)
00000352 3Ar07r10 [13] 793 ld a, (_file_ext)
00000355 3D [ 4] 794 dec a
00000356 28 0A [12] 795 jr z, 00101$
00000358 3Ar07r10 [13] 796 ld a, (_file_ext)
0000035B D6 02 [ 7] 797 sub a, #0x02
0000035D 28 08 [12] 798 jr z, 00102$
0000035F C3r6Cr03 [10] 799 jp 00103$
800 ;src/main.c:152: case EXT_XMZ: obj_type = OBJ_TYPE_ZIP; break;
00000362 801 00101$:
00000362 3E 08 [ 7] 802 ld a, #0x08
00000364 C3r6Er03 [10] 803 jp 00104$
804 ;src/main.c:153: case EXT_S3M: obj_type = OBJ_TYPE_S3M; break;
00000367 805 00102$:
00000367 3E 0C [ 7] 806 ld a, #0x0c
00000369 C3r6Er03 [10] 807 jp 00104$
808 ;src/main.c:154: default: obj_type = OBJ_TYPE_XM; break;
0000036C 809 00103$:
0000036C 3E 05 [ 7] 810 ld a, #0x05
811 ;src/main.c:155: }
0000036E 812 00104$:
813 ;src/main.c:157: xm_handle = esp_create_obj(filesize, obj_type);
0000036E F5 [11] 814 push af
0000036F 33 [ 6] 815 inc sp
00000370 ED 5Br03r10 [20] 816 ld de, (_filesize)
00000374 2Ar05r10 [16] 817 ld hl, (_filesize + 2)
00000377 CDrF7r01 [17] 818 call _esp_create_obj
0000037A 21r31r10 [10] 819 ld hl, #_xm_handle
0000037D 73 [ 7] 820 ld (hl), e
821 ;src/main.c:158: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
0000037E 3E 01 [ 7] 822 ld a, #0x01
00000380 CDr1Er00 [17] 823 call _esp_rd_reg8
00000383 32r09r10 [13] 824 ld (#_last_esp_status), a
825 ;src/main.c:159: if (last_esp_status != ESP_ST_READY)
00000386 3Ar09r10 [13] 826 ld a, (_last_esp_status)
00000389 3D [ 4] 827 dec a
0000038A 28 04 [12] 828 jr z, 00106$
829 ;src/main.c:160: return false;
0000038C AF [ 4] 830 xor a, a
0000038D C3r39r05 [10] 831 jp 00116$
00000390 832 00106$:
833 ;src/main.c:162: u32 sz = filesize;
00000390 21 0C 00 [10] 834 ld hl, #12
00000393 39 [11] 835 add hl, sp
00000394 EB [ 4] 836 ex de, hl
00000395 21r03r10 [10] 837 ld hl, #_filesize
00000398 01 04 00 [10] 838 ld bc, #4
0000039B ED B0 [21] 839 ldir
840 ;src/main.c:163: u32 offs = 0;
0000039D AF [ 4] 841 xor a, a
0000039E DD 77 FC [19] 842 ld -4 (ix), a
000003A1 DD 77 FD [19] 843 ld -3 (ix), a
000003A4 DD 77 FE [19] 844 ld -2 (ix), a
000003A7 DD 77 FF [19] 845 ld -1 (ix), a
846 ;src/main.c:165: while (sz)
000003AA 847 00107$:
000003AA DD 7E FB [19] 848 ld a, -5 (ix)
000003AD DD B6 FA [19] 849 or a, -6 (ix)
000003B0 DD B6 F9 [19] 850 or a, -7 (ix)
000003B3 DD B6 F8 [19] 851 or a, -8 (ix)
000003B6 CArC6r04 [10] 852 jp z, 00109$
853 ;src/main.c:167: u32 s = min(sz, FS_BUF_SIZE);
000003B9 DD 7E F9 [19] 854 ld a, -7 (ix)
000003BC D6 10 [ 7] 855 sub a, #0x10
000003BE DD 7E FA [19] 856 ld a, -6 (ix)
000003C1 DE 00 [ 7] 857 sbc a, #0x00
000003C3 DD 7E FB [19] 858 ld a, -5 (ix)
000003C6 DE 00 [ 7] 859 sbc a, #0x00
000003C8 30 11 [12] 860 jr nc, 00118$
000003CA 21 00 00 [10] 861 ld hl, #0
000003CD 39 [11] 862 add hl, sp
000003CE EB [ 4] 863 ex de, hl
000003CF 21 0C 00 [10] 864 ld hl, #12
000003D2 39 [11] 865 add hl, sp
000003D3 01 04 00 [10] 866 ld bc, #4
000003D6 ED B0 [21] 867 ldir
000003D8 C3rEAr03 [10] 868 jp 00119$
000003DB 869 00118$:
000003DB DD 36 EC 00 [19] 870 ld -20 (ix), #0x00
000003DF DD 36 ED 10 [19] 871 ld -19 (ix), #0x10
000003E3 AF [ 4] 872 xor a, a
000003E4 DD 77 EE [19] 873 ld -18 (ix), a
000003E7 DD 77 EF [19] 874 ld -17 (ix), a
000003EA 875 00119$:
000003EA 21 05 00 [10] 876 ld hl, #5
000003ED 39 [11] 877 add hl, sp
000003EE EB [ 4] 878 ex de, hl
000003EF 21 00 00 [10] 879 ld hl, #0
000003F2 39 [11] 880 add hl, sp
000003F3 01 04 00 [10] 881 ld bc, #4
000003F6 ED B0 [21] 882 ldir
883 ;src/main.c:168: u8 sec = (s + 511) >> 9;
000003F8 DD 7E F1 [19] 884 ld a, -15 (ix)
000003FB C6 FF [ 7] 885 add a, #0xff
000003FD DD 7E F2 [19] 886 ld a, -14 (ix)
00000400 CE 01 [ 7] 887 adc a, #0x01
00000402 47 [ 4] 888 ld b, a
00000403 3E 00 [ 7] 889 ld a, #0x00
00000405 CE 00 [ 7] 890 adc a, #0x00
00000407 5F [ 4] 891 ld e, a
00000408 3E 00 [ 7] 892 ld a, #0x00
0000040A CE 00 [ 7] 893 adc a, #0x00
0000040C 57 [ 4] 894 ld d, a
0000040D 48 [ 4] 895 ld c, b
0000040E 43 [ 4] 896 ld b, e
0000040F 5A [ 4] 897 ld e, d
00000410 CB 3B [ 8] 898 srl e
00000412 CB 18 [ 8] 899 rr b
00000414 CB 19 [ 8] 900 rr c
901 ;src/main.c:170: wc_load512((u16)fs_buf, sec);
00000416 DD 71 F7 [19] 902 ld -9 (ix), c
00000419 79 [ 4] 903 ld a, c
0000041A F5 [11] 904 push af
0000041B 33 [ 6] 905 inc sp
0000041C 21r01r00 [10] 906 ld hl, #_fs_buf
0000041F CDr00r00 [17] 907 call _wc_load512
908 ;src/main.c:172: esp_wr_reg32(ESP_REG_DATA_SIZE, s);
00000422 21 00 00 [10] 909 ld hl, #0x0
00000425 E5 [11] 910 push hl
00000426 DD 6E F1 [19] 911 ld l, -15 (ix)
00000429 DD 66 F2 [19] 912 ld h, -14 (ix)
0000042C E5 [11] 913 push hl
0000042D 3E 03 [ 7] 914 ld a, #0x03
0000042F CDrE8r00 [17] 915 call _esp_wr_reg32
916 ;src/main.c:173: esp_wr_reg32(ESP_REG_DATA_OFFSET, offs);
00000432 DD 6E FE [19] 917 ld l, -2 (ix)
00000435 DD 66 FF [19] 918 ld h, -1 (ix)
00000438 E5 [11] 919 push hl
00000439 DD 6E FC [19] 920 ld l, -4 (ix)
0000043C DD 66 FD [19] 921 ld h, -3 (ix)
0000043F E5 [11] 922 push hl
00000440 3E 07 [ 7] 923 ld a, #0x07
00000442 CDrE8r00 [17] 924 call _esp_wr_reg32
925 ;src/main.c:174: esp_cmd(ESP_CMD_WRITE_OBJECT);
00000445 3E E1 [ 7] 926 ld a, #0xe1
00000447 CDr05r00 [17] 927 call _esp_cmd
928 ;src/main.c:175: esp_wait_status(ESP_ST_DATA_M2S, 2000);
0000044A 21 00 00 [10] 929 ld hl, #0x0000
0000044D E5 [11] 930 push hl
0000044E 21 D0 07 [10] 931 ld hl, #0x07d0
00000451 E5 [11] 932 push hl
00000452 3E 03 [ 7] 933 ld a, #0x03
00000454 CDr9Ar01 [17] 934 call _esp_wait_status
00000457 F1 [10] 935 pop af
00000458 F1 [10] 936 pop af
937 ;src/main.c:176: esp_send_dma((u16)fs_buf, *(u8*)_PAGE2, 512, sec);
00000459 DD 7E F7 [19] 938 ld a, -9 (ix)
0000045C DD 77 F5 [19] 939 ld -11 (ix), a
0000045F DD 36 F6 00 [19] 940 ld -10 (ix), #0x00
00000463 3A 02 60 [13] 941 ld a, (#0x6002)
00000466 DD 77 F7 [19] 942 ld -9 (ix), a
00000469 DD 6E F5 [19] 943 ld l, -11 (ix)
0000046C 26 00 [ 7] 944 ld h, #0x00
0000046E E5 [11] 945 push hl
0000046F 21 00 02 [10] 946 ld hl, #0x0200
00000472 E5 [11] 947 push hl
00000473 DD 7E F7 [19] 948 ld a, -9 (ix)
00000476 F5 [11] 949 push af
00000477 33 [ 6] 950 inc sp
00000478 21r01r00 [10] 951 ld hl, #_fs_buf
0000047B CDr27r01 [17] 952 call _esp_send_dma
953 ;src/main.c:178: offs += s;
0000047E DD 5E F1 [19] 954 ld e, -15 (ix)
00000481 DD 56 F2 [19] 955 ld d, -14 (ix)
00000484 DD 6E FC [19] 956 ld l, -4 (ix)
00000487 DD 66 FD [19] 957 ld h, -3 (ix)
0000048A 19 [11] 958 add hl, de
0000048B DD 75 FC [19] 959 ld -4 (ix), l
0000048E DD 74 FD [19] 960 ld -3 (ix), h
00000491 DD 7E FE [19] 961 ld a, -2 (ix)
00000494 DD 8E F3 [19] 962 adc a, -13 (ix)
00000497 DD 77 FE [19] 963 ld -2 (ix), a
0000049A 30 03 [12] 964 jr nc, 00197$
0000049C DD 34 FF [23] 965 inc -1 (ix)
0000049F 966 00197$:
967 ;src/main.c:179: sz -= s;
0000049F DD 7E F8 [19] 968 ld a, -8 (ix)
000004A2 DD 96 F1 [19] 969 sub a, -15 (ix)
000004A5 DD 77 F8 [19] 970 ld -8 (ix), a
000004A8 DD 7E F9 [19] 971 ld a, -7 (ix)
000004AB DD 9E F2 [19] 972 sbc a, -14 (ix)
000004AE DD 77 F9 [19] 973 ld -7 (ix), a
000004B1 DD 7E FA [19] 974 ld a, -6 (ix)
000004B4 DD 9E F3 [19] 975 sbc a, -13 (ix)
000004B7 DD 77 FA [19] 976 ld -6 (ix), a
000004BA DD 7E FB [19] 977 ld a, -5 (ix)
000004BD DD 9E F4 [19] 978 sbc a, -12 (ix)
000004C0 DD 77 FB [19] 979 ld -5 (ix), a
000004C3 C3rAAr03 [10] 980 jp 00107$
000004C6 981 00109$:
982 ;src/main.c:182: if (file_ext == EXT_XMZ)
000004C6 3Ar07r10 [13] 983 ld a, (_file_ext)
000004C9 3D [ 4] 984 dec a
000004CA 20 3D [12] 985 jr nz, 00113$
986 ;src/main.c:187: esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
000004CC 3Ar31r10 [13] 987 ld a, (_xm_handle)
000004CF 6F [ 4] 988 ld l, a
000004D0 3E 0B [ 7] 989 ld a, #0x0b
000004D2 CDrD1r00 [17] 990 call _esp_wr_reg8
991 ;src/main.c:188: esp_wr_reg8(ESP_REG_OBJ_TYPE, OBJ_TYPE_XM);
000004D5 2E 05 [ 7] 992 ld l, #0x05
000004D7 3E 02 [ 7] 993 ld a, #0x02
000004D9 CDrD1r00 [17] 994 call _esp_wr_reg8
995 ;src/main.c:189: esp_wr_reg32(ESP_REG_DATA_SIZE, filesize);
000004DC 2Ar05r10 [16] 996 ld hl, (_filesize + 2)
000004DF E5 [11] 997 push hl
000004E0 2Ar03r10 [16] 998 ld hl, (_filesize)
000004E3 E5 [11] 999 push hl
000004E4 3E 03 [ 7] 1000 ld a, #0x03
000004E6 CDrE8r00 [17] 1001 call _esp_wr_reg32
1002 ;src/main.c:190: esp_cmd(ESP_CMD_UNZIP);
000004E9 3E F2 [ 7] 1003 ld a, #0xf2
000004EB CDr05r00 [17] 1004 call _esp_cmd
1005 ;src/main.c:191: esp_wait_busy(10000);
000004EE 11 10 27 [10] 1006 ld de, #0x2710
000004F1 21 00 00 [10] 1007 ld hl, #0x0000
000004F4 CDrD5r01 [17] 1008 call _esp_wait_busy
1009 ;src/main.c:193: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
000004F7 3E 01 [ 7] 1010 ld a, #0x01
000004F9 CDr1Er00 [17] 1011 call _esp_rd_reg8
000004FC 32r09r10 [13] 1012 ld (#_last_esp_status), a
1013 ;src/main.c:194: if (last_esp_status != ESP_ST_READY)
000004FF 3Ar09r10 [13] 1014 ld a, (_last_esp_status)
00000502 3D [ 4] 1015 dec a
00000503 28 04 [12] 1016 jr z, 00113$
1017 ;src/main.c:195: return false;
00000505 AF [ 4] 1018 xor a, a
00000506 C3r39r05 [10] 1019 jp 00116$
00000509 1020 00113$:
1021 ;src/main.c:198: esp_cmd(ESP_CMD_TRACK_INIT);
00000509 3E A0 [ 7] 1022 ld a, #0xa0
0000050B CDr05r00 [17] 1023 call _esp_cmd
1024 ;src/main.c:199: esp_wait_busy(10000);
0000050E 11 10 27 [10] 1025 ld de, #0x2710
00000511 21 00 00 [10] 1026 ld hl, #0x0000
00000514 CDrD5r01 [17] 1027 call _esp_wait_busy
1028 ;src/main.c:201: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
00000517 3E 01 [ 7] 1029 ld a, #0x01
00000519 CDr1Er00 [17] 1030 call _esp_rd_reg8
0000051C 32r09r10 [13] 1031 ld (#_last_esp_status), a
1032 ;src/main.c:202: if (last_esp_status != ESP_ST_READY)
0000051F 3Ar09r10 [13] 1033 ld a, (_last_esp_status)
00000522 3D [ 4] 1034 dec a
00000523 28 04 [12] 1035 jr z, 00115$
1036 ;src/main.c:203: return false;
00000525 AF [ 4] 1037 xor a, a
00000526 C3r39r05 [10] 1038 jp 00116$
00000529 1039 00115$:
1040 ;src/main.c:205: esp_cmd(ESP_CMD_TRACK_PLAY);
00000529 3E A1 [ 7] 1041 ld a, #0xa1
0000052B CDr05r00 [17] 1042 call _esp_cmd
1043 ;src/main.c:206: esp_wait_busy(10000);
0000052E 11 10 27 [10] 1044 ld de, #0x2710
00000531 21 00 00 [10] 1045 ld hl, #0x0000
00000534 CDrD5r01 [17] 1046 call _esp_wait_busy
1047 ;src/main.c:208: return true;
00000537 3E 01 [ 7] 1048 ld a, #0x01
00000539 1049 00116$:
1050 ;src/main.c:209: }
00000539 DD F9 [10] 1051 ld sp, ix
0000053B DD E1 [14] 1052 pop ix
0000053D C9 [10] 1053 ret
1054 ;src/main.c:212: void wait_esc_key()
1055 ; ---------------------------------
1056 ; Function wait_esc_key
1057 ; ---------------------------------
0000053E 1058 _wait_esc_key::
1059 ;src/main.c:214: while (1)
0000053E 1060 00104$:
1061 ;src/main.c:218: __endasm;
0000053E 76 [ 4] 1062 halt
1063 ;src/main.c:220: if (wc_key_esc())
0000053F CDr00r00 [17] 1064 call _wc_key_esc
00000542 B7 [ 4] 1065 or a, a
00000543 28 F9 [12] 1066 jr z, 00104$
1067 ;src/main.c:221: break;
1068 ;src/main.c:223: }
00000545 C9 [10] 1069 ret
1070 ;src/main.c:225: void wait_frames(u8 n)
1071 ; ---------------------------------
1072 ; Function wait_frames
1073 ; ---------------------------------
00000546 1074 _wait_frames::
00000546 4F [ 4] 1075 ld c, a
1076 ;src/main.c:227: while (n--)
00000547 1077 00101$:
00000547 79 [ 4] 1078 ld a, c
00000548 0D [ 4] 1079 dec c
00000549 B7 [ 4] 1080 or a, a
0000054A C8 [11] 1081 ret z
1082 ;src/main.c:231: __endasm;
0000054B 76 [ 4] 1083 halt
1084 ;src/main.c:233: }
0000054C C3r47r05 [10] 1085 jp 00101$
1086 ;src/main.c:235: void about()
1087 ; ---------------------------------
1088 ; Function about
1089 ; ---------------------------------
0000054F 1090 _about::
1091 ;src/main.c:237: wc_prwow(&win_about);
0000054F 21r7Ar02 [10] 1092 ld hl, #_win_about
00000552 CDr00r00 [17] 1093 call _wc_prwow
1094 ;src/main.c:238: wait_esc_key();
00000555 CDr3Er05 [17] 1095 call _wait_esc_key
1096 ;src/main.c:239: wc_rresb(&win_about);
00000558 21r7Ar02 [10] 1097 ld hl, #_win_about
0000055B CDr00r00 [17] 1098 call _wc_rresb
1099 ;src/main.c:240: wc_exit(WC_EXIT);
0000055E AF [ 4] 1100 xor a, a
1101 ;src/main.c:241: }
0000055F C3r00r00 [10] 1102 jp _wc_exit
1103 ;src/main.c:243: void error_esp()
1104 ; ---------------------------------
1105 ; Function error_esp
1106 ; ---------------------------------
00000562 1107 _error_esp::
1108 ;src/main.c:245: wc_prwow(&err_no_esp);
00000562 21r32r02 [10] 1109 ld hl, #_err_no_esp
00000565 CDr00r00 [17] 1110 call _wc_prwow
1111 ;src/main.c:246: wait_esc_key();
00000568 CDr3Er05 [17] 1112 call _wait_esc_key
1113 ;src/main.c:247: wc_rresb(&err_no_esp);
0000056B 21r32r02 [10] 1114 ld hl, #_err_no_esp
0000056E CDr00r00 [17] 1115 call _wc_rresb
1116 ;src/main.c:248: wc_exit(WC_EXIT);
00000571 AF [ 4] 1117 xor a, a
1118 ;src/main.c:249: }
00000572 C3r00r00 [10] 1119 jp _wc_exit
1120 ;src/main.c:251: void error_oom()
1121 ; ---------------------------------
1122 ; Function error_oom
1123 ; ---------------------------------
00000575 1124 _error_oom::
1125 ;src/main.c:253: wc_prwow(&err_out_of_mem);
00000575 21r44r02 [10] 1126 ld hl, #_err_out_of_mem
00000578 CDr00r00 [17] 1127 call _wc_prwow
1128 ;src/main.c:254: wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
0000057B 3E 32 [ 7] 1129 ld a, #0x32
0000057D CDr46r05 [17] 1130 call _wait_frames
1131 ;src/main.c:255: wc_rresb(&err_out_of_mem);
00000580 21r44r02 [10] 1132 ld hl, #_err_out_of_mem
00000583 CDr00r00 [17] 1133 call _wc_rresb
1134 ;src/main.c:256: wc_exit(WC_NEXT_FILE);
00000586 3E 02 [ 7] 1135 ld a, #0x02
1136 ;src/main.c:257: }
00000588 C3r00r00 [10] 1137 jp _wc_exit
1138 ;src/main.c:259: void error_playback()
1139 ; ---------------------------------
1140 ; Function error_playback
1141 ; ---------------------------------
0000058B 1142 _error_playback::
1143 ;src/main.c:261: wc_prwow(&err_playback);
0000058B 21r56r02 [10] 1144 ld hl, #_err_playback
0000058E CDr00r00 [17] 1145 call _wc_prwow
1146 ;src/main.c:262: wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
00000591 3E 32 [ 7] 1147 ld a, #0x32
00000593 CDr46r05 [17] 1148 call _wait_frames
1149 ;src/main.c:263: wc_rresb(&err_playback);
00000596 21r56r02 [10] 1150 ld hl, #_err_playback
00000599 CDr00r00 [17] 1151 call _wc_rresb
1152 ;src/main.c:264: wc_exit(WC_NEXT_FILE);
0000059C 3E 02 [ 7] 1153 ld a, #0x02
1154 ;src/main.c:265: }
0000059E C3r00r00 [10] 1155 jp _wc_exit
1156 ;src/main.c:272: void copy_file_name()
1157 ; ---------------------------------
1158 ; Function copy_file_name
1159 ; ---------------------------------
000005A1 1160 _copy_file_name::
1161 ;src/main.c:274: u8 *src = (u8*)p_file_name;
000005A1 ED 4Br0Ar10 [20] 1162 ld bc, (_p_file_name)
1163 ;src/main.c:277: while (src[i] && i < sizeof(file_name) - 1)
000005A5 1E 00 [ 7] 1164 ld e, #0x00
000005A7 1165 00102$:
000005A7 6B [ 4] 1166 ld l, e
000005A8 26 00 [ 7] 1167 ld h, #0x00
000005AA 09 [11] 1168 add hl, bc
000005AB 56 [ 7] 1169 ld d, (hl)
1170 ;src/main.c:279: file_name[i] = src[i];
000005AC 3Er0C [ 7] 1171 ld a, #<(_file_name)
000005AE 83 [ 4] 1172 add a, e
000005AF 6F [ 4] 1173 ld l, a
000005B0 3Es10 [ 7] 1174 ld a, #>(_file_name)
000005B2 CE 00 [ 7] 1175 adc a, #0x00
000005B4 67 [ 4] 1176 ld h, a
1177 ;src/main.c:277: while (src[i] && i < sizeof(file_name) - 1)
000005B5 7A [ 4] 1178 ld a, d
000005B6 B7 [ 4] 1179 or a, a
000005B7 28 0A [12] 1180 jr z, 00104$
000005B9 7B [ 4] 1181 ld a, e
000005BA D6 20 [ 7] 1182 sub a, #0x20
000005BC 30 05 [12] 1183 jr nc, 00104$
1184 ;src/main.c:279: file_name[i] = src[i];
000005BE 72 [ 7] 1185 ld (hl), d
1186 ;src/main.c:280: i++;
000005BF 1C [ 4] 1187 inc e
000005C0 C3rA7r05 [10] 1188 jp 00102$
000005C3 1189 00104$:
1190 ;src/main.c:282: file_name[i] = 0;
000005C3 36 00 [10] 1191 ld (hl), #0x00
1192 ;src/main.c:283: }
000005C5 C9 [10] 1193 ret
1194 ;src/main.c:291: void xm_draw_static_labels()
1195 ; ---------------------------------
1196 ; Function xm_draw_static_labels
1197 ; ---------------------------------
000005C6 1198 _xm_draw_static_labels::
1199 ;src/main.c:293: wc_prsrw_attr(&win_xm, "File:", ROW_FILE, 1, 5, ATTR_CAPTION);
000005C6 3E 45 [ 7] 1200 ld a, #0x45
000005C8 F5 [11] 1201 push af
000005C9 33 [ 6] 1202 inc sp
000005CA 21 05 00 [10] 1203 ld hl, #0x0005
000005CD E5 [11] 1204 push hl
000005CE 21 01 01 [10] 1205 ld hl, #0x101
000005D1 E5 [11] 1206 push hl
000005D2 11rF0r05 [10] 1207 ld de, #___str_9
000005D5 21r68r02 [10] 1208 ld hl, #_win_xm
000005D8 CDr00r00 [17] 1209 call _wc_prsrw_attr
1210 ;src/main.c:294: wc_prsrw(&win_xm, file_name, ROW_FILE, 7, strlen(file_name));
000005DB 21r0Cr10 [10] 1211 ld hl, #_file_name
000005DE CDr00r00 [17] 1212 call _strlen
000005E1 D5 [11] 1213 push de
000005E2 21 01 07 [10] 1214 ld hl, #0x701
000005E5 E5 [11] 1215 push hl
000005E6 11r0Cr10 [10] 1216 ld de, #_file_name
000005E9 21r68r02 [10] 1217 ld hl, #_win_xm
000005EC CDr00r00 [17] 1218 call _wc_prsrw
1219 ;src/main.c:295: }
000005EF C9 [10] 1220 ret
000005F0 1221 ___str_9:
000005F0 46 69 6C 65 3A 1222 .ascii "File:"
000005F5 00 1223 .db 0x00
1224 ;src/main.c:304: void put_hex2(char *dst, u8 val)
1225 ; ---------------------------------
1226 ; Function put_hex2
1227 ; ---------------------------------
000005F6 1228 _put_hex2::
000005F6 DD E5 [15] 1229 push ix
000005F8 DD 21 00 00 [14] 1230 ld ix, #0
000005FC DD 39 [15] 1231 add ix, sp
000005FE EB [ 4] 1232 ex de, hl
1233 ;src/main.c:307: dst[0] = hexch[(val >> 4) & 0xF];
000005FF 01r22r06 [10] 1234 ld bc, #_put_hex2_hexch_10000_105+0
00000602 DD 7E 04 [19] 1235 ld a, 4 (ix)
00000605 07 [ 4] 1236 rlca
00000606 07 [ 4] 1237 rlca
00000607 07 [ 4] 1238 rlca
00000608 07 [ 4] 1239 rlca
00000609 E6 0F [ 7] 1240 and a, #0xf
0000060B 6F [ 4] 1241 ld l, a
0000060C 26 00 [ 7] 1242 ld h, #0x00
0000060E 09 [11] 1243 add hl, bc
0000060F 7E [ 7] 1244 ld a, (hl)
00000610 12 [ 7] 1245 ld (de), a
1246 ;src/main.c:308: dst[1] = hexch[val & 0xF];
00000611 13 [ 6] 1247 inc de
00000612 DD 7E 04 [19] 1248 ld a, 4 (ix)
00000615 E6 0F [ 7] 1249 and a, #0x0f
00000617 6F [ 4] 1250 ld l, a
00000618 26 00 [ 7] 1251 ld h, #0x00
0000061A 09 [11] 1252 add hl, bc
0000061B 7E [ 7] 1253 ld a, (hl)
0000061C 12 [ 7] 1254 ld (de), a
1255 ;src/main.c:309: }
0000061D DD E1 [14] 1256 pop ix
0000061F E1 [10] 1257 pop hl
00000620 33 [ 6] 1258 inc sp
00000621 E9 [ 4] 1259 jp (hl)
00000622 1260 _put_hex2_hexch_10000_105:
00000622 30 31 32 33 34 35 36 1261 .ascii "0123456789ABCDEF"
37 38 39 41 42 43 44
45 46
00000632 00 1262 .db 0x00
1263 ;src/main.c:311: void put_dec3(char *dst, u16 val)
1264 ; ---------------------------------
1265 ; Function put_dec3
1266 ; ---------------------------------
00000633 1267 _put_dec3::
00000633 DD E5 [15] 1268 push ix
00000635 DD 21 00 00 [14] 1269 ld ix, #0
00000639 DD 39 [15] 1270 add ix, sp
0000063B F5 [11] 1271 push af
0000063C 4D [ 4] 1272 ld c, l
0000063D 44 [ 4] 1273 ld b, h
1274 ;src/main.c:313: dst[0] = '0' + (val / 100) % 10;
0000063E E1 [10] 1275 pop hl
0000063F D5 [11] 1276 push de
00000640 C5 [11] 1277 push bc
00000641 11 64 00 [10] 1278 ld de, #0x0064
00000644 DD 6E FE [19] 1279 ld l, -2 (ix)
00000647 DD 66 FF [19] 1280 ld h, -1 (ix)
0000064A CDr00r00 [17] 1281 call __divuint
0000064D EB [ 4] 1282 ex de, hl
0000064E 11 0A 00 [10] 1283 ld de, #0x000a
00000651 CDr00r00 [17] 1284 call __moduint
00000654 C1 [10] 1285 pop bc
00000655 7B [ 4] 1286 ld a, e
00000656 C6 30 [ 7] 1287 add a, #0x30
00000658 02 [ 7] 1288 ld (bc), a
1289 ;src/main.c:314: dst[1] = '0' + (val / 10) % 10;
00000659 69 [ 4] 1290 ld l, c
0000065A 60 [ 4] 1291 ld h, b
0000065B 23 [ 6] 1292 inc hl
0000065C E5 [11] 1293 push hl
0000065D C5 [11] 1294 push bc
0000065E 11 0A 00 [10] 1295 ld de, #0x000a
00000661 DD 6E FE [19] 1296 ld l, -2 (ix)
00000664 DD 66 FF [19] 1297 ld h, -1 (ix)
00000667 CDr00r00 [17] 1298 call __divuint
0000066A EB [ 4] 1299 ex de, hl
0000066B 11 0A 00 [10] 1300 ld de, #0x000a
0000066E CDr00r00 [17] 1301 call __moduint
00000671 C1 [10] 1302 pop bc
00000672 E1 [10] 1303 pop hl
00000673 7B [ 4] 1304 ld a, e
00000674 C6 30 [ 7] 1305 add a, #0x30
00000676 77 [ 7] 1306 ld (hl), a
1307 ;src/main.c:315: dst[2] = '0' + val % 10;
00000677 03 [ 6] 1308 inc bc
00000678 03 [ 6] 1309 inc bc
00000679 C5 [11] 1310 push bc
0000067A 11 0A 00 [10] 1311 ld de, #0x000a
0000067D DD 6E FE [19] 1312 ld l, -2 (ix)
00000680 DD 66 FF [19] 1313 ld h, -1 (ix)
00000683 CDr00r00 [17] 1314 call __moduint
00000686 C1 [10] 1315 pop bc
00000687 7B [ 4] 1316 ld a, e
00000688 C6 30 [ 7] 1317 add a, #0x30
0000068A 02 [ 7] 1318 ld (bc), a
1319 ;src/main.c:316: }
0000068B DD F9 [10] 1320 ld sp, ix
0000068D DD E1 [14] 1321 pop ix
0000068F C9 [10] 1322 ret
1323 ;src/main.c:318: void put_time(char *dst, u32 sec)
1324 ; ---------------------------------
1325 ; Function put_time
1326 ; ---------------------------------
00000690 1327 _put_time::
00000690 DD E5 [15] 1328 push ix
00000692 DD 21 00 00 [14] 1329 ld ix, #0
00000696 DD 39 [15] 1330 add ix, sp
00000698 E5 [11] 1331 push hl
1332 ;src/main.c:320: u8 m = (sec / 60) % 100;
00000699 21 00 00 [10] 1333 ld hl, #0x0000
0000069C E5 [11] 1334 push hl
0000069D 2E 3C [ 7] 1335 ld l, #0x3c
0000069F E5 [11] 1336 push hl
000006A0 DD 5E 04 [19] 1337 ld e, 4 (ix)
000006A3 DD 56 05 [19] 1338 ld d, 5 (ix)
000006A6 DD 6E 06 [19] 1339 ld l, 6 (ix)
000006A9 DD 66 07 [19] 1340 ld h, 7 (ix)
000006AC CDr00r00 [17] 1341 call __divulong
000006AF F1 [10] 1342 pop af
000006B0 F1 [10] 1343 pop af
000006B1 01 00 00 [10] 1344 ld bc, #0x0000
000006B4 C5 [11] 1345 push bc
000006B5 0E 64 [ 7] 1346 ld c, #0x64
000006B7 C5 [11] 1347 push bc
000006B8 CDr00r00 [17] 1348 call __modulong
000006BB F1 [10] 1349 pop af
000006BC F1 [10] 1350 pop af
000006BD 4B [ 4] 1351 ld c, e
1352 ;src/main.c:321: u8 s = sec % 60;
000006BE C5 [11] 1353 push bc
000006BF 21 00 00 [10] 1354 ld hl, #0x0000
000006C2 E5 [11] 1355 push hl
000006C3 2E 3C [ 7] 1356 ld l, #0x3c
000006C5 E5 [11] 1357 push hl
000006C6 DD 5E 04 [19] 1358 ld e, 4 (ix)
000006C9 DD 56 05 [19] 1359 ld d, 5 (ix)
000006CC DD 6E 06 [19] 1360 ld l, 6 (ix)
000006CF DD 66 07 [19] 1361 ld h, 7 (ix)
000006D2 CDr00r00 [17] 1362 call __modulong
000006D5 F1 [10] 1363 pop af
000006D6 F1 [10] 1364 pop af
000006D7 C1 [10] 1365 pop bc
1366 ;src/main.c:323: dst[0] = '0' + (m / 10) % 10;
000006D8 51 [ 4] 1367 ld d, c
000006D9 D5 [11] 1368 push de
000006DA 2E 0A [ 7] 1369 ld l, #0x0a
000006DC 7A [ 4] 1370 ld a, d
000006DD CDr00r00 [17] 1371 call __divuchar
000006E0 7B [ 4] 1372 ld a, e
000006E1 2E 0A [ 7] 1373 ld l, #0x0a
000006E3 CDr00r00 [17] 1374 call __moduchar
000006E6 7B [ 4] 1375 ld a, e
000006E7 D1 [10] 1376 pop de
000006E8 C6 30 [ 7] 1377 add a, #0x30
000006EA E1 [10] 1378 pop hl
000006EB E5 [11] 1379 push hl
000006EC 77 [ 7] 1380 ld (hl), a
1381 ;src/main.c:324: dst[1] = '0' + m % 10;
000006ED C1 [10] 1382 pop bc
000006EE C5 [11] 1383 push bc
000006EF 03 [ 6] 1384 inc bc
000006F0 C5 [11] 1385 push bc
000006F1 D5 [11] 1386 push de
000006F2 2E 0A [ 7] 1387 ld l, #0x0a
000006F4 7A [ 4] 1388 ld a, d
000006F5 CDr00r00 [17] 1389 call __moduchar
000006F8 7B [ 4] 1390 ld a, e
000006F9 D1 [10] 1391 pop de
000006FA C1 [10] 1392 pop bc
000006FB C6 30 [ 7] 1393 add a, #0x30
000006FD 02 [ 7] 1394 ld (bc), a
1395 ;src/main.c:325: dst[2] = ':';
000006FE E1 [10] 1396 pop hl
000006FF E5 [11] 1397 push hl
00000700 23 [ 6] 1398 inc hl
00000701 23 [ 6] 1399 inc hl
00000702 36 3A [10] 1400 ld (hl), #0x3a
1401 ;src/main.c:326: dst[3] = '0' + (s / 10) % 10;
00000704 C1 [10] 1402 pop bc
00000705 C5 [11] 1403 push bc
00000706 03 [ 6] 1404 inc bc
00000707 03 [ 6] 1405 inc bc
00000708 03 [ 6] 1406 inc bc
00000709 C5 [11] 1407 push bc
0000070A D5 [11] 1408 push de
0000070B 2E 0A [ 7] 1409 ld l, #0x0a
0000070D 7B [ 4] 1410 ld a, e
0000070E CDr00r00 [17] 1411 call __divuchar
00000711 7B [ 4] 1412 ld a, e
00000712 2E 0A [ 7] 1413 ld l, #0x0a
00000714 CDr00r00 [17] 1414 call __moduchar
00000717 7B [ 4] 1415 ld a, e
00000718 D1 [10] 1416 pop de
00000719 C1 [10] 1417 pop bc
0000071A C6 30 [ 7] 1418 add a, #0x30
0000071C 02 [ 7] 1419 ld (bc), a
1420 ;src/main.c:327: dst[4] = '0' + s % 10;
0000071D DD 7E FE [19] 1421 ld a, -2 (ix)
00000720 C6 04 [ 7] 1422 add a, #0x04
00000722 4F [ 4] 1423 ld c, a
00000723 DD 7E FF [19] 1424 ld a, -1 (ix)
00000726 CE 00 [ 7] 1425 adc a, #0x00
00000728 47 [ 4] 1426 ld b, a
00000729 C5 [11] 1427 push bc
0000072A 2E 0A [ 7] 1428 ld l, #0x0a
0000072C 7B [ 4] 1429 ld a, e
0000072D CDr00r00 [17] 1430 call __moduchar
00000730 7B [ 4] 1431 ld a, e
00000731 C1 [10] 1432 pop bc
00000732 C6 30 [ 7] 1433 add a, #0x30
00000734 02 [ 7] 1434 ld (bc), a
1435 ;src/main.c:328: }
00000735 DD F9 [10] 1436 ld sp, ix
00000737 DD E1 [14] 1437 pop ix
00000739 E1 [10] 1438 pop hl
0000073A F1 [10] 1439 pop af
0000073B F1 [10] 1440 pop af
0000073C E9 [ 4] 1441 jp (hl)
1442 ;src/main.c:330: void xm_draw_stats_labels()
1443 ; ---------------------------------
1444 ; Function xm_draw_stats_labels
1445 ; ---------------------------------
0000073D 1446 _xm_draw_stats_labels::
1447 ;src/main.c:332: wc_prsrw(&win_xm, "Pattern:#", ROW_STATS, 1, 9);
0000073D 21 09 00 [10] 1448 ld hl, #0x0009
00000740 E5 [11] 1449 push hl
00000741 21 03 01 [10] 1450 ld hl, #0x103
00000744 E5 [11] 1451 push hl
00000745 11r93r07 [10] 1452 ld de, #___str_11
00000748 21r68r02 [10] 1453 ld hl, #_win_xm
0000074B CDr00r00 [17] 1454 call _wc_prsrw
1455 ;src/main.c:333: wc_prsrw(&win_xm, " Row:#", ROW_STATS, 12, 7);
0000074E 21 07 00 [10] 1456 ld hl, #0x0007
00000751 E5 [11] 1457 push hl
00000752 21 03 0C [10] 1458 ld hl, #0xc03
00000755 E5 [11] 1459 push hl
00000756 11r9Dr07 [10] 1460 ld de, #___str_12
00000759 21r68r02 [10] 1461 ld hl, #_win_xm
0000075C CDr00r00 [17] 1462 call _wc_prsrw
1463 ;src/main.c:334: wc_prsrw(&win_xm, " BPM:", ROW_STATS, 21, 6);
0000075F 21 06 00 [10] 1464 ld hl, #0x0006
00000762 E5 [11] 1465 push hl
00000763 21 03 15 [10] 1466 ld hl, #0x1503
00000766 E5 [11] 1467 push hl
00000767 11rA5r07 [10] 1468 ld de, #___str_13
0000076A 21r68r02 [10] 1469 ld hl, #_win_xm
0000076D CDr00r00 [17] 1470 call _wc_prsrw
1471 ;src/main.c:336: wc_prsrw(&win_xm, "Time:", ROW_TIME, 1, 5);
00000770 21 05 00 [10] 1472 ld hl, #0x0005
00000773 E5 [11] 1473 push hl
00000774 21 05 01 [10] 1474 ld hl, #0x105
00000777 E5 [11] 1475 push hl
00000778 11rACr07 [10] 1476 ld de, #___str_14
0000077B 21r68r02 [10] 1477 ld hl, #_win_xm
0000077E CDr00r00 [17] 1478 call _wc_prsrw
1479 ;src/main.c:337: wc_prsrw(&win_xm, " / ", ROW_TIME, 12, 3);
00000781 21 03 00 [10] 1480 ld hl, #0x0003
00000784 E5 [11] 1481 push hl
00000785 21 05 0C [10] 1482 ld hl, #0xc05
00000788 E5 [11] 1483 push hl
00000789 11rB2r07 [10] 1484 ld de, #___str_15
0000078C 21r68r02 [10] 1485 ld hl, #_win_xm
0000078F CDr00r00 [17] 1486 call _wc_prsrw
1487 ;src/main.c:338: }
00000792 C9 [10] 1488 ret
00000793 1489 ___str_11:
00000793 50 61 74 74 65 72 6E 1490 .ascii "Pattern:#"
3A 23
0000079C 00 1491 .db 0x00
0000079D 1492 ___str_12:
0000079D 20 20 52 6F 77 3A 23 1493 .ascii " Row:#"
000007A4 00 1494 .db 0x00
000007A5 1495 ___str_13:
000007A5 20 20 42 50 4D 3A 1496 .ascii " BPM:"
000007AB 00 1497 .db 0x00
000007AC 1498 ___str_14:
000007AC 54 69 6D 65 3A 1499 .ascii "Time:"
000007B1 00 1500 .db 0x00
000007B2 1501 ___str_15:
000007B2 20 2F 20 1502 .ascii " / "
000007B5 00 1503 .db 0x00
1504 ;src/main.c:353: void xm_update_info()
1505 ; ---------------------------------
1506 ; Function xm_update_info
1507 ; ---------------------------------
000007B6 1508 _xm_update_info::
000007B6 DD E5 [15] 1509 push ix
000007B8 DD 21 00 00 [14] 1510 ld ix, #0
000007BC DD 39 [15] 1511 add ix, sp
000007BE 21 F8 FF [10] 1512 ld hl, #-8
000007C1 39 [11] 1513 add hl, sp
000007C2 F9 [ 6] 1514 ld sp, hl
1515 ;src/main.c:359: esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
000007C3 3Ar31r10 [13] 1516 ld a, (_xm_handle)
000007C6 6F [ 4] 1517 ld l, a
000007C7 3E 0B [ 7] 1518 ld a, #0x0b
000007C9 CDrD1r00 [17] 1519 call _esp_wr_reg8
1520 ;src/main.c:360: esp_cmd(ESP_CMD_TRACK_GET_INFO);
000007CC 3E A8 [ 7] 1521 ld a, #0xa8
000007CE CDr05r00 [17] 1522 call _esp_cmd
1523 ;src/main.c:361: esp_wait_busy(2000);
000007D1 11 D0 07 [10] 1524 ld de, #0x07d0
000007D4 21 00 00 [10] 1525 ld hl, #0x0000
000007D7 CDrD5r01 [17] 1526 call _esp_wait_busy
1527 ;src/main.c:363: pattern = esp_rd_reg8(ESP_REG_TRACK_PATTERN);
000007DA 3E 2B [ 7] 1528 ld a, #0x2b
000007DC CDr1Er00 [17] 1529 call _esp_rd_reg8
000007DF DD 77 FA [19] 1530 ld -6 (ix), a
1531 ;src/main.c:364: row = esp_rd_reg8(ESP_REG_TRACK_ROW);
000007E2 3E 2C [ 7] 1532 ld a, #0x2c
000007E4 CDr1Er00 [17] 1533 call _esp_rd_reg8
000007E7 DD 77 FB [19] 1534 ld -5 (ix), a
1535 ;src/main.c:365: esp_rd_regs(ESP_REG_TRACK_BPM, &bpm, 2);
000007EA 3E 02 [ 7] 1536 ld a, #0x02
000007EC F5 [11] 1537 push af
000007ED 33 [ 6] 1538 inc sp
000007EE 21 01 00 [10] 1539 ld hl, #1
000007F1 39 [11] 1540 add hl, sp
000007F2 EB [ 4] 1541 ex de, hl
000007F3 3E 31 [ 7] 1542 ld a, #0x31
000007F5 CDrA5r00 [17] 1543 call _esp_rd_regs
1544 ;src/main.c:366: samples = esp_rd_reg32(ESP_REG_TRACK_SAMPLES);
000007F8 3E 2D [ 7] 1545 ld a, #0x2d
000007FA CDr37r00 [17] 1546 call _esp_rd_reg32
000007FD DD 73 FC [19] 1547 ld -4 (ix), e
00000800 DD 72 FD [19] 1548 ld -3 (ix), d
00000803 DD 75 FE [19] 1549 ld -2 (ix), l
00000806 DD 74 FF [19] 1550 ld -1 (ix), h
1551 ;src/main.c:368: if (!total_samples)
00000809 3Ar30r10 [13] 1552 ld a, (_total_samples+3)
0000080C FD 21r2Dr10 [14] 1553 ld iy, #_total_samples
00000810 FD B6 02 [19] 1554 or a, 2 (iy)
00000813 FD B6 01 [19] 1555 or a, 1 (iy)
00000816 FD B6 00 [19] 1556 or a, 0 (iy)
00000819 20 0C [12] 1557 jr nz, 00102$
1558 ;src/main.c:369: total_samples = esp_rd_reg32(ESP_REG_TRACK_TOTAL_SAMPLES);
0000081B 3E 36 [ 7] 1559 ld a, #0x36
0000081D CDr37r00 [17] 1560 call _esp_rd_reg32
00000820 ED 53r2Dr10 [20] 1561 ld (_total_samples), de
00000824 22r2Fr10 [16] 1562 ld (_total_samples + 2), hl
00000827 1563 00102$:
1564 ;src/main.c:371: put_hex2(hexbuf, pattern);
00000827 DD 7E FA [19] 1565 ld a, -6 (ix)
0000082A F5 [11] 1566 push af
0000082B 33 [ 6] 1567 inc sp
0000082C 21r32r10 [10] 1568 ld hl, #_hexbuf
0000082F CDrF6r05 [17] 1569 call _put_hex2
1570 ;src/main.c:372: wc_prsrw(&win_xm, hexbuf, ROW_STATS, 10, 2);
00000832 21 02 00 [10] 1571 ld hl, #0x0002
00000835 E5 [11] 1572 push hl
00000836 21 03 0A [10] 1573 ld hl, #0xa03
00000839 E5 [11] 1574 push hl
0000083A 11r32r10 [10] 1575 ld de, #_hexbuf
0000083D 21r68r02 [10] 1576 ld hl, #_win_xm
00000840 CDr00r00 [17] 1577 call _wc_prsrw
1578 ;src/main.c:374: put_hex2(hexbuf, row);
00000843 DD 7E FB [19] 1579 ld a, -5 (ix)
00000846 F5 [11] 1580 push af
00000847 33 [ 6] 1581 inc sp
00000848 21r32r10 [10] 1582 ld hl, #_hexbuf
0000084B CDrF6r05 [17] 1583 call _put_hex2
1584 ;src/main.c:375: wc_prsrw(&win_xm, hexbuf, ROW_STATS, 19, 2);
0000084E 21 02 00 [10] 1585 ld hl, #0x0002
00000851 E5 [11] 1586 push hl
00000852 21 03 13 [10] 1587 ld hl, #0x1303
00000855 E5 [11] 1588 push hl
00000856 11r32r10 [10] 1589 ld de, #_hexbuf
00000859 21r68r02 [10] 1590 ld hl, #_win_xm
0000085C CDr00r00 [17] 1591 call _wc_prsrw
1592 ;src/main.c:377: put_dec3(decbuf, bpm);
0000085F D1 [10] 1593 pop de
00000860 D5 [11] 1594 push de
00000861 21r34r10 [10] 1595 ld hl, #_decbuf
00000864 CDr33r06 [17] 1596 call _put_dec3
1597 ;src/main.c:378: wc_prsrw(&win_xm, decbuf, ROW_STATS, 27, 3);
00000867 21 03 00 [10] 1598 ld hl, #0x0003
0000086A E5 [11] 1599 push hl
0000086B 21 03 1B [10] 1600 ld hl, #0x1b03
0000086E E5 [11] 1601 push hl
0000086F 11r34r10 [10] 1602 ld de, #_decbuf
00000872 21r68r02 [10] 1603 ld hl, #_win_xm
00000875 CDr00r00 [17] 1604 call _wc_prsrw
1605 ;src/main.c:380: put_time(timebuf, samples / 44100UL);
00000878 21 00 00 [10] 1606 ld hl, #0x0000
0000087B E5 [11] 1607 push hl
0000087C 21 44 AC [10] 1608 ld hl, #0xac44
0000087F E5 [11] 1609 push hl
00000880 DD 5E FC [19] 1610 ld e, -4 (ix)
00000883 DD 56 FD [19] 1611 ld d, -3 (ix)
00000886 DD 6E FE [19] 1612 ld l, -2 (ix)
00000889 DD 66 FF [19] 1613 ld h, -1 (ix)
0000088C CDr00r00 [17] 1614 call __divulong
0000088F F1 [10] 1615 pop af
00000890 E3 [19] 1616 ex (sp),hl
00000891 D5 [11] 1617 push de
00000892 21r37r10 [10] 1618 ld hl, #_timebuf
00000895 CDr90r06 [17] 1619 call _put_time
1620 ;src/main.c:381: wc_prsrw(&win_xm, timebuf, ROW_TIME, 7, 5);
00000898 21 05 00 [10] 1621 ld hl, #0x0005
0000089B E5 [11] 1622 push hl
0000089C 21 05 07 [10] 1623 ld hl, #0x705
0000089F E5 [11] 1624 push hl
000008A0 11r37r10 [10] 1625 ld de, #_timebuf
000008A3 21r68r02 [10] 1626 ld hl, #_win_xm
000008A6 CDr00r00 [17] 1627 call _wc_prsrw
1628 ;src/main.c:383: put_time(timebuf, total_samples / 44100UL);
000008A9 21 00 00 [10] 1629 ld hl, #0x0000
000008AC E5 [11] 1630 push hl
000008AD 21 44 AC [10] 1631 ld hl, #0xac44
000008B0 E5 [11] 1632 push hl
000008B1 ED 5Br2Dr10 [20] 1633 ld de, (_total_samples)
000008B5 2Ar2Fr10 [16] 1634 ld hl, (_total_samples + 2)
000008B8 CDr00r00 [17] 1635 call __divulong
000008BB F1 [10] 1636 pop af
000008BC E3 [19] 1637 ex (sp),hl
000008BD D5 [11] 1638 push de
000008BE 21r37r10 [10] 1639 ld hl, #_timebuf
000008C1 CDr90r06 [17] 1640 call _put_time
1641 ;src/main.c:384: wc_prsrw(&win_xm, timebuf, ROW_TIME, 15, 5);
000008C4 21 05 00 [10] 1642 ld hl, #0x0005
000008C7 E5 [11] 1643 push hl
000008C8 21 05 0F [10] 1644 ld hl, #0xf05
000008CB E5 [11] 1645 push hl
000008CC 11r37r10 [10] 1646 ld de, #_timebuf
000008CF 21r68r02 [10] 1647 ld hl, #_win_xm
000008D2 CDr00r00 [17] 1648 call _wc_prsrw
1649 ;src/main.c:388: }
000008D5 DD F9 [10] 1650 ld sp, ix
000008D7 DD E1 [14] 1651 pop ix
000008D9 C9 [10] 1652 ret
1653 ;src/main.c:390: void main_start()
1654 ; ---------------------------------
1655 ; Function main_start
1656 ; ---------------------------------
000008DA 1657 _main_start::
1658 ;src/main.c:394: copy_file_name();
000008DA CDrA1r05 [17] 1659 call _copy_file_name
1660 ;src/main.c:396: if (!state_esp)
000008DD 3Ar00r00 [13] 1661 ld a, (_state_esp+0)
000008E0 B7 [ 4] 1662 or a, a
000008E1 20 0D [12] 1663 jr nz, 00102$
1664 ;src/main.c:397: state_esp = esp_init() ? 1 : 2;
000008E3 CDr25r02 [17] 1665 call _esp_init
000008E6 B7 [ 4] 1666 or a, a
000008E7 3E 01 [ 7] 1667 ld a, #0x01
000008E9 20 02 [12] 1668 jr nz, 00122$
000008EB 3E 02 [ 7] 1669 ld a, #0x02
000008ED 1670 00122$:
000008ED 32r00r00 [13] 1671 ld (#_state_esp), a
000008F0 1672 00102$:
1673 ;src/main.c:399: if (state_esp != 1)
000008F0 3Ar00r00 [13] 1674 ld a, (_state_esp)
1675 ;src/main.c:401: error_esp();
1676 ;src/main.c:402: return;
1677 ;src/main.c:405: total_samples = 0;
000008F3 3D [ 4] 1678 dec a
000008F4 C2r62r05 [10] 1679 jp nz,_error_esp
000008F7 32r2Dr10 [13] 1680 ld (_total_samples+0), a
000008FA 32r2Er10 [13] 1681 ld (_total_samples+1), a
000008FD 32r2Fr10 [13] 1682 ld (_total_samples+2), a
00000900 32r30r10 [13] 1683 ld (_total_samples+3), a
1684 ;src/main.c:407: if (!play_xm())
00000903 CDr29r03 [17] 1685 call _play_xm
00000906 B7 [ 4] 1686 or a, a
00000907 20 0B [12] 1687 jr nz, 00109$
1688 ;src/main.c:409: if (last_esp_status == ESP_ERR_OUT_OF_MEMORY)
00000909 3Ar09r10 [13] 1689 ld a, (_last_esp_status)
0000090C D6 99 [ 7] 1690 sub a, #0x99
0000090E CAr75r05 [10] 1691 jp z, _error_oom
1692 ;src/main.c:410: error_oom();
1693 ;src/main.c:412: error_playback();
1694 ;src/main.c:413: return;
00000911 C3r8Br05 [10] 1695 jp _error_playback
00000914 1696 00109$:
1697 ;src/main.c:419: wc_prwow(&win_xm);
00000914 21r68r02 [10] 1698 ld hl, #_win_xm
00000917 CDr00r00 [17] 1699 call _wc_prwow
1700 ;src/main.c:420: xm_draw_static_labels();
0000091A CDrC6r05 [17] 1701 call _xm_draw_static_labels
1702 ;src/main.c:421: xm_draw_stats_labels();
0000091D CDr3Dr07 [17] 1703 call _xm_draw_stats_labels
1704 ;src/main.c:422: xm_update_info(); // single call for now - periodic re-calling is a separate step, once this is confirmed stable
00000920 CDrB6r07 [17] 1705 call _xm_update_info
1706 ;src/main.c:427: while (1)
00000923 1707 00117$:
1708 ;src/main.c:431: __endasm;
00000923 76 [ 4] 1709 halt
1710 ;src/main.c:442: if (wc_key_pgdn()) // PgDn - unload and go to next file
00000924 CDr00r00 [17] 1711 call _wc_key_pgdn
00000927 B7 [ 4] 1712 or a, a
00000928 28 27 [12] 1713 jr z, 00111$
1714 ;src/main.c:444: esp_cmd(ESP_CMD_TRACK_STOP);
0000092A 3E A2 [ 7] 1715 ld a, #0xa2
0000092C CDr05r00 [17] 1716 call _esp_cmd
1717 ;src/main.c:445: esp_wait_busy(10000);
0000092F 11 10 27 [10] 1718 ld de, #0x2710
00000932 21 00 00 [10] 1719 ld hl, #0x0000
00000935 CDrD5r01 [17] 1720 call _esp_wait_busy
1721 ;src/main.c:446: esp_cmd(ESP_CMD_KILL_OBJECTS);
00000938 3E E4 [ 7] 1722 ld a, #0xe4
0000093A CDr05r00 [17] 1723 call _esp_cmd
1724 ;src/main.c:447: esp_wait_busy(10000);
0000093D 11 10 27 [10] 1725 ld de, #0x2710
00000940 21 00 00 [10] 1726 ld hl, #0x0000
00000943 CDrD5r01 [17] 1727 call _esp_wait_busy
1728 ;src/main.c:448: wc_rresb(&win_xm);
00000946 21r68r02 [10] 1729 ld hl, #_win_xm
00000949 CDr00r00 [17] 1730 call _wc_rresb
1731 ;src/main.c:449: wc_exit(WC_NEXT_FILE);
0000094C 3E 02 [ 7] 1732 ld a, #0x02
0000094E CDr00r00 [17] 1733 call _wc_exit
00000951 1734 00111$:
1735 ;src/main.c:452: if (wc_key_pgup()) // PgUp - unload and go to previous file
00000951 CDr00r00 [17] 1736 call _wc_key_pgup
00000954 B7 [ 4] 1737 or a, a
00000955 28 27 [12] 1738 jr z, 00113$
1739 ;src/main.c:454: esp_cmd(ESP_CMD_TRACK_STOP);
00000957 3E A2 [ 7] 1740 ld a, #0xa2
00000959 CDr05r00 [17] 1741 call _esp_cmd
1742 ;src/main.c:455: esp_wait_busy(10000);
0000095C 11 10 27 [10] 1743 ld de, #0x2710
0000095F 21 00 00 [10] 1744 ld hl, #0x0000
00000962 CDrD5r01 [17] 1745 call _esp_wait_busy
1746 ;src/main.c:456: esp_cmd(ESP_CMD_KILL_OBJECTS);
00000965 3E E4 [ 7] 1747 ld a, #0xe4
00000967 CDr05r00 [17] 1748 call _esp_cmd
1749 ;src/main.c:457: esp_wait_busy(10000);
0000096A 11 10 27 [10] 1750 ld de, #0x2710
0000096D 21 00 00 [10] 1751 ld hl, #0x0000
00000970 CDrD5r01 [17] 1752 call _esp_wait_busy
1753 ;src/main.c:458: wc_rresb(&win_xm);
00000973 21r68r02 [10] 1754 ld hl, #_win_xm
00000976 CDr00r00 [17] 1755 call _wc_rresb
1756 ;src/main.c:459: wc_exit(WC_PREV_FILE);
00000979 3E 04 [ 7] 1757 ld a, #0x04
0000097B CDr00r00 [17] 1758 call _wc_exit
0000097E 1759 00113$:
1760 ;src/main.c:462: if (wc_key_esc()) // Esc - unload and exit
0000097E CDr00r00 [17] 1761 call _wc_key_esc
00000981 B7 [ 4] 1762 or a, a
00000982 28 9F [12] 1763 jr z, 00117$
1764 ;src/main.c:464: esp_cmd(ESP_CMD_TRACK_STOP);
00000984 3E A2 [ 7] 1765 ld a, #0xa2
00000986 CDr05r00 [17] 1766 call _esp_cmd
1767 ;src/main.c:465: esp_wait_busy(10000);
00000989 11 10 27 [10] 1768 ld de, #0x2710
0000098C 21 00 00 [10] 1769 ld hl, #0x0000
0000098F CDrD5r01 [17] 1770 call _esp_wait_busy
1771 ;src/main.c:466: esp_cmd(ESP_CMD_KILL_OBJECTS);
00000992 3E E4 [ 7] 1772 ld a, #0xe4
00000994 CDr05r00 [17] 1773 call _esp_cmd
1774 ;src/main.c:467: esp_wait_busy(10000);
00000997 11 10 27 [10] 1775 ld de, #0x2710
0000099A 21 00 00 [10] 1776 ld hl, #0x0000
0000099D CDrD5r01 [17] 1777 call _esp_wait_busy
1778 ;src/main.c:468: wc_rresb(&win_xm);
000009A0 21r68r02 [10] 1779 ld hl, #_win_xm
000009A3 CDr00r00 [17] 1780 call _wc_rresb
1781 ;src/main.c:469: wc_exit(WC_EXIT);
000009A6 AF [ 4] 1782 xor a, a
000009A7 CDr00r00 [17] 1783 call _wc_exit
1784 ;src/main.c:472: }
000009AA C3r23r09 [10] 1785 jp 00117$
1786 ;src/main.c:475: void main()
1787 ; ---------------------------------
1788 ; Function main
1789 ; ---------------------------------
000009AD 1790 _main::
1791 ;src/main.c:485: __endasm;
000009AD ED 73r01r10 [20] 1792 ld (_ret_sp), sp
000009B1 32r08r10 [13] 1793 ld (_call_type), a
000009B4 ED 43r0Ar10 [20] 1794 ld (_p_file_name), bc
000009B8 08 [ 4] 1795 ex af, af
000009B9 32r07r10 [13] 1796 ld (_file_ext), a
000009BC 22r03r10 [16] 1797 ld (_filesize), hl
000009BF ED 53r05r10 [20] 1798 ld (_filesize + 2), de
1799 ;src/main.c:487: switch (call_type)
000009C3 3Ar08r10 [13] 1800 ld a, (_call_type+0)
000009C6 B7 [ 4] 1801 or a, a
000009C7 CArDAr08 [10] 1802 jp z, _main_start
000009CA 3Ar08r10 [13] 1803 ld a, (_call_type)
000009CD D6 03 [ 7] 1804 sub a, #0x03
000009CF CAr4Fr05 [10] 1805 jp z, _about
1806 ;src/main.c:489: case WC_CALL_EXT:
1807 ;src/main.c:490: main_start();
1808 ;src/main.c:491: break;
1809 ;src/main.c:493: case WC_CALL_MENU:
1810 ;src/main.c:494: about();
1811 ;src/main.c:495: break;
1812 ;src/main.c:497: default:
1813 ;src/main.c:498: wc_exit(WC_EXIT);
000009D2 AF [ 4] 1814 xor a, a
1815 ;src/main.c:499: }
1816 ;src/main.c:500: }
000009D3 C3r00r00 [10] 1817 jp _wc_exit
1818 .area _CODE
1819 .area _INITIALIZER
1820 .area _CABS (ABS)