esp32.c: two-phase esp_wait_busy() so a stale non-BUSY status right after esp_cmd() isn't mistaken for completion (fixed a real TRACK_PLAY/0x88 race on heavier XM files); added single-phase esp_wait_not_busy() for esp_send_dma()'s per-chunk wait, which never actually sets BUSY and was timing out on every chunk under the two-phase version. vgm_wc_api.lib renamed to wc_api.lib (build.bat updated to match). Keyboard: tried replacing wc_key_esc/pgup/pgdn/space with a raw PS/2-FIFO reader (matching how VGMPLAY.WMF's own player reads keys) so Enter could also advance to the next file. Reverted after two confirmed hardware regressions (esp32 transfers failing with ESP_ERR_INV_XM, and the keyboard going unresponsive once WC's own PS/2 scanning was disabled to stop it competing with the raw reads) - VGMPLAY's approach relies on a full custom interrupt handler xmplay has no equivalent need for. Back to the simple wc_key_*() wrappers, plus wc_key_enter() so Enter now advances too, and wc_key_wait_release() (called after wc_gedpl()) to debounce the Enter/F3 that launched the plugin itself. Also: About window now centers dynamically for all three WC text modes (90x36/80x25/80x30) instead of a fixed position, and matches the main window's color scheme. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2544 lines
150 KiB
Plaintext
2544 lines
150 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 _draw_progress_bar
|
|
15 .globl _xm_draw_stats_labels
|
|
16 .globl _put_time
|
|
17 .globl _put_dec3
|
|
18 .globl _put_hex2
|
|
19 .globl _xm_set_status_attr
|
|
20 .globl _xm_draw_static_labels
|
|
21 .globl _copy_file_name
|
|
22 .globl _error_playback
|
|
23 .globl _error_oom
|
|
24 .globl _stop_on_error
|
|
25 .globl _error_esp
|
|
26 .globl _wait_for_manual_exit
|
|
27 .globl _leave_playing_and_exit
|
|
28 .globl _unload_and_exit
|
|
29 .globl _about
|
|
30 .globl _wc_center
|
|
31 .globl _wc_screen_width
|
|
32 .globl _wait_frames
|
|
33 .globl _wait_esc_key
|
|
34 .globl _play_xm
|
|
35 .globl _esp_init
|
|
36 .globl _esp_create_obj
|
|
37 .globl _esp_wait_status
|
|
38 .globl _esp_rd_end
|
|
39 .globl _esp_send_dma
|
|
40 .globl _esp_wait_not_busy
|
|
41 .globl _esp_wr_end
|
|
42 .globl _esp_wr_reg32
|
|
43 .globl _esp_wr_reg8
|
|
44 .globl _esp_rd_regs
|
|
45 .globl _esp_rd_reg32
|
|
46 .globl _esp_rd_reg8
|
|
47 .globl _esp_cmd
|
|
48 .globl _wc_exit
|
|
49 .globl _wc_prm_pl
|
|
50 .globl _wc_gadrw
|
|
51 .globl _wc_prsrw_attr
|
|
52 .globl _wc_prsrw
|
|
53 .globl _wc_gedpl
|
|
54 .globl _wc_key_wait_release
|
|
55 .globl _wc_key_enter
|
|
56 .globl _wc_key_space
|
|
57 .globl _wc_key_pgdn
|
|
58 .globl _wc_key_pgup
|
|
59 .globl _wc_key_esc
|
|
60 .globl _wc_load512
|
|
61 .globl _wc_rresb
|
|
62 .globl _wc_prwow
|
|
63 .globl _strlen
|
|
64 .globl _state_esp
|
|
65 .globl _bar_attr_ofs
|
|
66 .globl _win_about
|
|
67 .globl _win_xm
|
|
68 .globl _last_track_status
|
|
69 .globl _xm_handle
|
|
70 .globl _total_samples
|
|
71 .globl _file_name
|
|
72 .globl _p_file_name
|
|
73 .globl _last_esp_status
|
|
74 .globl _call_type
|
|
75 .globl _file_ext
|
|
76 .globl _filesize
|
|
77 .globl _ret_sp
|
|
78 .globl _fs_buf
|
|
79 .globl _win_about_tpl
|
|
80 .globl _win_xm_tpl
|
|
81 .globl _esp_wait_busy
|
|
82 .globl _xm_set_status
|
|
83 .globl _xm_set_status_code
|
|
84 ;--------------------------------------------------------
|
|
85 ; special function registers
|
|
86 ;--------------------------------------------------------
|
|
00000057 87 _SPI_DATA = 0x0057
|
|
00000077 88 _SPI_CTRL = 0x0077
|
|
000000FE 89 _BORDER = 0x00fe
|
|
000000AF 90 _TS_VCONFIG = 0x00af
|
|
000000AF 91 _TS_STATUS = 0x00af
|
|
000001AF 92 _TS_VPAGE = 0x01af
|
|
000002AF 93 _TS_GXOFFSL = 0x02af
|
|
000003AF 94 _TS_GXOFFSH = 0x03af
|
|
000004AF 95 _TS_GYOFFSL = 0x04af
|
|
000005AF 96 _TS_GYOFFSH = 0x05af
|
|
000006AF 97 _TS_TSCONFIG = 0x06af
|
|
000007AF 98 _TS_PALSEL = 0x07af
|
|
00000FAF 99 _TS_BORDER = 0x0faf
|
|
000010AF 100 _TS_PAGE0 = 0x10af
|
|
000011AF 101 _TS_PAGE1 = 0x11af
|
|
000012AF 102 _TS_PAGE2 = 0x12af
|
|
000013AF 103 _TS_PAGE3 = 0x13af
|
|
000015AF 104 _TS_FMADDR = 0x15af
|
|
000016AF 105 _TS_TMPAGE = 0x16af
|
|
000017AF 106 _TS_T0GPAGE = 0x17af
|
|
000018AF 107 _TS_T1GPAGE = 0x18af
|
|
000019AF 108 _TS_SGPAGE = 0x19af
|
|
00001AAF 109 _TS_DMASADDRL = 0x1aaf
|
|
00001BAF 110 _TS_DMASADDRH = 0x1baf
|
|
00001CAF 111 _TS_DMASADDRX = 0x1caf
|
|
00001DAF 112 _TS_DMADADDRL = 0x1daf
|
|
00001EAF 113 _TS_DMADADDRH = 0x1eaf
|
|
00001FAF 114 _TS_DMADADDRX = 0x1faf
|
|
000020AF 115 _TS_SYSCONFIG = 0x20af
|
|
000021AF 116 _TS_MEMCONFIG = 0x21af
|
|
000022AF 117 _TS_HSINT = 0x22af
|
|
000023AF 118 _TS_VSINTL = 0x23af
|
|
000024AF 119 _TS_VSINTH = 0x24af
|
|
000025AF 120 _TS_DMAWPD = 0x25af
|
|
000026AF 121 _TS_DMALEN = 0x26af
|
|
000027AF 122 _TS_DMACTR = 0x27af
|
|
000027AF 123 _TS_DMASTATUS = 0x27af
|
|
000028AF 124 _TS_DMANUM = 0x28af
|
|
000029AF 125 _TS_FDDVIRT = 0x29af
|
|
00002AAF 126 _TS_INTMASK = 0x2aaf
|
|
00002BAF 127 _TS_CACHECONF = 0x2baf
|
|
00002CAF 128 _TS_DMANUMH = 0x2caf
|
|
00002DAF 129 _TS_DMAWPA = 0x2daf
|
|
000040AF 130 _TS_T0XOFFSL = 0x40af
|
|
000041AF 131 _TS_T0XOFFSH = 0x41af
|
|
000042AF 132 _TS_T0YOFFSL = 0x42af
|
|
000043AF 133 _TS_T0YOFFSH = 0x43af
|
|
000044AF 134 _TS_T1XOFFSL = 0x44af
|
|
000045AF 135 _TS_T1XOFFSH = 0x45af
|
|
000046AF 136 _TS_T1YOFFSL = 0x46af
|
|
000047AF 137 _TS_T1YOFFSH = 0x47af
|
|
138 ;--------------------------------------------------------
|
|
139 ; ram data
|
|
140 ;--------------------------------------------------------
|
|
141 .area _DATA
|
|
00000000 142 _fs_buf::
|
|
00000000 143 .ds 4096
|
|
00001000 144 _ret_sp::
|
|
00001000 145 .ds 2
|
|
00001002 146 _filesize::
|
|
00001002 147 .ds 4
|
|
00001006 148 _file_ext::
|
|
00001006 149 .ds 1
|
|
00001007 150 _call_type::
|
|
00001007 151 .ds 1
|
|
00001008 152 _last_esp_status::
|
|
00001008 153 .ds 1
|
|
00001009 154 _p_file_name::
|
|
00001009 155 .ds 2
|
|
0000100B 156 _file_name::
|
|
0000100B 157 .ds 33
|
|
0000102C 158 _total_samples::
|
|
0000102C 159 .ds 4
|
|
00001030 160 _xm_handle::
|
|
00001030 161 .ds 1
|
|
00001031 162 _last_track_status::
|
|
00001031 163 .ds 1
|
|
00001032 164 _win_xm::
|
|
00001032 165 .ds 18
|
|
00001044 166 _win_about::
|
|
00001044 167 .ds 18
|
|
00001056 168 _status_buf:
|
|
00001056 169 .ds 24
|
|
0000106E 170 _status_code_buf:
|
|
0000106E 171 .ds 24
|
|
00001086 172 _hexbuf:
|
|
00001086 173 .ds 2
|
|
00001088 174 _decbuf:
|
|
00001088 175 .ds 3
|
|
0000108B 176 _timebuf:
|
|
0000108B 177 .ds 5
|
|
00001090 178 _barbuf:
|
|
00001090 179 .ds 32
|
|
000010B0 180 _bar_attr_ofs::
|
|
000010B0 181 .ds 2
|
|
182 ;--------------------------------------------------------
|
|
183 ; ram data
|
|
184 ;--------------------------------------------------------
|
|
185 .area _INITIALIZED
|
|
00000000 186 _state_esp::
|
|
00000000 187 .ds 1
|
|
188 ;--------------------------------------------------------
|
|
189 ; absolute ram data
|
|
190 ;--------------------------------------------------------
|
|
191 .area _DABS (ABS)
|
|
192 .area _DABS (ABS)
|
|
193 ;--------------------------------------------------------
|
|
194 ; global & static initialisations
|
|
195 ;--------------------------------------------------------
|
|
196 .area _HOME
|
|
197 .area _GSINIT
|
|
198 .area _GSFINAL
|
|
199 .area _GSINIT
|
|
200 ;--------------------------------------------------------
|
|
201 ; Home
|
|
202 ;--------------------------------------------------------
|
|
203 .area _HOME
|
|
204 .area _HOME
|
|
205 ;--------------------------------------------------------
|
|
206 ; code
|
|
207 ;--------------------------------------------------------
|
|
208 .area _CODE
|
|
209 ;src/wc_api.c:71: void wc_exit(u8 rc) __naked
|
|
210 ; ---------------------------------
|
|
211 ; Function wc_exit
|
|
212 ; ---------------------------------
|
|
00000000 213 _wc_exit::
|
|
214 ;src/wc_api.c:77: __endasm;
|
|
00000000 ED 7Br00r10 [20] 215 ld sp, (_ret_sp)
|
|
00000004 C9 [10] 216 ret
|
|
217 ;src/wc_api.c:78: }
|
|
218 ;src/esp32.c:18: void esp_cmd(u8 cmd)
|
|
219 ; ---------------------------------
|
|
220 ; Function esp_cmd
|
|
221 ; ---------------------------------
|
|
00000005 222 _esp_cmd::
|
|
00000005 4F [ 4] 223 ld c, a
|
|
224 ;src/esp32.c:20: SPI_CTRL = SPI_ESP_CS_ON;
|
|
00000006 3E 13 [ 7] 225 ld a, #0x13
|
|
00000008 D3 77 [11] 226 out (_SPI_CTRL), a
|
|
227 ;src/esp32.c:21: SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
|
0000000A 3E 01 [ 7] 228 ld a, #0x01
|
|
0000000C D3 57 [11] 229 out (_SPI_DATA), a
|
|
230 ;src/esp32.c:22: SPI_DATA = ESP_REG_COMMAND;
|
|
0000000E AF [ 4] 231 xor a, a
|
|
0000000F D3 57 [11] 232 out (_SPI_DATA), a
|
|
233 ;src/esp32.c:23: SPI_DATA; // dummy
|
|
00000011 DB 57 [11] 234 in a, (_SPI_DATA)
|
|
235 ;src/esp32.c:24: SPI_DATA = cmd; // Command
|
|
00000013 79 [ 4] 236 ld a, c
|
|
00000014 D3 57 [11] 237 out (_SPI_DATA), a
|
|
238 ;src/esp32.c:25: SPI_DATA = ESP_ST_IDLE; // Reset status
|
|
00000016 AF [ 4] 239 xor a, a
|
|
00000017 D3 57 [11] 240 out (_SPI_DATA), a
|
|
241 ;src/esp32.c:26: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
00000019 3E 03 [ 7] 242 ld a, #0x03
|
|
0000001B D3 77 [11] 243 out (_SPI_CTRL), a
|
|
244 ;src/esp32.c:27: }
|
|
0000001D C9 [10] 245 ret
|
|
246 ;src/esp32.c:29: u8 esp_rd_reg8(u8 reg)
|
|
247 ; ---------------------------------
|
|
248 ; Function esp_rd_reg8
|
|
249 ; ---------------------------------
|
|
0000001E 250 _esp_rd_reg8::
|
|
0000001E 4F [ 4] 251 ld c, a
|
|
252 ;src/esp32.c:31: SPI_CTRL = SPI_ESP_CS_ON;
|
|
0000001F 3E 13 [ 7] 253 ld a, #0x13
|
|
00000021 D3 77 [11] 254 out (_SPI_CTRL), a
|
|
255 ;src/esp32.c:32: SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
|
00000023 3E 02 [ 7] 256 ld a, #0x02
|
|
00000025 D3 57 [11] 257 out (_SPI_DATA), a
|
|
258 ;src/esp32.c:33: SPI_DATA = reg;
|
|
00000027 79 [ 4] 259 ld a, c
|
|
00000028 D3 57 [11] 260 out (_SPI_DATA), a
|
|
261 ;src/esp32.c:34: SPI_DATA; // dummy
|
|
0000002A DB 57 [11] 262 in a, (_SPI_DATA)
|
|
263 ;src/esp32.c:35: SPI_DATA; // dummy
|
|
0000002C DB 57 [11] 264 in a, (_SPI_DATA)
|
|
265 ;src/esp32.c:36: u8 rc = SPI_DATA;
|
|
0000002E DB 57 [11] 266 in a, (_SPI_DATA)
|
|
00000030 4F [ 4] 267 ld c, a
|
|
268 ;src/esp32.c:37: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
00000031 3E 03 [ 7] 269 ld a, #0x03
|
|
00000033 D3 77 [11] 270 out (_SPI_CTRL), a
|
|
271 ;src/esp32.c:39: return rc;
|
|
00000035 79 [ 4] 272 ld a, c
|
|
273 ;src/esp32.c:40: }
|
|
00000036 C9 [10] 274 ret
|
|
275 ;src/esp32.c:42: u32 esp_rd_reg32(u8 reg)
|
|
276 ; ---------------------------------
|
|
277 ; Function esp_rd_reg32
|
|
278 ; ---------------------------------
|
|
00000037 279 _esp_rd_reg32::
|
|
00000037 DD E5 [15] 280 push ix
|
|
00000039 DD 21 00 00 [14] 281 ld ix, #0
|
|
0000003D DD 39 [15] 282 add ix, sp
|
|
0000003F F5 [11] 283 push af
|
|
00000040 F5 [11] 284 push af
|
|
00000041 4F [ 4] 285 ld c, a
|
|
286 ;src/esp32.c:44: SPI_CTRL = SPI_ESP_CS_ON;
|
|
00000042 3E 13 [ 7] 287 ld a, #0x13
|
|
00000044 D3 77 [11] 288 out (_SPI_CTRL), a
|
|
289 ;src/esp32.c:45: SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
|
00000046 3E 02 [ 7] 290 ld a, #0x02
|
|
00000048 D3 57 [11] 291 out (_SPI_DATA), a
|
|
292 ;src/esp32.c:46: SPI_DATA = reg;
|
|
0000004A 79 [ 4] 293 ld a, c
|
|
0000004B D3 57 [11] 294 out (_SPI_DATA), a
|
|
295 ;src/esp32.c:47: SPI_DATA; // dummy
|
|
0000004D DB 57 [11] 296 in a, (_SPI_DATA)
|
|
297 ;src/esp32.c:48: SPI_DATA; // dummy
|
|
0000004F DB 57 [11] 298 in a, (_SPI_DATA)
|
|
299 ;src/esp32.c:49: u32 rc = SPI_DATA;
|
|
00000051 DB 57 [11] 300 in a, (_SPI_DATA)
|
|
00000053 4F [ 4] 301 ld c, a
|
|
302 ;src/esp32.c:50: rc |= (u32)SPI_DATA << 8;
|
|
00000054 DB 57 [11] 303 in a, (_SPI_DATA)
|
|
00000056 57 [ 4] 304 ld d, a
|
|
00000057 59 [ 4] 305 ld e, c
|
|
306 ;src/esp32.c:51: rc |= (u32)SPI_DATA << 16;
|
|
00000058 DB 57 [11] 307 in a, (_SPI_DATA)
|
|
0000005A DD 77 FC [19] 308 ld -4 (ix), a
|
|
0000005D AF [ 4] 309 xor a, a
|
|
0000005E DD 77 FD [19] 310 ld -3 (ix), a
|
|
00000061 DD 77 FE [19] 311 ld -2 (ix), a
|
|
00000064 DD 77 FF [19] 312 ld -1 (ix), a
|
|
00000067 DD 7E FC [19] 313 ld a, -4 (ix)
|
|
0000006A DD 77 FE [19] 314 ld -2 (ix), a
|
|
0000006D AF [ 4] 315 xor a, a
|
|
0000006E DD 77 FF [19] 316 ld -1 (ix), a
|
|
00000071 DD 77 FC [19] 317 ld -4 (ix), a
|
|
00000074 DD 77 FD [19] 318 ld -3 (ix), a
|
|
00000077 DD 6E FE [19] 319 ld l, -2 (ix)
|
|
320 ;src/esp32.c:52: rc |= (u32)SPI_DATA << 24;
|
|
0000007A DB 57 [11] 321 in a, (_SPI_DATA)
|
|
0000007C DD 77 FC [19] 322 ld -4 (ix), a
|
|
0000007F AF [ 4] 323 xor a, a
|
|
00000080 DD 77 FD [19] 324 ld -3 (ix), a
|
|
00000083 DD 77 FE [19] 325 ld -2 (ix), a
|
|
00000086 DD 77 FF [19] 326 ld -1 (ix), a
|
|
00000089 DD 7E FC [19] 327 ld a, -4 (ix)
|
|
0000008C DD 77 FF [19] 328 ld -1 (ix), a
|
|
0000008F AF [ 4] 329 xor a, a
|
|
00000090 DD 77 FC [19] 330 ld -4 (ix), a
|
|
00000093 DD 77 FD [19] 331 ld -3 (ix), a
|
|
00000096 DD 77 FE [19] 332 ld -2 (ix), a
|
|
00000099 DD 66 FF [19] 333 ld h, -1 (ix)
|
|
334 ;src/esp32.c:53: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
0000009C 3E 03 [ 7] 335 ld a, #0x03
|
|
0000009E D3 77 [11] 336 out (_SPI_CTRL), a
|
|
337 ;src/esp32.c:55: return rc;
|
|
338 ;src/esp32.c:56: }
|
|
000000A0 DD F9 [10] 339 ld sp, ix
|
|
000000A2 DD E1 [14] 340 pop ix
|
|
000000A4 C9 [10] 341 ret
|
|
342 ;src/esp32.c:58: void esp_rd_regs(u8 reg, void *data, u8 size)
|
|
343 ; ---------------------------------
|
|
344 ; Function esp_rd_regs
|
|
345 ; ---------------------------------
|
|
000000A5 346 _esp_rd_regs::
|
|
000000A5 4F [ 4] 347 ld c, a
|
|
348 ;src/esp32.c:60: u8 *d = (u8*)data;
|
|
349 ;src/esp32.c:62: SPI_CTRL = SPI_ESP_CS_ON;
|
|
000000A6 3E 13 [ 7] 350 ld a, #0x13
|
|
000000A8 D3 77 [11] 351 out (_SPI_CTRL), a
|
|
352 ;src/esp32.c:63: SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
|
000000AA 3E 02 [ 7] 353 ld a, #0x02
|
|
000000AC D3 57 [11] 354 out (_SPI_DATA), a
|
|
355 ;src/esp32.c:64: SPI_DATA = reg;
|
|
000000AE 79 [ 4] 356 ld a, c
|
|
000000AF D3 57 [11] 357 out (_SPI_DATA), a
|
|
358 ;src/esp32.c:65: SPI_DATA; // dummy
|
|
000000B1 DB 57 [11] 359 in a, (_SPI_DATA)
|
|
360 ;src/esp32.c:66: SPI_DATA; // dummy
|
|
000000B3 DB 57 [11] 361 in a, (_SPI_DATA)
|
|
362 ;src/esp32.c:67: while (size--) *d++ = SPI_DATA;
|
|
000000B5 FD 21 02 00 [14] 363 ld iy, #2
|
|
000000B9 FD 39 [15] 364 add iy, sp
|
|
000000BB FD 4E 00 [19] 365 ld c, 0 (iy)
|
|
000000BE 366 00101$:
|
|
000000BE 79 [ 4] 367 ld a, c
|
|
000000BF 0D [ 4] 368 dec c
|
|
000000C0 B7 [ 4] 369 or a, a
|
|
000000C1 28 07 [12] 370 jr z, 00103$
|
|
000000C3 DB 57 [11] 371 in a, (_SPI_DATA)
|
|
000000C5 12 [ 7] 372 ld (de), a
|
|
000000C6 13 [ 6] 373 inc de
|
|
000000C7 C3rBEr00 [10] 374 jp 00101$
|
|
000000CA 375 00103$:
|
|
376 ;src/esp32.c:68: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
000000CA 3E 03 [ 7] 377 ld a, #0x03
|
|
000000CC D3 77 [11] 378 out (_SPI_CTRL), a
|
|
379 ;src/esp32.c:69: }
|
|
000000CE E1 [10] 380 pop hl
|
|
000000CF 33 [ 6] 381 inc sp
|
|
000000D0 E9 [ 4] 382 jp (hl)
|
|
383 ;src/esp32.c:71: void esp_wr_reg8(u8 reg, u8 data)
|
|
384 ; ---------------------------------
|
|
385 ; Function esp_wr_reg8
|
|
386 ; ---------------------------------
|
|
000000D1 387 _esp_wr_reg8::
|
|
000000D1 47 [ 4] 388 ld b, a
|
|
000000D2 4D [ 4] 389 ld c, l
|
|
390 ;src/esp32.c:73: SPI_CTRL = SPI_ESP_CS_ON;
|
|
000000D3 3E 13 [ 7] 391 ld a, #0x13
|
|
000000D5 D3 77 [11] 392 out (_SPI_CTRL), a
|
|
393 ;src/esp32.c:74: SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
|
000000D7 3E 01 [ 7] 394 ld a, #0x01
|
|
000000D9 D3 57 [11] 395 out (_SPI_DATA), a
|
|
396 ;src/esp32.c:75: SPI_DATA = reg;
|
|
000000DB 78 [ 4] 397 ld a, b
|
|
000000DC D3 57 [11] 398 out (_SPI_DATA), a
|
|
399 ;src/esp32.c:76: SPI_DATA; // dummy
|
|
000000DE DB 57 [11] 400 in a, (_SPI_DATA)
|
|
401 ;src/esp32.c:77: SPI_DATA = data;
|
|
000000E0 79 [ 4] 402 ld a, c
|
|
000000E1 D3 57 [11] 403 out (_SPI_DATA), a
|
|
404 ;src/esp32.c:78: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
000000E3 3E 03 [ 7] 405 ld a, #0x03
|
|
000000E5 D3 77 [11] 406 out (_SPI_CTRL), a
|
|
407 ;src/esp32.c:79: }
|
|
000000E7 C9 [10] 408 ret
|
|
409 ;src/esp32.c:81: void esp_wr_reg32(u8 reg, u32 data)
|
|
410 ; ---------------------------------
|
|
411 ; Function esp_wr_reg32
|
|
412 ; ---------------------------------
|
|
000000E8 413 _esp_wr_reg32::
|
|
000000E8 4F [ 4] 414 ld c, a
|
|
415 ;src/esp32.c:83: SPI_CTRL = SPI_ESP_CS_ON;
|
|
000000E9 3E 13 [ 7] 416 ld a, #0x13
|
|
000000EB D3 77 [11] 417 out (_SPI_CTRL), a
|
|
418 ;src/esp32.c:84: SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
|
000000ED 3E 01 [ 7] 419 ld a, #0x01
|
|
000000EF D3 57 [11] 420 out (_SPI_DATA), a
|
|
421 ;src/esp32.c:85: SPI_DATA = reg;
|
|
000000F1 79 [ 4] 422 ld a, c
|
|
000000F2 D3 57 [11] 423 out (_SPI_DATA), a
|
|
424 ;src/esp32.c:86: SPI_DATA; // dummy
|
|
000000F4 DB 57 [11] 425 in a, (_SPI_DATA)
|
|
426 ;src/esp32.c:87: SPI_DATA = (u8)data;
|
|
000000F6 FD 21 02 00 [14] 427 ld iy, #2
|
|
000000FA FD 39 [15] 428 add iy, sp
|
|
000000FC FD 7E 00 [19] 429 ld a, 0 (iy)
|
|
000000FF D3 57 [11] 430 out (_SPI_DATA), a
|
|
431 ;src/esp32.c:88: SPI_DATA = (u8)(data >> 8);
|
|
00000101 FD 7E 01 [19] 432 ld a, 1 (iy)
|
|
00000104 D3 57 [11] 433 out (_SPI_DATA), a
|
|
434 ;src/esp32.c:89: SPI_DATA = (u8)(data >> 16);
|
|
00000106 FD 7E 02 [19] 435 ld a, 2 (iy)
|
|
00000109 D3 57 [11] 436 out (_SPI_DATA), a
|
|
437 ;src/esp32.c:90: SPI_DATA = (u8)(data >> 24);
|
|
0000010B FD 7E 03 [19] 438 ld a, 3 (iy)
|
|
0000010E D3 57 [11] 439 out (_SPI_DATA), a
|
|
440 ;src/esp32.c:91: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
00000110 3E 03 [ 7] 441 ld a, #0x03
|
|
00000112 D3 77 [11] 442 out (_SPI_CTRL), a
|
|
443 ;src/esp32.c:92: }
|
|
00000114 E1 [10] 444 pop hl
|
|
00000115 F1 [10] 445 pop af
|
|
00000116 F1 [10] 446 pop af
|
|
00000117 E9 [ 4] 447 jp (hl)
|
|
448 ;src/esp32.c:94: void esp_wr_end()
|
|
449 ; ---------------------------------
|
|
450 ; Function esp_wr_end
|
|
451 ; ---------------------------------
|
|
00000118 452 _esp_wr_end::
|
|
453 ;src/esp32.c:96: SPI_CTRL = SPI_ESP_CS_ON;
|
|
00000118 3E 13 [ 7] 454 ld a, #0x13
|
|
0000011A D3 77 [11] 455 out (_SPI_CTRL), a
|
|
456 ;src/esp32.c:97: SPI_DATA = ESP_SPI_CMD_W_END;
|
|
0000011C 3E 07 [ 7] 457 ld a, #0x07
|
|
0000011E D3 57 [11] 458 out (_SPI_DATA), a
|
|
459 ;src/esp32.c:98: SPI_DATA; // dummy
|
|
00000120 DB 57 [11] 460 in a, (_SPI_DATA)
|
|
461 ;src/esp32.c:99: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
00000122 3E 03 [ 7] 462 ld a, #0x03
|
|
00000124 D3 77 [11] 463 out (_SPI_CTRL), a
|
|
464 ;src/esp32.c:100: }
|
|
00000126 C9 [10] 465 ret
|
|
466 ;src/esp32.c:114: u8 esp_wait_not_busy(u16 max_frames)
|
|
467 ; ---------------------------------
|
|
468 ; Function esp_wait_not_busy
|
|
469 ; ---------------------------------
|
|
00000127 470 _esp_wait_not_busy::
|
|
00000127 DD E5 [15] 471 push ix
|
|
00000129 DD 21 00 00 [14] 472 ld ix, #0
|
|
0000012D DD 39 [15] 473 add ix, sp
|
|
0000012F F5 [11] 474 push af
|
|
00000130 F5 [11] 475 push af
|
|
00000131 DD 75 FE [19] 476 ld -2 (ix), l
|
|
00000134 DD 74 FF [19] 477 ld -1 (ix), h
|
|
478 ;src/esp32.c:116: u16 start = *(u16*)_TMN;
|
|
00000137 21 09 60 [10] 479 ld hl, #0x6009
|
|
0000013A 7E [ 7] 480 ld a, (hl)
|
|
0000013B DD 77 FC [19] 481 ld -4 (ix), a
|
|
0000013E 23 [ 6] 482 inc hl
|
|
0000013F 7E [ 7] 483 ld a, (hl)
|
|
00000140 DD 77 FD [19] 484 ld -3 (ix), a
|
|
485 ;src/esp32.c:118: while ((u16)(*(u16*)_TMN - start) < max_frames)
|
|
00000143 486 00103$:
|
|
00000143 2A 09 60 [16] 487 ld hl, (#0x6009)
|
|
00000146 7D [ 4] 488 ld a, l
|
|
00000147 DD 96 FC [19] 489 sub a, -4 (ix)
|
|
0000014A 4F [ 4] 490 ld c, a
|
|
0000014B 7C [ 4] 491 ld a, h
|
|
0000014C DD 9E FD [19] 492 sbc a, -3 (ix)
|
|
0000014F 47 [ 4] 493 ld b, a
|
|
00000150 79 [ 4] 494 ld a, c
|
|
00000151 DD 96 FE [19] 495 sub a, -2 (ix)
|
|
00000154 78 [ 4] 496 ld a, b
|
|
00000155 DD 9E FF [19] 497 sbc a, -1 (ix)
|
|
00000158 30 0E [12] 498 jr nc, 00105$
|
|
499 ;src/esp32.c:120: if (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY)
|
|
0000015A 3E 01 [ 7] 500 ld a, #0x01
|
|
0000015C CDr1Er00 [17] 501 call _esp_rd_reg8
|
|
0000015F FE 02 [ 7] 502 cp a, #0x02
|
|
00000161 28 E0 [12] 503 jr z, 00103$
|
|
504 ;src/esp32.c:121: return 1;
|
|
00000163 3E 01 [ 7] 505 ld a, #0x01
|
|
00000165 C3r69r01 [10] 506 jp 00106$
|
|
00000168 507 00105$:
|
|
508 ;src/esp32.c:124: return 0;
|
|
00000168 AF [ 4] 509 xor a, a
|
|
00000169 510 00106$:
|
|
511 ;src/esp32.c:125: }
|
|
00000169 DD F9 [10] 512 ld sp, ix
|
|
0000016B DD E1 [14] 513 pop ix
|
|
0000016D C9 [10] 514 ret
|
|
515 ;src/esp32.c:127: void esp_send_dma(u16 a, u8 p, u16 l, u16 n)
|
|
516 ; ---------------------------------
|
|
517 ; Function esp_send_dma
|
|
518 ; ---------------------------------
|
|
0000016E 519 _esp_send_dma::
|
|
0000016E 7D [ 4] 520 ld a, l
|
|
521 ;src/esp32.c:130: TS_DMASADDRL = (u8)a;
|
|
0000016F 01 AF 1A [10] 522 ld bc, #_TS_DMASADDRL
|
|
00000172 ED 79 [12] 523 out (c), a
|
|
524 ;src/esp32.c:131: TS_DMASADDRH = (u8)((u16)a >> 8);
|
|
00000174 7C [ 4] 525 ld a, h
|
|
00000175 01 AF 1B [10] 526 ld bc, #_TS_DMASADDRH
|
|
00000178 ED 79 [12] 527 out (c), a
|
|
528 ;src/esp32.c:132: TS_DMASADDRX = p;
|
|
0000017A FD 21 02 00 [14] 529 ld iy, #2
|
|
0000017E FD 39 [15] 530 add iy, sp
|
|
00000180 FD 7E 00 [19] 531 ld a, 0 (iy)
|
|
00000183 01 AF 1C [10] 532 ld bc, #_TS_DMASADDRX
|
|
00000186 ED 79 [12] 533 out (c), a
|
|
534 ;src/esp32.c:133: TS_DMALEN = (u8)((l >> 1) - 1);
|
|
00000188 FD 7E 01 [19] 535 ld a, 1 (iy)
|
|
0000018B FD 4E 02 [19] 536 ld c, 2 (iy)
|
|
0000018E FD 23 [10] 537 inc iy
|
|
00000190 CB 39 [ 8] 538 srl c
|
|
00000192 CB 1F [ 8] 539 rr a
|
|
00000194 3D [ 4] 540 dec a
|
|
00000195 01 AF 26 [10] 541 ld bc, #_TS_DMALEN
|
|
00000198 ED 79 [12] 542 out (c), a
|
|
543 ;src/esp32.c:134: TS_DMANUM = (u8)(n - 1);
|
|
0000019A FD 7E 02 [19] 544 ld a, 2 (iy)
|
|
0000019D 3D [ 4] 545 dec a
|
|
0000019E 01 AF 28 [10] 546 ld bc, #_TS_DMANUM
|
|
000001A1 ED 79 [12] 547 out (c), a
|
|
548 ;src/esp32.c:136: SPI_CTRL = SPI_ESP_CS_ON;
|
|
000001A3 3E 13 [ 7] 549 ld a, #0x13
|
|
000001A5 D3 77 [11] 550 out (_SPI_CTRL), a
|
|
551 ;src/esp32.c:137: SPI_DATA = ESP_SPI_CMD_WR_DATA;
|
|
000001A7 3E 03 [ 7] 552 ld a, #0x03
|
|
000001A9 D3 57 [11] 553 out (_SPI_DATA), a
|
|
554 ;src/esp32.c:138: SPI_DATA; // dummy
|
|
000001AB DB 57 [11] 555 in a, (_SPI_DATA)
|
|
556 ;src/esp32.c:139: SPI_DATA; // dummy
|
|
000001AD DB 57 [11] 557 in a, (_SPI_DATA)
|
|
558 ;src/esp32.c:140: TS_DMACTR = TS_DMA_RAM_SPI;
|
|
000001AF 3E 82 [ 7] 559 ld a, #0x82
|
|
000001B1 01 AF 27 [10] 560 ld bc, #_TS_DMACTR
|
|
000001B4 ED 79 [12] 561 out (c), a
|
|
562 ;src/esp32.c:141: while (TS_DMASTATUS & 0x80);
|
|
000001B6 563 00101$:
|
|
000001B6 3E 27 [ 7] 564 ld a, #>(_TS_DMASTATUS)
|
|
000001B8 DB AF [11] 565 in a, (#<(_TS_DMASTATUS))
|
|
000001BA 07 [ 4] 566 rlca
|
|
000001BB 38 F9 [12] 567 jr c, 00101$
|
|
568 ;src/esp32.c:142: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
000001BD 3E 03 [ 7] 569 ld a, #0x03
|
|
000001BF D3 77 [11] 570 out (_SPI_CTRL), a
|
|
571 ;src/esp32.c:144: esp_wr_end();
|
|
000001C1 CDr18r01 [17] 572 call _esp_wr_end
|
|
573 ;src/esp32.c:145: esp_wait_not_busy(100); // 2s - esp32 consuming one DMA'd chunk should be near-instant
|
|
000001C4 21 64 00 [10] 574 ld hl, #0x0064
|
|
000001C7 CDr27r01 [17] 575 call _esp_wait_not_busy
|
|
576 ;src/esp32.c:146: }
|
|
000001CA E1 [10] 577 pop hl
|
|
000001CB F1 [10] 578 pop af
|
|
000001CC F1 [10] 579 pop af
|
|
000001CD 33 [ 6] 580 inc sp
|
|
000001CE E9 [ 4] 581 jp (hl)
|
|
582 ;src/esp32.c:148: void esp_rd_end()
|
|
583 ; ---------------------------------
|
|
584 ; Function esp_rd_end
|
|
585 ; ---------------------------------
|
|
000001CF 586 _esp_rd_end::
|
|
587 ;src/esp32.c:150: SPI_CTRL = SPI_ESP_CS_ON;
|
|
000001CF 3E 13 [ 7] 588 ld a, #0x13
|
|
000001D1 D3 77 [11] 589 out (_SPI_CTRL), a
|
|
590 ;src/esp32.c:151: SPI_DATA = ESP_SPI_CMD_R_END;
|
|
000001D3 3E 08 [ 7] 591 ld a, #0x08
|
|
000001D5 D3 57 [11] 592 out (_SPI_DATA), a
|
|
593 ;src/esp32.c:152: SPI_DATA; // dummy
|
|
000001D7 DB 57 [11] 594 in a, (_SPI_DATA)
|
|
595 ;src/esp32.c:153: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
000001D9 3E 03 [ 7] 596 ld a, #0x03
|
|
000001DB D3 77 [11] 597 out (_SPI_CTRL), a
|
|
598 ;src/esp32.c:154: }
|
|
000001DD C9 [10] 599 ret
|
|
600 ;src/esp32.c:164: u8 esp_wait_status(u8 status, u16 max_frames)
|
|
601 ; ---------------------------------
|
|
602 ; Function esp_wait_status
|
|
603 ; ---------------------------------
|
|
000001DE 604 _esp_wait_status::
|
|
000001DE DD E5 [15] 605 push ix
|
|
000001E0 DD 21 00 00 [14] 606 ld ix, #0
|
|
000001E4 DD 39 [15] 607 add ix, sp
|
|
000001E6 21 FB FF [10] 608 ld hl, #-5
|
|
000001E9 39 [11] 609 add hl, sp
|
|
000001EA F9 [ 6] 610 ld sp, hl
|
|
000001EB DD 77 FF [19] 611 ld -1 (ix), a
|
|
000001EE DD 73 FD [19] 612 ld -3 (ix), e
|
|
000001F1 DD 72 FE [19] 613 ld -2 (ix), d
|
|
614 ;src/esp32.c:166: u16 start = *(u16*)_TMN;
|
|
000001F4 21 09 60 [10] 615 ld hl, #0x6009
|
|
000001F7 7E [ 7] 616 ld a, (hl)
|
|
000001F8 DD 77 FB [19] 617 ld -5 (ix), a
|
|
000001FB 23 [ 6] 618 inc hl
|
|
000001FC 7E [ 7] 619 ld a, (hl)
|
|
000001FD DD 77 FC [19] 620 ld -4 (ix), a
|
|
621 ;src/esp32.c:168: while ((u16)(*(u16*)_TMN - start) < max_frames)
|
|
00000200 622 00103$:
|
|
00000200 2A 09 60 [16] 623 ld hl, (#0x6009)
|
|
00000203 7D [ 4] 624 ld a, l
|
|
00000204 DD 96 FB [19] 625 sub a, -5 (ix)
|
|
00000207 4F [ 4] 626 ld c, a
|
|
00000208 7C [ 4] 627 ld a, h
|
|
00000209 DD 9E FC [19] 628 sbc a, -4 (ix)
|
|
0000020C 47 [ 4] 629 ld b, a
|
|
0000020D 79 [ 4] 630 ld a, c
|
|
0000020E DD 96 FD [19] 631 sub a, -3 (ix)
|
|
00000211 78 [ 4] 632 ld a, b
|
|
00000212 DD 9E FE [19] 633 sbc a, -2 (ix)
|
|
00000215 30 0F [12] 634 jr nc, 00105$
|
|
635 ;src/esp32.c:170: if (esp_rd_reg8(ESP_REG_STATUS) == status)
|
|
00000217 3E 01 [ 7] 636 ld a, #0x01
|
|
00000219 CDr1Er00 [17] 637 call _esp_rd_reg8
|
|
0000021C DD 96 FF [19] 638 sub a, -1 (ix)
|
|
0000021F 20 DF [12] 639 jr nz, 00103$
|
|
640 ;src/esp32.c:171: return 1;
|
|
00000221 3E 01 [ 7] 641 ld a, #0x01
|
|
00000223 C3r27r02 [10] 642 jp 00106$
|
|
00000226 643 00105$:
|
|
644 ;src/esp32.c:174: return 0;
|
|
00000226 AF [ 4] 645 xor a, a
|
|
00000227 646 00106$:
|
|
647 ;src/esp32.c:175: }
|
|
00000227 DD F9 [10] 648 ld sp, ix
|
|
00000229 DD E1 [14] 649 pop ix
|
|
0000022B C9 [10] 650 ret
|
|
651 ;src/esp32.c:194: u8 esp_wait_busy(u16 max_frames)
|
|
652 ; ---------------------------------
|
|
653 ; Function esp_wait_busy
|
|
654 ; ---------------------------------
|
|
0000022C 655 _esp_wait_busy::
|
|
0000022C EB [ 4] 656 ex de, hl
|
|
657 ;src/esp32.c:196: u16 start = *(u16*)_TMN;
|
|
0000022D ED 4B 09 60 [20] 658 ld bc, (#0x6009)
|
|
659 ;src/esp32.c:199: while (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY)
|
|
00000231 660 00103$:
|
|
00000231 C5 [11] 661 push bc
|
|
00000232 D5 [11] 662 push de
|
|
00000233 3E 01 [ 7] 663 ld a, #0x01
|
|
00000235 CDr1Er00 [17] 664 call _esp_rd_reg8
|
|
00000238 D1 [10] 665 pop de
|
|
00000239 C1 [10] 666 pop bc
|
|
0000023A FE 02 [ 7] 667 cp a, #0x02
|
|
0000023C 28 0D [12] 668 jr z, 00108$
|
|
669 ;src/esp32.c:201: if ((u16)(*(u16*)_TMN - start) >= max_frames)
|
|
0000023E 2A 09 60 [16] 670 ld hl, (#0x6009)
|
|
00000241 BF [ 4] 671 cp a, a
|
|
00000242 ED 42 [15] 672 sbc hl, bc
|
|
00000244 AF [ 4] 673 xor a, a
|
|
00000245 ED 52 [15] 674 sbc hl, de
|
|
00000247 38 E8 [12] 675 jr c, 00103$
|
|
676 ;src/esp32.c:202: return 0;
|
|
00000249 AF [ 4] 677 xor a, a
|
|
0000024A C9 [10] 678 ret
|
|
679 ;src/esp32.c:206: while ((u16)(*(u16*)_TMN - start) < max_frames)
|
|
0000024B 680 00108$:
|
|
0000024B 2A 09 60 [16] 681 ld hl, (#0x6009)
|
|
0000024E BF [ 4] 682 cp a, a
|
|
0000024F ED 42 [15] 683 sbc hl, bc
|
|
00000251 AF [ 4] 684 xor a, a
|
|
00000252 ED 52 [15] 685 sbc hl, de
|
|
00000254 30 10 [12] 686 jr nc, 00110$
|
|
687 ;src/esp32.c:208: if (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY)
|
|
00000256 C5 [11] 688 push bc
|
|
00000257 D5 [11] 689 push de
|
|
00000258 3E 01 [ 7] 690 ld a, #0x01
|
|
0000025A CDr1Er00 [17] 691 call _esp_rd_reg8
|
|
0000025D D1 [10] 692 pop de
|
|
0000025E C1 [10] 693 pop bc
|
|
0000025F FE 02 [ 7] 694 cp a, #0x02
|
|
00000261 28 E8 [12] 695 jr z, 00108$
|
|
696 ;src/esp32.c:209: return 1;
|
|
00000263 3E 01 [ 7] 697 ld a, #0x01
|
|
00000265 C9 [10] 698 ret
|
|
00000266 699 00110$:
|
|
700 ;src/esp32.c:212: return 0;
|
|
00000266 AF [ 4] 701 xor a, a
|
|
702 ;src/esp32.c:213: }
|
|
00000267 C9 [10] 703 ret
|
|
704 ;src/esp32.c:215: int esp_create_obj(u32 size, u8 type)
|
|
705 ; ---------------------------------
|
|
706 ; Function esp_create_obj
|
|
707 ; ---------------------------------
|
|
00000268 708 _esp_create_obj::
|
|
709 ;src/esp32.c:217: esp_wr_reg32(ESP_REG_DATA_SIZE, size);
|
|
00000268 E5 [11] 710 push hl
|
|
00000269 D5 [11] 711 push de
|
|
0000026A 3E 03 [ 7] 712 ld a, #0x03
|
|
0000026C CDrE8r00 [17] 713 call _esp_wr_reg32
|
|
714 ;src/esp32.c:218: esp_wr_reg8(ESP_REG_OBJ_TYPE, type);
|
|
0000026F FD 21 02 00 [14] 715 ld iy, #2
|
|
00000273 FD 39 [15] 716 add iy, sp
|
|
00000275 FD 6E 00 [19] 717 ld l, 0 (iy)
|
|
00000278 3E 02 [ 7] 718 ld a, #0x02
|
|
0000027A CDrD1r00 [17] 719 call _esp_wr_reg8
|
|
720 ;src/esp32.c:219: esp_cmd(ESP_CMD_MAKE_OBJECT);
|
|
0000027D 3E E0 [ 7] 721 ld a, #0xe0
|
|
0000027F CDr05r00 [17] 722 call _esp_cmd
|
|
723 ;src/esp32.c:220: esp_wait_busy(100); // 2s - object allocation should be near-instant
|
|
00000282 21 64 00 [10] 724 ld hl, #0x0064
|
|
00000285 CDr2Cr02 [17] 725 call _esp_wait_busy
|
|
726 ;src/esp32.c:223: return esp_rd_reg8(ESP_REG_OBJ_HANDLE);
|
|
00000288 3E 0B [ 7] 727 ld a, #0x0b
|
|
0000028A CDr1Er00 [17] 728 call _esp_rd_reg8
|
|
0000028D 5F [ 4] 729 ld e, a
|
|
0000028E 16 00 [ 7] 730 ld d, #0x00
|
|
731 ;src/esp32.c:224: }
|
|
00000290 E1 [10] 732 pop hl
|
|
00000291 33 [ 6] 733 inc sp
|
|
00000292 E9 [ 4] 734 jp (hl)
|
|
735 ;src/main.c:145: bool esp_init()
|
|
736 ; ---------------------------------
|
|
737 ; Function esp_init
|
|
738 ; ---------------------------------
|
|
00000293 739 _esp_init::
|
|
740 ;src/main.c:147: esp_cmd(ESP_CMD_NOP);
|
|
00000293 AF [ 4] 741 xor a, a
|
|
00000294 CDr05r00 [17] 742 call _esp_cmd
|
|
743 ;src/main.c:148: esp_rd_end();
|
|
00000297 CDrCFr01 [17] 744 call _esp_rd_end
|
|
745 ;src/main.c:149: esp_wr_end();
|
|
0000029A CDr18r01 [17] 746 call _esp_wr_end
|
|
747 ;src/main.c:153: return true;
|
|
0000029D 3E 01 [ 7] 748 ld a, #0x01
|
|
749 ;src/main.c:154: }
|
|
0000029F C9 [10] 750 ret
|
|
000002A0 751 _win_xm_tpl:
|
|
000002A0 81 752 .db #0x81 ; 129
|
|
000002A1 00 753 .db #0x00 ; 0
|
|
000002A2 19 754 .db #0x19 ; 25
|
|
000002A3 0A 755 .db #0x0a ; 10
|
|
000002A4 28 756 .db #0x28 ; 40
|
|
000002A5 0C 757 .db #0x0c ; 12
|
|
000002A6 70 758 .db #0x70 ; 112 'p'
|
|
000002A7 00 759 .db #0x00 ; 0
|
|
000002A8 00 00 760 .dw #0x0000
|
|
000002AA 00 761 .db #0x00 ; 0
|
|
000002AB 00 762 .db #0x00 ; 0
|
|
000002ACrC4r02 763 .dw __str_0
|
|
000002AErDEr02 764 .dw __str_1
|
|
000002B0rDEr02 765 .dw __str_1
|
|
000002B2 766 _win_about_tpl:
|
|
000002B2 01 767 .db #0x01 ; 1
|
|
000002B3 00 768 .db #0x00 ; 0
|
|
000002B4 16 769 .db #0x16 ; 22
|
|
000002B5 0A 770 .db #0x0a ; 10
|
|
000002B6 24 771 .db #0x24 ; 36
|
|
000002B7 07 772 .db #0x07 ; 7
|
|
000002B8 70 773 .db #0x70 ; 112 'p'
|
|
000002B9 00 774 .db #0x00 ; 0
|
|
000002BA 00 00 775 .dw #0x0000
|
|
000002BC 00 776 .db #0x00 ; 0
|
|
000002BD 00 777 .db #0x00 ; 0
|
|
000002BErDFr02 778 .dw __str_2
|
|
000002C0rDEr02 779 .dw __str_1
|
|
000002C2rE8r02 780 .dw __str_3
|
|
000002C4 781 __str_0:
|
|
000002C4 0E 782 .db 0x0e
|
|
000002C5 20 58 4D 2F 58 4D 5A 783 .ascii " XM/XMZ/S3M Player v0.1 "
|
|
2F 53 33 4D 20 50 6C
|
|
61 79 65 72 20 76 30
|
|
2E 31 20
|
|
000002DD 00 784 .db 0x00
|
|
000002DE 785 __str_1:
|
|
000002DE 00 786 .db 0x00
|
|
000002DF 787 __str_2:
|
|
000002DF 0E 788 .db 0x0e
|
|
000002E0 20 41 62 6F 75 74 20 789 .ascii " About "
|
|
000002E7 00 790 .db 0x00
|
|
000002E8 791 __str_3:
|
|
000002E8 0D 792 .db 0x0d
|
|
000002E9 0E 793 .db 0x0e
|
|
000002EA 58 4D 20 50 6C 61 79 794 .ascii "XM Player v0.1"
|
|
65 72 20 76 30 2E 31
|
|
000002F8 0D 795 .db 0x0d
|
|
000002F9 0E 796 .db 0x0e
|
|
000002FA 62 79 20 41 6C 65 78 797 .ascii "by Alex Korochinskiy"
|
|
20 4B 6F 72 6F 63 68
|
|
69 6E 73 6B 69 79
|
|
0000030E 00 798 .db 0x00
|
|
799 ;src/main.c:158: bool play_xm()
|
|
800 ; ---------------------------------
|
|
801 ; Function play_xm
|
|
802 ; ---------------------------------
|
|
0000030F 803 _play_xm::
|
|
0000030F DD E5 [15] 804 push ix
|
|
00000311 DD 21 00 00 [14] 805 ld ix, #0
|
|
00000315 DD 39 [15] 806 add ix, sp
|
|
00000317 21 EC FF [10] 807 ld hl, #-20
|
|
0000031A 39 [11] 808 add hl, sp
|
|
0000031B F9 [ 6] 809 ld sp, hl
|
|
810 ;src/main.c:160: esp_cmd(ESP_CMD_TRACK_STOP);
|
|
0000031C 3E A2 [ 7] 811 ld a, #0xa2
|
|
0000031E CDr05r00 [17] 812 call _esp_cmd
|
|
813 ;src/main.c:161: esp_wait_busy(100); // 2s - both should be near-instant
|
|
00000321 21 64 00 [10] 814 ld hl, #0x0064
|
|
00000324 CDr2Cr02 [17] 815 call _esp_wait_busy
|
|
816 ;src/main.c:162: esp_cmd(ESP_CMD_KILL_OBJECTS);
|
|
00000327 3E E4 [ 7] 817 ld a, #0xe4
|
|
00000329 CDr05r00 [17] 818 call _esp_cmd
|
|
819 ;src/main.c:163: esp_wait_busy(100);
|
|
0000032C 21 64 00 [10] 820 ld hl, #0x0064
|
|
0000032F CDr2Cr02 [17] 821 call _esp_wait_busy
|
|
822 ;src/main.c:166: switch (file_ext)
|
|
00000332 3Ar06r10 [13] 823 ld a, (_file_ext)
|
|
00000335 3D [ 4] 824 dec a
|
|
00000336 28 0A [12] 825 jr z, 00101$
|
|
00000338 3Ar06r10 [13] 826 ld a, (_file_ext)
|
|
0000033B D6 02 [ 7] 827 sub a, #0x02
|
|
0000033D 28 08 [12] 828 jr z, 00102$
|
|
0000033F C3r4Cr03 [10] 829 jp 00103$
|
|
830 ;src/main.c:168: case EXT_XMZ: obj_type = OBJ_TYPE_ZIP; break;
|
|
00000342 831 00101$:
|
|
00000342 3E 08 [ 7] 832 ld a, #0x08
|
|
00000344 C3r4Er03 [10] 833 jp 00104$
|
|
834 ;src/main.c:169: case EXT_S3M: obj_type = OBJ_TYPE_S3M; break;
|
|
00000347 835 00102$:
|
|
00000347 3E 0C [ 7] 836 ld a, #0x0c
|
|
00000349 C3r4Er03 [10] 837 jp 00104$
|
|
838 ;src/main.c:170: default: obj_type = OBJ_TYPE_XM; break;
|
|
0000034C 839 00103$:
|
|
0000034C 3E 05 [ 7] 840 ld a, #0x05
|
|
841 ;src/main.c:171: }
|
|
0000034E 842 00104$:
|
|
843 ;src/main.c:173: xm_handle = esp_create_obj(filesize, obj_type);
|
|
0000034E F5 [11] 844 push af
|
|
0000034F 33 [ 6] 845 inc sp
|
|
00000350 ED 5Br02r10 [20] 846 ld de, (_filesize)
|
|
00000354 2Ar04r10 [16] 847 ld hl, (_filesize + 2)
|
|
00000357 CDr68r02 [17] 848 call _esp_create_obj
|
|
0000035A 21r30r10 [10] 849 ld hl, #_xm_handle
|
|
0000035D 73 [ 7] 850 ld (hl), e
|
|
851 ;src/main.c:174: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
|
0000035E 3E 01 [ 7] 852 ld a, #0x01
|
|
00000360 CDr1Er00 [17] 853 call _esp_rd_reg8
|
|
00000363 32r08r10 [13] 854 ld (#_last_esp_status), a
|
|
855 ;src/main.c:175: if (last_esp_status != ESP_ST_READY)
|
|
00000366 3Ar08r10 [13] 856 ld a, (_last_esp_status)
|
|
00000369 3D [ 4] 857 dec a
|
|
0000036A 28 04 [12] 858 jr z, 00106$
|
|
859 ;src/main.c:176: return false;
|
|
0000036C AF [ 4] 860 xor a, a
|
|
0000036D C3r36r05 [10] 861 jp 00118$
|
|
00000370 862 00106$:
|
|
863 ;src/main.c:178: u32 sz = filesize;
|
|
00000370 21 0C 00 [10] 864 ld hl, #12
|
|
00000373 39 [11] 865 add hl, sp
|
|
00000374 EB [ 4] 866 ex de, hl
|
|
00000375 21r02r10 [10] 867 ld hl, #_filesize
|
|
00000378 01 04 00 [10] 868 ld bc, #4
|
|
0000037B ED B0 [21] 869 ldir
|
|
870 ;src/main.c:179: u32 offs = 0;
|
|
0000037D AF [ 4] 871 xor a, a
|
|
0000037E DD 77 FC [19] 872 ld -4 (ix), a
|
|
00000381 DD 77 FD [19] 873 ld -3 (ix), a
|
|
00000384 DD 77 FE [19] 874 ld -2 (ix), a
|
|
00000387 DD 77 FF [19] 875 ld -1 (ix), a
|
|
876 ;src/main.c:181: while (sz)
|
|
0000038A 877 00107$:
|
|
0000038A DD 7E FB [19] 878 ld a, -5 (ix)
|
|
0000038D DD B6 FA [19] 879 or a, -6 (ix)
|
|
00000390 DD B6 F9 [19] 880 or a, -7 (ix)
|
|
00000393 DD B6 F8 [19] 881 or a, -8 (ix)
|
|
00000396 CAr9Fr04 [10] 882 jp z, 00109$
|
|
883 ;src/main.c:183: u32 s = min(sz, FS_BUF_SIZE);
|
|
00000399 DD 7E F9 [19] 884 ld a, -7 (ix)
|
|
0000039C D6 10 [ 7] 885 sub a, #0x10
|
|
0000039E DD 7E FA [19] 886 ld a, -6 (ix)
|
|
000003A1 DE 00 [ 7] 887 sbc a, #0x00
|
|
000003A3 DD 7E FB [19] 888 ld a, -5 (ix)
|
|
000003A6 DE 00 [ 7] 889 sbc a, #0x00
|
|
000003A8 30 11 [12] 890 jr nc, 00120$
|
|
000003AA 21 00 00 [10] 891 ld hl, #0
|
|
000003AD 39 [11] 892 add hl, sp
|
|
000003AE EB [ 4] 893 ex de, hl
|
|
000003AF 21 0C 00 [10] 894 ld hl, #12
|
|
000003B2 39 [11] 895 add hl, sp
|
|
000003B3 01 04 00 [10] 896 ld bc, #4
|
|
000003B6 ED B0 [21] 897 ldir
|
|
000003B8 C3rCAr03 [10] 898 jp 00121$
|
|
000003BB 899 00120$:
|
|
000003BB DD 36 EC 00 [19] 900 ld -20 (ix), #0x00
|
|
000003BF DD 36 ED 10 [19] 901 ld -19 (ix), #0x10
|
|
000003C3 AF [ 4] 902 xor a, a
|
|
000003C4 DD 77 EE [19] 903 ld -18 (ix), a
|
|
000003C7 DD 77 EF [19] 904 ld -17 (ix), a
|
|
000003CA 905 00121$:
|
|
000003CA 21 05 00 [10] 906 ld hl, #5
|
|
000003CD 39 [11] 907 add hl, sp
|
|
000003CE EB [ 4] 908 ex de, hl
|
|
000003CF 21 00 00 [10] 909 ld hl, #0
|
|
000003D2 39 [11] 910 add hl, sp
|
|
000003D3 01 04 00 [10] 911 ld bc, #4
|
|
000003D6 ED B0 [21] 912 ldir
|
|
913 ;src/main.c:184: u8 sec = (s + 511) >> 9;
|
|
000003D8 DD 7E F1 [19] 914 ld a, -15 (ix)
|
|
000003DB C6 FF [ 7] 915 add a, #0xff
|
|
000003DD DD 7E F2 [19] 916 ld a, -14 (ix)
|
|
000003E0 CE 01 [ 7] 917 adc a, #0x01
|
|
000003E2 47 [ 4] 918 ld b, a
|
|
000003E3 3E 00 [ 7] 919 ld a, #0x00
|
|
000003E5 CE 00 [ 7] 920 adc a, #0x00
|
|
000003E7 5F [ 4] 921 ld e, a
|
|
000003E8 3E 00 [ 7] 922 ld a, #0x00
|
|
000003EA CE 00 [ 7] 923 adc a, #0x00
|
|
000003EC 57 [ 4] 924 ld d, a
|
|
000003ED 48 [ 4] 925 ld c, b
|
|
000003EE 43 [ 4] 926 ld b, e
|
|
000003EF 5A [ 4] 927 ld e, d
|
|
000003F0 CB 3B [ 8] 928 srl e
|
|
000003F2 CB 18 [ 8] 929 rr b
|
|
000003F4 CB 19 [ 8] 930 rr c
|
|
931 ;src/main.c:186: wc_load512((u16)fs_buf, sec);
|
|
000003F6 DD 71 F7 [19] 932 ld -9 (ix), c
|
|
000003F9 79 [ 4] 933 ld a, c
|
|
000003FA F5 [11] 934 push af
|
|
000003FB 33 [ 6] 935 inc sp
|
|
000003FC 21r00r00 [10] 936 ld hl, #_fs_buf
|
|
000003FF CDr00r00 [17] 937 call _wc_load512
|
|
938 ;src/main.c:188: esp_wr_reg32(ESP_REG_DATA_SIZE, s);
|
|
00000402 21 00 00 [10] 939 ld hl, #0x0
|
|
00000405 E5 [11] 940 push hl
|
|
00000406 DD 6E F1 [19] 941 ld l, -15 (ix)
|
|
00000409 DD 66 F2 [19] 942 ld h, -14 (ix)
|
|
0000040C E5 [11] 943 push hl
|
|
0000040D 3E 03 [ 7] 944 ld a, #0x03
|
|
0000040F CDrE8r00 [17] 945 call _esp_wr_reg32
|
|
946 ;src/main.c:189: esp_wr_reg32(ESP_REG_DATA_OFFSET, offs);
|
|
00000412 DD 6E FE [19] 947 ld l, -2 (ix)
|
|
00000415 DD 66 FF [19] 948 ld h, -1 (ix)
|
|
00000418 E5 [11] 949 push hl
|
|
00000419 DD 6E FC [19] 950 ld l, -4 (ix)
|
|
0000041C DD 66 FD [19] 951 ld h, -3 (ix)
|
|
0000041F E5 [11] 952 push hl
|
|
00000420 3E 07 [ 7] 953 ld a, #0x07
|
|
00000422 CDrE8r00 [17] 954 call _esp_wr_reg32
|
|
955 ;src/main.c:190: esp_cmd(ESP_CMD_WRITE_OBJECT);
|
|
00000425 3E E1 [ 7] 956 ld a, #0xe1
|
|
00000427 CDr05r00 [17] 957 call _esp_cmd
|
|
958 ;src/main.c:191: esp_wait_status(ESP_ST_DATA_M2S, 100); // 2s - near-instant state transition
|
|
0000042A 11 64 00 [10] 959 ld de, #0x0064
|
|
0000042D 3E 03 [ 7] 960 ld a, #0x03
|
|
0000042F CDrDEr01 [17] 961 call _esp_wait_status
|
|
962 ;src/main.c:192: esp_send_dma((u16)fs_buf, *(u8*)_PAGE2, 512, sec);
|
|
00000432 DD 7E F7 [19] 963 ld a, -9 (ix)
|
|
00000435 DD 77 F5 [19] 964 ld -11 (ix), a
|
|
00000438 DD 36 F6 00 [19] 965 ld -10 (ix), #0x00
|
|
0000043C 3A 02 60 [13] 966 ld a, (#0x6002)
|
|
0000043F DD 77 F7 [19] 967 ld -9 (ix), a
|
|
00000442 DD 6E F5 [19] 968 ld l, -11 (ix)
|
|
00000445 26 00 [ 7] 969 ld h, #0x00
|
|
00000447 E5 [11] 970 push hl
|
|
00000448 21 00 02 [10] 971 ld hl, #0x0200
|
|
0000044B E5 [11] 972 push hl
|
|
0000044C DD 7E F7 [19] 973 ld a, -9 (ix)
|
|
0000044F F5 [11] 974 push af
|
|
00000450 33 [ 6] 975 inc sp
|
|
00000451 21r00r00 [10] 976 ld hl, #_fs_buf
|
|
00000454 CDr6Er01 [17] 977 call _esp_send_dma
|
|
978 ;src/main.c:194: offs += s;
|
|
00000457 DD 5E F1 [19] 979 ld e, -15 (ix)
|
|
0000045A DD 56 F2 [19] 980 ld d, -14 (ix)
|
|
0000045D DD 6E FC [19] 981 ld l, -4 (ix)
|
|
00000460 DD 66 FD [19] 982 ld h, -3 (ix)
|
|
00000463 19 [11] 983 add hl, de
|
|
00000464 DD 75 FC [19] 984 ld -4 (ix), l
|
|
00000467 DD 74 FD [19] 985 ld -3 (ix), h
|
|
0000046A DD 7E FE [19] 986 ld a, -2 (ix)
|
|
0000046D DD 8E F3 [19] 987 adc a, -13 (ix)
|
|
00000470 DD 77 FE [19] 988 ld -2 (ix), a
|
|
00000473 30 03 [12] 989 jr nc, 00207$
|
|
00000475 DD 34 FF [23] 990 inc -1 (ix)
|
|
00000478 991 00207$:
|
|
992 ;src/main.c:195: sz -= s;
|
|
00000478 DD 7E F8 [19] 993 ld a, -8 (ix)
|
|
0000047B DD 96 F1 [19] 994 sub a, -15 (ix)
|
|
0000047E DD 77 F8 [19] 995 ld -8 (ix), a
|
|
00000481 DD 7E F9 [19] 996 ld a, -7 (ix)
|
|
00000484 DD 9E F2 [19] 997 sbc a, -14 (ix)
|
|
00000487 DD 77 F9 [19] 998 ld -7 (ix), a
|
|
0000048A DD 7E FA [19] 999 ld a, -6 (ix)
|
|
0000048D DD 9E F3 [19] 1000 sbc a, -13 (ix)
|
|
00000490 DD 77 FA [19] 1001 ld -6 (ix), a
|
|
00000493 DD 7E FB [19] 1002 ld a, -5 (ix)
|
|
00000496 DD 9E F4 [19] 1003 sbc a, -12 (ix)
|
|
00000499 DD 77 FB [19] 1004 ld -5 (ix), a
|
|
0000049C C3r8Ar03 [10] 1005 jp 00107$
|
|
0000049F 1006 00109$:
|
|
1007 ;src/main.c:198: if (file_ext == EXT_XMZ)
|
|
0000049F 3Ar06r10 [13] 1008 ld a, (_file_ext)
|
|
000004A2 3D [ 4] 1009 dec a
|
|
000004A3 20 3A [12] 1010 jr nz, 00113$
|
|
1011 ;src/main.c:203: esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
|
000004A5 3Ar30r10 [13] 1012 ld a, (_xm_handle)
|
|
000004A8 6F [ 4] 1013 ld l, a
|
|
000004A9 3E 0B [ 7] 1014 ld a, #0x0b
|
|
000004AB CDrD1r00 [17] 1015 call _esp_wr_reg8
|
|
1016 ;src/main.c:204: esp_wr_reg8(ESP_REG_OBJ_TYPE, OBJ_TYPE_XM);
|
|
000004AE 2E 05 [ 7] 1017 ld l, #0x05
|
|
000004B0 3E 02 [ 7] 1018 ld a, #0x02
|
|
000004B2 CDrD1r00 [17] 1019 call _esp_wr_reg8
|
|
1020 ;src/main.c:205: esp_wr_reg32(ESP_REG_DATA_SIZE, filesize);
|
|
000004B5 2Ar04r10 [16] 1021 ld hl, (_filesize + 2)
|
|
000004B8 E5 [11] 1022 push hl
|
|
000004B9 2Ar02r10 [16] 1023 ld hl, (_filesize)
|
|
000004BC E5 [11] 1024 push hl
|
|
000004BD 3E 03 [ 7] 1025 ld a, #0x03
|
|
000004BF CDrE8r00 [17] 1026 call _esp_wr_reg32
|
|
1027 ;src/main.c:206: esp_cmd(ESP_CMD_UNZIP);
|
|
000004C2 3E F2 [ 7] 1028 ld a, #0xf2
|
|
000004C4 CDr05r00 [17] 1029 call _esp_cmd
|
|
1030 ;src/main.c:207: esp_wait_busy(250); // 5s - decompression time scales with file size
|
|
000004C7 21 FA 00 [10] 1031 ld hl, #0x00fa
|
|
000004CA CDr2Cr02 [17] 1032 call _esp_wait_busy
|
|
1033 ;src/main.c:209: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
|
000004CD 3E 01 [ 7] 1034 ld a, #0x01
|
|
000004CF CDr1Er00 [17] 1035 call _esp_rd_reg8
|
|
000004D2 32r08r10 [13] 1036 ld (#_last_esp_status), a
|
|
1037 ;src/main.c:210: if (last_esp_status != ESP_ST_READY)
|
|
000004D5 3Ar08r10 [13] 1038 ld a, (_last_esp_status)
|
|
000004D8 3D [ 4] 1039 dec a
|
|
000004D9 28 04 [12] 1040 jr z, 00113$
|
|
1041 ;src/main.c:211: return false;
|
|
000004DB AF [ 4] 1042 xor a, a
|
|
000004DC C3r36r05 [10] 1043 jp 00118$
|
|
000004DF 1044 00113$:
|
|
1045 ;src/main.c:214: esp_cmd(ESP_CMD_TRACK_INIT);
|
|
000004DF 3E A0 [ 7] 1046 ld a, #0xa0
|
|
000004E1 CDr05r00 [17] 1047 call _esp_cmd
|
|
1048 ;src/main.c:220: esp_wait_busy(500);
|
|
000004E4 21 F4 01 [10] 1049 ld hl, #0x01f4
|
|
000004E7 CDr2Cr02 [17] 1050 call _esp_wait_busy
|
|
1051 ;src/main.c:222: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
|
000004EA 3E 01 [ 7] 1052 ld a, #0x01
|
|
000004EC CDr1Er00 [17] 1053 call _esp_rd_reg8
|
|
000004EF 32r08r10 [13] 1054 ld (#_last_esp_status), a
|
|
1055 ;src/main.c:223: if (last_esp_status != ESP_ST_READY)
|
|
000004F2 3Ar08r10 [13] 1056 ld a, (_last_esp_status)
|
|
000004F5 3D [ 4] 1057 dec a
|
|
000004F6 28 04 [12] 1058 jr z, 00115$
|
|
1059 ;src/main.c:224: return false;
|
|
000004F8 AF [ 4] 1060 xor a, a
|
|
000004F9 C3r36r05 [10] 1061 jp 00118$
|
|
000004FC 1062 00115$:
|
|
1063 ;src/main.c:229: esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
|
000004FC 3Ar30r10 [13] 1064 ld a, (_xm_handle)
|
|
000004FF 6F [ 4] 1065 ld l, a
|
|
00000500 3E 0B [ 7] 1066 ld a, #0x0b
|
|
00000502 CDrD1r00 [17] 1067 call _esp_wr_reg8
|
|
1068 ;src/main.c:230: esp_wr_reg8(ESP_REG_TRACK_MAX_LOOP_COUNT, 1);
|
|
00000505 2E 01 [ 7] 1069 ld l, #0x01
|
|
00000507 3E 3A [ 7] 1070 ld a, #0x3a
|
|
00000509 CDrD1r00 [17] 1071 call _esp_wr_reg8
|
|
1072 ;src/main.c:231: esp_cmd(ESP_CMD_TRACK_SET_PARAMS);
|
|
0000050C 3E A6 [ 7] 1073 ld a, #0xa6
|
|
0000050E CDr05r00 [17] 1074 call _esp_cmd
|
|
1075 ;src/main.c:232: esp_wait_busy(100); // 2s - both should be near-instant
|
|
00000511 21 64 00 [10] 1076 ld hl, #0x0064
|
|
00000514 CDr2Cr02 [17] 1077 call _esp_wait_busy
|
|
1078 ;src/main.c:234: esp_cmd(ESP_CMD_TRACK_PLAY);
|
|
00000517 3E A1 [ 7] 1079 ld a, #0xa1
|
|
00000519 CDr05r00 [17] 1080 call _esp_cmd
|
|
1081 ;src/main.c:235: esp_wait_busy(100);
|
|
0000051C 21 64 00 [10] 1082 ld hl, #0x0064
|
|
0000051F CDr2Cr02 [17] 1083 call _esp_wait_busy
|
|
1084 ;src/main.c:237: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
|
00000522 3E 01 [ 7] 1085 ld a, #0x01
|
|
00000524 CDr1Er00 [17] 1086 call _esp_rd_reg8
|
|
00000527 32r08r10 [13] 1087 ld (#_last_esp_status), a
|
|
1088 ;src/main.c:238: if (last_esp_status != ESP_ST_READY)
|
|
0000052A 3Ar08r10 [13] 1089 ld a, (_last_esp_status)
|
|
0000052D 3D [ 4] 1090 dec a
|
|
0000052E 28 04 [12] 1091 jr z, 00117$
|
|
1092 ;src/main.c:239: return false;
|
|
00000530 AF [ 4] 1093 xor a, a
|
|
00000531 C3r36r05 [10] 1094 jp 00118$
|
|
00000534 1095 00117$:
|
|
1096 ;src/main.c:241: return true;
|
|
00000534 3E 01 [ 7] 1097 ld a, #0x01
|
|
00000536 1098 00118$:
|
|
1099 ;src/main.c:242: }
|
|
00000536 DD F9 [10] 1100 ld sp, ix
|
|
00000538 DD E1 [14] 1101 pop ix
|
|
0000053A C9 [10] 1102 ret
|
|
1103 ;src/main.c:245: void wait_esc_key()
|
|
1104 ; ---------------------------------
|
|
1105 ; Function wait_esc_key
|
|
1106 ; ---------------------------------
|
|
0000053B 1107 _wait_esc_key::
|
|
1108 ;src/main.c:247: while (1)
|
|
0000053B 1109 00104$:
|
|
1110 ;src/main.c:251: __endasm;
|
|
0000053B 76 [ 4] 1111 halt
|
|
1112 ;src/main.c:253: if (wc_key_esc())
|
|
0000053C CDr00r00 [17] 1113 call _wc_key_esc
|
|
0000053F B7 [ 4] 1114 or a, a
|
|
00000540 28 F9 [12] 1115 jr z, 00104$
|
|
1116 ;src/main.c:254: break;
|
|
1117 ;src/main.c:256: }
|
|
00000542 C9 [10] 1118 ret
|
|
1119 ;src/main.c:258: void wait_frames(u8 n)
|
|
1120 ; ---------------------------------
|
|
1121 ; Function wait_frames
|
|
1122 ; ---------------------------------
|
|
00000543 1123 _wait_frames::
|
|
00000543 4F [ 4] 1124 ld c, a
|
|
1125 ;src/main.c:260: while (n--)
|
|
00000544 1126 00101$:
|
|
00000544 79 [ 4] 1127 ld a, c
|
|
00000545 0D [ 4] 1128 dec c
|
|
00000546 B7 [ 4] 1129 or a, a
|
|
00000547 C8 [11] 1130 ret z
|
|
1131 ;src/main.c:264: __endasm;
|
|
00000548 76 [ 4] 1132 halt
|
|
1133 ;src/main.c:266: }
|
|
00000549 C3r44r05 [10] 1134 jp 00101$
|
|
1135 ;src/main.c:273: u8 wc_screen_width()
|
|
1136 ; ---------------------------------
|
|
1137 ; Function wc_screen_width
|
|
1138 ; ---------------------------------
|
|
0000054C 1139 _wc_screen_width::
|
|
1140 ;src/main.c:275: return (*(u8*)_HEI >= 36) ? 90 : 80;
|
|
0000054C 3A 0E 60 [13] 1141 ld a, (#0x600e)
|
|
0000054F D6 24 [ 7] 1142 sub a, #0x24
|
|
00000551 38 03 [12] 1143 jr c, 00103$
|
|
00000553 3E 5A [ 7] 1144 ld a, #0x5a
|
|
00000555 C9 [10] 1145 ret
|
|
00000556 1146 00103$:
|
|
00000556 3E 50 [ 7] 1147 ld a, #0x50
|
|
1148 ;src/main.c:276: }
|
|
00000558 C9 [10] 1149 ret
|
|
1150 ;src/main.c:281: u8 wc_center(u8 screen_size, u8 win_size)
|
|
1151 ; ---------------------------------
|
|
1152 ; Function wc_center
|
|
1153 ; ---------------------------------
|
|
00000559 1154 _wc_center::
|
|
00000559 DD E5 [15] 1155 push ix
|
|
0000055B DD 21 00 00 [14] 1156 ld ix, #0
|
|
0000055F DD 39 [15] 1157 add ix, sp
|
|
00000561 F5 [11] 1158 push af
|
|
00000562 DD 77 FF [19] 1159 ld -1 (ix), a
|
|
1160 ;src/main.c:283: return (screen_size > win_size) ? (screen_size - win_size) / 2 : 0;
|
|
00000565 DD 75 FE [19] 1161 ld -2 (ix), l
|
|
00000568 7D [ 4] 1162 ld a, l
|
|
00000569 DD 96 FF [19] 1163 sub a, -1 (ix)
|
|
0000056C 30 1B [12] 1164 jr nc, 00103$
|
|
0000056E DD 7E FF [19] 1165 ld a, -1 (ix)
|
|
00000571 DD 5E FE [19] 1166 ld e, -2 (ix)
|
|
00000574 93 [ 4] 1167 sub a, e
|
|
00000575 4F [ 4] 1168 ld c, a
|
|
00000576 9F [ 4] 1169 sbc a, a
|
|
00000577 47 [ 4] 1170 ld b, a
|
|
00000578 59 [ 4] 1171 ld e, c
|
|
00000579 50 [ 4] 1172 ld d, b
|
|
0000057A CB 78 [ 8] 1173 bit 7, b
|
|
0000057C 28 03 [12] 1174 jr z, 00105$
|
|
0000057E 59 [ 4] 1175 ld e, c
|
|
0000057F 50 [ 4] 1176 ld d, b
|
|
00000580 13 [ 6] 1177 inc de
|
|
00000581 1178 00105$:
|
|
00000581 7B [ 4] 1179 ld a, e
|
|
00000582 CB 2A [ 8] 1180 sra d
|
|
00000584 CB 1F [ 8] 1181 rr a
|
|
00000586 C3r8Ar05 [10] 1182 jp 00104$
|
|
00000589 1183 00103$:
|
|
00000589 AF [ 4] 1184 xor a, a
|
|
0000058A 1185 00104$:
|
|
1186 ;src/main.c:284: }
|
|
0000058A DD F9 [10] 1187 ld sp, ix
|
|
0000058C DD E1 [14] 1188 pop ix
|
|
0000058E C9 [10] 1189 ret
|
|
1190 ;src/main.c:286: void about()
|
|
1191 ; ---------------------------------
|
|
1192 ; Function about
|
|
1193 ; ---------------------------------
|
|
0000058F 1194 _about::
|
|
1195 ;src/main.c:288: memcpy(&win_about, &win_about_tpl, sizeof(win_about));
|
|
0000058F 11r44r10 [10] 1196 ld de, #_win_about
|
|
00000592 21rB2r02 [10] 1197 ld hl, #_win_about_tpl
|
|
00000595 01 12 00 [10] 1198 ld bc, #0x0012
|
|
00000598 ED B0 [21] 1199 ldir
|
|
1200 ;src/main.c:289: win_about.x_pos = wc_center(wc_screen_width(), win_about.x_size);
|
|
0000059A 21r48r10 [10] 1201 ld hl, #_win_about + 4
|
|
0000059D 6E [ 7] 1202 ld l, (hl)
|
|
0000059E E5 [11] 1203 push hl
|
|
0000059F CDr4Cr05 [17] 1204 call _wc_screen_width
|
|
000005A2 E1 [10] 1205 pop hl
|
|
000005A3 CDr59r05 [17] 1206 call _wc_center
|
|
000005A6 32r46r10 [13] 1207 ld (#(_win_about + 2)), a
|
|
1208 ;src/main.c:290: win_about.y_pos = wc_center(*(u8*)_HEI, win_about.y_size);
|
|
000005A9 21r49r10 [10] 1209 ld hl, #_win_about + 5
|
|
000005AC 6E [ 7] 1210 ld l, (hl)
|
|
000005AD 3A 0E 60 [13] 1211 ld a, (#0x600e)
|
|
000005B0 CDr59r05 [17] 1212 call _wc_center
|
|
000005B3 32r47r10 [13] 1213 ld (#(_win_about + 3)), a
|
|
1214 ;src/main.c:291: wc_prwow(&win_about);
|
|
000005B6 21r44r10 [10] 1215 ld hl, #_win_about
|
|
000005B9 CDr00r00 [17] 1216 call _wc_prwow
|
|
1217 ;src/main.c:292: wait_esc_key();
|
|
000005BC CDr3Br05 [17] 1218 call _wait_esc_key
|
|
1219 ;src/main.c:293: wc_rresb(&win_about);
|
|
000005BF 21r44r10 [10] 1220 ld hl, #_win_about
|
|
000005C2 CDr00r00 [17] 1221 call _wc_rresb
|
|
1222 ;src/main.c:294: wc_exit(WC_EXIT);
|
|
000005C5 AF [ 4] 1223 xor a, a
|
|
1224 ;src/main.c:295: }
|
|
000005C6 C3r00r00 [10] 1225 jp _wc_exit
|
|
1226 ;src/main.c:300: void unload_and_exit(WC_EXIT_SIGNAL sig)
|
|
1227 ; ---------------------------------
|
|
1228 ; Function unload_and_exit
|
|
1229 ; ---------------------------------
|
|
000005C9 1230 _unload_and_exit::
|
|
000005C9 3B [ 6] 1231 dec sp
|
|
000005CA FD 21 00 00 [14] 1232 ld iy, #0
|
|
000005CE FD 39 [15] 1233 add iy, sp
|
|
000005D0 FD 77 00 [19] 1234 ld 0 (iy), a
|
|
1235 ;src/main.c:302: esp_cmd(ESP_CMD_TRACK_STOP);
|
|
000005D3 3E A2 [ 7] 1236 ld a, #0xa2
|
|
000005D5 CDr05r00 [17] 1237 call _esp_cmd
|
|
1238 ;src/main.c:303: esp_wait_busy(100); // 2s - both should be near-instant
|
|
000005D8 21 64 00 [10] 1239 ld hl, #0x0064
|
|
000005DB CDr2Cr02 [17] 1240 call _esp_wait_busy
|
|
1241 ;src/main.c:304: esp_cmd(ESP_CMD_KILL_OBJECTS);
|
|
000005DE 3E E4 [ 7] 1242 ld a, #0xe4
|
|
000005E0 CDr05r00 [17] 1243 call _esp_cmd
|
|
1244 ;src/main.c:305: esp_wait_busy(100);
|
|
000005E3 21 64 00 [10] 1245 ld hl, #0x0064
|
|
000005E6 CDr2Cr02 [17] 1246 call _esp_wait_busy
|
|
1247 ;src/main.c:306: wc_rresb(&win_xm);
|
|
000005E9 21r32r10 [10] 1248 ld hl, #_win_xm
|
|
000005EC CDr00r00 [17] 1249 call _wc_rresb
|
|
1250 ;src/main.c:307: wc_exit(sig);
|
|
000005EF 21 00 00 [10] 1251 ld hl, #0
|
|
000005F2 39 [11] 1252 add hl, sp
|
|
000005F3 7E [ 7] 1253 ld a, (hl)
|
|
000005F4 33 [ 6] 1254 inc sp
|
|
000005F5 C3r00r00 [10] 1255 jp _wc_exit
|
|
1256 ;src/main.c:308: }
|
|
000005F8 33 [ 6] 1257 inc sp
|
|
000005F9 C9 [10] 1258 ret
|
|
1259 ;src/main.c:312: void leave_playing_and_exit()
|
|
1260 ; ---------------------------------
|
|
1261 ; Function leave_playing_and_exit
|
|
1262 ; ---------------------------------
|
|
000005FA 1263 _leave_playing_and_exit::
|
|
1264 ;src/main.c:314: wc_rresb(&win_xm);
|
|
000005FA 21r32r10 [10] 1265 ld hl, #_win_xm
|
|
000005FD CDr00r00 [17] 1266 call _wc_rresb
|
|
1267 ;src/main.c:315: wc_exit(WC_EXIT);
|
|
00000600 AF [ 4] 1268 xor a, a
|
|
1269 ;src/main.c:316: }
|
|
00000601 C3r00r00 [10] 1270 jp _wc_exit
|
|
1271 ;src/main.c:322: void wait_for_manual_exit()
|
|
1272 ; ---------------------------------
|
|
1273 ; Function wait_for_manual_exit
|
|
1274 ; ---------------------------------
|
|
00000604 1275 _wait_for_manual_exit::
|
|
1276 ;src/main.c:324: while (1)
|
|
00000604 1277 00109$:
|
|
1278 ;src/main.c:328: __endasm;
|
|
00000604 76 [ 4] 1279 halt
|
|
1280 ;src/main.c:330: if (wc_key_pgdn() || wc_key_enter())
|
|
00000605 CDr00r00 [17] 1281 call _wc_key_pgdn
|
|
00000608 B7 [ 4] 1282 or a, a
|
|
00000609 20 06 [12] 1283 jr nz, 00101$
|
|
0000060B CDr00r00 [17] 1284 call _wc_key_enter
|
|
0000060E B7 [ 4] 1285 or a, a
|
|
0000060F 28 05 [12] 1286 jr z, 00102$
|
|
00000611 1287 00101$:
|
|
1288 ;src/main.c:331: unload_and_exit(WC_NEXT_FILE);
|
|
00000611 3E 02 [ 7] 1289 ld a, #0x02
|
|
00000613 CDrC9r05 [17] 1290 call _unload_and_exit
|
|
00000616 1291 00102$:
|
|
1292 ;src/main.c:333: if (wc_key_pgup())
|
|
00000616 CDr00r00 [17] 1293 call _wc_key_pgup
|
|
00000619 B7 [ 4] 1294 or a, a
|
|
0000061A 28 05 [12] 1295 jr z, 00105$
|
|
1296 ;src/main.c:334: unload_and_exit(WC_PREV_FILE);
|
|
0000061C 3E 04 [ 7] 1297 ld a, #0x04
|
|
0000061E CDrC9r05 [17] 1298 call _unload_and_exit
|
|
00000621 1299 00105$:
|
|
1300 ;src/main.c:336: if (wc_key_esc())
|
|
00000621 CDr00r00 [17] 1301 call _wc_key_esc
|
|
00000624 B7 [ 4] 1302 or a, a
|
|
00000625 28 DD [12] 1303 jr z, 00109$
|
|
1304 ;src/main.c:337: unload_and_exit(WC_EXIT);
|
|
00000627 AF [ 4] 1305 xor a, a
|
|
00000628 CDrC9r05 [17] 1306 call _unload_and_exit
|
|
1307 ;src/main.c:339: }
|
|
0000062B C3r04r06 [10] 1308 jp 00109$
|
|
1309 ;src/main.c:345: void error_esp()
|
|
1310 ; ---------------------------------
|
|
1311 ; Function error_esp
|
|
1312 ; ---------------------------------
|
|
0000062E 1313 _error_esp::
|
|
1314 ;src/main.c:350: xm_set_status_code("No ESP32 found", state_esp);
|
|
0000062E 3Ar00r00 [13] 1315 ld a, (_state_esp)
|
|
00000631 F5 [11] 1316 push af
|
|
00000632 33 [ 6] 1317 inc sp
|
|
00000633 21r46r06 [10] 1318 ld hl, #___str_4
|
|
00000636 CDrD7r07 [17] 1319 call _xm_set_status_code
|
|
1320 ;src/main.c:351: wait_esc_key();
|
|
00000639 CDr3Br05 [17] 1321 call _wait_esc_key
|
|
1322 ;src/main.c:352: wc_rresb(&win_xm);
|
|
0000063C 21r32r10 [10] 1323 ld hl, #_win_xm
|
|
0000063F CDr00r00 [17] 1324 call _wc_rresb
|
|
1325 ;src/main.c:353: wc_exit(WC_EXIT);
|
|
00000642 AF [ 4] 1326 xor a, a
|
|
1327 ;src/main.c:354: }
|
|
00000643 C3r00r00 [10] 1328 jp _wc_exit
|
|
00000646 1329 ___str_4:
|
|
00000646 4E 6F 20 45 53 50 33 1330 .ascii "No ESP32 found"
|
|
32 20 66 6F 75 6E 64
|
|
00000654 00 1331 .db 0x00
|
|
1332 ;src/main.c:364: u8 stop_on_error()
|
|
1333 ; ---------------------------------
|
|
1334 ; Function stop_on_error
|
|
1335 ; ---------------------------------
|
|
00000655 1336 _stop_on_error::
|
|
1337 ;src/main.c:366: return wc_prm_pl(1) == 2;
|
|
00000655 3E 01 [ 7] 1338 ld a, #0x01
|
|
00000657 CDr00r00 [17] 1339 call _wc_prm_pl
|
|
0000065A FE 02 [ 7] 1340 cp a, #0x02
|
|
0000065C 3E 01 [ 7] 1341 ld a, #0x01
|
|
0000065E C8 [11] 1342 ret z
|
|
0000065F AF [ 4] 1343 xor a, a
|
|
1344 ;src/main.c:367: }
|
|
00000660 C9 [10] 1345 ret
|
|
1346 ;src/main.c:369: void error_oom()
|
|
1347 ; ---------------------------------
|
|
1348 ; Function error_oom
|
|
1349 ; ---------------------------------
|
|
00000661 1350 _error_oom::
|
|
1351 ;src/main.c:371: xm_set_status_code("File too large", last_esp_status);
|
|
00000661 3Ar08r10 [13] 1352 ld a, (_last_esp_status)
|
|
00000664 F5 [11] 1353 push af
|
|
00000665 33 [ 6] 1354 inc sp
|
|
00000666 21r85r06 [10] 1355 ld hl, #___str_5
|
|
00000669 CDrD7r07 [17] 1356 call _xm_set_status_code
|
|
1357 ;src/main.c:373: if (stop_on_error())
|
|
0000066C CDr55r06 [17] 1358 call _stop_on_error
|
|
0000066F B7 [ 4] 1359 or a, a
|
|
00000670 28 03 [12] 1360 jr z, 00102$
|
|
1361 ;src/main.c:374: wait_for_manual_exit();
|
|
00000672 CDr04r06 [17] 1362 call _wait_for_manual_exit
|
|
00000675 1363 00102$:
|
|
1364 ;src/main.c:376: wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
|
|
00000675 3E 32 [ 7] 1365 ld a, #0x32
|
|
00000677 CDr43r05 [17] 1366 call _wait_frames
|
|
1367 ;src/main.c:377: wc_rresb(&win_xm);
|
|
0000067A 21r32r10 [10] 1368 ld hl, #_win_xm
|
|
0000067D CDr00r00 [17] 1369 call _wc_rresb
|
|
1370 ;src/main.c:378: wc_exit(WC_NEXT_FILE);
|
|
00000680 3E 02 [ 7] 1371 ld a, #0x02
|
|
1372 ;src/main.c:379: }
|
|
00000682 C3r00r00 [10] 1373 jp _wc_exit
|
|
00000685 1374 ___str_5:
|
|
00000685 46 69 6C 65 20 74 6F 1375 .ascii "File too large"
|
|
6F 20 6C 61 72 67 65
|
|
00000693 00 1376 .db 0x00
|
|
1377 ;src/main.c:381: void error_playback()
|
|
1378 ; ---------------------------------
|
|
1379 ; Function error_playback
|
|
1380 ; ---------------------------------
|
|
00000694 1381 _error_playback::
|
|
1382 ;src/main.c:383: xm_set_status_code("Playback error", last_esp_status);
|
|
00000694 3Ar08r10 [13] 1383 ld a, (_last_esp_status)
|
|
00000697 F5 [11] 1384 push af
|
|
00000698 33 [ 6] 1385 inc sp
|
|
00000699 21rB8r06 [10] 1386 ld hl, #___str_6
|
|
0000069C CDrD7r07 [17] 1387 call _xm_set_status_code
|
|
1388 ;src/main.c:385: if (stop_on_error())
|
|
0000069F CDr55r06 [17] 1389 call _stop_on_error
|
|
000006A2 B7 [ 4] 1390 or a, a
|
|
000006A3 28 03 [12] 1391 jr z, 00102$
|
|
1392 ;src/main.c:386: wait_for_manual_exit();
|
|
000006A5 CDr04r06 [17] 1393 call _wait_for_manual_exit
|
|
000006A8 1394 00102$:
|
|
1395 ;src/main.c:388: wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
|
|
000006A8 3E 32 [ 7] 1396 ld a, #0x32
|
|
000006AA CDr43r05 [17] 1397 call _wait_frames
|
|
1398 ;src/main.c:389: wc_rresb(&win_xm);
|
|
000006AD 21r32r10 [10] 1399 ld hl, #_win_xm
|
|
000006B0 CDr00r00 [17] 1400 call _wc_rresb
|
|
1401 ;src/main.c:390: wc_exit(WC_NEXT_FILE);
|
|
000006B3 3E 02 [ 7] 1402 ld a, #0x02
|
|
1403 ;src/main.c:391: }
|
|
000006B5 C3r00r00 [10] 1404 jp _wc_exit
|
|
000006B8 1405 ___str_6:
|
|
000006B8 50 6C 61 79 62 61 63 1406 .ascii "Playback error"
|
|
6B 20 65 72 72 6F 72
|
|
000006C6 00 1407 .db 0x00
|
|
1408 ;src/main.c:398: void copy_file_name()
|
|
1409 ; ---------------------------------
|
|
1410 ; Function copy_file_name
|
|
1411 ; ---------------------------------
|
|
000006C7 1412 _copy_file_name::
|
|
1413 ;src/main.c:400: u8 *src = (u8*)p_file_name;
|
|
000006C7 ED 4Br09r10 [20] 1414 ld bc, (_p_file_name)
|
|
1415 ;src/main.c:403: while (src[i] && i < sizeof(file_name) - 1)
|
|
000006CB 1E 00 [ 7] 1416 ld e, #0x00
|
|
000006CD 1417 00102$:
|
|
000006CD 6B [ 4] 1418 ld l, e
|
|
000006CE 26 00 [ 7] 1419 ld h, #0x00
|
|
000006D0 09 [11] 1420 add hl, bc
|
|
000006D1 56 [ 7] 1421 ld d, (hl)
|
|
1422 ;src/main.c:405: file_name[i] = src[i];
|
|
000006D2 3Er0B [ 7] 1423 ld a, #<(_file_name)
|
|
000006D4 83 [ 4] 1424 add a, e
|
|
000006D5 6F [ 4] 1425 ld l, a
|
|
000006D6 3Es10 [ 7] 1426 ld a, #>(_file_name)
|
|
000006D8 CE 00 [ 7] 1427 adc a, #0x00
|
|
000006DA 67 [ 4] 1428 ld h, a
|
|
1429 ;src/main.c:403: while (src[i] && i < sizeof(file_name) - 1)
|
|
000006DB 7A [ 4] 1430 ld a, d
|
|
000006DC B7 [ 4] 1431 or a, a
|
|
000006DD 28 0A [12] 1432 jr z, 00104$
|
|
000006DF 7B [ 4] 1433 ld a, e
|
|
000006E0 D6 20 [ 7] 1434 sub a, #0x20
|
|
000006E2 30 05 [12] 1435 jr nc, 00104$
|
|
1436 ;src/main.c:405: file_name[i] = src[i];
|
|
000006E4 72 [ 7] 1437 ld (hl), d
|
|
1438 ;src/main.c:406: i++;
|
|
000006E5 1C [ 4] 1439 inc e
|
|
000006E6 C3rCDr06 [10] 1440 jp 00102$
|
|
000006E9 1441 00104$:
|
|
1442 ;src/main.c:408: file_name[i] = 0;
|
|
000006E9 36 00 [10] 1443 ld (hl), #0x00
|
|
1444 ;src/main.c:409: }
|
|
000006EB C9 [10] 1445 ret
|
|
1446 ;src/main.c:442: void xm_draw_static_labels()
|
|
1447 ; ---------------------------------
|
|
1448 ; Function xm_draw_static_labels
|
|
1449 ; ---------------------------------
|
|
000006EC 1450 _xm_draw_static_labels::
|
|
1451 ;src/main.c:444: wc_prsrw(&win_xm, "File:", ROW_FILE, 1, 5);
|
|
000006EC 21 05 00 [10] 1452 ld hl, #0x0005
|
|
000006EF E5 [11] 1453 push hl
|
|
000006F0 21 02 01 [10] 1454 ld hl, #0x102
|
|
000006F3 E5 [11] 1455 push hl
|
|
000006F4 11r38r07 [10] 1456 ld de, #___str_7
|
|
000006F7 21r32r10 [10] 1457 ld hl, #_win_xm
|
|
000006FA CDr00r00 [17] 1458 call _wc_prsrw
|
|
1459 ;src/main.c:445: wc_prsrw_attr(&win_xm, file_name, ROW_FILE, 7, strlen(file_name), ATTR_VALUE);
|
|
000006FD 21r0Br10 [10] 1460 ld hl, #_file_name
|
|
00000700 CDr00r00 [17] 1461 call _strlen
|
|
00000703 3E 71 [ 7] 1462 ld a, #0x71
|
|
00000705 F5 [11] 1463 push af
|
|
00000706 33 [ 6] 1464 inc sp
|
|
00000707 D5 [11] 1465 push de
|
|
00000708 21 02 07 [10] 1466 ld hl, #0x702
|
|
0000070B E5 [11] 1467 push hl
|
|
0000070C 11r0Br10 [10] 1468 ld de, #_file_name
|
|
0000070F 21r32r10 [10] 1469 ld hl, #_win_xm
|
|
00000712 CDr00r00 [17] 1470 call _wc_prsrw_attr
|
|
1471 ;src/main.c:446: wc_prsrw(&win_xm, "Status:", ROW_STATUS, 1, 7);
|
|
00000715 21 07 00 [10] 1472 ld hl, #0x0007
|
|
00000718 E5 [11] 1473 push hl
|
|
00000719 21 03 01 [10] 1474 ld hl, #0x103
|
|
0000071C E5 [11] 1475 push hl
|
|
0000071D 11r3Er07 [10] 1476 ld de, #___str_8
|
|
00000720 21r32r10 [10] 1477 ld hl, #_win_xm
|
|
00000723 CDr00r00 [17] 1478 call _wc_prsrw
|
|
1479 ;src/main.c:449: wc_prsrw(&win_xm, HINT_TEXT, ROW_HINT, 2, sizeof(HINT_TEXT) - 1);
|
|
00000726 21 24 00 [10] 1480 ld hl, #0x0024
|
|
00000729 E5 [11] 1481 push hl
|
|
0000072A 21 0A 02 [10] 1482 ld hl, #0x20a
|
|
0000072D E5 [11] 1483 push hl
|
|
0000072E 11r46r07 [10] 1484 ld de, #___str_9
|
|
00000731 21r32r10 [10] 1485 ld hl, #_win_xm
|
|
00000734 CDr00r00 [17] 1486 call _wc_prsrw
|
|
1487 ;src/main.c:450: }
|
|
00000737 C9 [10] 1488 ret
|
|
00000738 1489 ___str_7:
|
|
00000738 46 69 6C 65 3A 1490 .ascii "File:"
|
|
0000073D 00 1491 .db 0x00
|
|
0000073E 1492 ___str_8:
|
|
0000073E 53 74 61 74 75 73 3A 1493 .ascii "Status:"
|
|
00000745 00 1494 .db 0x00
|
|
00000746 1495 ___str_9:
|
|
00000746 50 67 55 70 2F 50 67 1496 .ascii "PgUp/PgDn:Track Esc:Stop Space:Leave"
|
|
44 6E 3A 54 72 61 63
|
|
6B 20 45 73 63 3A 53
|
|
74 6F 70 20 53 70 61
|
|
63 65 3A 4C 65 61 76
|
|
65
|
|
0000076A 00 1497 .db 0x00
|
|
1498 ;src/main.c:456: void xm_set_status_attr(const char *msg, u8 attr)
|
|
1499 ; ---------------------------------
|
|
1500 ; Function xm_set_status_attr
|
|
1501 ; ---------------------------------
|
|
0000076B 1502 _xm_set_status_attr::
|
|
0000076B DD E5 [15] 1503 push ix
|
|
0000076D DD 21 00 00 [14] 1504 ld ix, #0
|
|
00000771 DD 39 [15] 1505 add ix, sp
|
|
00000773 F5 [11] 1506 push af
|
|
1507 ;src/main.c:460: while (msg[i] && i < STATUS_VALUE_WIDTH)
|
|
00000774 1E 00 [ 7] 1508 ld e, #0x00
|
|
00000776 1509 00102$:
|
|
00000776 7B [ 4] 1510 ld a, e
|
|
00000777 85 [ 4] 1511 add a, l
|
|
00000778 4F [ 4] 1512 ld c, a
|
|
00000779 3E 00 [ 7] 1513 ld a, #0x00
|
|
0000077B 8C [ 4] 1514 adc a, h
|
|
0000077C 47 [ 4] 1515 ld b, a
|
|
0000077D 0A [ 7] 1516 ld a, (bc)
|
|
0000077E 4F [ 4] 1517 ld c, a
|
|
0000077F B7 [ 4] 1518 or a, a
|
|
00000780 28 1F [12] 1519 jr z, 00119$
|
|
00000782 7B [ 4] 1520 ld a, e
|
|
00000783 D6 18 [ 7] 1521 sub a, #0x18
|
|
00000785 30 1A [12] 1522 jr nc, 00119$
|
|
1523 ;src/main.c:462: status_buf[i] = msg[i];
|
|
00000787 3Er56 [ 7] 1524 ld a, #<(_status_buf)
|
|
00000789 83 [ 4] 1525 add a, e
|
|
0000078A DD 77 FE [19] 1526 ld -2 (ix), a
|
|
0000078D 3Es10 [ 7] 1527 ld a, #>(_status_buf)
|
|
0000078F CE 00 [ 7] 1528 adc a, #0x00
|
|
00000791 DD 77 FF [19] 1529 ld -1 (ix), a
|
|
00000794 E5 [11] 1530 push hl
|
|
00000795 DD 6E FE [19] 1531 ld l, -2 (ix)
|
|
00000798 DD 66 FF [19] 1532 ld h, -1 (ix)
|
|
0000079B 71 [ 7] 1533 ld (hl), c
|
|
0000079C E1 [10] 1534 pop hl
|
|
1535 ;src/main.c:463: i++;
|
|
0000079D 1C [ 4] 1536 inc e
|
|
0000079E C3r76r07 [10] 1537 jp 00102$
|
|
1538 ;src/main.c:465: while (i < STATUS_VALUE_WIDTH)
|
|
000007A1 1539 00119$:
|
|
000007A1 1540 00105$:
|
|
000007A1 7B [ 4] 1541 ld a, e
|
|
000007A2 D6 18 [ 7] 1542 sub a, #0x18
|
|
000007A4 30 0C [12] 1543 jr nc, 00107$
|
|
1544 ;src/main.c:466: status_buf[i++] = ' ';
|
|
000007A6 21r56r10 [10] 1545 ld hl, #_status_buf
|
|
000007A9 16 00 [ 7] 1546 ld d, #0x00
|
|
000007AB 19 [11] 1547 add hl, de
|
|
000007AC 1C [ 4] 1548 inc e
|
|
000007AD 36 20 [10] 1549 ld (hl), #0x20
|
|
000007AF C3rA1r07 [10] 1550 jp 00105$
|
|
000007B2 1551 00107$:
|
|
1552 ;src/main.c:468: wc_prsrw_attr(&win_xm, status_buf, ROW_STATUS, STATUS_VALUE_X, STATUS_VALUE_WIDTH, attr);
|
|
000007B2 21r32r10 [10] 1553 ld hl, #_win_xm
|
|
000007B5 DD 7E 04 [19] 1554 ld a, 4 (ix)
|
|
000007B8 F5 [11] 1555 push af
|
|
000007B9 33 [ 6] 1556 inc sp
|
|
000007BA 11 18 00 [10] 1557 ld de, #0x0018
|
|
000007BD D5 [11] 1558 push de
|
|
000007BE 11 03 09 [10] 1559 ld de, #0x903
|
|
000007C1 D5 [11] 1560 push de
|
|
000007C2 11r56r10 [10] 1561 ld de, #_status_buf
|
|
000007C5 CDr00r00 [17] 1562 call _wc_prsrw_attr
|
|
1563 ;src/main.c:469: }
|
|
000007C8 DD F9 [10] 1564 ld sp, ix
|
|
000007CA DD E1 [14] 1565 pop ix
|
|
000007CC E1 [10] 1566 pop hl
|
|
000007CD 33 [ 6] 1567 inc sp
|
|
000007CE E9 [ 4] 1568 jp (hl)
|
|
1569 ;src/main.c:471: void xm_set_status(const char *msg)
|
|
1570 ; ---------------------------------
|
|
1571 ; Function xm_set_status
|
|
1572 ; ---------------------------------
|
|
000007CF 1573 _xm_set_status::
|
|
1574 ;src/main.c:473: xm_set_status_attr(msg, ATTR_VALUE);
|
|
000007CF 3E 71 [ 7] 1575 ld a, #0x71
|
|
000007D1 F5 [11] 1576 push af
|
|
000007D2 33 [ 6] 1577 inc sp
|
|
000007D3 CDr6Br07 [17] 1578 call _xm_set_status_attr
|
|
1579 ;src/main.c:474: }
|
|
000007D6 C9 [10] 1580 ret
|
|
1581 ;src/main.c:481: void xm_set_status_code(const char *msg, u8 code)
|
|
1582 ; ---------------------------------
|
|
1583 ; Function xm_set_status_code
|
|
1584 ; ---------------------------------
|
|
000007D7 1585 _xm_set_status_code::
|
|
000007D7 DD E5 [15] 1586 push ix
|
|
000007D9 DD 21 00 00 [14] 1587 ld ix, #0
|
|
000007DD DD 39 [15] 1588 add ix, sp
|
|
000007DF 3B [ 6] 1589 dec sp
|
|
000007E0 EB [ 4] 1590 ex de, hl
|
|
1591 ;src/main.c:486: while (msg[i] && i < sizeof(status_code_buf) - 7)
|
|
000007E1 0E 00 [ 7] 1592 ld c, #0x00
|
|
000007E3 1593 00102$:
|
|
000007E3 69 [ 4] 1594 ld l, c
|
|
000007E4 26 00 [ 7] 1595 ld h, #0x00
|
|
000007E6 19 [11] 1596 add hl, de
|
|
000007E7 46 [ 7] 1597 ld b, (hl)
|
|
1598 ;src/main.c:488: status_code_buf[i] = msg[i];
|
|
000007E8 3Er6E [ 7] 1599 ld a, #<(_status_code_buf)
|
|
000007EA 81 [ 4] 1600 add a, c
|
|
000007EB 6F [ 4] 1601 ld l, a
|
|
000007EC 3Es10 [ 7] 1602 ld a, #>(_status_code_buf)
|
|
000007EE CE 00 [ 7] 1603 adc a, #0x00
|
|
000007F0 67 [ 4] 1604 ld h, a
|
|
1605 ;src/main.c:489: i++;
|
|
000007F1 79 [ 4] 1606 ld a, c
|
|
000007F2 3C [ 4] 1607 inc a
|
|
000007F3 DD 77 FF [19] 1608 ld -1 (ix), a
|
|
1609 ;src/main.c:486: while (msg[i] && i < sizeof(status_code_buf) - 7)
|
|
000007F6 78 [ 4] 1610 ld a, b
|
|
000007F7 B7 [ 4] 1611 or a, a
|
|
000007F8 28 0C [12] 1612 jr z, 00104$
|
|
000007FA 79 [ 4] 1613 ld a, c
|
|
000007FB D6 11 [ 7] 1614 sub a, #0x11
|
|
000007FD 30 07 [12] 1615 jr nc, 00104$
|
|
1616 ;src/main.c:488: status_code_buf[i] = msg[i];
|
|
000007FF 70 [ 7] 1617 ld (hl), b
|
|
1618 ;src/main.c:489: i++;
|
|
00000800 DD 4E FF [19] 1619 ld c, -1 (ix)
|
|
00000803 C3rE3r07 [10] 1620 jp 00102$
|
|
00000806 1621 00104$:
|
|
1622 ;src/main.c:492: status_code_buf[i++] = ' ';
|
|
00000806 DD 4E FF [19] 1623 ld c, -1 (ix)
|
|
00000809 36 20 [10] 1624 ld (hl), #0x20
|
|
1625 ;src/main.c:493: status_code_buf[i++] = '(';
|
|
0000080B 69 [ 4] 1626 ld l, c
|
|
0000080C 0C [ 4] 1627 inc c
|
|
0000080D 26 00 [ 7] 1628 ld h, #0x00
|
|
0000080F 11r6Er10 [10] 1629 ld de, #_status_code_buf
|
|
00000812 19 [11] 1630 add hl, de
|
|
00000813 36 28 [10] 1631 ld (hl), #0x28
|
|
1632 ;src/main.c:494: status_code_buf[i++] = '0';
|
|
00000815 69 [ 4] 1633 ld l, c
|
|
00000816 0C [ 4] 1634 inc c
|
|
00000817 26 00 [ 7] 1635 ld h, #0x00
|
|
00000819 11r6Er10 [10] 1636 ld de, #_status_code_buf
|
|
0000081C 19 [11] 1637 add hl, de
|
|
0000081D 36 30 [10] 1638 ld (hl), #0x30
|
|
1639 ;src/main.c:495: status_code_buf[i++] = 'x';
|
|
0000081F 69 [ 4] 1640 ld l, c
|
|
00000820 0C [ 4] 1641 inc c
|
|
00000821 26 00 [ 7] 1642 ld h, #0x00
|
|
00000823 11r6Er10 [10] 1643 ld de, #_status_code_buf
|
|
00000826 19 [11] 1644 add hl, de
|
|
00000827 36 78 [10] 1645 ld (hl), #0x78
|
|
1646 ;src/main.c:496: status_code_buf[i++] = hexch[(code >> 4) & 0xF];
|
|
00000829 69 [ 4] 1647 ld l, c
|
|
0000082A 0C [ 4] 1648 inc c
|
|
0000082B 26 00 [ 7] 1649 ld h, #0x00
|
|
0000082D 11r6Er10 [10] 1650 ld de, #_status_code_buf
|
|
00000830 19 [11] 1651 add hl, de
|
|
00000831 DD 7E 04 [19] 1652 ld a, 4 (ix)
|
|
00000834 07 [ 4] 1653 rlca
|
|
00000835 07 [ 4] 1654 rlca
|
|
00000836 07 [ 4] 1655 rlca
|
|
00000837 07 [ 4] 1656 rlca
|
|
00000838 E6 0F [ 7] 1657 and a, #0xf
|
|
0000083A C6r7E [ 7] 1658 add a, #<(_xm_set_status_code_hexch_10000_141)
|
|
0000083C 5F [ 4] 1659 ld e, a
|
|
0000083D 3E 00 [ 7] 1660 ld a, #0x00
|
|
0000083F CEs08 [ 7] 1661 adc a, #>(_xm_set_status_code_hexch_10000_141)
|
|
00000841 57 [ 4] 1662 ld d, a
|
|
00000842 1A [ 7] 1663 ld a, (de)
|
|
00000843 77 [ 7] 1664 ld (hl), a
|
|
1665 ;src/main.c:497: status_code_buf[i++] = hexch[code & 0xF];
|
|
00000844 69 [ 4] 1666 ld l, c
|
|
00000845 0C [ 4] 1667 inc c
|
|
00000846 26 00 [ 7] 1668 ld h, #0x00
|
|
00000848 11r6Er10 [10] 1669 ld de, #_status_code_buf
|
|
0000084B 19 [11] 1670 add hl, de
|
|
0000084C DD 7E 04 [19] 1671 ld a, 4 (ix)
|
|
0000084F E6 0F [ 7] 1672 and a, #0x0f
|
|
00000851 C6r7E [ 7] 1673 add a, #<(_xm_set_status_code_hexch_10000_141)
|
|
00000853 5F [ 4] 1674 ld e, a
|
|
00000854 3E 00 [ 7] 1675 ld a, #0x00
|
|
00000856 CEs08 [ 7] 1676 adc a, #>(_xm_set_status_code_hexch_10000_141)
|
|
00000858 57 [ 4] 1677 ld d, a
|
|
00000859 1A [ 7] 1678 ld a, (de)
|
|
0000085A 77 [ 7] 1679 ld (hl), a
|
|
1680 ;src/main.c:498: status_code_buf[i++] = ')';
|
|
0000085B 69 [ 4] 1681 ld l, c
|
|
0000085C 0C [ 4] 1682 inc c
|
|
0000085D 26 00 [ 7] 1683 ld h, #0x00
|
|
0000085F 11r6Er10 [10] 1684 ld de, #_status_code_buf
|
|
00000862 19 [11] 1685 add hl, de
|
|
00000863 36 29 [10] 1686 ld (hl), #0x29
|
|
1687 ;src/main.c:499: status_code_buf[i] = 0;
|
|
00000865 69 [ 4] 1688 ld l, c
|
|
00000866 26 00 [ 7] 1689 ld h, #0x00
|
|
00000868 11r6Er10 [10] 1690 ld de, #_status_code_buf
|
|
0000086B 19 [11] 1691 add hl, de
|
|
0000086C 36 00 [10] 1692 ld (hl), #0x00
|
|
1693 ;src/main.c:501: xm_set_status_attr(status_code_buf, ATTR_ERROR);
|
|
0000086E 3E 72 [ 7] 1694 ld a, #0x72
|
|
00000870 F5 [11] 1695 push af
|
|
00000871 33 [ 6] 1696 inc sp
|
|
00000872 21r6Er10 [10] 1697 ld hl, #_status_code_buf
|
|
00000875 CDr6Br07 [17] 1698 call _xm_set_status_attr
|
|
1699 ;src/main.c:502: }
|
|
00000878 33 [ 6] 1700 inc sp
|
|
00000879 DD E1 [14] 1701 pop ix
|
|
0000087B E1 [10] 1702 pop hl
|
|
0000087C 33 [ 6] 1703 inc sp
|
|
0000087D E9 [ 4] 1704 jp (hl)
|
|
0000087E 1705 _xm_set_status_code_hexch_10000_141:
|
|
0000087E 30 31 32 33 34 35 36 1706 .ascii "0123456789ABCDEF"
|
|
37 38 39 41 42 43 44
|
|
45 46
|
|
0000088E 00 1707 .db 0x00
|
|
1708 ;src/main.c:515: void put_hex2(char *dst, u8 val)
|
|
1709 ; ---------------------------------
|
|
1710 ; Function put_hex2
|
|
1711 ; ---------------------------------
|
|
0000088F 1712 _put_hex2::
|
|
0000088F DD E5 [15] 1713 push ix
|
|
00000891 DD 21 00 00 [14] 1714 ld ix, #0
|
|
00000895 DD 39 [15] 1715 add ix, sp
|
|
00000897 EB [ 4] 1716 ex de, hl
|
|
1717 ;src/main.c:518: dst[0] = hexch[(val >> 4) & 0xF];
|
|
00000898 01rBBr08 [10] 1718 ld bc, #_put_hex2_hexch_10000_144+0
|
|
0000089B DD 7E 04 [19] 1719 ld a, 4 (ix)
|
|
0000089E 07 [ 4] 1720 rlca
|
|
0000089F 07 [ 4] 1721 rlca
|
|
000008A0 07 [ 4] 1722 rlca
|
|
000008A1 07 [ 4] 1723 rlca
|
|
000008A2 E6 0F [ 7] 1724 and a, #0xf
|
|
000008A4 6F [ 4] 1725 ld l, a
|
|
000008A5 26 00 [ 7] 1726 ld h, #0x00
|
|
000008A7 09 [11] 1727 add hl, bc
|
|
000008A8 7E [ 7] 1728 ld a, (hl)
|
|
000008A9 12 [ 7] 1729 ld (de), a
|
|
1730 ;src/main.c:519: dst[1] = hexch[val & 0xF];
|
|
000008AA 13 [ 6] 1731 inc de
|
|
000008AB DD 7E 04 [19] 1732 ld a, 4 (ix)
|
|
000008AE E6 0F [ 7] 1733 and a, #0x0f
|
|
000008B0 6F [ 4] 1734 ld l, a
|
|
000008B1 26 00 [ 7] 1735 ld h, #0x00
|
|
000008B3 09 [11] 1736 add hl, bc
|
|
000008B4 7E [ 7] 1737 ld a, (hl)
|
|
000008B5 12 [ 7] 1738 ld (de), a
|
|
1739 ;src/main.c:520: }
|
|
000008B6 DD E1 [14] 1740 pop ix
|
|
000008B8 E1 [10] 1741 pop hl
|
|
000008B9 33 [ 6] 1742 inc sp
|
|
000008BA E9 [ 4] 1743 jp (hl)
|
|
000008BB 1744 _put_hex2_hexch_10000_144:
|
|
000008BB 30 31 32 33 34 35 36 1745 .ascii "0123456789ABCDEF"
|
|
37 38 39 41 42 43 44
|
|
45 46
|
|
000008CB 00 1746 .db 0x00
|
|
1747 ;src/main.c:522: void put_dec3(char *dst, u16 val)
|
|
1748 ; ---------------------------------
|
|
1749 ; Function put_dec3
|
|
1750 ; ---------------------------------
|
|
000008CC 1751 _put_dec3::
|
|
000008CC DD E5 [15] 1752 push ix
|
|
000008CE DD 21 00 00 [14] 1753 ld ix, #0
|
|
000008D2 DD 39 [15] 1754 add ix, sp
|
|
000008D4 F5 [11] 1755 push af
|
|
000008D5 4D [ 4] 1756 ld c, l
|
|
000008D6 44 [ 4] 1757 ld b, h
|
|
1758 ;src/main.c:524: dst[0] = '0' + (val / 100) % 10;
|
|
000008D7 E1 [10] 1759 pop hl
|
|
000008D8 D5 [11] 1760 push de
|
|
000008D9 C5 [11] 1761 push bc
|
|
000008DA 11 64 00 [10] 1762 ld de, #0x0064
|
|
000008DD DD 6E FE [19] 1763 ld l, -2 (ix)
|
|
000008E0 DD 66 FF [19] 1764 ld h, -1 (ix)
|
|
000008E3 CDr00r00 [17] 1765 call __divuint
|
|
000008E6 EB [ 4] 1766 ex de, hl
|
|
000008E7 11 0A 00 [10] 1767 ld de, #0x000a
|
|
000008EA CDr00r00 [17] 1768 call __moduint
|
|
000008ED C1 [10] 1769 pop bc
|
|
000008EE 7B [ 4] 1770 ld a, e
|
|
000008EF C6 30 [ 7] 1771 add a, #0x30
|
|
000008F1 02 [ 7] 1772 ld (bc), a
|
|
1773 ;src/main.c:525: dst[1] = '0' + (val / 10) % 10;
|
|
000008F2 69 [ 4] 1774 ld l, c
|
|
000008F3 60 [ 4] 1775 ld h, b
|
|
000008F4 23 [ 6] 1776 inc hl
|
|
000008F5 E5 [11] 1777 push hl
|
|
000008F6 C5 [11] 1778 push bc
|
|
000008F7 11 0A 00 [10] 1779 ld de, #0x000a
|
|
000008FA DD 6E FE [19] 1780 ld l, -2 (ix)
|
|
000008FD DD 66 FF [19] 1781 ld h, -1 (ix)
|
|
00000900 CDr00r00 [17] 1782 call __divuint
|
|
00000903 EB [ 4] 1783 ex de, hl
|
|
00000904 11 0A 00 [10] 1784 ld de, #0x000a
|
|
00000907 CDr00r00 [17] 1785 call __moduint
|
|
0000090A C1 [10] 1786 pop bc
|
|
0000090B E1 [10] 1787 pop hl
|
|
0000090C 7B [ 4] 1788 ld a, e
|
|
0000090D C6 30 [ 7] 1789 add a, #0x30
|
|
0000090F 77 [ 7] 1790 ld (hl), a
|
|
1791 ;src/main.c:526: dst[2] = '0' + val % 10;
|
|
00000910 03 [ 6] 1792 inc bc
|
|
00000911 03 [ 6] 1793 inc bc
|
|
00000912 C5 [11] 1794 push bc
|
|
00000913 11 0A 00 [10] 1795 ld de, #0x000a
|
|
00000916 DD 6E FE [19] 1796 ld l, -2 (ix)
|
|
00000919 DD 66 FF [19] 1797 ld h, -1 (ix)
|
|
0000091C CDr00r00 [17] 1798 call __moduint
|
|
0000091F C1 [10] 1799 pop bc
|
|
00000920 7B [ 4] 1800 ld a, e
|
|
00000921 C6 30 [ 7] 1801 add a, #0x30
|
|
00000923 02 [ 7] 1802 ld (bc), a
|
|
1803 ;src/main.c:527: }
|
|
00000924 DD F9 [10] 1804 ld sp, ix
|
|
00000926 DD E1 [14] 1805 pop ix
|
|
00000928 C9 [10] 1806 ret
|
|
1807 ;src/main.c:529: void put_time(char *dst, u32 sec)
|
|
1808 ; ---------------------------------
|
|
1809 ; Function put_time
|
|
1810 ; ---------------------------------
|
|
00000929 1811 _put_time::
|
|
00000929 DD E5 [15] 1812 push ix
|
|
0000092B DD 21 00 00 [14] 1813 ld ix, #0
|
|
0000092F DD 39 [15] 1814 add ix, sp
|
|
00000931 E5 [11] 1815 push hl
|
|
1816 ;src/main.c:531: u8 m = (sec / 60) % 100;
|
|
00000932 21 00 00 [10] 1817 ld hl, #0x0000
|
|
00000935 E5 [11] 1818 push hl
|
|
00000936 2E 3C [ 7] 1819 ld l, #0x3c
|
|
00000938 E5 [11] 1820 push hl
|
|
00000939 DD 5E 04 [19] 1821 ld e, 4 (ix)
|
|
0000093C DD 56 05 [19] 1822 ld d, 5 (ix)
|
|
0000093F DD 6E 06 [19] 1823 ld l, 6 (ix)
|
|
00000942 DD 66 07 [19] 1824 ld h, 7 (ix)
|
|
00000945 CDr00r00 [17] 1825 call __divulong
|
|
00000948 F1 [10] 1826 pop af
|
|
00000949 F1 [10] 1827 pop af
|
|
0000094A 01 00 00 [10] 1828 ld bc, #0x0000
|
|
0000094D C5 [11] 1829 push bc
|
|
0000094E 0E 64 [ 7] 1830 ld c, #0x64
|
|
00000950 C5 [11] 1831 push bc
|
|
00000951 CDr00r00 [17] 1832 call __modulong
|
|
00000954 F1 [10] 1833 pop af
|
|
00000955 F1 [10] 1834 pop af
|
|
00000956 4B [ 4] 1835 ld c, e
|
|
1836 ;src/main.c:532: u8 s = sec % 60;
|
|
00000957 C5 [11] 1837 push bc
|
|
00000958 21 00 00 [10] 1838 ld hl, #0x0000
|
|
0000095B E5 [11] 1839 push hl
|
|
0000095C 2E 3C [ 7] 1840 ld l, #0x3c
|
|
0000095E E5 [11] 1841 push hl
|
|
0000095F DD 5E 04 [19] 1842 ld e, 4 (ix)
|
|
00000962 DD 56 05 [19] 1843 ld d, 5 (ix)
|
|
00000965 DD 6E 06 [19] 1844 ld l, 6 (ix)
|
|
00000968 DD 66 07 [19] 1845 ld h, 7 (ix)
|
|
0000096B CDr00r00 [17] 1846 call __modulong
|
|
0000096E F1 [10] 1847 pop af
|
|
0000096F F1 [10] 1848 pop af
|
|
00000970 C1 [10] 1849 pop bc
|
|
1850 ;src/main.c:534: dst[0] = '0' + (m / 10) % 10;
|
|
00000971 51 [ 4] 1851 ld d, c
|
|
00000972 D5 [11] 1852 push de
|
|
00000973 2E 0A [ 7] 1853 ld l, #0x0a
|
|
00000975 7A [ 4] 1854 ld a, d
|
|
00000976 CDr00r00 [17] 1855 call __divuchar
|
|
00000979 7B [ 4] 1856 ld a, e
|
|
0000097A 2E 0A [ 7] 1857 ld l, #0x0a
|
|
0000097C CDr00r00 [17] 1858 call __moduchar
|
|
0000097F 7B [ 4] 1859 ld a, e
|
|
00000980 D1 [10] 1860 pop de
|
|
00000981 C6 30 [ 7] 1861 add a, #0x30
|
|
00000983 E1 [10] 1862 pop hl
|
|
00000984 E5 [11] 1863 push hl
|
|
00000985 77 [ 7] 1864 ld (hl), a
|
|
1865 ;src/main.c:535: dst[1] = '0' + m % 10;
|
|
00000986 C1 [10] 1866 pop bc
|
|
00000987 C5 [11] 1867 push bc
|
|
00000988 03 [ 6] 1868 inc bc
|
|
00000989 C5 [11] 1869 push bc
|
|
0000098A D5 [11] 1870 push de
|
|
0000098B 2E 0A [ 7] 1871 ld l, #0x0a
|
|
0000098D 7A [ 4] 1872 ld a, d
|
|
0000098E CDr00r00 [17] 1873 call __moduchar
|
|
00000991 7B [ 4] 1874 ld a, e
|
|
00000992 D1 [10] 1875 pop de
|
|
00000993 C1 [10] 1876 pop bc
|
|
00000994 C6 30 [ 7] 1877 add a, #0x30
|
|
00000996 02 [ 7] 1878 ld (bc), a
|
|
1879 ;src/main.c:536: dst[2] = ':';
|
|
00000997 E1 [10] 1880 pop hl
|
|
00000998 E5 [11] 1881 push hl
|
|
00000999 23 [ 6] 1882 inc hl
|
|
0000099A 23 [ 6] 1883 inc hl
|
|
0000099B 36 3A [10] 1884 ld (hl), #0x3a
|
|
1885 ;src/main.c:537: dst[3] = '0' + (s / 10) % 10;
|
|
0000099D C1 [10] 1886 pop bc
|
|
0000099E C5 [11] 1887 push bc
|
|
0000099F 03 [ 6] 1888 inc bc
|
|
000009A0 03 [ 6] 1889 inc bc
|
|
000009A1 03 [ 6] 1890 inc bc
|
|
000009A2 C5 [11] 1891 push bc
|
|
000009A3 D5 [11] 1892 push de
|
|
000009A4 2E 0A [ 7] 1893 ld l, #0x0a
|
|
000009A6 7B [ 4] 1894 ld a, e
|
|
000009A7 CDr00r00 [17] 1895 call __divuchar
|
|
000009AA 7B [ 4] 1896 ld a, e
|
|
000009AB 2E 0A [ 7] 1897 ld l, #0x0a
|
|
000009AD CDr00r00 [17] 1898 call __moduchar
|
|
000009B0 7B [ 4] 1899 ld a, e
|
|
000009B1 D1 [10] 1900 pop de
|
|
000009B2 C1 [10] 1901 pop bc
|
|
000009B3 C6 30 [ 7] 1902 add a, #0x30
|
|
000009B5 02 [ 7] 1903 ld (bc), a
|
|
1904 ;src/main.c:538: dst[4] = '0' + s % 10;
|
|
000009B6 DD 7E FE [19] 1905 ld a, -2 (ix)
|
|
000009B9 C6 04 [ 7] 1906 add a, #0x04
|
|
000009BB 4F [ 4] 1907 ld c, a
|
|
000009BC DD 7E FF [19] 1908 ld a, -1 (ix)
|
|
000009BF CE 00 [ 7] 1909 adc a, #0x00
|
|
000009C1 47 [ 4] 1910 ld b, a
|
|
000009C2 C5 [11] 1911 push bc
|
|
000009C3 2E 0A [ 7] 1912 ld l, #0x0a
|
|
000009C5 7B [ 4] 1913 ld a, e
|
|
000009C6 CDr00r00 [17] 1914 call __moduchar
|
|
000009C9 7B [ 4] 1915 ld a, e
|
|
000009CA C1 [10] 1916 pop bc
|
|
000009CB C6 30 [ 7] 1917 add a, #0x30
|
|
000009CD 02 [ 7] 1918 ld (bc), a
|
|
1919 ;src/main.c:539: }
|
|
000009CE DD F9 [10] 1920 ld sp, ix
|
|
000009D0 DD E1 [14] 1921 pop ix
|
|
000009D2 E1 [10] 1922 pop hl
|
|
000009D3 F1 [10] 1923 pop af
|
|
000009D4 F1 [10] 1924 pop af
|
|
000009D5 E9 [ 4] 1925 jp (hl)
|
|
1926 ;src/main.c:568: void xm_draw_stats_labels()
|
|
1927 ; ---------------------------------
|
|
1928 ; Function xm_draw_stats_labels
|
|
1929 ; ---------------------------------
|
|
000009D6 1930 _xm_draw_stats_labels::
|
|
1931 ;src/main.c:572: wc_prsrw(&win_xm, "Pattern:#", ROW_STATS, 1, 9);
|
|
000009D6 21 09 00 [10] 1932 ld hl, #0x0009
|
|
000009D9 E5 [11] 1933 push hl
|
|
000009DA 21 04 01 [10] 1934 ld hl, #0x104
|
|
000009DD E5 [11] 1935 push hl
|
|
000009DE 11r75r0A [10] 1936 ld de, #___str_12
|
|
000009E1 21r32r10 [10] 1937 ld hl, #_win_xm
|
|
000009E4 CDr00r00 [17] 1938 call _wc_prsrw
|
|
1939 ;src/main.c:573: wc_prsrw(&win_xm, " Row:#", ROW_STATS, 12, 7);
|
|
000009E7 21 07 00 [10] 1940 ld hl, #0x0007
|
|
000009EA E5 [11] 1941 push hl
|
|
000009EB 21 04 0C [10] 1942 ld hl, #0xc04
|
|
000009EE E5 [11] 1943 push hl
|
|
000009EF 11r7Fr0A [10] 1944 ld de, #___str_13
|
|
000009F2 21r32r10 [10] 1945 ld hl, #_win_xm
|
|
000009F5 CDr00r00 [17] 1946 call _wc_prsrw
|
|
1947 ;src/main.c:574: wc_prsrw(&win_xm, " BPM:", ROW_STATS, 21, 6);
|
|
000009F8 21 06 00 [10] 1948 ld hl, #0x0006
|
|
000009FB E5 [11] 1949 push hl
|
|
000009FC 21 04 15 [10] 1950 ld hl, #0x1504
|
|
000009FF E5 [11] 1951 push hl
|
|
00000A00 11r87r0A [10] 1952 ld de, #___str_14
|
|
00000A03 21r32r10 [10] 1953 ld hl, #_win_xm
|
|
00000A06 CDr00r00 [17] 1954 call _wc_prsrw
|
|
1955 ;src/main.c:576: wc_prsrw(&win_xm, "Time:", ROW_TIME, 1, 5);
|
|
00000A09 21 05 00 [10] 1956 ld hl, #0x0005
|
|
00000A0C E5 [11] 1957 push hl
|
|
00000A0D 21 06 01 [10] 1958 ld hl, #0x106
|
|
00000A10 E5 [11] 1959 push hl
|
|
00000A11 11r8Er0A [10] 1960 ld de, #___str_15
|
|
00000A14 21r32r10 [10] 1961 ld hl, #_win_xm
|
|
00000A17 CDr00r00 [17] 1962 call _wc_prsrw
|
|
1963 ;src/main.c:577: wc_prsrw(&win_xm, " / ", ROW_TIME, 12, 3);
|
|
00000A1A 21 03 00 [10] 1964 ld hl, #0x0003
|
|
00000A1D E5 [11] 1965 push hl
|
|
00000A1E 21 06 0C [10] 1966 ld hl, #0xc06
|
|
00000A21 E5 [11] 1967 push hl
|
|
00000A22 11r94r0A [10] 1968 ld de, #___str_16
|
|
00000A25 21r32r10 [10] 1969 ld hl, #_win_xm
|
|
00000A28 CDr00r00 [17] 1970 call _wc_prsrw
|
|
1971 ;src/main.c:579: for (i = 0; i < BAR_WIDTH; i++)
|
|
00000A2B 11r90r10 [10] 1972 ld de, #_barbuf+0
|
|
00000A2E 0E 00 [ 7] 1973 ld c, #0x00
|
|
00000A30 1974 00103$:
|
|
1975 ;src/main.c:580: barbuf[i] = ' ';
|
|
00000A30 69 [ 4] 1976 ld l, c
|
|
00000A31 26 00 [ 7] 1977 ld h, #0x00
|
|
00000A33 19 [11] 1978 add hl, de
|
|
00000A34 36 20 [10] 1979 ld (hl), #0x20
|
|
1980 ;src/main.c:579: for (i = 0; i < BAR_WIDTH; i++)
|
|
00000A36 0C [ 4] 1981 inc c
|
|
00000A37 79 [ 4] 1982 ld a, c
|
|
00000A38 D6 20 [ 7] 1983 sub a, #0x20
|
|
00000A3A 38 F4 [12] 1984 jr c, 00103$
|
|
1985 ;src/main.c:581: wc_prsrw(&win_xm, barbuf, ROW_BAR, BAR_X, BAR_WIDTH);
|
|
1986 ;src/main.c:572: wc_prsrw(&win_xm, "Pattern:#", ROW_STATS, 1, 9);
|
|
1987 ;src/main.c:581: wc_prsrw(&win_xm, barbuf, ROW_BAR, BAR_X, BAR_WIDTH);
|
|
00000A3C 21 20 00 [10] 1988 ld hl, #0x0020
|
|
00000A3F E5 [11] 1989 push hl
|
|
00000A40 21 08 04 [10] 1990 ld hl, #0x408
|
|
00000A43 E5 [11] 1991 push hl
|
|
00000A44 21r32r10 [10] 1992 ld hl, #_win_xm
|
|
00000A47 CDr00r00 [17] 1993 call _wc_prsrw
|
|
1994 ;src/main.c:583: bar_attr_ofs = (wc_gadrw(&win_xm, ROW_BAR, BAR_X) & 0x3FFF) | 0x0080;
|
|
00000A4A 21 08 04 [10] 1995 ld hl, #0x408
|
|
00000A4D E5 [11] 1996 push hl
|
|
00000A4E 21r32r10 [10] 1997 ld hl, #_win_xm
|
|
00000A51 CDr00r00 [17] 1998 call _wc_gadrw
|
|
00000A54 7A [ 4] 1999 ld a, d
|
|
00000A55 E6 3F [ 7] 2000 and a, #0x3f
|
|
00000A57 57 [ 4] 2001 ld d, a
|
|
00000A58 CB FB [ 8] 2002 set 7, e
|
|
00000A5A ED 53rB0r10 [20] 2003 ld (_bar_attr_ofs), de
|
|
2004 ;src/main.c:585: for (i = 0; i < BAR_WIDTH; i++)
|
|
00000A5E 0E 00 [ 7] 2005 ld c, #0x00
|
|
00000A60 2006 00105$:
|
|
2007 ;src/main.c:586: *(volatile u8*)(0xC000 + bar_attr_ofs + i) = ATTR_BAR_EMPTY;
|
|
00000A60 2ArB0r10 [16] 2008 ld hl, (_bar_attr_ofs)
|
|
00000A63 5D [ 4] 2009 ld e, l
|
|
00000A64 7C [ 4] 2010 ld a, h
|
|
00000A65 C6 C0 [ 7] 2011 add a, #0xc0
|
|
00000A67 57 [ 4] 2012 ld d, a
|
|
00000A68 69 [ 4] 2013 ld l, c
|
|
00000A69 26 00 [ 7] 2014 ld h, #0x00
|
|
00000A6B 19 [11] 2015 add hl, de
|
|
00000A6C 36 07 [10] 2016 ld (hl), #0x07
|
|
2017 ;src/main.c:585: for (i = 0; i < BAR_WIDTH; i++)
|
|
00000A6E 0C [ 4] 2018 inc c
|
|
00000A6F 79 [ 4] 2019 ld a, c
|
|
00000A70 D6 20 [ 7] 2020 sub a, #0x20
|
|
00000A72 38 EC [12] 2021 jr c, 00105$
|
|
2022 ;src/main.c:587: }
|
|
00000A74 C9 [10] 2023 ret
|
|
00000A75 2024 ___str_12:
|
|
00000A75 50 61 74 74 65 72 6E 2025 .ascii "Pattern:#"
|
|
3A 23
|
|
00000A7E 00 2026 .db 0x00
|
|
00000A7F 2027 ___str_13:
|
|
00000A7F 20 20 52 6F 77 3A 23 2028 .ascii " Row:#"
|
|
00000A86 00 2029 .db 0x00
|
|
00000A87 2030 ___str_14:
|
|
00000A87 20 20 42 50 4D 3A 2031 .ascii " BPM:"
|
|
00000A8D 00 2032 .db 0x00
|
|
00000A8E 2033 ___str_15:
|
|
00000A8E 54 69 6D 65 3A 2034 .ascii "Time:"
|
|
00000A93 00 2035 .db 0x00
|
|
00000A94 2036 ___str_16:
|
|
00000A94 20 2F 20 2037 .ascii " / "
|
|
00000A97 00 2038 .db 0x00
|
|
2039 ;src/main.c:589: void draw_progress_bar(u32 samples, u32 total)
|
|
2040 ; ---------------------------------
|
|
2041 ; Function draw_progress_bar
|
|
2042 ; ---------------------------------
|
|
00000A98 2043 _draw_progress_bar::
|
|
00000A98 DD E5 [15] 2044 push ix
|
|
00000A9A DD 21 00 00 [14] 2045 ld ix, #0
|
|
00000A9E DD 39 [15] 2046 add ix, sp
|
|
00000AA0 4B [ 4] 2047 ld c, e
|
|
00000AA1 42 [ 4] 2048 ld b, d
|
|
00000AA2 EB [ 4] 2049 ex de, hl
|
|
2050 ;src/main.c:593: if (total)
|
|
00000AA3 DD 7E 07 [19] 2051 ld a, 7 (ix)
|
|
00000AA6 DD B6 06 [19] 2052 or a, 6 (ix)
|
|
00000AA9 DD B6 05 [19] 2053 or a, 5 (ix)
|
|
00000AAC DD B6 04 [19] 2054 or a, 4 (ix)
|
|
00000AAF 28 30 [12] 2055 jr z, 00104$
|
|
2056 ;src/main.c:595: filled = (u16)(((u32)samples * BAR_WIDTH) / total);
|
|
00000AB1 69 [ 4] 2057 ld l, c
|
|
00000AB2 60 [ 4] 2058 ld h, b
|
|
00000AB3 3E 05 [ 7] 2059 ld a, #0x05
|
|
00000AB5 2060 00146$:
|
|
00000AB5 29 [11] 2061 add hl, hl
|
|
00000AB6 CB 13 [ 8] 2062 rl e
|
|
00000AB8 CB 12 [ 8] 2063 rl d
|
|
00000ABA 3D [ 4] 2064 dec a
|
|
00000ABB 20 F8 [12] 2065 jr nz, 00146$
|
|
00000ABD DD 4E 06 [19] 2066 ld c, 6 (ix)
|
|
00000AC0 DD 46 07 [19] 2067 ld b, 7 (ix)
|
|
00000AC3 C5 [11] 2068 push bc
|
|
00000AC4 DD 4E 04 [19] 2069 ld c, 4 (ix)
|
|
00000AC7 DD 46 05 [19] 2070 ld b, 5 (ix)
|
|
00000ACA C5 [11] 2071 push bc
|
|
00000ACB EB [ 4] 2072 ex de, hl
|
|
00000ACC CDr00r00 [17] 2073 call __divulong
|
|
00000ACF F1 [10] 2074 pop af
|
|
00000AD0 F1 [10] 2075 pop af
|
|
2076 ;src/main.c:596: if (filled > BAR_WIDTH)
|
|
00000AD1 4B [ 4] 2077 ld c,e
|
|
00000AD2 42 [ 4] 2078 ld b,d
|
|
00000AD3 3E 20 [ 7] 2079 ld a, #0x20
|
|
00000AD5 BB [ 4] 2080 cp a, e
|
|
00000AD6 3E 00 [ 7] 2081 ld a, #0x00
|
|
00000AD8 9A [ 4] 2082 sbc a, d
|
|
00000AD9 30 09 [12] 2083 jr nc, 00120$
|
|
2084 ;src/main.c:597: filled = BAR_WIDTH;
|
|
00000ADB 01 20 00 [10] 2085 ld bc, #0x0020
|
|
00000ADE C3rE4r0A [10] 2086 jp 00120$
|
|
00000AE1 2087 00104$:
|
|
2088 ;src/main.c:600: filled = 0; // total length unknown (measurement timed out) - show empty
|
|
00000AE1 01 00 00 [10] 2089 ld bc, #0x0000
|
|
2090 ;src/main.c:602: for (i = 0; i < BAR_WIDTH; i++)
|
|
00000AE4 2091 00120$:
|
|
00000AE4 11 00 00 [10] 2092 ld de, #0x0000
|
|
00000AE7 2093 00107$:
|
|
2094 ;src/main.c:603: *(volatile u8*)(0xC000 + bar_attr_ofs + i) = (i < filled) ? ATTR_BAR_FILLED : ATTR_BAR_EMPTY;
|
|
00000AE7 2ArB0r10 [16] 2095 ld hl, (_bar_attr_ofs)
|
|
00000AEA 7C [ 4] 2096 ld a, h
|
|
00000AEB C6 C0 [ 7] 2097 add a, #0xc0
|
|
00000AED 67 [ 4] 2098 ld h, a
|
|
00000AEE 19 [11] 2099 add hl, de
|
|
00000AEF 7B [ 4] 2100 ld a, e
|
|
00000AF0 91 [ 4] 2101 sub a, c
|
|
00000AF1 7A [ 4] 2102 ld a, d
|
|
00000AF2 98 [ 4] 2103 sbc a, b
|
|
00000AF3 30 05 [12] 2104 jr nc, 00111$
|
|
00000AF5 3E 40 [ 7] 2105 ld a, #0x40
|
|
00000AF7 C3rFCr0A [10] 2106 jp 00112$
|
|
00000AFA 2107 00111$:
|
|
00000AFA 3E 07 [ 7] 2108 ld a, #0x07
|
|
00000AFC 2109 00112$:
|
|
00000AFC 77 [ 7] 2110 ld (hl), a
|
|
2111 ;src/main.c:602: for (i = 0; i < BAR_WIDTH; i++)
|
|
00000AFD 13 [ 6] 2112 inc de
|
|
00000AFE 6B [ 4] 2113 ld l, e
|
|
00000AFF 62 [ 4] 2114 ld h, d
|
|
00000B00 7D [ 4] 2115 ld a, l
|
|
00000B01 D6 20 [ 7] 2116 sub a, #0x20
|
|
00000B03 7C [ 4] 2117 ld a, h
|
|
00000B04 DE 00 [ 7] 2118 sbc a, #0x00
|
|
00000B06 38 DF [12] 2119 jr c, 00107$
|
|
2120 ;src/main.c:604: }
|
|
00000B08 DD E1 [14] 2121 pop ix
|
|
00000B0A E1 [10] 2122 pop hl
|
|
00000B0B F1 [10] 2123 pop af
|
|
00000B0C F1 [10] 2124 pop af
|
|
00000B0D E9 [ 4] 2125 jp (hl)
|
|
2126 ;src/main.c:606: void xm_update_info()
|
|
2127 ; ---------------------------------
|
|
2128 ; Function xm_update_info
|
|
2129 ; ---------------------------------
|
|
00000B0E 2130 _xm_update_info::
|
|
00000B0E DD E5 [15] 2131 push ix
|
|
00000B10 DD 21 00 00 [14] 2132 ld ix, #0
|
|
00000B14 DD 39 [15] 2133 add ix, sp
|
|
00000B16 21 F8 FF [10] 2134 ld hl, #-8
|
|
00000B19 39 [11] 2135 add hl, sp
|
|
00000B1A F9 [ 6] 2136 ld sp, hl
|
|
2137 ;src/main.c:612: esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
|
00000B1B 3Ar30r10 [13] 2138 ld a, (_xm_handle)
|
|
00000B1E 6F [ 4] 2139 ld l, a
|
|
00000B1F 3E 0B [ 7] 2140 ld a, #0x0b
|
|
00000B21 CDrD1r00 [17] 2141 call _esp_wr_reg8
|
|
2142 ;src/main.c:613: esp_cmd(ESP_CMD_TRACK_GET_INFO);
|
|
00000B24 3E A8 [ 7] 2143 ld a, #0xa8
|
|
00000B26 CDr05r00 [17] 2144 call _esp_cmd
|
|
2145 ;src/main.c:614: esp_wait_busy(50); // 1s - a plain info read should be near-instant
|
|
00000B29 21 32 00 [10] 2146 ld hl, #0x0032
|
|
00000B2C CDr2Cr02 [17] 2147 call _esp_wait_busy
|
|
2148 ;src/main.c:619: status = esp_rd_reg8(ESP_REG_TRACK_STATUS);
|
|
00000B2F 3E 28 [ 7] 2149 ld a, #0x28
|
|
00000B31 CDr1Er00 [17] 2150 call _esp_rd_reg8
|
|
00000B34 DD 77 FF [19] 2151 ld -1 (ix), a
|
|
2152 ;src/main.c:620: if (last_track_status == TRACK_OBJ_ST_PLAYING && status == TRACK_OBJ_ST_STOPPED)
|
|
00000B37 3Ar31r10 [13] 2153 ld a, (_last_track_status)
|
|
00000B3A D6 21 [ 7] 2154 sub a, #0x21
|
|
00000B3C 20 1D [12] 2155 jr nz, 00102$
|
|
00000B3E DD 7E FF [19] 2156 ld a, -1 (ix)
|
|
00000B41 D6 20 [ 7] 2157 sub a, #0x20
|
|
00000B43 20 16 [12] 2158 jr nz, 00102$
|
|
2159 ;src/main.c:622: esp_cmd(ESP_CMD_KILL_OBJECTS);
|
|
00000B45 3E E4 [ 7] 2160 ld a, #0xe4
|
|
00000B47 CDr05r00 [17] 2161 call _esp_cmd
|
|
2162 ;src/main.c:623: esp_wait_busy(100);
|
|
00000B4A 21 64 00 [10] 2163 ld hl, #0x0064
|
|
00000B4D CDr2Cr02 [17] 2164 call _esp_wait_busy
|
|
2165 ;src/main.c:624: wc_rresb(&win_xm);
|
|
00000B50 21r32r10 [10] 2166 ld hl, #_win_xm
|
|
00000B53 CDr00r00 [17] 2167 call _wc_rresb
|
|
2168 ;src/main.c:625: wc_exit(WC_NEXT_FILE);
|
|
00000B56 3E 02 [ 7] 2169 ld a, #0x02
|
|
00000B58 CDr00r00 [17] 2170 call _wc_exit
|
|
00000B5B 2171 00102$:
|
|
2172 ;src/main.c:627: last_track_status = status;
|
|
00000B5B DD 7E FF [19] 2173 ld a, -1 (ix)
|
|
00000B5E 32r31r10 [13] 2174 ld (#_last_track_status), a
|
|
2175 ;src/main.c:629: pattern = esp_rd_reg8(ESP_REG_TRACK_PATTERN);
|
|
00000B61 3E 2B [ 7] 2176 ld a, #0x2b
|
|
00000B63 CDr1Er00 [17] 2177 call _esp_rd_reg8
|
|
00000B66 DD 77 FA [19] 2178 ld -6 (ix), a
|
|
2179 ;src/main.c:630: row = esp_rd_reg8(ESP_REG_TRACK_ROW);
|
|
00000B69 3E 2C [ 7] 2180 ld a, #0x2c
|
|
00000B6B CDr1Er00 [17] 2181 call _esp_rd_reg8
|
|
00000B6E DD 77 FB [19] 2182 ld -5 (ix), a
|
|
2183 ;src/main.c:631: esp_rd_regs(ESP_REG_TRACK_BPM, &bpm, 2);
|
|
00000B71 3E 02 [ 7] 2184 ld a, #0x02
|
|
00000B73 F5 [11] 2185 push af
|
|
00000B74 33 [ 6] 2186 inc sp
|
|
00000B75 21 01 00 [10] 2187 ld hl, #1
|
|
00000B78 39 [11] 2188 add hl, sp
|
|
00000B79 EB [ 4] 2189 ex de, hl
|
|
00000B7A 3E 31 [ 7] 2190 ld a, #0x31
|
|
00000B7C CDrA5r00 [17] 2191 call _esp_rd_regs
|
|
2192 ;src/main.c:632: samples = esp_rd_reg32(ESP_REG_TRACK_SAMPLES);
|
|
00000B7F 3E 2D [ 7] 2193 ld a, #0x2d
|
|
00000B81 CDr37r00 [17] 2194 call _esp_rd_reg32
|
|
00000B84 DD 73 FC [19] 2195 ld -4 (ix), e
|
|
00000B87 DD 72 FD [19] 2196 ld -3 (ix), d
|
|
00000B8A DD 75 FE [19] 2197 ld -2 (ix), l
|
|
00000B8D DD 74 FF [19] 2198 ld -1 (ix), h
|
|
2199 ;src/main.c:634: if (!total_samples)
|
|
00000B90 3Ar2Fr10 [13] 2200 ld a, (_total_samples+3)
|
|
00000B93 FD 21r2Cr10 [14] 2201 ld iy, #_total_samples
|
|
00000B97 FD B6 02 [19] 2202 or a, 2 (iy)
|
|
00000B9A FD B6 01 [19] 2203 or a, 1 (iy)
|
|
00000B9D FD B6 00 [19] 2204 or a, 0 (iy)
|
|
00000BA0 20 0C [12] 2205 jr nz, 00105$
|
|
2206 ;src/main.c:635: total_samples = esp_rd_reg32(ESP_REG_TRACK_TOTAL_SAMPLES);
|
|
00000BA2 3E 36 [ 7] 2207 ld a, #0x36
|
|
00000BA4 CDr37r00 [17] 2208 call _esp_rd_reg32
|
|
00000BA7 ED 53r2Cr10 [20] 2209 ld (_total_samples), de
|
|
00000BAB 22r2Er10 [16] 2210 ld (_total_samples + 2), hl
|
|
00000BAE 2211 00105$:
|
|
2212 ;src/main.c:637: put_hex2(hexbuf, pattern);
|
|
00000BAE DD 7E FA [19] 2213 ld a, -6 (ix)
|
|
00000BB1 F5 [11] 2214 push af
|
|
00000BB2 33 [ 6] 2215 inc sp
|
|
00000BB3 21r86r10 [10] 2216 ld hl, #_hexbuf
|
|
00000BB6 CDr8Fr08 [17] 2217 call _put_hex2
|
|
2218 ;src/main.c:638: wc_prsrw_attr(&win_xm, hexbuf, ROW_STATS, 10, 2, ATTR_VALUE);
|
|
00000BB9 3E 71 [ 7] 2219 ld a, #0x71
|
|
00000BBB F5 [11] 2220 push af
|
|
00000BBC 33 [ 6] 2221 inc sp
|
|
00000BBD 21 02 00 [10] 2222 ld hl, #0x0002
|
|
00000BC0 E5 [11] 2223 push hl
|
|
00000BC1 21 04 0A [10] 2224 ld hl, #0xa04
|
|
00000BC4 E5 [11] 2225 push hl
|
|
00000BC5 11r86r10 [10] 2226 ld de, #_hexbuf
|
|
00000BC8 21r32r10 [10] 2227 ld hl, #_win_xm
|
|
00000BCB CDr00r00 [17] 2228 call _wc_prsrw_attr
|
|
2229 ;src/main.c:640: put_hex2(hexbuf, row);
|
|
00000BCE DD 7E FB [19] 2230 ld a, -5 (ix)
|
|
00000BD1 F5 [11] 2231 push af
|
|
00000BD2 33 [ 6] 2232 inc sp
|
|
00000BD3 21r86r10 [10] 2233 ld hl, #_hexbuf
|
|
00000BD6 CDr8Fr08 [17] 2234 call _put_hex2
|
|
2235 ;src/main.c:641: wc_prsrw_attr(&win_xm, hexbuf, ROW_STATS, 19, 2, ATTR_VALUE);
|
|
00000BD9 3E 71 [ 7] 2236 ld a, #0x71
|
|
00000BDB F5 [11] 2237 push af
|
|
00000BDC 33 [ 6] 2238 inc sp
|
|
00000BDD 21 02 00 [10] 2239 ld hl, #0x0002
|
|
00000BE0 E5 [11] 2240 push hl
|
|
00000BE1 21 04 13 [10] 2241 ld hl, #0x1304
|
|
00000BE4 E5 [11] 2242 push hl
|
|
00000BE5 11r86r10 [10] 2243 ld de, #_hexbuf
|
|
00000BE8 21r32r10 [10] 2244 ld hl, #_win_xm
|
|
00000BEB CDr00r00 [17] 2245 call _wc_prsrw_attr
|
|
2246 ;src/main.c:643: put_dec3(decbuf, bpm);
|
|
00000BEE D1 [10] 2247 pop de
|
|
00000BEF D5 [11] 2248 push de
|
|
00000BF0 21r88r10 [10] 2249 ld hl, #_decbuf
|
|
00000BF3 CDrCCr08 [17] 2250 call _put_dec3
|
|
2251 ;src/main.c:644: wc_prsrw_attr(&win_xm, decbuf, ROW_STATS, 27, 3, ATTR_VALUE);
|
|
00000BF6 3E 71 [ 7] 2252 ld a, #0x71
|
|
00000BF8 F5 [11] 2253 push af
|
|
00000BF9 33 [ 6] 2254 inc sp
|
|
00000BFA 21 03 00 [10] 2255 ld hl, #0x0003
|
|
00000BFD E5 [11] 2256 push hl
|
|
00000BFE 21 04 1B [10] 2257 ld hl, #0x1b04
|
|
00000C01 E5 [11] 2258 push hl
|
|
00000C02 11r88r10 [10] 2259 ld de, #_decbuf
|
|
00000C05 21r32r10 [10] 2260 ld hl, #_win_xm
|
|
00000C08 CDr00r00 [17] 2261 call _wc_prsrw_attr
|
|
2262 ;src/main.c:646: put_time(timebuf, samples / 44100UL);
|
|
00000C0B 21 00 00 [10] 2263 ld hl, #0x0000
|
|
00000C0E E5 [11] 2264 push hl
|
|
00000C0F 21 44 AC [10] 2265 ld hl, #0xac44
|
|
00000C12 E5 [11] 2266 push hl
|
|
00000C13 DD 5E FC [19] 2267 ld e, -4 (ix)
|
|
00000C16 DD 56 FD [19] 2268 ld d, -3 (ix)
|
|
00000C19 DD 6E FE [19] 2269 ld l, -2 (ix)
|
|
00000C1C DD 66 FF [19] 2270 ld h, -1 (ix)
|
|
00000C1F CDr00r00 [17] 2271 call __divulong
|
|
00000C22 F1 [10] 2272 pop af
|
|
00000C23 E3 [19] 2273 ex (sp),hl
|
|
00000C24 D5 [11] 2274 push de
|
|
00000C25 21r8Br10 [10] 2275 ld hl, #_timebuf
|
|
00000C28 CDr29r09 [17] 2276 call _put_time
|
|
2277 ;src/main.c:647: wc_prsrw_attr(&win_xm, timebuf, ROW_TIME, 7, 5, ATTR_VALUE);
|
|
00000C2B 3E 71 [ 7] 2278 ld a, #0x71
|
|
00000C2D F5 [11] 2279 push af
|
|
00000C2E 33 [ 6] 2280 inc sp
|
|
00000C2F 21 05 00 [10] 2281 ld hl, #0x0005
|
|
00000C32 E5 [11] 2282 push hl
|
|
00000C33 21 06 07 [10] 2283 ld hl, #0x706
|
|
00000C36 E5 [11] 2284 push hl
|
|
00000C37 11r8Br10 [10] 2285 ld de, #_timebuf
|
|
00000C3A 21r32r10 [10] 2286 ld hl, #_win_xm
|
|
00000C3D CDr00r00 [17] 2287 call _wc_prsrw_attr
|
|
2288 ;src/main.c:649: put_time(timebuf, total_samples / 44100UL);
|
|
00000C40 21 00 00 [10] 2289 ld hl, #0x0000
|
|
00000C43 E5 [11] 2290 push hl
|
|
00000C44 21 44 AC [10] 2291 ld hl, #0xac44
|
|
00000C47 E5 [11] 2292 push hl
|
|
00000C48 ED 5Br2Cr10 [20] 2293 ld de, (_total_samples)
|
|
00000C4C 2Ar2Er10 [16] 2294 ld hl, (_total_samples + 2)
|
|
00000C4F CDr00r00 [17] 2295 call __divulong
|
|
00000C52 F1 [10] 2296 pop af
|
|
00000C53 E3 [19] 2297 ex (sp),hl
|
|
00000C54 D5 [11] 2298 push de
|
|
00000C55 21r8Br10 [10] 2299 ld hl, #_timebuf
|
|
00000C58 CDr29r09 [17] 2300 call _put_time
|
|
2301 ;src/main.c:650: wc_prsrw_attr(&win_xm, timebuf, ROW_TIME, 15, 5, ATTR_VALUE);
|
|
00000C5B 3E 71 [ 7] 2302 ld a, #0x71
|
|
00000C5D F5 [11] 2303 push af
|
|
00000C5E 33 [ 6] 2304 inc sp
|
|
00000C5F 21 05 00 [10] 2305 ld hl, #0x0005
|
|
00000C62 E5 [11] 2306 push hl
|
|
00000C63 21 06 0F [10] 2307 ld hl, #0xf06
|
|
00000C66 E5 [11] 2308 push hl
|
|
00000C67 11r8Br10 [10] 2309 ld de, #_timebuf
|
|
00000C6A 21r32r10 [10] 2310 ld hl, #_win_xm
|
|
00000C6D CDr00r00 [17] 2311 call _wc_prsrw_attr
|
|
2312 ;src/main.c:652: draw_progress_bar(samples, total_samples);
|
|
00000C70 2Ar2Er10 [16] 2313 ld hl, (_total_samples + 2)
|
|
00000C73 E5 [11] 2314 push hl
|
|
00000C74 2Ar2Cr10 [16] 2315 ld hl, (_total_samples)
|
|
00000C77 E5 [11] 2316 push hl
|
|
00000C78 DD 5E FC [19] 2317 ld e, -4 (ix)
|
|
00000C7B DD 56 FD [19] 2318 ld d, -3 (ix)
|
|
00000C7E DD 6E FE [19] 2319 ld l, -2 (ix)
|
|
00000C81 DD 66 FF [19] 2320 ld h, -1 (ix)
|
|
00000C84 CDr98r0A [17] 2321 call _draw_progress_bar
|
|
2322 ;src/main.c:654: }
|
|
00000C87 DD F9 [10] 2323 ld sp, ix
|
|
00000C89 DD E1 [14] 2324 pop ix
|
|
00000C8B C9 [10] 2325 ret
|
|
2326 ;src/main.c:656: void main_start()
|
|
2327 ; ---------------------------------
|
|
2328 ; Function main_start
|
|
2329 ; ---------------------------------
|
|
00000C8C 2330 _main_start::
|
|
00000C8C DD E5 [15] 2331 push ix
|
|
00000C8E DD 21 00 00 [14] 2332 ld ix, #0
|
|
00000C92 DD 39 [15] 2333 add ix, sp
|
|
00000C94 3B [ 6] 2334 dec sp
|
|
2335 ;src/main.c:660: copy_file_name();
|
|
00000C95 CDrC7r06 [17] 2336 call _copy_file_name
|
|
2337 ;src/main.c:672: memcpy(&win_xm, &win_xm_tpl, sizeof(win_xm));
|
|
00000C98 11r32r10 [10] 2338 ld de, #_win_xm
|
|
00000C9B 21rA0r02 [10] 2339 ld hl, #_win_xm_tpl
|
|
00000C9E 01 12 00 [10] 2340 ld bc, #0x0012
|
|
00000CA1 ED B0 [21] 2341 ldir
|
|
2342 ;src/main.c:673: win_xm.x_pos = wc_center(wc_screen_width(), win_xm.x_size);
|
|
00000CA3 21r36r10 [10] 2343 ld hl, #_win_xm + 4
|
|
00000CA6 6E [ 7] 2344 ld l, (hl)
|
|
00000CA7 E5 [11] 2345 push hl
|
|
00000CA8 CDr4Cr05 [17] 2346 call _wc_screen_width
|
|
00000CAB E1 [10] 2347 pop hl
|
|
00000CAC CDr59r05 [17] 2348 call _wc_center
|
|
00000CAF 32r34r10 [13] 2349 ld (#(_win_xm + 2)), a
|
|
2350 ;src/main.c:674: win_xm.y_pos = wc_center(*(u8*)_HEI, win_xm.y_size);
|
|
00000CB2 21r37r10 [10] 2351 ld hl, #_win_xm + 5
|
|
00000CB5 6E [ 7] 2352 ld l, (hl)
|
|
00000CB6 3A 0E 60 [13] 2353 ld a, (#0x600e)
|
|
00000CB9 CDr59r05 [17] 2354 call _wc_center
|
|
00000CBC 32r35r10 [13] 2355 ld (#(_win_xm + 3)), a
|
|
2356 ;src/main.c:683: wc_gedpl();
|
|
00000CBF CDr00r00 [17] 2357 call _wc_gedpl
|
|
2358 ;src/main.c:684: wc_key_wait_release();
|
|
00000CC2 CDr00r00 [17] 2359 call _wc_key_wait_release
|
|
2360 ;src/main.c:685: wc_prwow(&win_xm);
|
|
00000CC5 21r32r10 [10] 2361 ld hl, #_win_xm
|
|
00000CC8 CDr00r00 [17] 2362 call _wc_prwow
|
|
2363 ;src/main.c:686: xm_draw_static_labels();
|
|
00000CCB CDrECr06 [17] 2364 call _xm_draw_static_labels
|
|
2365 ;src/main.c:687: xm_set_status("Loading, please wait...");
|
|
00000CCE 21r76r0D [10] 2366 ld hl, #___str_17
|
|
00000CD1 CDrCFr07 [17] 2367 call _xm_set_status
|
|
2368 ;src/main.c:689: if (state_esp == 0xFF)
|
|
00000CD4 3Ar00r00 [13] 2369 ld a, (_state_esp)
|
|
00000CD7 3C [ 4] 2370 inc a
|
|
00000CD8 20 0D [12] 2371 jr nz, 00102$
|
|
2372 ;src/main.c:690: state_esp = esp_init() ? 1 : 2;
|
|
00000CDA CDr93r02 [17] 2373 call _esp_init
|
|
00000CDD B7 [ 4] 2374 or a, a
|
|
00000CDE 3E 01 [ 7] 2375 ld a, #0x01
|
|
00000CE0 20 02 [12] 2376 jr nz, 00127$
|
|
00000CE2 3E 02 [ 7] 2377 ld a, #0x02
|
|
00000CE4 2378 00127$:
|
|
00000CE4 32r00r00 [13] 2379 ld (#_state_esp), a
|
|
00000CE7 2380 00102$:
|
|
2381 ;src/main.c:692: if (state_esp != 1)
|
|
00000CE7 3Ar00r00 [13] 2382 ld a, (_state_esp)
|
|
00000CEA 3D [ 4] 2383 dec a
|
|
00000CEB 28 06 [12] 2384 jr z, 00104$
|
|
2385 ;src/main.c:694: error_esp();
|
|
00000CED CDr2Er06 [17] 2386 call _error_esp
|
|
2387 ;src/main.c:695: return;
|
|
00000CF0 C3r72r0D [10] 2388 jp 00124$
|
|
00000CF3 2389 00104$:
|
|
2390 ;src/main.c:698: total_samples = 0;
|
|
00000CF3 AF [ 4] 2391 xor a, a
|
|
00000CF4 32r2Cr10 [13] 2392 ld (_total_samples+0), a
|
|
00000CF7 32r2Dr10 [13] 2393 ld (_total_samples+1), a
|
|
00000CFA 32r2Er10 [13] 2394 ld (_total_samples+2), a
|
|
00000CFD 32r2Fr10 [13] 2395 ld (_total_samples+3), a
|
|
2396 ;src/main.c:700: if (!play_xm())
|
|
00000D00 CDr0Fr03 [17] 2397 call _play_xm
|
|
00000D03 B7 [ 4] 2398 or a, a
|
|
00000D04 20 13 [12] 2399 jr nz, 00109$
|
|
2400 ;src/main.c:702: if (last_esp_status == ESP_ERR_OUT_OF_MEMORY)
|
|
00000D06 3Ar08r10 [13] 2401 ld a, (_last_esp_status)
|
|
00000D09 D6 99 [ 7] 2402 sub a, #0x99
|
|
00000D0B 20 06 [12] 2403 jr nz, 00106$
|
|
2404 ;src/main.c:703: error_oom();
|
|
00000D0D CDr61r06 [17] 2405 call _error_oom
|
|
00000D10 C3r72r0D [10] 2406 jp 00124$
|
|
00000D13 2407 00106$:
|
|
2408 ;src/main.c:705: error_playback();
|
|
00000D13 CDr94r06 [17] 2409 call _error_playback
|
|
2410 ;src/main.c:706: return;
|
|
00000D16 C3r72r0D [10] 2411 jp 00124$
|
|
00000D19 2412 00109$:
|
|
2413 ;src/main.c:709: xm_set_status("Playing");
|
|
00000D19 21r8Er0D [10] 2414 ld hl, #___str_18
|
|
00000D1C CDrCFr07 [17] 2415 call _xm_set_status
|
|
2416 ;src/main.c:710: xm_draw_stats_labels();
|
|
00000D1F CDrD6r09 [17] 2417 call _xm_draw_stats_labels
|
|
2418 ;src/main.c:711: last_track_status = TRACK_OBJ_ST_PLAYING;
|
|
00000D22 21r31r10 [10] 2419 ld hl, #_last_track_status
|
|
00000D25 36 21 [10] 2420 ld (hl), #0x21
|
|
2421 ;src/main.c:712: xm_update_info();
|
|
00000D27 CDr0Er0B [17] 2422 call _xm_update_info
|
|
2423 ;src/main.c:714: frame_ctr = 0;
|
|
00000D2A DD 36 FF 00 [19] 2424 ld -1 (ix), #0x00
|
|
2425 ;src/main.c:718: while (1)
|
|
00000D2E 2426 00122$:
|
|
2427 ;src/main.c:722: __endasm;
|
|
00000D2E 76 [ 4] 2428 halt
|
|
2429 ;src/main.c:724: if (++frame_ctr >= 10) // ~5 updates/sec at 50Hz
|
|
00000D2F DD 34 FF [23] 2430 inc -1 (ix)
|
|
00000D32 DD 7E FF [19] 2431 ld a, -1 (ix)
|
|
00000D35 D6 0A [ 7] 2432 sub a, #0x0a
|
|
00000D37 38 07 [12] 2433 jr c, 00111$
|
|
2434 ;src/main.c:726: frame_ctr = 0;
|
|
00000D39 DD 36 FF 00 [19] 2435 ld -1 (ix), #0x00
|
|
2436 ;src/main.c:727: xm_update_info();
|
|
00000D3D CDr0Er0B [17] 2437 call _xm_update_info
|
|
00000D40 2438 00111$:
|
|
2439 ;src/main.c:730: if (wc_key_pgdn() || wc_key_enter()) // PgDn or Enter - unload and go to next file
|
|
00000D40 CDr00r00 [17] 2440 call _wc_key_pgdn
|
|
00000D43 B7 [ 4] 2441 or a, a
|
|
00000D44 20 06 [12] 2442 jr nz, 00112$
|
|
00000D46 CDr00r00 [17] 2443 call _wc_key_enter
|
|
00000D49 B7 [ 4] 2444 or a, a
|
|
00000D4A 28 05 [12] 2445 jr z, 00113$
|
|
00000D4C 2446 00112$:
|
|
2447 ;src/main.c:731: unload_and_exit(WC_NEXT_FILE);
|
|
00000D4C 3E 02 [ 7] 2448 ld a, #0x02
|
|
00000D4E CDrC9r05 [17] 2449 call _unload_and_exit
|
|
00000D51 2450 00113$:
|
|
2451 ;src/main.c:733: if (wc_key_pgup()) // PgUp - unload and go to previous file
|
|
00000D51 CDr00r00 [17] 2452 call _wc_key_pgup
|
|
00000D54 B7 [ 4] 2453 or a, a
|
|
00000D55 28 05 [12] 2454 jr z, 00116$
|
|
2455 ;src/main.c:734: unload_and_exit(WC_PREV_FILE);
|
|
00000D57 3E 04 [ 7] 2456 ld a, #0x04
|
|
00000D59 CDrC9r05 [17] 2457 call _unload_and_exit
|
|
00000D5C 2458 00116$:
|
|
2459 ;src/main.c:736: if (wc_key_esc()) // Esc - unload and exit
|
|
00000D5C CDr00r00 [17] 2460 call _wc_key_esc
|
|
00000D5F B7 [ 4] 2461 or a, a
|
|
00000D60 28 04 [12] 2462 jr z, 00118$
|
|
2463 ;src/main.c:737: unload_and_exit(WC_EXIT);
|
|
00000D62 AF [ 4] 2464 xor a, a
|
|
00000D63 CDrC9r05 [17] 2465 call _unload_and_exit
|
|
00000D66 2466 00118$:
|
|
2467 ;src/main.c:739: if (wc_key_space()) // Space - leave the track playing, just exit
|
|
00000D66 CDr00r00 [17] 2468 call _wc_key_space
|
|
00000D69 B7 [ 4] 2469 or a, a
|
|
00000D6A 28 C2 [12] 2470 jr z, 00122$
|
|
2471 ;src/main.c:740: leave_playing_and_exit();
|
|
00000D6C CDrFAr05 [17] 2472 call _leave_playing_and_exit
|
|
00000D6F C3r2Er0D [10] 2473 jp 00122$
|
|
00000D72 2474 00124$:
|
|
2475 ;src/main.c:742: }
|
|
00000D72 33 [ 6] 2476 inc sp
|
|
00000D73 DD E1 [14] 2477 pop ix
|
|
00000D75 C9 [10] 2478 ret
|
|
00000D76 2479 ___str_17:
|
|
00000D76 4C 6F 61 64 69 6E 67 2480 .ascii "Loading, please wait..."
|
|
2C 20 70 6C 65 61 73
|
|
65 20 77 61 69 74 2E
|
|
2E 2E
|
|
00000D8D 00 2481 .db 0x00
|
|
00000D8E 2482 ___str_18:
|
|
00000D8E 50 6C 61 79 69 6E 67 2483 .ascii "Playing"
|
|
00000D95 00 2484 .db 0x00
|
|
2485 ;src/main.c:745: void main()
|
|
2486 ; ---------------------------------
|
|
2487 ; Function main
|
|
2488 ; ---------------------------------
|
|
00000D96 2489 _main::
|
|
2490 ;src/main.c:755: __endasm;
|
|
00000D96 ED 73r00r10 [20] 2491 ld (_ret_sp), sp
|
|
00000D9A 32r07r10 [13] 2492 ld (_call_type), a
|
|
00000D9D ED 43r09r10 [20] 2493 ld (_p_file_name), bc
|
|
00000DA1 08 [ 4] 2494 ex af, af
|
|
00000DA2 32r06r10 [13] 2495 ld (_file_ext), a
|
|
00000DA5 22r02r10 [16] 2496 ld (_filesize), hl
|
|
00000DA8 ED 53r04r10 [20] 2497 ld (_filesize + 2), de
|
|
2498 ;src/main.c:757: switch (call_type)
|
|
00000DAC 3Ar07r10 [13] 2499 ld a, (_call_type+0)
|
|
00000DAF B7 [ 4] 2500 or a, a
|
|
00000DB0 CAr8Cr0C [10] 2501 jp z, _main_start
|
|
00000DB3 3Ar07r10 [13] 2502 ld a, (_call_type)
|
|
00000DB6 D6 03 [ 7] 2503 sub a, #0x03
|
|
00000DB8 CAr8Fr05 [10] 2504 jp z, _about
|
|
2505 ;src/main.c:759: case WC_CALL_EXT:
|
|
2506 ;src/main.c:760: main_start();
|
|
2507 ;src/main.c:761: break;
|
|
2508 ;src/main.c:763: case WC_CALL_MENU:
|
|
2509 ;src/main.c:764: about();
|
|
2510 ;src/main.c:765: break;
|
|
2511 ;src/main.c:767: default:
|
|
2512 ;src/main.c:768: wc_exit(WC_EXIT);
|
|
00000DBB AF [ 4] 2513 xor a, a
|
|
2514 ;src/main.c:769: }
|
|
2515 ;src/main.c:770: }
|
|
00000DBC C3r00r00 [10] 2516 jp _wc_exit
|
|
2517 .area _CODE
|
|
2518 .area _INITIALIZER
|
|
00000000 2519 __xinit__state_esp:
|
|
00000000 FF 2520 .db #0xff ; 255
|
|
2521 .area _CABS (ABS)
|