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)