- Fix state_esp init bug: crt0.s never runs GSINIT and hex2bin fills unbacked memory with 0xFF (not 0), so a plain zero-init global always read 0xFF on load; give it a real 0xFF sentinel initializer instead. - Vendor demyanenko-d/VGMPLAY.WMF's wc_api library (SDCC 4.6.0 + --sdcccall 1) instead of hand-rolled PRSRW/PRIAT wrappers, which corrupted esp32 file loading in three different shapes; colored "File:" caption now works. - Trim shared-file footprint: vendor only the esp32.c functions actually used, drop unused sdklib.h/sdk.lib linkage. - Re-enable periodic live stats (Pattern/Row/BPM/Time/progress bar). - Limit playback to one loop via TRACK_SET_PARAMS/MAX_LOOP_COUNT, and auto-advance to the next file when a track finishes on its own (detected via a PLAYING->STOPPED ESP_REG_TRACK_STATUS transition). - Pin the Z80 clock to 14MHz for the whole plugin lifetime so esp32 SPI wait-loop timeouts (raw iteration counts, not real time) don't depend on whatever turbo setting was active before the plugin started. - Pad TRACK_INIT's timeout well past the firmware's 5s song-length measurement cap (XM_MEASURE_MAX_US). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2035 lines
119 KiB
Plaintext
2035 lines
119 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_draw_static_labels
|
|
20 .globl _copy_file_name
|
|
21 .globl _error_playback
|
|
22 .globl _error_oom
|
|
23 .globl _error_esp
|
|
24 .globl _about
|
|
25 .globl _wait_frames
|
|
26 .globl _wait_esc_key
|
|
27 .globl _play_xm
|
|
28 .globl _esp_init
|
|
29 .globl _esp_create_obj
|
|
30 .globl _esp_wait_status
|
|
31 .globl _esp_rd_end
|
|
32 .globl _esp_send_dma
|
|
33 .globl _esp_wr_end
|
|
34 .globl _esp_wr_reg32
|
|
35 .globl _esp_wr_reg8
|
|
36 .globl _esp_rd_regs
|
|
37 .globl _esp_rd_reg32
|
|
38 .globl _esp_rd_reg8
|
|
39 .globl _esp_cmd
|
|
40 .globl _wc_set_freq_14mhz
|
|
41 .globl _wc_exit
|
|
42 .globl _wc_prsrw_attr
|
|
43 .globl _wc_prsrw
|
|
44 .globl _wc_key_pgdn
|
|
45 .globl _wc_key_pgup
|
|
46 .globl _wc_key_esc
|
|
47 .globl _wc_load512
|
|
48 .globl _wc_rresb
|
|
49 .globl _wc_prwow
|
|
50 .globl _strlen
|
|
51 .globl _state_esp
|
|
52 .globl _last_track_status
|
|
53 .globl _xm_handle
|
|
54 .globl _total_samples
|
|
55 .globl _file_name
|
|
56 .globl _p_file_name
|
|
57 .globl _last_esp_status
|
|
58 .globl _call_type
|
|
59 .globl _file_ext
|
|
60 .globl _filesize
|
|
61 .globl _ret_sp
|
|
62 .globl _fs_buf
|
|
63 .globl _win_about
|
|
64 .globl _win_xm
|
|
65 .globl _err_playback
|
|
66 .globl _err_out_of_mem
|
|
67 .globl _err_no_esp
|
|
68 .globl _esp_wait_busy
|
|
69 ;--------------------------------------------------------
|
|
70 ; special function registers
|
|
71 ;--------------------------------------------------------
|
|
00000057 72 _SPI_DATA = 0x0057
|
|
00000077 73 _SPI_CTRL = 0x0077
|
|
000000FE 74 _BORDER = 0x00fe
|
|
000000AF 75 _TS_VCONFIG = 0x00af
|
|
000000AF 76 _TS_STATUS = 0x00af
|
|
000001AF 77 _TS_VPAGE = 0x01af
|
|
000002AF 78 _TS_GXOFFSL = 0x02af
|
|
000003AF 79 _TS_GXOFFSH = 0x03af
|
|
000004AF 80 _TS_GYOFFSL = 0x04af
|
|
000005AF 81 _TS_GYOFFSH = 0x05af
|
|
000006AF 82 _TS_TSCONFIG = 0x06af
|
|
000007AF 83 _TS_PALSEL = 0x07af
|
|
00000FAF 84 _TS_BORDER = 0x0faf
|
|
000010AF 85 _TS_PAGE0 = 0x10af
|
|
000011AF 86 _TS_PAGE1 = 0x11af
|
|
000012AF 87 _TS_PAGE2 = 0x12af
|
|
000013AF 88 _TS_PAGE3 = 0x13af
|
|
000015AF 89 _TS_FMADDR = 0x15af
|
|
000016AF 90 _TS_TMPAGE = 0x16af
|
|
000017AF 91 _TS_T0GPAGE = 0x17af
|
|
000018AF 92 _TS_T1GPAGE = 0x18af
|
|
000019AF 93 _TS_SGPAGE = 0x19af
|
|
00001AAF 94 _TS_DMASADDRL = 0x1aaf
|
|
00001BAF 95 _TS_DMASADDRH = 0x1baf
|
|
00001CAF 96 _TS_DMASADDRX = 0x1caf
|
|
00001DAF 97 _TS_DMADADDRL = 0x1daf
|
|
00001EAF 98 _TS_DMADADDRH = 0x1eaf
|
|
00001FAF 99 _TS_DMADADDRX = 0x1faf
|
|
000020AF 100 _TS_SYSCONFIG = 0x20af
|
|
000021AF 101 _TS_MEMCONFIG = 0x21af
|
|
000022AF 102 _TS_HSINT = 0x22af
|
|
000023AF 103 _TS_VSINTL = 0x23af
|
|
000024AF 104 _TS_VSINTH = 0x24af
|
|
000025AF 105 _TS_DMAWPD = 0x25af
|
|
000026AF 106 _TS_DMALEN = 0x26af
|
|
000027AF 107 _TS_DMACTR = 0x27af
|
|
000027AF 108 _TS_DMASTATUS = 0x27af
|
|
000028AF 109 _TS_DMANUM = 0x28af
|
|
000029AF 110 _TS_FDDVIRT = 0x29af
|
|
00002AAF 111 _TS_INTMASK = 0x2aaf
|
|
00002BAF 112 _TS_CACHECONF = 0x2baf
|
|
00002CAF 113 _TS_DMANUMH = 0x2caf
|
|
00002DAF 114 _TS_DMAWPA = 0x2daf
|
|
000040AF 115 _TS_T0XOFFSL = 0x40af
|
|
000041AF 116 _TS_T0XOFFSH = 0x41af
|
|
000042AF 117 _TS_T0YOFFSL = 0x42af
|
|
000043AF 118 _TS_T0YOFFSH = 0x43af
|
|
000044AF 119 _TS_T1XOFFSL = 0x44af
|
|
000045AF 120 _TS_T1XOFFSH = 0x45af
|
|
000046AF 121 _TS_T1YOFFSL = 0x46af
|
|
000047AF 122 _TS_T1YOFFSH = 0x47af
|
|
123 ;--------------------------------------------------------
|
|
124 ; ram data
|
|
125 ;--------------------------------------------------------
|
|
126 .area _DATA
|
|
00000000 127 _fs_buf::
|
|
00000000 128 .ds 4096
|
|
00001000 129 _ret_sp::
|
|
00001000 130 .ds 2
|
|
00001002 131 _filesize::
|
|
00001002 132 .ds 4
|
|
00001006 133 _file_ext::
|
|
00001006 134 .ds 1
|
|
00001007 135 _call_type::
|
|
00001007 136 .ds 1
|
|
00001008 137 _last_esp_status::
|
|
00001008 138 .ds 1
|
|
00001009 139 _p_file_name::
|
|
00001009 140 .ds 2
|
|
0000100B 141 _file_name::
|
|
0000100B 142 .ds 33
|
|
0000102C 143 _total_samples::
|
|
0000102C 144 .ds 4
|
|
00001030 145 _xm_handle::
|
|
00001030 146 .ds 1
|
|
00001031 147 _last_track_status::
|
|
00001031 148 .ds 1
|
|
00001032 149 _hexbuf:
|
|
00001032 150 .ds 2
|
|
00001034 151 _decbuf:
|
|
00001034 152 .ds 3
|
|
00001037 153 _timebuf:
|
|
00001037 154 .ds 5
|
|
0000103C 155 _barbuf:
|
|
0000103C 156 .ds 34
|
|
157 ;--------------------------------------------------------
|
|
158 ; ram data
|
|
159 ;--------------------------------------------------------
|
|
160 .area _INITIALIZED
|
|
00000000 161 _state_esp::
|
|
00000000 162 .ds 1
|
|
163 ;--------------------------------------------------------
|
|
164 ; absolute ram data
|
|
165 ;--------------------------------------------------------
|
|
166 .area _DABS (ABS)
|
|
167 .area _DABS (ABS)
|
|
168 ;--------------------------------------------------------
|
|
169 ; global & static initialisations
|
|
170 ;--------------------------------------------------------
|
|
171 .area _HOME
|
|
172 .area _GSINIT
|
|
173 .area _GSFINAL
|
|
174 .area _GSINIT
|
|
175 ;--------------------------------------------------------
|
|
176 ; Home
|
|
177 ;--------------------------------------------------------
|
|
178 .area _HOME
|
|
179 .area _HOME
|
|
180 ;--------------------------------------------------------
|
|
181 ; code
|
|
182 ;--------------------------------------------------------
|
|
183 .area _CODE
|
|
184 ;src/wc_api.c:34: void wc_exit(u8 rc) __naked
|
|
185 ; ---------------------------------
|
|
186 ; Function wc_exit
|
|
187 ; ---------------------------------
|
|
00000000 188 _wc_exit::
|
|
189 ;src/wc_api.c:40: __endasm;
|
|
00000000 ED 7Br00r10 [20] 190 ld sp, (_ret_sp)
|
|
00000004 C9 [10] 191 ret
|
|
192 ;src/wc_api.c:41: }
|
|
193 ;src/wc_api.c:55: void wc_set_freq_14mhz() __naked
|
|
194 ; ---------------------------------
|
|
195 ; Function wc_set_freq_14mhz
|
|
196 ; ---------------------------------
|
|
00000005 197 _wc_set_freq_14mhz::
|
|
198 ;src/wc_api.c:62: __endasm;
|
|
00000005 06 00 [ 7] 199 ld b, #0x00 ; type: Z80 frequency
|
|
00000007 0E 02 [ 7] 200 ld c, #0x02 ; %10 = 14 MHz
|
|
00000009 3E 0E [ 7] 201 ld a, #0x0E
|
|
0000000B C3 06 60 [10] 202 jp 0x6006
|
|
203 ;src/wc_api.c:63: }
|
|
204 ;src/esp32.c:18: void esp_cmd(u8 cmd)
|
|
205 ; ---------------------------------
|
|
206 ; Function esp_cmd
|
|
207 ; ---------------------------------
|
|
0000000E 208 _esp_cmd::
|
|
0000000E 4F [ 4] 209 ld c, a
|
|
210 ;src/esp32.c:20: SPI_CTRL = SPI_ESP_CS_ON;
|
|
0000000F 3E 13 [ 7] 211 ld a, #0x13
|
|
00000011 D3 77 [11] 212 out (_SPI_CTRL), a
|
|
213 ;src/esp32.c:21: SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
|
00000013 3E 01 [ 7] 214 ld a, #0x01
|
|
00000015 D3 57 [11] 215 out (_SPI_DATA), a
|
|
216 ;src/esp32.c:22: SPI_DATA = ESP_REG_COMMAND;
|
|
00000017 AF [ 4] 217 xor a, a
|
|
00000018 D3 57 [11] 218 out (_SPI_DATA), a
|
|
219 ;src/esp32.c:23: SPI_DATA; // dummy
|
|
0000001A DB 57 [11] 220 in a, (_SPI_DATA)
|
|
221 ;src/esp32.c:24: SPI_DATA = cmd; // Command
|
|
0000001C 79 [ 4] 222 ld a, c
|
|
0000001D D3 57 [11] 223 out (_SPI_DATA), a
|
|
224 ;src/esp32.c:25: SPI_DATA = ESP_ST_IDLE; // Reset status
|
|
0000001F AF [ 4] 225 xor a, a
|
|
00000020 D3 57 [11] 226 out (_SPI_DATA), a
|
|
227 ;src/esp32.c:26: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
00000022 3E 03 [ 7] 228 ld a, #0x03
|
|
00000024 D3 77 [11] 229 out (_SPI_CTRL), a
|
|
230 ;src/esp32.c:27: }
|
|
00000026 C9 [10] 231 ret
|
|
232 ;src/esp32.c:29: u8 esp_rd_reg8(u8 reg)
|
|
233 ; ---------------------------------
|
|
234 ; Function esp_rd_reg8
|
|
235 ; ---------------------------------
|
|
00000027 236 _esp_rd_reg8::
|
|
00000027 4F [ 4] 237 ld c, a
|
|
238 ;src/esp32.c:31: SPI_CTRL = SPI_ESP_CS_ON;
|
|
00000028 3E 13 [ 7] 239 ld a, #0x13
|
|
0000002A D3 77 [11] 240 out (_SPI_CTRL), a
|
|
241 ;src/esp32.c:32: SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
|
0000002C 3E 02 [ 7] 242 ld a, #0x02
|
|
0000002E D3 57 [11] 243 out (_SPI_DATA), a
|
|
244 ;src/esp32.c:33: SPI_DATA = reg;
|
|
00000030 79 [ 4] 245 ld a, c
|
|
00000031 D3 57 [11] 246 out (_SPI_DATA), a
|
|
247 ;src/esp32.c:34: SPI_DATA; // dummy
|
|
00000033 DB 57 [11] 248 in a, (_SPI_DATA)
|
|
249 ;src/esp32.c:35: SPI_DATA; // dummy
|
|
00000035 DB 57 [11] 250 in a, (_SPI_DATA)
|
|
251 ;src/esp32.c:36: u8 rc = SPI_DATA;
|
|
00000037 DB 57 [11] 252 in a, (_SPI_DATA)
|
|
00000039 4F [ 4] 253 ld c, a
|
|
254 ;src/esp32.c:37: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
0000003A 3E 03 [ 7] 255 ld a, #0x03
|
|
0000003C D3 77 [11] 256 out (_SPI_CTRL), a
|
|
257 ;src/esp32.c:39: return rc;
|
|
0000003E 79 [ 4] 258 ld a, c
|
|
259 ;src/esp32.c:40: }
|
|
0000003F C9 [10] 260 ret
|
|
261 ;src/esp32.c:42: u32 esp_rd_reg32(u8 reg)
|
|
262 ; ---------------------------------
|
|
263 ; Function esp_rd_reg32
|
|
264 ; ---------------------------------
|
|
00000040 265 _esp_rd_reg32::
|
|
00000040 DD E5 [15] 266 push ix
|
|
00000042 DD 21 00 00 [14] 267 ld ix, #0
|
|
00000046 DD 39 [15] 268 add ix, sp
|
|
00000048 F5 [11] 269 push af
|
|
00000049 F5 [11] 270 push af
|
|
0000004A 4F [ 4] 271 ld c, a
|
|
272 ;src/esp32.c:44: SPI_CTRL = SPI_ESP_CS_ON;
|
|
0000004B 3E 13 [ 7] 273 ld a, #0x13
|
|
0000004D D3 77 [11] 274 out (_SPI_CTRL), a
|
|
275 ;src/esp32.c:45: SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
|
0000004F 3E 02 [ 7] 276 ld a, #0x02
|
|
00000051 D3 57 [11] 277 out (_SPI_DATA), a
|
|
278 ;src/esp32.c:46: SPI_DATA = reg;
|
|
00000053 79 [ 4] 279 ld a, c
|
|
00000054 D3 57 [11] 280 out (_SPI_DATA), a
|
|
281 ;src/esp32.c:47: SPI_DATA; // dummy
|
|
00000056 DB 57 [11] 282 in a, (_SPI_DATA)
|
|
283 ;src/esp32.c:48: SPI_DATA; // dummy
|
|
00000058 DB 57 [11] 284 in a, (_SPI_DATA)
|
|
285 ;src/esp32.c:49: u32 rc = SPI_DATA;
|
|
0000005A DB 57 [11] 286 in a, (_SPI_DATA)
|
|
0000005C 4F [ 4] 287 ld c, a
|
|
288 ;src/esp32.c:50: rc |= (u32)SPI_DATA << 8;
|
|
0000005D DB 57 [11] 289 in a, (_SPI_DATA)
|
|
0000005F 57 [ 4] 290 ld d, a
|
|
00000060 59 [ 4] 291 ld e, c
|
|
292 ;src/esp32.c:51: rc |= (u32)SPI_DATA << 16;
|
|
00000061 DB 57 [11] 293 in a, (_SPI_DATA)
|
|
00000063 DD 77 FC [19] 294 ld -4 (ix), a
|
|
00000066 AF [ 4] 295 xor a, a
|
|
00000067 DD 77 FD [19] 296 ld -3 (ix), a
|
|
0000006A DD 77 FE [19] 297 ld -2 (ix), a
|
|
0000006D DD 77 FF [19] 298 ld -1 (ix), a
|
|
00000070 DD 7E FC [19] 299 ld a, -4 (ix)
|
|
00000073 DD 77 FE [19] 300 ld -2 (ix), a
|
|
00000076 AF [ 4] 301 xor a, a
|
|
00000077 DD 77 FF [19] 302 ld -1 (ix), a
|
|
0000007A DD 77 FC [19] 303 ld -4 (ix), a
|
|
0000007D DD 77 FD [19] 304 ld -3 (ix), a
|
|
00000080 DD 6E FE [19] 305 ld l, -2 (ix)
|
|
306 ;src/esp32.c:52: rc |= (u32)SPI_DATA << 24;
|
|
00000083 DB 57 [11] 307 in a, (_SPI_DATA)
|
|
00000085 DD 77 FC [19] 308 ld -4 (ix), a
|
|
00000088 AF [ 4] 309 xor a, a
|
|
00000089 DD 77 FD [19] 310 ld -3 (ix), a
|
|
0000008C DD 77 FE [19] 311 ld -2 (ix), a
|
|
0000008F DD 77 FF [19] 312 ld -1 (ix), a
|
|
00000092 DD 7E FC [19] 313 ld a, -4 (ix)
|
|
00000095 DD 77 FF [19] 314 ld -1 (ix), a
|
|
00000098 AF [ 4] 315 xor a, a
|
|
00000099 DD 77 FC [19] 316 ld -4 (ix), a
|
|
0000009C DD 77 FD [19] 317 ld -3 (ix), a
|
|
0000009F DD 77 FE [19] 318 ld -2 (ix), a
|
|
000000A2 DD 66 FF [19] 319 ld h, -1 (ix)
|
|
320 ;src/esp32.c:53: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
000000A5 3E 03 [ 7] 321 ld a, #0x03
|
|
000000A7 D3 77 [11] 322 out (_SPI_CTRL), a
|
|
323 ;src/esp32.c:55: return rc;
|
|
324 ;src/esp32.c:56: }
|
|
000000A9 DD F9 [10] 325 ld sp, ix
|
|
000000AB DD E1 [14] 326 pop ix
|
|
000000AD C9 [10] 327 ret
|
|
328 ;src/esp32.c:58: void esp_rd_regs(u8 reg, void *data, u8 size)
|
|
329 ; ---------------------------------
|
|
330 ; Function esp_rd_regs
|
|
331 ; ---------------------------------
|
|
000000AE 332 _esp_rd_regs::
|
|
000000AE 4F [ 4] 333 ld c, a
|
|
334 ;src/esp32.c:60: u8 *d = (u8*)data;
|
|
335 ;src/esp32.c:62: SPI_CTRL = SPI_ESP_CS_ON;
|
|
000000AF 3E 13 [ 7] 336 ld a, #0x13
|
|
000000B1 D3 77 [11] 337 out (_SPI_CTRL), a
|
|
338 ;src/esp32.c:63: SPI_DATA = ESP_SPI_CMD_RD_REGS;
|
|
000000B3 3E 02 [ 7] 339 ld a, #0x02
|
|
000000B5 D3 57 [11] 340 out (_SPI_DATA), a
|
|
341 ;src/esp32.c:64: SPI_DATA = reg;
|
|
000000B7 79 [ 4] 342 ld a, c
|
|
000000B8 D3 57 [11] 343 out (_SPI_DATA), a
|
|
344 ;src/esp32.c:65: SPI_DATA; // dummy
|
|
000000BA DB 57 [11] 345 in a, (_SPI_DATA)
|
|
346 ;src/esp32.c:66: SPI_DATA; // dummy
|
|
000000BC DB 57 [11] 347 in a, (_SPI_DATA)
|
|
348 ;src/esp32.c:67: while (size--) *d++ = SPI_DATA;
|
|
000000BE FD 21 02 00 [14] 349 ld iy, #2
|
|
000000C2 FD 39 [15] 350 add iy, sp
|
|
000000C4 FD 4E 00 [19] 351 ld c, 0 (iy)
|
|
000000C7 352 00101$:
|
|
000000C7 79 [ 4] 353 ld a, c
|
|
000000C8 0D [ 4] 354 dec c
|
|
000000C9 B7 [ 4] 355 or a, a
|
|
000000CA 28 07 [12] 356 jr z, 00103$
|
|
000000CC DB 57 [11] 357 in a, (_SPI_DATA)
|
|
000000CE 12 [ 7] 358 ld (de), a
|
|
000000CF 13 [ 6] 359 inc de
|
|
000000D0 C3rC7r00 [10] 360 jp 00101$
|
|
000000D3 361 00103$:
|
|
362 ;src/esp32.c:68: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
000000D3 3E 03 [ 7] 363 ld a, #0x03
|
|
000000D5 D3 77 [11] 364 out (_SPI_CTRL), a
|
|
365 ;src/esp32.c:69: }
|
|
000000D7 E1 [10] 366 pop hl
|
|
000000D8 33 [ 6] 367 inc sp
|
|
000000D9 E9 [ 4] 368 jp (hl)
|
|
369 ;src/esp32.c:71: void esp_wr_reg8(u8 reg, u8 data)
|
|
370 ; ---------------------------------
|
|
371 ; Function esp_wr_reg8
|
|
372 ; ---------------------------------
|
|
000000DA 373 _esp_wr_reg8::
|
|
000000DA 47 [ 4] 374 ld b, a
|
|
000000DB 4D [ 4] 375 ld c, l
|
|
376 ;src/esp32.c:73: SPI_CTRL = SPI_ESP_CS_ON;
|
|
000000DC 3E 13 [ 7] 377 ld a, #0x13
|
|
000000DE D3 77 [11] 378 out (_SPI_CTRL), a
|
|
379 ;src/esp32.c:74: SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
|
000000E0 3E 01 [ 7] 380 ld a, #0x01
|
|
000000E2 D3 57 [11] 381 out (_SPI_DATA), a
|
|
382 ;src/esp32.c:75: SPI_DATA = reg;
|
|
000000E4 78 [ 4] 383 ld a, b
|
|
000000E5 D3 57 [11] 384 out (_SPI_DATA), a
|
|
385 ;src/esp32.c:76: SPI_DATA; // dummy
|
|
000000E7 DB 57 [11] 386 in a, (_SPI_DATA)
|
|
387 ;src/esp32.c:77: SPI_DATA = data;
|
|
000000E9 79 [ 4] 388 ld a, c
|
|
000000EA D3 57 [11] 389 out (_SPI_DATA), a
|
|
390 ;src/esp32.c:78: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
000000EC 3E 03 [ 7] 391 ld a, #0x03
|
|
000000EE D3 77 [11] 392 out (_SPI_CTRL), a
|
|
393 ;src/esp32.c:79: }
|
|
000000F0 C9 [10] 394 ret
|
|
395 ;src/esp32.c:81: void esp_wr_reg32(u8 reg, u32 data)
|
|
396 ; ---------------------------------
|
|
397 ; Function esp_wr_reg32
|
|
398 ; ---------------------------------
|
|
000000F1 399 _esp_wr_reg32::
|
|
000000F1 4F [ 4] 400 ld c, a
|
|
401 ;src/esp32.c:83: SPI_CTRL = SPI_ESP_CS_ON;
|
|
000000F2 3E 13 [ 7] 402 ld a, #0x13
|
|
000000F4 D3 77 [11] 403 out (_SPI_CTRL), a
|
|
404 ;src/esp32.c:84: SPI_DATA = ESP_SPI_CMD_WR_REGS;
|
|
000000F6 3E 01 [ 7] 405 ld a, #0x01
|
|
000000F8 D3 57 [11] 406 out (_SPI_DATA), a
|
|
407 ;src/esp32.c:85: SPI_DATA = reg;
|
|
000000FA 79 [ 4] 408 ld a, c
|
|
000000FB D3 57 [11] 409 out (_SPI_DATA), a
|
|
410 ;src/esp32.c:86: SPI_DATA; // dummy
|
|
000000FD DB 57 [11] 411 in a, (_SPI_DATA)
|
|
412 ;src/esp32.c:87: SPI_DATA = (u8)data;
|
|
000000FF FD 21 02 00 [14] 413 ld iy, #2
|
|
00000103 FD 39 [15] 414 add iy, sp
|
|
00000105 FD 7E 00 [19] 415 ld a, 0 (iy)
|
|
00000108 D3 57 [11] 416 out (_SPI_DATA), a
|
|
417 ;src/esp32.c:88: SPI_DATA = (u8)(data >> 8);
|
|
0000010A FD 7E 01 [19] 418 ld a, 1 (iy)
|
|
0000010D D3 57 [11] 419 out (_SPI_DATA), a
|
|
420 ;src/esp32.c:89: SPI_DATA = (u8)(data >> 16);
|
|
0000010F FD 7E 02 [19] 421 ld a, 2 (iy)
|
|
00000112 D3 57 [11] 422 out (_SPI_DATA), a
|
|
423 ;src/esp32.c:90: SPI_DATA = (u8)(data >> 24);
|
|
00000114 FD 7E 03 [19] 424 ld a, 3 (iy)
|
|
00000117 D3 57 [11] 425 out (_SPI_DATA), a
|
|
426 ;src/esp32.c:91: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
00000119 3E 03 [ 7] 427 ld a, #0x03
|
|
0000011B D3 77 [11] 428 out (_SPI_CTRL), a
|
|
429 ;src/esp32.c:92: }
|
|
0000011D E1 [10] 430 pop hl
|
|
0000011E F1 [10] 431 pop af
|
|
0000011F F1 [10] 432 pop af
|
|
00000120 E9 [ 4] 433 jp (hl)
|
|
434 ;src/esp32.c:94: void esp_wr_end()
|
|
435 ; ---------------------------------
|
|
436 ; Function esp_wr_end
|
|
437 ; ---------------------------------
|
|
00000121 438 _esp_wr_end::
|
|
439 ;src/esp32.c:96: SPI_CTRL = SPI_ESP_CS_ON;
|
|
00000121 3E 13 [ 7] 440 ld a, #0x13
|
|
00000123 D3 77 [11] 441 out (_SPI_CTRL), a
|
|
442 ;src/esp32.c:97: SPI_DATA = ESP_SPI_CMD_W_END;
|
|
00000125 3E 07 [ 7] 443 ld a, #0x07
|
|
00000127 D3 57 [11] 444 out (_SPI_DATA), a
|
|
445 ;src/esp32.c:98: SPI_DATA; // dummy
|
|
00000129 DB 57 [11] 446 in a, (_SPI_DATA)
|
|
447 ;src/esp32.c:99: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
0000012B 3E 03 [ 7] 448 ld a, #0x03
|
|
0000012D D3 77 [11] 449 out (_SPI_CTRL), a
|
|
450 ;src/esp32.c:100: }
|
|
0000012F C9 [10] 451 ret
|
|
452 ;src/esp32.c:102: void esp_send_dma(u16 a, u8 p, u16 l, u16 n)
|
|
453 ; ---------------------------------
|
|
454 ; Function esp_send_dma
|
|
455 ; ---------------------------------
|
|
00000130 456 _esp_send_dma::
|
|
00000130 7D [ 4] 457 ld a, l
|
|
458 ;src/esp32.c:105: TS_DMASADDRL = (u8)a;
|
|
00000131 01 AF 1A [10] 459 ld bc, #_TS_DMASADDRL
|
|
00000134 ED 79 [12] 460 out (c), a
|
|
461 ;src/esp32.c:106: TS_DMASADDRH = (u8)((u16)a >> 8);
|
|
00000136 7C [ 4] 462 ld a, h
|
|
00000137 01 AF 1B [10] 463 ld bc, #_TS_DMASADDRH
|
|
0000013A ED 79 [12] 464 out (c), a
|
|
465 ;src/esp32.c:107: TS_DMASADDRX = p;
|
|
0000013C FD 21 02 00 [14] 466 ld iy, #2
|
|
00000140 FD 39 [15] 467 add iy, sp
|
|
00000142 FD 7E 00 [19] 468 ld a, 0 (iy)
|
|
00000145 01 AF 1C [10] 469 ld bc, #_TS_DMASADDRX
|
|
00000148 ED 79 [12] 470 out (c), a
|
|
471 ;src/esp32.c:108: TS_DMALEN = (u8)((l >> 1) - 1);
|
|
0000014A FD 7E 01 [19] 472 ld a, 1 (iy)
|
|
0000014D FD 4E 02 [19] 473 ld c, 2 (iy)
|
|
00000150 FD 23 [10] 474 inc iy
|
|
00000152 CB 39 [ 8] 475 srl c
|
|
00000154 CB 1F [ 8] 476 rr a
|
|
00000156 3D [ 4] 477 dec a
|
|
00000157 01 AF 26 [10] 478 ld bc, #_TS_DMALEN
|
|
0000015A ED 79 [12] 479 out (c), a
|
|
480 ;src/esp32.c:109: TS_DMANUM = (u8)(n - 1);
|
|
0000015C FD 7E 02 [19] 481 ld a, 2 (iy)
|
|
0000015F 3D [ 4] 482 dec a
|
|
00000160 01 AF 28 [10] 483 ld bc, #_TS_DMANUM
|
|
00000163 ED 79 [12] 484 out (c), a
|
|
485 ;src/esp32.c:111: SPI_CTRL = SPI_ESP_CS_ON;
|
|
00000165 3E 13 [ 7] 486 ld a, #0x13
|
|
00000167 D3 77 [11] 487 out (_SPI_CTRL), a
|
|
488 ;src/esp32.c:112: SPI_DATA = ESP_SPI_CMD_WR_DATA;
|
|
00000169 3E 03 [ 7] 489 ld a, #0x03
|
|
0000016B D3 57 [11] 490 out (_SPI_DATA), a
|
|
491 ;src/esp32.c:113: SPI_DATA; // dummy
|
|
0000016D DB 57 [11] 492 in a, (_SPI_DATA)
|
|
493 ;src/esp32.c:114: SPI_DATA; // dummy
|
|
0000016F DB 57 [11] 494 in a, (_SPI_DATA)
|
|
495 ;src/esp32.c:115: TS_DMACTR = TS_DMA_RAM_SPI;
|
|
00000171 3E 82 [ 7] 496 ld a, #0x82
|
|
00000173 01 AF 27 [10] 497 ld bc, #_TS_DMACTR
|
|
00000176 ED 79 [12] 498 out (c), a
|
|
499 ;src/esp32.c:116: while (TS_DMASTATUS & 0x80);
|
|
00000178 500 00101$:
|
|
00000178 3E 27 [ 7] 501 ld a, #>(_TS_DMASTATUS)
|
|
0000017A DB AF [11] 502 in a, (#<(_TS_DMASTATUS))
|
|
0000017C 07 [ 4] 503 rlca
|
|
0000017D 38 F9 [12] 504 jr c, 00101$
|
|
505 ;src/esp32.c:117: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
0000017F 3E 03 [ 7] 506 ld a, #0x03
|
|
00000181 D3 77 [11] 507 out (_SPI_CTRL), a
|
|
508 ;src/esp32.c:119: esp_wr_end();
|
|
00000183 CDr21r01 [17] 509 call _esp_wr_end
|
|
510 ;src/esp32.c:120: esp_wait_busy(60000);
|
|
00000186 11 60 EA [10] 511 ld de, #0xea60
|
|
00000189 21 00 00 [10] 512 ld hl, #0x0000
|
|
0000018C CDrDEr01 [17] 513 call _esp_wait_busy
|
|
514 ;src/esp32.c:121: }
|
|
0000018F E1 [10] 515 pop hl
|
|
00000190 F1 [10] 516 pop af
|
|
00000191 F1 [10] 517 pop af
|
|
00000192 33 [ 6] 518 inc sp
|
|
00000193 E9 [ 4] 519 jp (hl)
|
|
520 ;src/esp32.c:123: void esp_rd_end()
|
|
521 ; ---------------------------------
|
|
522 ; Function esp_rd_end
|
|
523 ; ---------------------------------
|
|
00000194 524 _esp_rd_end::
|
|
525 ;src/esp32.c:125: SPI_CTRL = SPI_ESP_CS_ON;
|
|
00000194 3E 13 [ 7] 526 ld a, #0x13
|
|
00000196 D3 77 [11] 527 out (_SPI_CTRL), a
|
|
528 ;src/esp32.c:126: SPI_DATA = ESP_SPI_CMD_R_END;
|
|
00000198 3E 08 [ 7] 529 ld a, #0x08
|
|
0000019A D3 57 [11] 530 out (_SPI_DATA), a
|
|
531 ;src/esp32.c:127: SPI_DATA; // dummy
|
|
0000019C DB 57 [11] 532 in a, (_SPI_DATA)
|
|
533 ;src/esp32.c:128: SPI_CTRL = SPI_ESP_CS_OFF;
|
|
0000019E 3E 03 [ 7] 534 ld a, #0x03
|
|
000001A0 D3 77 [11] 535 out (_SPI_CTRL), a
|
|
536 ;src/esp32.c:129: }
|
|
000001A2 C9 [10] 537 ret
|
|
538 ;src/esp32.c:131: u32 esp_wait_status(u8 status, u32 timeout)
|
|
539 ; ---------------------------------
|
|
540 ; Function esp_wait_status
|
|
541 ; ---------------------------------
|
|
000001A3 542 _esp_wait_status::
|
|
000001A3 DD E5 [15] 543 push ix
|
|
000001A5 DD 21 00 00 [14] 544 ld ix, #0
|
|
000001A9 DD 39 [15] 545 add ix, sp
|
|
000001AB 4F [ 4] 546 ld c, a
|
|
547 ;src/esp32.c:133: while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) == status) break;
|
|
000001AC DD 5E 04 [19] 548 ld e, 4 (ix)
|
|
000001AF DD 56 05 [19] 549 ld d, 5 (ix)
|
|
000001B2 DD 6E 06 [19] 550 ld l, 6 (ix)
|
|
000001B5 DD 66 07 [19] 551 ld h, 7 (ix)
|
|
000001B8 552 00103$:
|
|
000001B8 7B [ 4] 553 ld a, e
|
|
000001B9 C6 FF [ 7] 554 add a, #0xff
|
|
000001BB 5F [ 4] 555 ld e, a
|
|
000001BC 7A [ 4] 556 ld a, d
|
|
000001BD CE FF [ 7] 557 adc a, #0xff
|
|
000001BF 57 [ 4] 558 ld d, a
|
|
000001C0 7D [ 4] 559 ld a, l
|
|
000001C1 CE FF [ 7] 560 adc a, #0xff
|
|
000001C3 6F [ 4] 561 ld l, a
|
|
000001C4 7C [ 4] 562 ld a, h
|
|
000001C5 CE FF [ 7] 563 adc a, #0xff
|
|
000001C7 67 [ 4] 564 ld h, a
|
|
000001C8 B5 [ 4] 565 or a, l
|
|
000001C9 B2 [ 4] 566 or a, d
|
|
000001CA B3 [ 4] 567 or a, e
|
|
000001CB 28 0E [12] 568 jr z, 00105$
|
|
000001CD E5 [11] 569 push hl
|
|
000001CE C5 [11] 570 push bc
|
|
000001CF D5 [11] 571 push de
|
|
000001D0 3E 01 [ 7] 572 ld a, #0x01
|
|
000001D2 CDr27r00 [17] 573 call _esp_rd_reg8
|
|
000001D5 D1 [10] 574 pop de
|
|
000001D6 C1 [10] 575 pop bc
|
|
000001D7 E1 [10] 576 pop hl
|
|
000001D8 91 [ 4] 577 sub a, c
|
|
000001D9 20 DD [12] 578 jr nz, 00103$
|
|
000001DB 579 00105$:
|
|
580 ;src/esp32.c:135: return timeout;
|
|
581 ;src/esp32.c:136: }
|
|
000001DB DD E1 [14] 582 pop ix
|
|
000001DD C9 [10] 583 ret
|
|
584 ;src/esp32.c:138: u32 esp_wait_busy(u32 timeout)
|
|
585 ; ---------------------------------
|
|
586 ; Function esp_wait_busy
|
|
587 ; ---------------------------------
|
|
000001DE 588 _esp_wait_busy::
|
|
589 ;src/esp32.c:140: while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY) break;
|
|
000001DE 590 00103$:
|
|
000001DE 7B [ 4] 591 ld a, e
|
|
000001DF C6 FF [ 7] 592 add a, #0xff
|
|
000001E1 5F [ 4] 593 ld e, a
|
|
000001E2 7A [ 4] 594 ld a, d
|
|
000001E3 CE FF [ 7] 595 adc a, #0xff
|
|
000001E5 57 [ 4] 596 ld d, a
|
|
000001E6 7D [ 4] 597 ld a, l
|
|
000001E7 CE FF [ 7] 598 adc a, #0xff
|
|
000001E9 6F [ 4] 599 ld l, a
|
|
000001EA 7C [ 4] 600 ld a, h
|
|
000001EB CE FF [ 7] 601 adc a, #0xff
|
|
000001ED 67 [ 4] 602 ld h, a
|
|
000001EE B5 [ 4] 603 or a, l
|
|
000001EF B2 [ 4] 604 or a, d
|
|
000001F0 B3 [ 4] 605 or a, e
|
|
000001F1 C8 [11] 606 ret z
|
|
000001F2 E5 [11] 607 push hl
|
|
000001F3 D5 [11] 608 push de
|
|
000001F4 3E 01 [ 7] 609 ld a, #0x01
|
|
000001F6 CDr27r00 [17] 610 call _esp_rd_reg8
|
|
000001F9 D1 [10] 611 pop de
|
|
000001FA E1 [10] 612 pop hl
|
|
000001FB FE 02 [ 7] 613 cp a, #0x02
|
|
000001FD 28 DF [12] 614 jr z, 00103$
|
|
615 ;src/esp32.c:142: return timeout;
|
|
616 ;src/esp32.c:143: }
|
|
000001FF C9 [10] 617 ret
|
|
618 ;src/esp32.c:145: int esp_create_obj(u32 size, u8 type)
|
|
619 ; ---------------------------------
|
|
620 ; Function esp_create_obj
|
|
621 ; ---------------------------------
|
|
00000200 622 _esp_create_obj::
|
|
623 ;src/esp32.c:147: esp_wr_reg32(ESP_REG_DATA_SIZE, size);
|
|
00000200 E5 [11] 624 push hl
|
|
00000201 D5 [11] 625 push de
|
|
00000202 3E 03 [ 7] 626 ld a, #0x03
|
|
00000204 CDrF1r00 [17] 627 call _esp_wr_reg32
|
|
628 ;src/esp32.c:148: esp_wr_reg8(ESP_REG_OBJ_TYPE, type);
|
|
00000207 FD 21 02 00 [14] 629 ld iy, #2
|
|
0000020B FD 39 [15] 630 add iy, sp
|
|
0000020D FD 6E 00 [19] 631 ld l, 0 (iy)
|
|
00000210 3E 02 [ 7] 632 ld a, #0x02
|
|
00000212 CDrDAr00 [17] 633 call _esp_wr_reg8
|
|
634 ;src/esp32.c:149: esp_cmd(ESP_CMD_MAKE_OBJECT);
|
|
00000215 3E E0 [ 7] 635 ld a, #0xe0
|
|
00000217 CDr0Er00 [17] 636 call _esp_cmd
|
|
637 ;src/esp32.c:150: esp_wait_busy(20000);
|
|
0000021A 11 20 4E [10] 638 ld de, #0x4e20
|
|
0000021D 21 00 00 [10] 639 ld hl, #0x0000
|
|
00000220 CDrDEr01 [17] 640 call _esp_wait_busy
|
|
641 ;src/esp32.c:153: return esp_rd_reg8(ESP_REG_OBJ_HANDLE);
|
|
00000223 3E 0B [ 7] 642 ld a, #0x0b
|
|
00000225 CDr27r00 [17] 643 call _esp_rd_reg8
|
|
00000228 5F [ 4] 644 ld e, a
|
|
00000229 16 00 [ 7] 645 ld d, #0x00
|
|
646 ;src/esp32.c:154: }
|
|
0000022B E1 [10] 647 pop hl
|
|
0000022C 33 [ 6] 648 inc sp
|
|
0000022D E9 [ 4] 649 jp (hl)
|
|
650 ;src/main.c:143: bool esp_init()
|
|
651 ; ---------------------------------
|
|
652 ; Function esp_init
|
|
653 ; ---------------------------------
|
|
0000022E 654 _esp_init::
|
|
655 ;src/main.c:145: esp_cmd(ESP_CMD_NOP);
|
|
0000022E AF [ 4] 656 xor a, a
|
|
0000022F CDr0Er00 [17] 657 call _esp_cmd
|
|
658 ;src/main.c:146: esp_rd_end();
|
|
00000232 CDr94r01 [17] 659 call _esp_rd_end
|
|
660 ;src/main.c:147: esp_wr_end();
|
|
00000235 CDr21r01 [17] 661 call _esp_wr_end
|
|
662 ;src/main.c:151: return true;
|
|
00000238 3E 01 [ 7] 663 ld a, #0x01
|
|
664 ;src/main.c:152: }
|
|
0000023A C9 [10] 665 ret
|
|
0000023B 666 _err_no_esp:
|
|
0000023B 01 667 .db #0x01 ; 1
|
|
0000023C 00 668 .db #0x00 ; 0
|
|
0000023D 18 669 .db #0x18 ; 24
|
|
0000023E 0A 670 .db #0x0a ; 10
|
|
0000023F 20 671 .db #0x20 ; 32
|
|
00000240 05 672 .db #0x05 ; 5
|
|
00000241 2F 673 .db #0x2f ; 47
|
|
00000242 00 674 .db #0x00 ; 0
|
|
00000243 00 00 675 .dw #0x0000
|
|
00000245 00 676 .db #0x00 ; 0
|
|
00000246 00 677 .db #0x00 ; 0
|
|
00000247r95r02 678 .dw __str_0
|
|
00000249r9Fr02 679 .dw __str_1
|
|
0000024BrA0r02 680 .dw __str_2
|
|
0000024D 681 _err_out_of_mem:
|
|
0000024D 01 682 .db #0x01 ; 1
|
|
0000024E 00 683 .db #0x00 ; 0
|
|
0000024F FF 684 .db #0xff ; 255
|
|
00000250 FF 685 .db #0xff ; 255
|
|
00000251 20 686 .db #0x20 ; 32
|
|
00000252 05 687 .db #0x05 ; 5
|
|
00000253 2F 688 .db #0x2f ; 47
|
|
00000254 00 689 .db #0x00 ; 0
|
|
00000255 00 00 690 .dw #0x0000
|
|
00000257 00 691 .db #0x00 ; 0
|
|
00000258 00 692 .db #0x00 ; 0
|
|
00000259r95r02 693 .dw __str_0
|
|
0000025Br9Fr02 694 .dw __str_1
|
|
0000025DrB6r02 695 .dw __str_3
|
|
0000025F 696 _err_playback:
|
|
0000025F 01 697 .db #0x01 ; 1
|
|
00000260 00 698 .db #0x00 ; 0
|
|
00000261 FF 699 .db #0xff ; 255
|
|
00000262 FF 700 .db #0xff ; 255
|
|
00000263 20 701 .db #0x20 ; 32
|
|
00000264 05 702 .db #0x05 ; 5
|
|
00000265 2F 703 .db #0x2f ; 47
|
|
00000266 00 704 .db #0x00 ; 0
|
|
00000267 00 00 705 .dw #0x0000
|
|
00000269 00 706 .db #0x00 ; 0
|
|
0000026A 00 707 .db #0x00 ; 0
|
|
0000026Br95r02 708 .dw __str_0
|
|
0000026Dr9Fr02 709 .dw __str_1
|
|
0000026FrD6r02 710 .dw __str_4
|
|
00000271 711 _win_xm:
|
|
00000271 81 712 .db #0x81 ; 129
|
|
00000272 00 713 .db #0x00 ; 0
|
|
00000273 19 714 .db #0x19 ; 25
|
|
00000274 0A 715 .db #0x0a ; 10
|
|
00000275 28 716 .db #0x28 ; 40
|
|
00000276 0B 717 .db #0x0b ; 11
|
|
00000277 4F 718 .db #0x4f ; 79 'O'
|
|
00000278 00 719 .db #0x00 ; 0
|
|
00000279 00 00 720 .dw #0x0000
|
|
0000027B 00 721 .db #0x00 ; 0
|
|
0000027C 00 722 .db #0x00 ; 0
|
|
0000027DrF4r02 723 .dw __str_5
|
|
0000027Fr9Fr02 724 .dw __str_1
|
|
00000281r09r03 725 .dw __str_6
|
|
00000283 726 _win_about:
|
|
00000283 01 727 .db #0x01 ; 1
|
|
00000284 00 728 .db #0x00 ; 0
|
|
00000285 16 729 .db #0x16 ; 22
|
|
00000286 0A 730 .db #0x0a ; 10
|
|
00000287 24 731 .db #0x24 ; 36
|
|
00000288 05 732 .db #0x05 ; 5
|
|
00000289 4F 733 .db #0x4f ; 79 'O'
|
|
0000028A 00 734 .db #0x00 ; 0
|
|
0000028B 00 00 735 .dw #0x0000
|
|
0000028D 00 736 .db #0x00 ; 0
|
|
0000028E 00 737 .db #0x00 ; 0
|
|
0000028Fr17r03 738 .dw __str_7
|
|
00000291r9Fr02 739 .dw __str_1
|
|
00000293r20r03 740 .dw __str_8
|
|
00000295 741 __str_0:
|
|
00000295 0E 742 .db 0x0e
|
|
00000296 20 45 72 72 6F 72 21 743 .ascii " Error! "
|
|
20
|
|
0000029E 00 744 .db 0x00
|
|
0000029F 745 __str_1:
|
|
0000029F 00 746 .db 0x00
|
|
000002A0 747 __str_2:
|
|
000002A0 0E 748 .db 0x0e
|
|
000002A1 0C 749 .db 0x0c
|
|
000002A2 01 750 .db 0x01
|
|
000002A3 4E 6F 20 45 53 50 33 751 .ascii "No ESP32 detected!"
|
|
32 20 64 65 74 65 63
|
|
74 65 64 21
|
|
000002B5 00 752 .db 0x00
|
|
000002B6 753 __str_3:
|
|
000002B6 0E 754 .db 0x0e
|
|
000002B7 0C 755 .db 0x0c
|
|
000002B8 01 756 .db 0x01
|
|
000002B9 4F 75 74 20 6F 66 20 757 .ascii "Out of memory (file too big)"
|
|
6D 65 6D 6F 72 79 20
|
|
28 66 69 6C 65 20 74
|
|
6F 6F 20 62 69 67 29
|
|
000002D5 00 758 .db 0x00
|
|
000002D6 759 __str_4:
|
|
000002D6 0E 760 .db 0x0e
|
|
000002D7 0C 761 .db 0x0c
|
|
000002D8 01 762 .db 0x01
|
|
000002D9 50 6C 61 79 62 61 63 763 .ascii "Playback error (bad file?)"
|
|
6B 20 65 72 72 6F 72
|
|
20 28 62 61 64 20 66
|
|
69 6C 65 3F 29
|
|
000002F3 00 764 .db 0x00
|
|
000002F4 765 __str_5:
|
|
000002F4 0E 766 .db 0x0e
|
|
000002F5 20 58 4D 2F 58 4D 5A 767 .ascii " XM/XMZ/S3M Player "
|
|
2F 53 33 4D 20 50 6C
|
|
61 79 65 72 20
|
|
00000308 00 768 .db 0x00
|
|
00000309 769 __str_6:
|
|
00000309 0E 770 .db 0x0e
|
|
0000030A 0C 771 .db 0x0c
|
|
0000030B 01 772 .db 0x01
|
|
0000030C 50 6C 61 79 69 6E 67 773 .ascii "Playing..."
|
|
2E 2E 2E
|
|
00000316 00 774 .db 0x00
|
|
00000317 775 __str_7:
|
|
00000317 0E 776 .db 0x0e
|
|
00000318 20 41 62 6F 75 74 20 777 .ascii " About "
|
|
0000031F 00 778 .db 0x00
|
|
00000320 779 __str_8:
|
|
00000320 0E 780 .db 0x0e
|
|
00000321 0C 781 .db 0x0c
|
|
00000322 01 782 .db 0x01
|
|
00000323 58 4D 20 50 6C 61 79 783 .ascii "XM Player v1.0"
|
|
65 72 20 76 31 2E 30
|
|
00000331 00 784 .db 0x00
|
|
785 ;src/main.c:156: bool play_xm()
|
|
786 ; ---------------------------------
|
|
787 ; Function play_xm
|
|
788 ; ---------------------------------
|
|
00000332 789 _play_xm::
|
|
00000332 DD E5 [15] 790 push ix
|
|
00000334 DD 21 00 00 [14] 791 ld ix, #0
|
|
00000338 DD 39 [15] 792 add ix, sp
|
|
0000033A 21 EC FF [10] 793 ld hl, #-20
|
|
0000033D 39 [11] 794 add hl, sp
|
|
0000033E F9 [ 6] 795 ld sp, hl
|
|
796 ;src/main.c:158: esp_cmd(ESP_CMD_TRACK_STOP);
|
|
0000033F 3E A2 [ 7] 797 ld a, #0xa2
|
|
00000341 CDr0Er00 [17] 798 call _esp_cmd
|
|
799 ;src/main.c:159: esp_wait_busy(10000);
|
|
00000344 11 10 27 [10] 800 ld de, #0x2710
|
|
00000347 21 00 00 [10] 801 ld hl, #0x0000
|
|
0000034A CDrDEr01 [17] 802 call _esp_wait_busy
|
|
803 ;src/main.c:160: esp_cmd(ESP_CMD_KILL_OBJECTS);
|
|
0000034D 3E E4 [ 7] 804 ld a, #0xe4
|
|
0000034F CDr0Er00 [17] 805 call _esp_cmd
|
|
806 ;src/main.c:161: esp_wait_busy(10000);
|
|
00000352 11 10 27 [10] 807 ld de, #0x2710
|
|
00000355 21 00 00 [10] 808 ld hl, #0x0000
|
|
00000358 CDrDEr01 [17] 809 call _esp_wait_busy
|
|
810 ;src/main.c:164: switch (file_ext)
|
|
0000035B 3Ar06r10 [13] 811 ld a, (_file_ext)
|
|
0000035E 3D [ 4] 812 dec a
|
|
0000035F 28 0A [12] 813 jr z, 00101$
|
|
00000361 3Ar06r10 [13] 814 ld a, (_file_ext)
|
|
00000364 D6 02 [ 7] 815 sub a, #0x02
|
|
00000366 28 08 [12] 816 jr z, 00102$
|
|
00000368 C3r75r03 [10] 817 jp 00103$
|
|
818 ;src/main.c:166: case EXT_XMZ: obj_type = OBJ_TYPE_ZIP; break;
|
|
0000036B 819 00101$:
|
|
0000036B 3E 08 [ 7] 820 ld a, #0x08
|
|
0000036D C3r77r03 [10] 821 jp 00104$
|
|
822 ;src/main.c:167: case EXT_S3M: obj_type = OBJ_TYPE_S3M; break;
|
|
00000370 823 00102$:
|
|
00000370 3E 0C [ 7] 824 ld a, #0x0c
|
|
00000372 C3r77r03 [10] 825 jp 00104$
|
|
826 ;src/main.c:168: default: obj_type = OBJ_TYPE_XM; break;
|
|
00000375 827 00103$:
|
|
00000375 3E 05 [ 7] 828 ld a, #0x05
|
|
829 ;src/main.c:169: }
|
|
00000377 830 00104$:
|
|
831 ;src/main.c:171: xm_handle = esp_create_obj(filesize, obj_type);
|
|
00000377 F5 [11] 832 push af
|
|
00000378 33 [ 6] 833 inc sp
|
|
00000379 ED 5Br02r10 [20] 834 ld de, (_filesize)
|
|
0000037D 2Ar04r10 [16] 835 ld hl, (_filesize + 2)
|
|
00000380 CDr00r02 [17] 836 call _esp_create_obj
|
|
00000383 21r30r10 [10] 837 ld hl, #_xm_handle
|
|
00000386 73 [ 7] 838 ld (hl), e
|
|
839 ;src/main.c:172: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
|
00000387 3E 01 [ 7] 840 ld a, #0x01
|
|
00000389 CDr27r00 [17] 841 call _esp_rd_reg8
|
|
0000038C 32r08r10 [13] 842 ld (#_last_esp_status), a
|
|
843 ;src/main.c:173: if (last_esp_status != ESP_ST_READY)
|
|
0000038F 3Ar08r10 [13] 844 ld a, (_last_esp_status)
|
|
00000392 3D [ 4] 845 dec a
|
|
00000393 28 04 [12] 846 jr z, 00106$
|
|
847 ;src/main.c:174: return false;
|
|
00000395 AF [ 4] 848 xor a, a
|
|
00000396 C3r60r05 [10] 849 jp 00116$
|
|
00000399 850 00106$:
|
|
851 ;src/main.c:176: u32 sz = filesize;
|
|
00000399 21 0C 00 [10] 852 ld hl, #12
|
|
0000039C 39 [11] 853 add hl, sp
|
|
0000039D EB [ 4] 854 ex de, hl
|
|
0000039E 21r02r10 [10] 855 ld hl, #_filesize
|
|
000003A1 01 04 00 [10] 856 ld bc, #4
|
|
000003A4 ED B0 [21] 857 ldir
|
|
858 ;src/main.c:177: u32 offs = 0;
|
|
000003A6 AF [ 4] 859 xor a, a
|
|
000003A7 DD 77 FC [19] 860 ld -4 (ix), a
|
|
000003AA DD 77 FD [19] 861 ld -3 (ix), a
|
|
000003AD DD 77 FE [19] 862 ld -2 (ix), a
|
|
000003B0 DD 77 FF [19] 863 ld -1 (ix), a
|
|
864 ;src/main.c:179: while (sz)
|
|
000003B3 865 00107$:
|
|
000003B3 DD 7E FB [19] 866 ld a, -5 (ix)
|
|
000003B6 DD B6 FA [19] 867 or a, -6 (ix)
|
|
000003B9 DD B6 F9 [19] 868 or a, -7 (ix)
|
|
000003BC DD B6 F8 [19] 869 or a, -8 (ix)
|
|
000003BF CArCFr04 [10] 870 jp z, 00109$
|
|
871 ;src/main.c:181: u32 s = min(sz, FS_BUF_SIZE);
|
|
000003C2 DD 7E F9 [19] 872 ld a, -7 (ix)
|
|
000003C5 D6 10 [ 7] 873 sub a, #0x10
|
|
000003C7 DD 7E FA [19] 874 ld a, -6 (ix)
|
|
000003CA DE 00 [ 7] 875 sbc a, #0x00
|
|
000003CC DD 7E FB [19] 876 ld a, -5 (ix)
|
|
000003CF DE 00 [ 7] 877 sbc a, #0x00
|
|
000003D1 30 11 [12] 878 jr nc, 00118$
|
|
000003D3 21 00 00 [10] 879 ld hl, #0
|
|
000003D6 39 [11] 880 add hl, sp
|
|
000003D7 EB [ 4] 881 ex de, hl
|
|
000003D8 21 0C 00 [10] 882 ld hl, #12
|
|
000003DB 39 [11] 883 add hl, sp
|
|
000003DC 01 04 00 [10] 884 ld bc, #4
|
|
000003DF ED B0 [21] 885 ldir
|
|
000003E1 C3rF3r03 [10] 886 jp 00119$
|
|
000003E4 887 00118$:
|
|
000003E4 DD 36 EC 00 [19] 888 ld -20 (ix), #0x00
|
|
000003E8 DD 36 ED 10 [19] 889 ld -19 (ix), #0x10
|
|
000003EC AF [ 4] 890 xor a, a
|
|
000003ED DD 77 EE [19] 891 ld -18 (ix), a
|
|
000003F0 DD 77 EF [19] 892 ld -17 (ix), a
|
|
000003F3 893 00119$:
|
|
000003F3 21 05 00 [10] 894 ld hl, #5
|
|
000003F6 39 [11] 895 add hl, sp
|
|
000003F7 EB [ 4] 896 ex de, hl
|
|
000003F8 21 00 00 [10] 897 ld hl, #0
|
|
000003FB 39 [11] 898 add hl, sp
|
|
000003FC 01 04 00 [10] 899 ld bc, #4
|
|
000003FF ED B0 [21] 900 ldir
|
|
901 ;src/main.c:182: u8 sec = (s + 511) >> 9;
|
|
00000401 DD 7E F1 [19] 902 ld a, -15 (ix)
|
|
00000404 C6 FF [ 7] 903 add a, #0xff
|
|
00000406 DD 7E F2 [19] 904 ld a, -14 (ix)
|
|
00000409 CE 01 [ 7] 905 adc a, #0x01
|
|
0000040B 47 [ 4] 906 ld b, a
|
|
0000040C 3E 00 [ 7] 907 ld a, #0x00
|
|
0000040E CE 00 [ 7] 908 adc a, #0x00
|
|
00000410 5F [ 4] 909 ld e, a
|
|
00000411 3E 00 [ 7] 910 ld a, #0x00
|
|
00000413 CE 00 [ 7] 911 adc a, #0x00
|
|
00000415 57 [ 4] 912 ld d, a
|
|
00000416 48 [ 4] 913 ld c, b
|
|
00000417 43 [ 4] 914 ld b, e
|
|
00000418 5A [ 4] 915 ld e, d
|
|
00000419 CB 3B [ 8] 916 srl e
|
|
0000041B CB 18 [ 8] 917 rr b
|
|
0000041D CB 19 [ 8] 918 rr c
|
|
919 ;src/main.c:184: wc_load512((u16)fs_buf, sec);
|
|
0000041F DD 71 F7 [19] 920 ld -9 (ix), c
|
|
00000422 79 [ 4] 921 ld a, c
|
|
00000423 F5 [11] 922 push af
|
|
00000424 33 [ 6] 923 inc sp
|
|
00000425 21r00r00 [10] 924 ld hl, #_fs_buf
|
|
00000428 CDr00r00 [17] 925 call _wc_load512
|
|
926 ;src/main.c:186: esp_wr_reg32(ESP_REG_DATA_SIZE, s);
|
|
0000042B 21 00 00 [10] 927 ld hl, #0x0
|
|
0000042E E5 [11] 928 push hl
|
|
0000042F DD 6E F1 [19] 929 ld l, -15 (ix)
|
|
00000432 DD 66 F2 [19] 930 ld h, -14 (ix)
|
|
00000435 E5 [11] 931 push hl
|
|
00000436 3E 03 [ 7] 932 ld a, #0x03
|
|
00000438 CDrF1r00 [17] 933 call _esp_wr_reg32
|
|
934 ;src/main.c:187: esp_wr_reg32(ESP_REG_DATA_OFFSET, offs);
|
|
0000043B DD 6E FE [19] 935 ld l, -2 (ix)
|
|
0000043E DD 66 FF [19] 936 ld h, -1 (ix)
|
|
00000441 E5 [11] 937 push hl
|
|
00000442 DD 6E FC [19] 938 ld l, -4 (ix)
|
|
00000445 DD 66 FD [19] 939 ld h, -3 (ix)
|
|
00000448 E5 [11] 940 push hl
|
|
00000449 3E 07 [ 7] 941 ld a, #0x07
|
|
0000044B CDrF1r00 [17] 942 call _esp_wr_reg32
|
|
943 ;src/main.c:188: esp_cmd(ESP_CMD_WRITE_OBJECT);
|
|
0000044E 3E E1 [ 7] 944 ld a, #0xe1
|
|
00000450 CDr0Er00 [17] 945 call _esp_cmd
|
|
946 ;src/main.c:189: esp_wait_status(ESP_ST_DATA_M2S, 2000);
|
|
00000453 21 00 00 [10] 947 ld hl, #0x0000
|
|
00000456 E5 [11] 948 push hl
|
|
00000457 21 D0 07 [10] 949 ld hl, #0x07d0
|
|
0000045A E5 [11] 950 push hl
|
|
0000045B 3E 03 [ 7] 951 ld a, #0x03
|
|
0000045D CDrA3r01 [17] 952 call _esp_wait_status
|
|
00000460 F1 [10] 953 pop af
|
|
00000461 F1 [10] 954 pop af
|
|
955 ;src/main.c:190: esp_send_dma((u16)fs_buf, *(u8*)_PAGE2, 512, sec);
|
|
00000462 DD 7E F7 [19] 956 ld a, -9 (ix)
|
|
00000465 DD 77 F5 [19] 957 ld -11 (ix), a
|
|
00000468 DD 36 F6 00 [19] 958 ld -10 (ix), #0x00
|
|
0000046C 3A 02 60 [13] 959 ld a, (#0x6002)
|
|
0000046F DD 77 F7 [19] 960 ld -9 (ix), a
|
|
00000472 DD 6E F5 [19] 961 ld l, -11 (ix)
|
|
00000475 26 00 [ 7] 962 ld h, #0x00
|
|
00000477 E5 [11] 963 push hl
|
|
00000478 21 00 02 [10] 964 ld hl, #0x0200
|
|
0000047B E5 [11] 965 push hl
|
|
0000047C DD 7E F7 [19] 966 ld a, -9 (ix)
|
|
0000047F F5 [11] 967 push af
|
|
00000480 33 [ 6] 968 inc sp
|
|
00000481 21r00r00 [10] 969 ld hl, #_fs_buf
|
|
00000484 CDr30r01 [17] 970 call _esp_send_dma
|
|
971 ;src/main.c:192: offs += s;
|
|
00000487 DD 5E F1 [19] 972 ld e, -15 (ix)
|
|
0000048A DD 56 F2 [19] 973 ld d, -14 (ix)
|
|
0000048D DD 6E FC [19] 974 ld l, -4 (ix)
|
|
00000490 DD 66 FD [19] 975 ld h, -3 (ix)
|
|
00000493 19 [11] 976 add hl, de
|
|
00000494 DD 75 FC [19] 977 ld -4 (ix), l
|
|
00000497 DD 74 FD [19] 978 ld -3 (ix), h
|
|
0000049A DD 7E FE [19] 979 ld a, -2 (ix)
|
|
0000049D DD 8E F3 [19] 980 adc a, -13 (ix)
|
|
000004A0 DD 77 FE [19] 981 ld -2 (ix), a
|
|
000004A3 30 03 [12] 982 jr nc, 00197$
|
|
000004A5 DD 34 FF [23] 983 inc -1 (ix)
|
|
000004A8 984 00197$:
|
|
985 ;src/main.c:193: sz -= s;
|
|
000004A8 DD 7E F8 [19] 986 ld a, -8 (ix)
|
|
000004AB DD 96 F1 [19] 987 sub a, -15 (ix)
|
|
000004AE DD 77 F8 [19] 988 ld -8 (ix), a
|
|
000004B1 DD 7E F9 [19] 989 ld a, -7 (ix)
|
|
000004B4 DD 9E F2 [19] 990 sbc a, -14 (ix)
|
|
000004B7 DD 77 F9 [19] 991 ld -7 (ix), a
|
|
000004BA DD 7E FA [19] 992 ld a, -6 (ix)
|
|
000004BD DD 9E F3 [19] 993 sbc a, -13 (ix)
|
|
000004C0 DD 77 FA [19] 994 ld -6 (ix), a
|
|
000004C3 DD 7E FB [19] 995 ld a, -5 (ix)
|
|
000004C6 DD 9E F4 [19] 996 sbc a, -12 (ix)
|
|
000004C9 DD 77 FB [19] 997 ld -5 (ix), a
|
|
000004CC C3rB3r03 [10] 998 jp 00107$
|
|
000004CF 999 00109$:
|
|
1000 ;src/main.c:196: if (file_ext == EXT_XMZ)
|
|
000004CF 3Ar06r10 [13] 1001 ld a, (_file_ext)
|
|
000004D2 3D [ 4] 1002 dec a
|
|
000004D3 20 3D [12] 1003 jr nz, 00113$
|
|
1004 ;src/main.c:201: esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
|
000004D5 3Ar30r10 [13] 1005 ld a, (_xm_handle)
|
|
000004D8 6F [ 4] 1006 ld l, a
|
|
000004D9 3E 0B [ 7] 1007 ld a, #0x0b
|
|
000004DB CDrDAr00 [17] 1008 call _esp_wr_reg8
|
|
1009 ;src/main.c:202: esp_wr_reg8(ESP_REG_OBJ_TYPE, OBJ_TYPE_XM);
|
|
000004DE 2E 05 [ 7] 1010 ld l, #0x05
|
|
000004E0 3E 02 [ 7] 1011 ld a, #0x02
|
|
000004E2 CDrDAr00 [17] 1012 call _esp_wr_reg8
|
|
1013 ;src/main.c:203: esp_wr_reg32(ESP_REG_DATA_SIZE, filesize);
|
|
000004E5 2Ar04r10 [16] 1014 ld hl, (_filesize + 2)
|
|
000004E8 E5 [11] 1015 push hl
|
|
000004E9 2Ar02r10 [16] 1016 ld hl, (_filesize)
|
|
000004EC E5 [11] 1017 push hl
|
|
000004ED 3E 03 [ 7] 1018 ld a, #0x03
|
|
000004EF CDrF1r00 [17] 1019 call _esp_wr_reg32
|
|
1020 ;src/main.c:204: esp_cmd(ESP_CMD_UNZIP);
|
|
000004F2 3E F2 [ 7] 1021 ld a, #0xf2
|
|
000004F4 CDr0Er00 [17] 1022 call _esp_cmd
|
|
1023 ;src/main.c:205: esp_wait_busy(10000);
|
|
000004F7 11 10 27 [10] 1024 ld de, #0x2710
|
|
000004FA 21 00 00 [10] 1025 ld hl, #0x0000
|
|
000004FD CDrDEr01 [17] 1026 call _esp_wait_busy
|
|
1027 ;src/main.c:207: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
|
00000500 3E 01 [ 7] 1028 ld a, #0x01
|
|
00000502 CDr27r00 [17] 1029 call _esp_rd_reg8
|
|
00000505 32r08r10 [13] 1030 ld (#_last_esp_status), a
|
|
1031 ;src/main.c:208: if (last_esp_status != ESP_ST_READY)
|
|
00000508 3Ar08r10 [13] 1032 ld a, (_last_esp_status)
|
|
0000050B 3D [ 4] 1033 dec a
|
|
0000050C 28 04 [12] 1034 jr z, 00113$
|
|
1035 ;src/main.c:209: return false;
|
|
0000050E AF [ 4] 1036 xor a, a
|
|
0000050F C3r60r05 [10] 1037 jp 00116$
|
|
00000512 1038 00113$:
|
|
1039 ;src/main.c:212: esp_cmd(ESP_CMD_TRACK_INIT);
|
|
00000512 3E A0 [ 7] 1040 ld a, #0xa0
|
|
00000514 CDr0Er00 [17] 1041 call _esp_cmd
|
|
1042 ;src/main.c:220: esp_wait_busy(1000000);
|
|
00000517 11 40 42 [10] 1043 ld de, #0x4240
|
|
0000051A 21 0F 00 [10] 1044 ld hl, #0x000f
|
|
0000051D CDrDEr01 [17] 1045 call _esp_wait_busy
|
|
1046 ;src/main.c:222: last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
|
00000520 3E 01 [ 7] 1047 ld a, #0x01
|
|
00000522 CDr27r00 [17] 1048 call _esp_rd_reg8
|
|
00000525 32r08r10 [13] 1049 ld (#_last_esp_status), a
|
|
1050 ;src/main.c:223: if (last_esp_status != ESP_ST_READY)
|
|
00000528 3Ar08r10 [13] 1051 ld a, (_last_esp_status)
|
|
0000052B 3D [ 4] 1052 dec a
|
|
0000052C 28 04 [12] 1053 jr z, 00115$
|
|
1054 ;src/main.c:224: return false;
|
|
0000052E AF [ 4] 1055 xor a, a
|
|
0000052F C3r60r05 [10] 1056 jp 00116$
|
|
00000532 1057 00115$:
|
|
1058 ;src/main.c:229: esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
|
00000532 3Ar30r10 [13] 1059 ld a, (_xm_handle)
|
|
00000535 6F [ 4] 1060 ld l, a
|
|
00000536 3E 0B [ 7] 1061 ld a, #0x0b
|
|
00000538 CDrDAr00 [17] 1062 call _esp_wr_reg8
|
|
1063 ;src/main.c:230: esp_wr_reg8(ESP_REG_TRACK_MAX_LOOP_COUNT, 1);
|
|
0000053B 2E 01 [ 7] 1064 ld l, #0x01
|
|
0000053D 3E 3A [ 7] 1065 ld a, #0x3a
|
|
0000053F CDrDAr00 [17] 1066 call _esp_wr_reg8
|
|
1067 ;src/main.c:231: esp_cmd(ESP_CMD_TRACK_SET_PARAMS);
|
|
00000542 3E A6 [ 7] 1068 ld a, #0xa6
|
|
00000544 CDr0Er00 [17] 1069 call _esp_cmd
|
|
1070 ;src/main.c:232: esp_wait_busy(10000);
|
|
00000547 11 10 27 [10] 1071 ld de, #0x2710
|
|
0000054A 21 00 00 [10] 1072 ld hl, #0x0000
|
|
0000054D CDrDEr01 [17] 1073 call _esp_wait_busy
|
|
1074 ;src/main.c:234: esp_cmd(ESP_CMD_TRACK_PLAY);
|
|
00000550 3E A1 [ 7] 1075 ld a, #0xa1
|
|
00000552 CDr0Er00 [17] 1076 call _esp_cmd
|
|
1077 ;src/main.c:235: esp_wait_busy(10000);
|
|
00000555 11 10 27 [10] 1078 ld de, #0x2710
|
|
00000558 21 00 00 [10] 1079 ld hl, #0x0000
|
|
0000055B CDrDEr01 [17] 1080 call _esp_wait_busy
|
|
1081 ;src/main.c:237: return true;
|
|
0000055E 3E 01 [ 7] 1082 ld a, #0x01
|
|
00000560 1083 00116$:
|
|
1084 ;src/main.c:238: }
|
|
00000560 DD F9 [10] 1085 ld sp, ix
|
|
00000562 DD E1 [14] 1086 pop ix
|
|
00000564 C9 [10] 1087 ret
|
|
1088 ;src/main.c:241: void wait_esc_key()
|
|
1089 ; ---------------------------------
|
|
1090 ; Function wait_esc_key
|
|
1091 ; ---------------------------------
|
|
00000565 1092 _wait_esc_key::
|
|
1093 ;src/main.c:243: while (1)
|
|
00000565 1094 00104$:
|
|
1095 ;src/main.c:247: __endasm;
|
|
00000565 76 [ 4] 1096 halt
|
|
1097 ;src/main.c:249: if (wc_key_esc())
|
|
00000566 CDr00r00 [17] 1098 call _wc_key_esc
|
|
00000569 B7 [ 4] 1099 or a, a
|
|
0000056A 28 F9 [12] 1100 jr z, 00104$
|
|
1101 ;src/main.c:250: break;
|
|
1102 ;src/main.c:252: }
|
|
0000056C C9 [10] 1103 ret
|
|
1104 ;src/main.c:254: void wait_frames(u8 n)
|
|
1105 ; ---------------------------------
|
|
1106 ; Function wait_frames
|
|
1107 ; ---------------------------------
|
|
0000056D 1108 _wait_frames::
|
|
0000056D 4F [ 4] 1109 ld c, a
|
|
1110 ;src/main.c:256: while (n--)
|
|
0000056E 1111 00101$:
|
|
0000056E 79 [ 4] 1112 ld a, c
|
|
0000056F 0D [ 4] 1113 dec c
|
|
00000570 B7 [ 4] 1114 or a, a
|
|
00000571 C8 [11] 1115 ret z
|
|
1116 ;src/main.c:260: __endasm;
|
|
00000572 76 [ 4] 1117 halt
|
|
1118 ;src/main.c:262: }
|
|
00000573 C3r6Er05 [10] 1119 jp 00101$
|
|
1120 ;src/main.c:264: void about()
|
|
1121 ; ---------------------------------
|
|
1122 ; Function about
|
|
1123 ; ---------------------------------
|
|
00000576 1124 _about::
|
|
1125 ;src/main.c:266: wc_prwow(&win_about);
|
|
00000576 21r83r02 [10] 1126 ld hl, #_win_about
|
|
00000579 CDr00r00 [17] 1127 call _wc_prwow
|
|
1128 ;src/main.c:267: wait_esc_key();
|
|
0000057C CDr65r05 [17] 1129 call _wait_esc_key
|
|
1130 ;src/main.c:268: wc_rresb(&win_about);
|
|
0000057F 21r83r02 [10] 1131 ld hl, #_win_about
|
|
00000582 CDr00r00 [17] 1132 call _wc_rresb
|
|
1133 ;src/main.c:269: wc_exit(WC_EXIT);
|
|
00000585 AF [ 4] 1134 xor a, a
|
|
1135 ;src/main.c:270: }
|
|
00000586 C3r00r00 [10] 1136 jp _wc_exit
|
|
1137 ;src/main.c:272: void error_esp()
|
|
1138 ; ---------------------------------
|
|
1139 ; Function error_esp
|
|
1140 ; ---------------------------------
|
|
00000589 1141 _error_esp::
|
|
1142 ;src/main.c:274: wc_prwow(&err_no_esp);
|
|
00000589 21r3Br02 [10] 1143 ld hl, #_err_no_esp
|
|
0000058C CDr00r00 [17] 1144 call _wc_prwow
|
|
1145 ;src/main.c:275: wait_esc_key();
|
|
0000058F CDr65r05 [17] 1146 call _wait_esc_key
|
|
1147 ;src/main.c:276: wc_rresb(&err_no_esp);
|
|
00000592 21r3Br02 [10] 1148 ld hl, #_err_no_esp
|
|
00000595 CDr00r00 [17] 1149 call _wc_rresb
|
|
1150 ;src/main.c:277: wc_exit(WC_EXIT);
|
|
00000598 AF [ 4] 1151 xor a, a
|
|
1152 ;src/main.c:278: }
|
|
00000599 C3r00r00 [10] 1153 jp _wc_exit
|
|
1154 ;src/main.c:280: void error_oom()
|
|
1155 ; ---------------------------------
|
|
1156 ; Function error_oom
|
|
1157 ; ---------------------------------
|
|
0000059C 1158 _error_oom::
|
|
1159 ;src/main.c:282: wc_prwow(&err_out_of_mem);
|
|
0000059C 21r4Dr02 [10] 1160 ld hl, #_err_out_of_mem
|
|
0000059F CDr00r00 [17] 1161 call _wc_prwow
|
|
1162 ;src/main.c:283: wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
|
|
000005A2 3E 32 [ 7] 1163 ld a, #0x32
|
|
000005A4 CDr6Dr05 [17] 1164 call _wait_frames
|
|
1165 ;src/main.c:284: wc_rresb(&err_out_of_mem);
|
|
000005A7 21r4Dr02 [10] 1166 ld hl, #_err_out_of_mem
|
|
000005AA CDr00r00 [17] 1167 call _wc_rresb
|
|
1168 ;src/main.c:285: wc_exit(WC_NEXT_FILE);
|
|
000005AD 3E 02 [ 7] 1169 ld a, #0x02
|
|
1170 ;src/main.c:286: }
|
|
000005AF C3r00r00 [10] 1171 jp _wc_exit
|
|
1172 ;src/main.c:288: void error_playback()
|
|
1173 ; ---------------------------------
|
|
1174 ; Function error_playback
|
|
1175 ; ---------------------------------
|
|
000005B2 1176 _error_playback::
|
|
1177 ;src/main.c:290: wc_prwow(&err_playback);
|
|
000005B2 21r5Fr02 [10] 1178 ld hl, #_err_playback
|
|
000005B5 CDr00r00 [17] 1179 call _wc_prwow
|
|
1180 ;src/main.c:291: wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
|
|
000005B8 3E 32 [ 7] 1181 ld a, #0x32
|
|
000005BA CDr6Dr05 [17] 1182 call _wait_frames
|
|
1183 ;src/main.c:292: wc_rresb(&err_playback);
|
|
000005BD 21r5Fr02 [10] 1184 ld hl, #_err_playback
|
|
000005C0 CDr00r00 [17] 1185 call _wc_rresb
|
|
1186 ;src/main.c:293: wc_exit(WC_NEXT_FILE);
|
|
000005C3 3E 02 [ 7] 1187 ld a, #0x02
|
|
1188 ;src/main.c:294: }
|
|
000005C5 C3r00r00 [10] 1189 jp _wc_exit
|
|
1190 ;src/main.c:301: void copy_file_name()
|
|
1191 ; ---------------------------------
|
|
1192 ; Function copy_file_name
|
|
1193 ; ---------------------------------
|
|
000005C8 1194 _copy_file_name::
|
|
1195 ;src/main.c:303: u8 *src = (u8*)p_file_name;
|
|
000005C8 ED 4Br09r10 [20] 1196 ld bc, (_p_file_name)
|
|
1197 ;src/main.c:306: while (src[i] && i < sizeof(file_name) - 1)
|
|
000005CC 1E 00 [ 7] 1198 ld e, #0x00
|
|
000005CE 1199 00102$:
|
|
000005CE 6B [ 4] 1200 ld l, e
|
|
000005CF 26 00 [ 7] 1201 ld h, #0x00
|
|
000005D1 09 [11] 1202 add hl, bc
|
|
000005D2 56 [ 7] 1203 ld d, (hl)
|
|
1204 ;src/main.c:308: file_name[i] = src[i];
|
|
000005D3 3Er0B [ 7] 1205 ld a, #<(_file_name)
|
|
000005D5 83 [ 4] 1206 add a, e
|
|
000005D6 6F [ 4] 1207 ld l, a
|
|
000005D7 3Es10 [ 7] 1208 ld a, #>(_file_name)
|
|
000005D9 CE 00 [ 7] 1209 adc a, #0x00
|
|
000005DB 67 [ 4] 1210 ld h, a
|
|
1211 ;src/main.c:306: while (src[i] && i < sizeof(file_name) - 1)
|
|
000005DC 7A [ 4] 1212 ld a, d
|
|
000005DD B7 [ 4] 1213 or a, a
|
|
000005DE 28 0A [12] 1214 jr z, 00104$
|
|
000005E0 7B [ 4] 1215 ld a, e
|
|
000005E1 D6 20 [ 7] 1216 sub a, #0x20
|
|
000005E3 30 05 [12] 1217 jr nc, 00104$
|
|
1218 ;src/main.c:308: file_name[i] = src[i];
|
|
000005E5 72 [ 7] 1219 ld (hl), d
|
|
1220 ;src/main.c:309: i++;
|
|
000005E6 1C [ 4] 1221 inc e
|
|
000005E7 C3rCEr05 [10] 1222 jp 00102$
|
|
000005EA 1223 00104$:
|
|
1224 ;src/main.c:311: file_name[i] = 0;
|
|
000005EA 36 00 [10] 1225 ld (hl), #0x00
|
|
1226 ;src/main.c:312: }
|
|
000005EC C9 [10] 1227 ret
|
|
1228 ;src/main.c:320: void xm_draw_static_labels()
|
|
1229 ; ---------------------------------
|
|
1230 ; Function xm_draw_static_labels
|
|
1231 ; ---------------------------------
|
|
000005ED 1232 _xm_draw_static_labels::
|
|
1233 ;src/main.c:322: wc_prsrw_attr(&win_xm, "File:", ROW_FILE, 1, 5, ATTR_CAPTION);
|
|
000005ED 3E 45 [ 7] 1234 ld a, #0x45
|
|
000005EF F5 [11] 1235 push af
|
|
000005F0 33 [ 6] 1236 inc sp
|
|
000005F1 21 05 00 [10] 1237 ld hl, #0x0005
|
|
000005F4 E5 [11] 1238 push hl
|
|
000005F5 21 01 01 [10] 1239 ld hl, #0x101
|
|
000005F8 E5 [11] 1240 push hl
|
|
000005F9 11r17r06 [10] 1241 ld de, #___str_9
|
|
000005FC 21r71r02 [10] 1242 ld hl, #_win_xm
|
|
000005FF CDr00r00 [17] 1243 call _wc_prsrw_attr
|
|
1244 ;src/main.c:323: wc_prsrw(&win_xm, file_name, ROW_FILE, 7, strlen(file_name));
|
|
00000602 21r0Br10 [10] 1245 ld hl, #_file_name
|
|
00000605 CDr00r00 [17] 1246 call _strlen
|
|
00000608 D5 [11] 1247 push de
|
|
00000609 21 01 07 [10] 1248 ld hl, #0x701
|
|
0000060C E5 [11] 1249 push hl
|
|
0000060D 11r0Br10 [10] 1250 ld de, #_file_name
|
|
00000610 21r71r02 [10] 1251 ld hl, #_win_xm
|
|
00000613 CDr00r00 [17] 1252 call _wc_prsrw
|
|
1253 ;src/main.c:324: }
|
|
00000616 C9 [10] 1254 ret
|
|
00000617 1255 ___str_9:
|
|
00000617 46 69 6C 65 3A 1256 .ascii "File:"
|
|
0000061C 00 1257 .db 0x00
|
|
1258 ;src/main.c:333: void put_hex2(char *dst, u8 val)
|
|
1259 ; ---------------------------------
|
|
1260 ; Function put_hex2
|
|
1261 ; ---------------------------------
|
|
0000061D 1262 _put_hex2::
|
|
0000061D DD E5 [15] 1263 push ix
|
|
0000061F DD 21 00 00 [14] 1264 ld ix, #0
|
|
00000623 DD 39 [15] 1265 add ix, sp
|
|
00000625 EB [ 4] 1266 ex de, hl
|
|
1267 ;src/main.c:336: dst[0] = hexch[(val >> 4) & 0xF];
|
|
00000626 01r49r06 [10] 1268 ld bc, #_put_hex2_hexch_10000_106+0
|
|
00000629 DD 7E 04 [19] 1269 ld a, 4 (ix)
|
|
0000062C 07 [ 4] 1270 rlca
|
|
0000062D 07 [ 4] 1271 rlca
|
|
0000062E 07 [ 4] 1272 rlca
|
|
0000062F 07 [ 4] 1273 rlca
|
|
00000630 E6 0F [ 7] 1274 and a, #0xf
|
|
00000632 6F [ 4] 1275 ld l, a
|
|
00000633 26 00 [ 7] 1276 ld h, #0x00
|
|
00000635 09 [11] 1277 add hl, bc
|
|
00000636 7E [ 7] 1278 ld a, (hl)
|
|
00000637 12 [ 7] 1279 ld (de), a
|
|
1280 ;src/main.c:337: dst[1] = hexch[val & 0xF];
|
|
00000638 13 [ 6] 1281 inc de
|
|
00000639 DD 7E 04 [19] 1282 ld a, 4 (ix)
|
|
0000063C E6 0F [ 7] 1283 and a, #0x0f
|
|
0000063E 6F [ 4] 1284 ld l, a
|
|
0000063F 26 00 [ 7] 1285 ld h, #0x00
|
|
00000641 09 [11] 1286 add hl, bc
|
|
00000642 7E [ 7] 1287 ld a, (hl)
|
|
00000643 12 [ 7] 1288 ld (de), a
|
|
1289 ;src/main.c:338: }
|
|
00000644 DD E1 [14] 1290 pop ix
|
|
00000646 E1 [10] 1291 pop hl
|
|
00000647 33 [ 6] 1292 inc sp
|
|
00000648 E9 [ 4] 1293 jp (hl)
|
|
00000649 1294 _put_hex2_hexch_10000_106:
|
|
00000649 30 31 32 33 34 35 36 1295 .ascii "0123456789ABCDEF"
|
|
37 38 39 41 42 43 44
|
|
45 46
|
|
00000659 00 1296 .db 0x00
|
|
1297 ;src/main.c:340: void put_dec3(char *dst, u16 val)
|
|
1298 ; ---------------------------------
|
|
1299 ; Function put_dec3
|
|
1300 ; ---------------------------------
|
|
0000065A 1301 _put_dec3::
|
|
0000065A DD E5 [15] 1302 push ix
|
|
0000065C DD 21 00 00 [14] 1303 ld ix, #0
|
|
00000660 DD 39 [15] 1304 add ix, sp
|
|
00000662 F5 [11] 1305 push af
|
|
00000663 4D [ 4] 1306 ld c, l
|
|
00000664 44 [ 4] 1307 ld b, h
|
|
1308 ;src/main.c:342: dst[0] = '0' + (val / 100) % 10;
|
|
00000665 E1 [10] 1309 pop hl
|
|
00000666 D5 [11] 1310 push de
|
|
00000667 C5 [11] 1311 push bc
|
|
00000668 11 64 00 [10] 1312 ld de, #0x0064
|
|
0000066B DD 6E FE [19] 1313 ld l, -2 (ix)
|
|
0000066E DD 66 FF [19] 1314 ld h, -1 (ix)
|
|
00000671 CDr00r00 [17] 1315 call __divuint
|
|
00000674 EB [ 4] 1316 ex de, hl
|
|
00000675 11 0A 00 [10] 1317 ld de, #0x000a
|
|
00000678 CDr00r00 [17] 1318 call __moduint
|
|
0000067B C1 [10] 1319 pop bc
|
|
0000067C 7B [ 4] 1320 ld a, e
|
|
0000067D C6 30 [ 7] 1321 add a, #0x30
|
|
0000067F 02 [ 7] 1322 ld (bc), a
|
|
1323 ;src/main.c:343: dst[1] = '0' + (val / 10) % 10;
|
|
00000680 69 [ 4] 1324 ld l, c
|
|
00000681 60 [ 4] 1325 ld h, b
|
|
00000682 23 [ 6] 1326 inc hl
|
|
00000683 E5 [11] 1327 push hl
|
|
00000684 C5 [11] 1328 push bc
|
|
00000685 11 0A 00 [10] 1329 ld de, #0x000a
|
|
00000688 DD 6E FE [19] 1330 ld l, -2 (ix)
|
|
0000068B DD 66 FF [19] 1331 ld h, -1 (ix)
|
|
0000068E CDr00r00 [17] 1332 call __divuint
|
|
00000691 EB [ 4] 1333 ex de, hl
|
|
00000692 11 0A 00 [10] 1334 ld de, #0x000a
|
|
00000695 CDr00r00 [17] 1335 call __moduint
|
|
00000698 C1 [10] 1336 pop bc
|
|
00000699 E1 [10] 1337 pop hl
|
|
0000069A 7B [ 4] 1338 ld a, e
|
|
0000069B C6 30 [ 7] 1339 add a, #0x30
|
|
0000069D 77 [ 7] 1340 ld (hl), a
|
|
1341 ;src/main.c:344: dst[2] = '0' + val % 10;
|
|
0000069E 03 [ 6] 1342 inc bc
|
|
0000069F 03 [ 6] 1343 inc bc
|
|
000006A0 C5 [11] 1344 push bc
|
|
000006A1 11 0A 00 [10] 1345 ld de, #0x000a
|
|
000006A4 DD 6E FE [19] 1346 ld l, -2 (ix)
|
|
000006A7 DD 66 FF [19] 1347 ld h, -1 (ix)
|
|
000006AA CDr00r00 [17] 1348 call __moduint
|
|
000006AD C1 [10] 1349 pop bc
|
|
000006AE 7B [ 4] 1350 ld a, e
|
|
000006AF C6 30 [ 7] 1351 add a, #0x30
|
|
000006B1 02 [ 7] 1352 ld (bc), a
|
|
1353 ;src/main.c:345: }
|
|
000006B2 DD F9 [10] 1354 ld sp, ix
|
|
000006B4 DD E1 [14] 1355 pop ix
|
|
000006B6 C9 [10] 1356 ret
|
|
1357 ;src/main.c:347: void put_time(char *dst, u32 sec)
|
|
1358 ; ---------------------------------
|
|
1359 ; Function put_time
|
|
1360 ; ---------------------------------
|
|
000006B7 1361 _put_time::
|
|
000006B7 DD E5 [15] 1362 push ix
|
|
000006B9 DD 21 00 00 [14] 1363 ld ix, #0
|
|
000006BD DD 39 [15] 1364 add ix, sp
|
|
000006BF E5 [11] 1365 push hl
|
|
1366 ;src/main.c:349: u8 m = (sec / 60) % 100;
|
|
000006C0 21 00 00 [10] 1367 ld hl, #0x0000
|
|
000006C3 E5 [11] 1368 push hl
|
|
000006C4 2E 3C [ 7] 1369 ld l, #0x3c
|
|
000006C6 E5 [11] 1370 push hl
|
|
000006C7 DD 5E 04 [19] 1371 ld e, 4 (ix)
|
|
000006CA DD 56 05 [19] 1372 ld d, 5 (ix)
|
|
000006CD DD 6E 06 [19] 1373 ld l, 6 (ix)
|
|
000006D0 DD 66 07 [19] 1374 ld h, 7 (ix)
|
|
000006D3 CDr00r00 [17] 1375 call __divulong
|
|
000006D6 F1 [10] 1376 pop af
|
|
000006D7 F1 [10] 1377 pop af
|
|
000006D8 01 00 00 [10] 1378 ld bc, #0x0000
|
|
000006DB C5 [11] 1379 push bc
|
|
000006DC 0E 64 [ 7] 1380 ld c, #0x64
|
|
000006DE C5 [11] 1381 push bc
|
|
000006DF CDr00r00 [17] 1382 call __modulong
|
|
000006E2 F1 [10] 1383 pop af
|
|
000006E3 F1 [10] 1384 pop af
|
|
000006E4 4B [ 4] 1385 ld c, e
|
|
1386 ;src/main.c:350: u8 s = sec % 60;
|
|
000006E5 C5 [11] 1387 push bc
|
|
000006E6 21 00 00 [10] 1388 ld hl, #0x0000
|
|
000006E9 E5 [11] 1389 push hl
|
|
000006EA 2E 3C [ 7] 1390 ld l, #0x3c
|
|
000006EC E5 [11] 1391 push hl
|
|
000006ED DD 5E 04 [19] 1392 ld e, 4 (ix)
|
|
000006F0 DD 56 05 [19] 1393 ld d, 5 (ix)
|
|
000006F3 DD 6E 06 [19] 1394 ld l, 6 (ix)
|
|
000006F6 DD 66 07 [19] 1395 ld h, 7 (ix)
|
|
000006F9 CDr00r00 [17] 1396 call __modulong
|
|
000006FC F1 [10] 1397 pop af
|
|
000006FD F1 [10] 1398 pop af
|
|
000006FE C1 [10] 1399 pop bc
|
|
1400 ;src/main.c:352: dst[0] = '0' + (m / 10) % 10;
|
|
000006FF 51 [ 4] 1401 ld d, c
|
|
00000700 D5 [11] 1402 push de
|
|
00000701 2E 0A [ 7] 1403 ld l, #0x0a
|
|
00000703 7A [ 4] 1404 ld a, d
|
|
00000704 CDr00r00 [17] 1405 call __divuchar
|
|
00000707 7B [ 4] 1406 ld a, e
|
|
00000708 2E 0A [ 7] 1407 ld l, #0x0a
|
|
0000070A CDr00r00 [17] 1408 call __moduchar
|
|
0000070D 7B [ 4] 1409 ld a, e
|
|
0000070E D1 [10] 1410 pop de
|
|
0000070F C6 30 [ 7] 1411 add a, #0x30
|
|
00000711 E1 [10] 1412 pop hl
|
|
00000712 E5 [11] 1413 push hl
|
|
00000713 77 [ 7] 1414 ld (hl), a
|
|
1415 ;src/main.c:353: dst[1] = '0' + m % 10;
|
|
00000714 C1 [10] 1416 pop bc
|
|
00000715 C5 [11] 1417 push bc
|
|
00000716 03 [ 6] 1418 inc bc
|
|
00000717 C5 [11] 1419 push bc
|
|
00000718 D5 [11] 1420 push de
|
|
00000719 2E 0A [ 7] 1421 ld l, #0x0a
|
|
0000071B 7A [ 4] 1422 ld a, d
|
|
0000071C CDr00r00 [17] 1423 call __moduchar
|
|
0000071F 7B [ 4] 1424 ld a, e
|
|
00000720 D1 [10] 1425 pop de
|
|
00000721 C1 [10] 1426 pop bc
|
|
00000722 C6 30 [ 7] 1427 add a, #0x30
|
|
00000724 02 [ 7] 1428 ld (bc), a
|
|
1429 ;src/main.c:354: dst[2] = ':';
|
|
00000725 E1 [10] 1430 pop hl
|
|
00000726 E5 [11] 1431 push hl
|
|
00000727 23 [ 6] 1432 inc hl
|
|
00000728 23 [ 6] 1433 inc hl
|
|
00000729 36 3A [10] 1434 ld (hl), #0x3a
|
|
1435 ;src/main.c:355: dst[3] = '0' + (s / 10) % 10;
|
|
0000072B C1 [10] 1436 pop bc
|
|
0000072C C5 [11] 1437 push bc
|
|
0000072D 03 [ 6] 1438 inc bc
|
|
0000072E 03 [ 6] 1439 inc bc
|
|
0000072F 03 [ 6] 1440 inc bc
|
|
00000730 C5 [11] 1441 push bc
|
|
00000731 D5 [11] 1442 push de
|
|
00000732 2E 0A [ 7] 1443 ld l, #0x0a
|
|
00000734 7B [ 4] 1444 ld a, e
|
|
00000735 CDr00r00 [17] 1445 call __divuchar
|
|
00000738 7B [ 4] 1446 ld a, e
|
|
00000739 2E 0A [ 7] 1447 ld l, #0x0a
|
|
0000073B CDr00r00 [17] 1448 call __moduchar
|
|
0000073E 7B [ 4] 1449 ld a, e
|
|
0000073F D1 [10] 1450 pop de
|
|
00000740 C1 [10] 1451 pop bc
|
|
00000741 C6 30 [ 7] 1452 add a, #0x30
|
|
00000743 02 [ 7] 1453 ld (bc), a
|
|
1454 ;src/main.c:356: dst[4] = '0' + s % 10;
|
|
00000744 DD 7E FE [19] 1455 ld a, -2 (ix)
|
|
00000747 C6 04 [ 7] 1456 add a, #0x04
|
|
00000749 4F [ 4] 1457 ld c, a
|
|
0000074A DD 7E FF [19] 1458 ld a, -1 (ix)
|
|
0000074D CE 00 [ 7] 1459 adc a, #0x00
|
|
0000074F 47 [ 4] 1460 ld b, a
|
|
00000750 C5 [11] 1461 push bc
|
|
00000751 2E 0A [ 7] 1462 ld l, #0x0a
|
|
00000753 7B [ 4] 1463 ld a, e
|
|
00000754 CDr00r00 [17] 1464 call __moduchar
|
|
00000757 7B [ 4] 1465 ld a, e
|
|
00000758 C1 [10] 1466 pop bc
|
|
00000759 C6 30 [ 7] 1467 add a, #0x30
|
|
0000075B 02 [ 7] 1468 ld (bc), a
|
|
1469 ;src/main.c:357: }
|
|
0000075C DD F9 [10] 1470 ld sp, ix
|
|
0000075E DD E1 [14] 1471 pop ix
|
|
00000760 E1 [10] 1472 pop hl
|
|
00000761 F1 [10] 1473 pop af
|
|
00000762 F1 [10] 1474 pop af
|
|
00000763 E9 [ 4] 1475 jp (hl)
|
|
1476 ;src/main.c:359: void xm_draw_stats_labels()
|
|
1477 ; ---------------------------------
|
|
1478 ; Function xm_draw_stats_labels
|
|
1479 ; ---------------------------------
|
|
00000764 1480 _xm_draw_stats_labels::
|
|
1481 ;src/main.c:361: wc_prsrw(&win_xm, "Pattern:#", ROW_STATS, 1, 9);
|
|
00000764 21 09 00 [10] 1482 ld hl, #0x0009
|
|
00000767 E5 [11] 1483 push hl
|
|
00000768 21 03 01 [10] 1484 ld hl, #0x103
|
|
0000076B E5 [11] 1485 push hl
|
|
0000076C 11rBAr07 [10] 1486 ld de, #___str_11
|
|
0000076F 21r71r02 [10] 1487 ld hl, #_win_xm
|
|
00000772 CDr00r00 [17] 1488 call _wc_prsrw
|
|
1489 ;src/main.c:362: wc_prsrw(&win_xm, " Row:#", ROW_STATS, 12, 7);
|
|
00000775 21 07 00 [10] 1490 ld hl, #0x0007
|
|
00000778 E5 [11] 1491 push hl
|
|
00000779 21 03 0C [10] 1492 ld hl, #0xc03
|
|
0000077C E5 [11] 1493 push hl
|
|
0000077D 11rC4r07 [10] 1494 ld de, #___str_12
|
|
00000780 21r71r02 [10] 1495 ld hl, #_win_xm
|
|
00000783 CDr00r00 [17] 1496 call _wc_prsrw
|
|
1497 ;src/main.c:363: wc_prsrw(&win_xm, " BPM:", ROW_STATS, 21, 6);
|
|
00000786 21 06 00 [10] 1498 ld hl, #0x0006
|
|
00000789 E5 [11] 1499 push hl
|
|
0000078A 21 03 15 [10] 1500 ld hl, #0x1503
|
|
0000078D E5 [11] 1501 push hl
|
|
0000078E 11rCCr07 [10] 1502 ld de, #___str_13
|
|
00000791 21r71r02 [10] 1503 ld hl, #_win_xm
|
|
00000794 CDr00r00 [17] 1504 call _wc_prsrw
|
|
1505 ;src/main.c:365: wc_prsrw(&win_xm, "Time:", ROW_TIME, 1, 5);
|
|
00000797 21 05 00 [10] 1506 ld hl, #0x0005
|
|
0000079A E5 [11] 1507 push hl
|
|
0000079B 21 05 01 [10] 1508 ld hl, #0x105
|
|
0000079E E5 [11] 1509 push hl
|
|
0000079F 11rD3r07 [10] 1510 ld de, #___str_14
|
|
000007A2 21r71r02 [10] 1511 ld hl, #_win_xm
|
|
000007A5 CDr00r00 [17] 1512 call _wc_prsrw
|
|
1513 ;src/main.c:366: wc_prsrw(&win_xm, " / ", ROW_TIME, 12, 3);
|
|
000007A8 21 03 00 [10] 1514 ld hl, #0x0003
|
|
000007AB E5 [11] 1515 push hl
|
|
000007AC 21 05 0C [10] 1516 ld hl, #0xc05
|
|
000007AF E5 [11] 1517 push hl
|
|
000007B0 11rD9r07 [10] 1518 ld de, #___str_15
|
|
000007B3 21r71r02 [10] 1519 ld hl, #_win_xm
|
|
000007B6 CDr00r00 [17] 1520 call _wc_prsrw
|
|
1521 ;src/main.c:367: }
|
|
000007B9 C9 [10] 1522 ret
|
|
000007BA 1523 ___str_11:
|
|
000007BA 50 61 74 74 65 72 6E 1524 .ascii "Pattern:#"
|
|
3A 23
|
|
000007C3 00 1525 .db 0x00
|
|
000007C4 1526 ___str_12:
|
|
000007C4 20 20 52 6F 77 3A 23 1527 .ascii " Row:#"
|
|
000007CB 00 1528 .db 0x00
|
|
000007CC 1529 ___str_13:
|
|
000007CC 20 20 42 50 4D 3A 1530 .ascii " BPM:"
|
|
000007D2 00 1531 .db 0x00
|
|
000007D3 1532 ___str_14:
|
|
000007D3 54 69 6D 65 3A 1533 .ascii "Time:"
|
|
000007D8 00 1534 .db 0x00
|
|
000007D9 1535 ___str_15:
|
|
000007D9 20 2F 20 1536 .ascii " / "
|
|
000007DC 00 1537 .db 0x00
|
|
1538 ;src/main.c:386: void draw_progress_bar(u32 samples, u32 total)
|
|
1539 ; ---------------------------------
|
|
1540 ; Function draw_progress_bar
|
|
1541 ; ---------------------------------
|
|
000007DD 1542 _draw_progress_bar::
|
|
000007DD DD E5 [15] 1543 push ix
|
|
000007DF DD 21 00 00 [14] 1544 ld ix, #0
|
|
000007E3 DD 39 [15] 1545 add ix, sp
|
|
000007E5 4B [ 4] 1546 ld c, e
|
|
000007E6 42 [ 4] 1547 ld b, d
|
|
000007E7 EB [ 4] 1548 ex de, hl
|
|
1549 ;src/main.c:390: if (total)
|
|
000007E8 DD 7E 07 [19] 1550 ld a, 7 (ix)
|
|
000007EB DD B6 06 [19] 1551 or a, 6 (ix)
|
|
000007EE DD B6 05 [19] 1552 or a, 5 (ix)
|
|
000007F1 DD B6 04 [19] 1553 or a, 4 (ix)
|
|
000007F4 28 30 [12] 1554 jr z, 00104$
|
|
1555 ;src/main.c:392: filled = (u16)(((u32)samples * BAR_WIDTH) / total);
|
|
000007F6 D5 [11] 1556 push de
|
|
000007F7 C5 [11] 1557 push bc
|
|
000007F8 11 22 00 [10] 1558 ld de, #0x0022
|
|
000007FB 21 00 00 [10] 1559 ld hl, #0x0000
|
|
000007FE CDr00r00 [17] 1560 call __mullong
|
|
00000801 F1 [10] 1561 pop af
|
|
00000802 F1 [10] 1562 pop af
|
|
00000803 DD 4E 06 [19] 1563 ld c, 6 (ix)
|
|
00000806 DD 46 07 [19] 1564 ld b, 7 (ix)
|
|
00000809 C5 [11] 1565 push bc
|
|
0000080A DD 4E 04 [19] 1566 ld c, 4 (ix)
|
|
0000080D DD 46 05 [19] 1567 ld b, 5 (ix)
|
|
00000810 C5 [11] 1568 push bc
|
|
00000811 CDr00r00 [17] 1569 call __divulong
|
|
00000814 F1 [10] 1570 pop af
|
|
00000815 F1 [10] 1571 pop af
|
|
1572 ;src/main.c:393: if (filled > BAR_WIDTH)
|
|
00000816 4B [ 4] 1573 ld c,e
|
|
00000817 42 [ 4] 1574 ld b,d
|
|
00000818 3E 22 [ 7] 1575 ld a, #0x22
|
|
0000081A BB [ 4] 1576 cp a, e
|
|
0000081B 3E 00 [ 7] 1577 ld a, #0x00
|
|
0000081D 9A [ 4] 1578 sbc a, d
|
|
0000081E 30 09 [12] 1579 jr nc, 00121$
|
|
1580 ;src/main.c:394: filled = BAR_WIDTH;
|
|
00000820 01 22 00 [10] 1581 ld bc, #0x0022
|
|
00000823 C3r29r08 [10] 1582 jp 00121$
|
|
00000826 1583 00104$:
|
|
1584 ;src/main.c:397: filled = 0; // total length unknown (measurement timed out) - show empty
|
|
00000826 01 00 00 [10] 1585 ld bc, #0x0000
|
|
1586 ;src/main.c:399: for (i = 0; i < BAR_WIDTH; i++)
|
|
00000829 1587 00121$:
|
|
00000829 11 00 00 [10] 1588 ld de, #0x0000
|
|
0000082C 1589 00107$:
|
|
1590 ;src/main.c:400: barbuf[i] = (i < filled) ? BAR_FILLED_CH : BAR_EMPTY_CH;
|
|
0000082C 21r3Cr10 [10] 1591 ld hl, #_barbuf
|
|
0000082F 19 [11] 1592 add hl, de
|
|
00000830 7B [ 4] 1593 ld a, e
|
|
00000831 91 [ 4] 1594 sub a, c
|
|
00000832 7A [ 4] 1595 ld a, d
|
|
00000833 98 [ 4] 1596 sbc a, b
|
|
00000834 30 05 [12] 1597 jr nc, 00111$
|
|
00000836 3E 3D [ 7] 1598 ld a, #0x3d
|
|
00000838 C3r3Dr08 [10] 1599 jp 00112$
|
|
0000083B 1600 00111$:
|
|
0000083B 3E 2D [ 7] 1601 ld a, #0x2d
|
|
0000083D 1602 00112$:
|
|
0000083D 77 [ 7] 1603 ld (hl), a
|
|
1604 ;src/main.c:399: for (i = 0; i < BAR_WIDTH; i++)
|
|
0000083E 13 [ 6] 1605 inc de
|
|
0000083F 6B [ 4] 1606 ld l, e
|
|
00000840 62 [ 4] 1607 ld h, d
|
|
00000841 7D [ 4] 1608 ld a, l
|
|
00000842 D6 22 [ 7] 1609 sub a, #0x22
|
|
00000844 7C [ 4] 1610 ld a, h
|
|
00000845 DE 00 [ 7] 1611 sbc a, #0x00
|
|
00000847 38 E3 [12] 1612 jr c, 00107$
|
|
1613 ;src/main.c:402: wc_prsrw(&win_xm, barbuf, ROW_BAR, BAR_X, BAR_WIDTH);
|
|
00000849 21 22 00 [10] 1614 ld hl, #0x0022
|
|
0000084C E5 [11] 1615 push hl
|
|
0000084D 21 06 01 [10] 1616 ld hl, #0x106
|
|
00000850 E5 [11] 1617 push hl
|
|
00000851 11r3Cr10 [10] 1618 ld de, #_barbuf
|
|
00000854 21r71r02 [10] 1619 ld hl, #_win_xm
|
|
00000857 CDr00r00 [17] 1620 call _wc_prsrw
|
|
1621 ;src/main.c:403: }
|
|
0000085A DD E1 [14] 1622 pop ix
|
|
0000085C E1 [10] 1623 pop hl
|
|
0000085D F1 [10] 1624 pop af
|
|
0000085E F1 [10] 1625 pop af
|
|
0000085F E9 [ 4] 1626 jp (hl)
|
|
1627 ;src/main.c:405: void xm_update_info()
|
|
1628 ; ---------------------------------
|
|
1629 ; Function xm_update_info
|
|
1630 ; ---------------------------------
|
|
00000860 1631 _xm_update_info::
|
|
00000860 DD E5 [15] 1632 push ix
|
|
00000862 DD 21 00 00 [14] 1633 ld ix, #0
|
|
00000866 DD 39 [15] 1634 add ix, sp
|
|
00000868 21 F8 FF [10] 1635 ld hl, #-8
|
|
0000086B 39 [11] 1636 add hl, sp
|
|
0000086C F9 [ 6] 1637 ld sp, hl
|
|
1638 ;src/main.c:411: esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
|
0000086D 3Ar30r10 [13] 1639 ld a, (_xm_handle)
|
|
00000870 6F [ 4] 1640 ld l, a
|
|
00000871 3E 0B [ 7] 1641 ld a, #0x0b
|
|
00000873 CDrDAr00 [17] 1642 call _esp_wr_reg8
|
|
1643 ;src/main.c:412: esp_cmd(ESP_CMD_TRACK_GET_INFO);
|
|
00000876 3E A8 [ 7] 1644 ld a, #0xa8
|
|
00000878 CDr0Er00 [17] 1645 call _esp_cmd
|
|
1646 ;src/main.c:413: esp_wait_busy(2000);
|
|
0000087B 11 D0 07 [10] 1647 ld de, #0x07d0
|
|
0000087E 21 00 00 [10] 1648 ld hl, #0x0000
|
|
00000881 CDrDEr01 [17] 1649 call _esp_wait_busy
|
|
1650 ;src/main.c:418: status = esp_rd_reg8(ESP_REG_TRACK_STATUS);
|
|
00000884 3E 28 [ 7] 1651 ld a, #0x28
|
|
00000886 CDr27r00 [17] 1652 call _esp_rd_reg8
|
|
00000889 DD 77 FF [19] 1653 ld -1 (ix), a
|
|
1654 ;src/main.c:419: if (last_track_status == TRACK_OBJ_ST_PLAYING && status == TRACK_OBJ_ST_STOPPED)
|
|
0000088C 3Ar31r10 [13] 1655 ld a, (_last_track_status)
|
|
0000088F D6 21 [ 7] 1656 sub a, #0x21
|
|
00000891 20 20 [12] 1657 jr nz, 00102$
|
|
00000893 DD 7E FF [19] 1658 ld a, -1 (ix)
|
|
00000896 D6 20 [ 7] 1659 sub a, #0x20
|
|
00000898 20 19 [12] 1660 jr nz, 00102$
|
|
1661 ;src/main.c:421: esp_cmd(ESP_CMD_KILL_OBJECTS);
|
|
0000089A 3E E4 [ 7] 1662 ld a, #0xe4
|
|
0000089C CDr0Er00 [17] 1663 call _esp_cmd
|
|
1664 ;src/main.c:422: esp_wait_busy(10000);
|
|
0000089F 11 10 27 [10] 1665 ld de, #0x2710
|
|
000008A2 21 00 00 [10] 1666 ld hl, #0x0000
|
|
000008A5 CDrDEr01 [17] 1667 call _esp_wait_busy
|
|
1668 ;src/main.c:423: wc_rresb(&win_xm);
|
|
000008A8 21r71r02 [10] 1669 ld hl, #_win_xm
|
|
000008AB CDr00r00 [17] 1670 call _wc_rresb
|
|
1671 ;src/main.c:424: wc_exit(WC_NEXT_FILE);
|
|
000008AE 3E 02 [ 7] 1672 ld a, #0x02
|
|
000008B0 CDr00r00 [17] 1673 call _wc_exit
|
|
000008B3 1674 00102$:
|
|
1675 ;src/main.c:426: last_track_status = status;
|
|
000008B3 DD 7E FF [19] 1676 ld a, -1 (ix)
|
|
000008B6 32r31r10 [13] 1677 ld (#_last_track_status), a
|
|
1678 ;src/main.c:428: pattern = esp_rd_reg8(ESP_REG_TRACK_PATTERN);
|
|
000008B9 3E 2B [ 7] 1679 ld a, #0x2b
|
|
000008BB CDr27r00 [17] 1680 call _esp_rd_reg8
|
|
000008BE DD 77 FA [19] 1681 ld -6 (ix), a
|
|
1682 ;src/main.c:429: row = esp_rd_reg8(ESP_REG_TRACK_ROW);
|
|
000008C1 3E 2C [ 7] 1683 ld a, #0x2c
|
|
000008C3 CDr27r00 [17] 1684 call _esp_rd_reg8
|
|
000008C6 DD 77 FB [19] 1685 ld -5 (ix), a
|
|
1686 ;src/main.c:430: esp_rd_regs(ESP_REG_TRACK_BPM, &bpm, 2);
|
|
000008C9 3E 02 [ 7] 1687 ld a, #0x02
|
|
000008CB F5 [11] 1688 push af
|
|
000008CC 33 [ 6] 1689 inc sp
|
|
000008CD 21 01 00 [10] 1690 ld hl, #1
|
|
000008D0 39 [11] 1691 add hl, sp
|
|
000008D1 EB [ 4] 1692 ex de, hl
|
|
000008D2 3E 31 [ 7] 1693 ld a, #0x31
|
|
000008D4 CDrAEr00 [17] 1694 call _esp_rd_regs
|
|
1695 ;src/main.c:431: samples = esp_rd_reg32(ESP_REG_TRACK_SAMPLES);
|
|
000008D7 3E 2D [ 7] 1696 ld a, #0x2d
|
|
000008D9 CDr40r00 [17] 1697 call _esp_rd_reg32
|
|
000008DC DD 73 FC [19] 1698 ld -4 (ix), e
|
|
000008DF DD 72 FD [19] 1699 ld -3 (ix), d
|
|
000008E2 DD 75 FE [19] 1700 ld -2 (ix), l
|
|
000008E5 DD 74 FF [19] 1701 ld -1 (ix), h
|
|
1702 ;src/main.c:433: if (!total_samples)
|
|
000008E8 3Ar2Fr10 [13] 1703 ld a, (_total_samples+3)
|
|
000008EB FD 21r2Cr10 [14] 1704 ld iy, #_total_samples
|
|
000008EF FD B6 02 [19] 1705 or a, 2 (iy)
|
|
000008F2 FD B6 01 [19] 1706 or a, 1 (iy)
|
|
000008F5 FD B6 00 [19] 1707 or a, 0 (iy)
|
|
000008F8 20 0C [12] 1708 jr nz, 00105$
|
|
1709 ;src/main.c:434: total_samples = esp_rd_reg32(ESP_REG_TRACK_TOTAL_SAMPLES);
|
|
000008FA 3E 36 [ 7] 1710 ld a, #0x36
|
|
000008FC CDr40r00 [17] 1711 call _esp_rd_reg32
|
|
000008FF ED 53r2Cr10 [20] 1712 ld (_total_samples), de
|
|
00000903 22r2Er10 [16] 1713 ld (_total_samples + 2), hl
|
|
00000906 1714 00105$:
|
|
1715 ;src/main.c:436: put_hex2(hexbuf, pattern);
|
|
00000906 DD 7E FA [19] 1716 ld a, -6 (ix)
|
|
00000909 F5 [11] 1717 push af
|
|
0000090A 33 [ 6] 1718 inc sp
|
|
0000090B 21r32r10 [10] 1719 ld hl, #_hexbuf
|
|
0000090E CDr1Dr06 [17] 1720 call _put_hex2
|
|
1721 ;src/main.c:437: wc_prsrw(&win_xm, hexbuf, ROW_STATS, 10, 2);
|
|
00000911 21 02 00 [10] 1722 ld hl, #0x0002
|
|
00000914 E5 [11] 1723 push hl
|
|
00000915 21 03 0A [10] 1724 ld hl, #0xa03
|
|
00000918 E5 [11] 1725 push hl
|
|
00000919 11r32r10 [10] 1726 ld de, #_hexbuf
|
|
0000091C 21r71r02 [10] 1727 ld hl, #_win_xm
|
|
0000091F CDr00r00 [17] 1728 call _wc_prsrw
|
|
1729 ;src/main.c:439: put_hex2(hexbuf, row);
|
|
00000922 DD 7E FB [19] 1730 ld a, -5 (ix)
|
|
00000925 F5 [11] 1731 push af
|
|
00000926 33 [ 6] 1732 inc sp
|
|
00000927 21r32r10 [10] 1733 ld hl, #_hexbuf
|
|
0000092A CDr1Dr06 [17] 1734 call _put_hex2
|
|
1735 ;src/main.c:440: wc_prsrw(&win_xm, hexbuf, ROW_STATS, 19, 2);
|
|
0000092D 21 02 00 [10] 1736 ld hl, #0x0002
|
|
00000930 E5 [11] 1737 push hl
|
|
00000931 21 03 13 [10] 1738 ld hl, #0x1303
|
|
00000934 E5 [11] 1739 push hl
|
|
00000935 11r32r10 [10] 1740 ld de, #_hexbuf
|
|
00000938 21r71r02 [10] 1741 ld hl, #_win_xm
|
|
0000093B CDr00r00 [17] 1742 call _wc_prsrw
|
|
1743 ;src/main.c:442: put_dec3(decbuf, bpm);
|
|
0000093E D1 [10] 1744 pop de
|
|
0000093F D5 [11] 1745 push de
|
|
00000940 21r34r10 [10] 1746 ld hl, #_decbuf
|
|
00000943 CDr5Ar06 [17] 1747 call _put_dec3
|
|
1748 ;src/main.c:443: wc_prsrw(&win_xm, decbuf, ROW_STATS, 27, 3);
|
|
00000946 21 03 00 [10] 1749 ld hl, #0x0003
|
|
00000949 E5 [11] 1750 push hl
|
|
0000094A 21 03 1B [10] 1751 ld hl, #0x1b03
|
|
0000094D E5 [11] 1752 push hl
|
|
0000094E 11r34r10 [10] 1753 ld de, #_decbuf
|
|
00000951 21r71r02 [10] 1754 ld hl, #_win_xm
|
|
00000954 CDr00r00 [17] 1755 call _wc_prsrw
|
|
1756 ;src/main.c:445: put_time(timebuf, samples / 44100UL);
|
|
00000957 21 00 00 [10] 1757 ld hl, #0x0000
|
|
0000095A E5 [11] 1758 push hl
|
|
0000095B 21 44 AC [10] 1759 ld hl, #0xac44
|
|
0000095E E5 [11] 1760 push hl
|
|
0000095F DD 5E FC [19] 1761 ld e, -4 (ix)
|
|
00000962 DD 56 FD [19] 1762 ld d, -3 (ix)
|
|
00000965 DD 6E FE [19] 1763 ld l, -2 (ix)
|
|
00000968 DD 66 FF [19] 1764 ld h, -1 (ix)
|
|
0000096B CDr00r00 [17] 1765 call __divulong
|
|
0000096E F1 [10] 1766 pop af
|
|
0000096F E3 [19] 1767 ex (sp),hl
|
|
00000970 D5 [11] 1768 push de
|
|
00000971 21r37r10 [10] 1769 ld hl, #_timebuf
|
|
00000974 CDrB7r06 [17] 1770 call _put_time
|
|
1771 ;src/main.c:446: wc_prsrw(&win_xm, timebuf, ROW_TIME, 7, 5);
|
|
00000977 21 05 00 [10] 1772 ld hl, #0x0005
|
|
0000097A E5 [11] 1773 push hl
|
|
0000097B 21 05 07 [10] 1774 ld hl, #0x705
|
|
0000097E E5 [11] 1775 push hl
|
|
0000097F 11r37r10 [10] 1776 ld de, #_timebuf
|
|
00000982 21r71r02 [10] 1777 ld hl, #_win_xm
|
|
00000985 CDr00r00 [17] 1778 call _wc_prsrw
|
|
1779 ;src/main.c:448: put_time(timebuf, total_samples / 44100UL);
|
|
00000988 21 00 00 [10] 1780 ld hl, #0x0000
|
|
0000098B E5 [11] 1781 push hl
|
|
0000098C 21 44 AC [10] 1782 ld hl, #0xac44
|
|
0000098F E5 [11] 1783 push hl
|
|
00000990 ED 5Br2Cr10 [20] 1784 ld de, (_total_samples)
|
|
00000994 2Ar2Er10 [16] 1785 ld hl, (_total_samples + 2)
|
|
00000997 CDr00r00 [17] 1786 call __divulong
|
|
0000099A F1 [10] 1787 pop af
|
|
0000099B E3 [19] 1788 ex (sp),hl
|
|
0000099C D5 [11] 1789 push de
|
|
0000099D 21r37r10 [10] 1790 ld hl, #_timebuf
|
|
000009A0 CDrB7r06 [17] 1791 call _put_time
|
|
1792 ;src/main.c:449: wc_prsrw(&win_xm, timebuf, ROW_TIME, 15, 5);
|
|
000009A3 21 05 00 [10] 1793 ld hl, #0x0005
|
|
000009A6 E5 [11] 1794 push hl
|
|
000009A7 21 05 0F [10] 1795 ld hl, #0xf05
|
|
000009AA E5 [11] 1796 push hl
|
|
000009AB 11r37r10 [10] 1797 ld de, #_timebuf
|
|
000009AE 21r71r02 [10] 1798 ld hl, #_win_xm
|
|
000009B1 CDr00r00 [17] 1799 call _wc_prsrw
|
|
1800 ;src/main.c:451: draw_progress_bar(samples, total_samples);
|
|
000009B4 2Ar2Er10 [16] 1801 ld hl, (_total_samples + 2)
|
|
000009B7 E5 [11] 1802 push hl
|
|
000009B8 2Ar2Cr10 [16] 1803 ld hl, (_total_samples)
|
|
000009BB E5 [11] 1804 push hl
|
|
000009BC DD 5E FC [19] 1805 ld e, -4 (ix)
|
|
000009BF DD 56 FD [19] 1806 ld d, -3 (ix)
|
|
000009C2 DD 6E FE [19] 1807 ld l, -2 (ix)
|
|
000009C5 DD 66 FF [19] 1808 ld h, -1 (ix)
|
|
000009C8 CDrDDr07 [17] 1809 call _draw_progress_bar
|
|
1810 ;src/main.c:453: }
|
|
000009CB DD F9 [10] 1811 ld sp, ix
|
|
000009CD DD E1 [14] 1812 pop ix
|
|
000009CF C9 [10] 1813 ret
|
|
1814 ;src/main.c:455: void main_start()
|
|
1815 ; ---------------------------------
|
|
1816 ; Function main_start
|
|
1817 ; ---------------------------------
|
|
000009D0 1818 _main_start::
|
|
000009D0 3B [ 6] 1819 dec sp
|
|
1820 ;src/main.c:463: wc_set_freq_14mhz();
|
|
000009D1 CDr05r00 [17] 1821 call _wc_set_freq_14mhz
|
|
1822 ;src/main.c:465: copy_file_name();
|
|
000009D4 CDrC8r05 [17] 1823 call _copy_file_name
|
|
1824 ;src/main.c:467: if (state_esp == 0xFF)
|
|
000009D7 3Ar00r00 [13] 1825 ld a, (_state_esp)
|
|
000009DA 3C [ 4] 1826 inc a
|
|
000009DB 20 0D [12] 1827 jr nz, 00102$
|
|
1828 ;src/main.c:468: state_esp = esp_init() ? 1 : 2;
|
|
000009DD CDr2Er02 [17] 1829 call _esp_init
|
|
000009E0 B7 [ 4] 1830 or a, a
|
|
000009E1 3E 01 [ 7] 1831 ld a, #0x01
|
|
000009E3 20 02 [12] 1832 jr nz, 00124$
|
|
000009E5 3E 02 [ 7] 1833 ld a, #0x02
|
|
000009E7 1834 00124$:
|
|
000009E7 32r00r00 [13] 1835 ld (#_state_esp), a
|
|
000009EA 1836 00102$:
|
|
1837 ;src/main.c:470: if (state_esp != 1)
|
|
000009EA 3Ar00r00 [13] 1838 ld a, (_state_esp)
|
|
000009ED 3D [ 4] 1839 dec a
|
|
000009EE 28 07 [12] 1840 jr z, 00104$
|
|
1841 ;src/main.c:472: error_esp();
|
|
000009F0 33 [ 6] 1842 inc sp
|
|
000009F1 C3r89r05 [10] 1843 jp _error_esp
|
|
1844 ;src/main.c:473: return;
|
|
000009F4 C3rDBr0A [10] 1845 jp 00121$
|
|
000009F7 1846 00104$:
|
|
1847 ;src/main.c:476: total_samples = 0;
|
|
000009F7 AF [ 4] 1848 xor a, a
|
|
000009F8 32r2Cr10 [13] 1849 ld (_total_samples+0), a
|
|
000009FB 32r2Dr10 [13] 1850 ld (_total_samples+1), a
|
|
000009FE 32r2Er10 [13] 1851 ld (_total_samples+2), a
|
|
00000A01 32r2Fr10 [13] 1852 ld (_total_samples+3), a
|
|
1853 ;src/main.c:478: if (!play_xm())
|
|
00000A04 CDr32r03 [17] 1854 call _play_xm
|
|
00000A07 B7 [ 4] 1855 or a, a
|
|
00000A08 20 12 [12] 1856 jr nz, 00109$
|
|
1857 ;src/main.c:480: if (last_esp_status == ESP_ERR_OUT_OF_MEMORY)
|
|
00000A0A 3Ar08r10 [13] 1858 ld a, (_last_esp_status)
|
|
00000A0D D6 99 [ 7] 1859 sub a, #0x99
|
|
00000A0F 20 07 [12] 1860 jr nz, 00106$
|
|
1861 ;src/main.c:481: error_oom();
|
|
00000A11 33 [ 6] 1862 inc sp
|
|
00000A12 C3r9Cr05 [10] 1863 jp _error_oom
|
|
00000A15 C3rDBr0A [10] 1864 jp 00121$
|
|
00000A18 1865 00106$:
|
|
1866 ;src/main.c:483: error_playback();
|
|
00000A18 33 [ 6] 1867 inc sp
|
|
1868 ;src/main.c:484: return;
|
|
00000A19 C3rB2r05 [10] 1869 jp _error_playback
|
|
00000A1C 1870 00109$:
|
|
1871 ;src/main.c:490: wc_prwow(&win_xm);
|
|
00000A1C 21r71r02 [10] 1872 ld hl, #_win_xm
|
|
00000A1F CDr00r00 [17] 1873 call _wc_prwow
|
|
1874 ;src/main.c:491: xm_draw_static_labels();
|
|
00000A22 CDrEDr05 [17] 1875 call _xm_draw_static_labels
|
|
1876 ;src/main.c:492: xm_draw_stats_labels();
|
|
00000A25 CDr64r07 [17] 1877 call _xm_draw_stats_labels
|
|
1878 ;src/main.c:493: last_track_status = TRACK_OBJ_ST_PLAYING;
|
|
00000A28 21r31r10 [10] 1879 ld hl, #_last_track_status
|
|
00000A2B 36 21 [10] 1880 ld (hl), #0x21
|
|
1881 ;src/main.c:494: xm_update_info();
|
|
00000A2D CDr60r08 [17] 1882 call _xm_update_info
|
|
1883 ;src/main.c:496: frame_ctr = 0;
|
|
00000A30 FD 21 00 00 [14] 1884 ld iy, #0
|
|
00000A34 FD 39 [15] 1885 add iy, sp
|
|
00000A36 FD 36 00 00 [19] 1886 ld 0 (iy), #0x00
|
|
1887 ;src/main.c:499: while (1)
|
|
00000A3A 1888 00119$:
|
|
1889 ;src/main.c:503: __endasm;
|
|
00000A3A 76 [ 4] 1890 halt
|
|
1891 ;src/main.c:505: if (++frame_ctr >= 10) // ~5 updates/sec at 50Hz
|
|
00000A3B FD 21 00 00 [14] 1892 ld iy, #0
|
|
00000A3F FD 39 [15] 1893 add iy, sp
|
|
00000A41 FD 34 00 [23] 1894 inc 0 (iy)
|
|
00000A44 FD 7E 00 [19] 1895 ld a, 0 (iy)
|
|
00000A47 D6 0A [ 7] 1896 sub a, #0x0a
|
|
00000A49 38 07 [12] 1897 jr c, 00111$
|
|
1898 ;src/main.c:507: frame_ctr = 0;
|
|
00000A4B FD 36 00 00 [19] 1899 ld 0 (iy), #0x00
|
|
1900 ;src/main.c:508: xm_update_info();
|
|
00000A4F CDr60r08 [17] 1901 call _xm_update_info
|
|
00000A52 1902 00111$:
|
|
1903 ;src/main.c:511: if (wc_key_pgdn()) // PgDn - unload and go to next file
|
|
00000A52 CDr00r00 [17] 1904 call _wc_key_pgdn
|
|
00000A55 B7 [ 4] 1905 or a, a
|
|
00000A56 28 27 [12] 1906 jr z, 00113$
|
|
1907 ;src/main.c:513: esp_cmd(ESP_CMD_TRACK_STOP);
|
|
00000A58 3E A2 [ 7] 1908 ld a, #0xa2
|
|
00000A5A CDr0Er00 [17] 1909 call _esp_cmd
|
|
1910 ;src/main.c:514: esp_wait_busy(10000);
|
|
00000A5D 11 10 27 [10] 1911 ld de, #0x2710
|
|
00000A60 21 00 00 [10] 1912 ld hl, #0x0000
|
|
00000A63 CDrDEr01 [17] 1913 call _esp_wait_busy
|
|
1914 ;src/main.c:515: esp_cmd(ESP_CMD_KILL_OBJECTS);
|
|
00000A66 3E E4 [ 7] 1915 ld a, #0xe4
|
|
00000A68 CDr0Er00 [17] 1916 call _esp_cmd
|
|
1917 ;src/main.c:516: esp_wait_busy(10000);
|
|
00000A6B 11 10 27 [10] 1918 ld de, #0x2710
|
|
00000A6E 21 00 00 [10] 1919 ld hl, #0x0000
|
|
00000A71 CDrDEr01 [17] 1920 call _esp_wait_busy
|
|
1921 ;src/main.c:517: wc_rresb(&win_xm);
|
|
00000A74 21r71r02 [10] 1922 ld hl, #_win_xm
|
|
00000A77 CDr00r00 [17] 1923 call _wc_rresb
|
|
1924 ;src/main.c:518: wc_exit(WC_NEXT_FILE);
|
|
00000A7A 3E 02 [ 7] 1925 ld a, #0x02
|
|
00000A7C CDr00r00 [17] 1926 call _wc_exit
|
|
00000A7F 1927 00113$:
|
|
1928 ;src/main.c:521: if (wc_key_pgup()) // PgUp - unload and go to previous file
|
|
00000A7F CDr00r00 [17] 1929 call _wc_key_pgup
|
|
00000A82 B7 [ 4] 1930 or a, a
|
|
00000A83 28 27 [12] 1931 jr z, 00115$
|
|
1932 ;src/main.c:523: esp_cmd(ESP_CMD_TRACK_STOP);
|
|
00000A85 3E A2 [ 7] 1933 ld a, #0xa2
|
|
00000A87 CDr0Er00 [17] 1934 call _esp_cmd
|
|
1935 ;src/main.c:524: esp_wait_busy(10000);
|
|
00000A8A 11 10 27 [10] 1936 ld de, #0x2710
|
|
00000A8D 21 00 00 [10] 1937 ld hl, #0x0000
|
|
00000A90 CDrDEr01 [17] 1938 call _esp_wait_busy
|
|
1939 ;src/main.c:525: esp_cmd(ESP_CMD_KILL_OBJECTS);
|
|
00000A93 3E E4 [ 7] 1940 ld a, #0xe4
|
|
00000A95 CDr0Er00 [17] 1941 call _esp_cmd
|
|
1942 ;src/main.c:526: esp_wait_busy(10000);
|
|
00000A98 11 10 27 [10] 1943 ld de, #0x2710
|
|
00000A9B 21 00 00 [10] 1944 ld hl, #0x0000
|
|
00000A9E CDrDEr01 [17] 1945 call _esp_wait_busy
|
|
1946 ;src/main.c:527: wc_rresb(&win_xm);
|
|
00000AA1 21r71r02 [10] 1947 ld hl, #_win_xm
|
|
00000AA4 CDr00r00 [17] 1948 call _wc_rresb
|
|
1949 ;src/main.c:528: wc_exit(WC_PREV_FILE);
|
|
00000AA7 3E 04 [ 7] 1950 ld a, #0x04
|
|
00000AA9 CDr00r00 [17] 1951 call _wc_exit
|
|
00000AAC 1952 00115$:
|
|
1953 ;src/main.c:531: if (wc_key_esc()) // Esc - unload and exit
|
|
00000AAC CDr00r00 [17] 1954 call _wc_key_esc
|
|
00000AAF B7 [ 4] 1955 or a, a
|
|
00000AB0 28 88 [12] 1956 jr z, 00119$
|
|
1957 ;src/main.c:533: esp_cmd(ESP_CMD_TRACK_STOP);
|
|
00000AB2 3E A2 [ 7] 1958 ld a, #0xa2
|
|
00000AB4 CDr0Er00 [17] 1959 call _esp_cmd
|
|
1960 ;src/main.c:534: esp_wait_busy(10000);
|
|
00000AB7 11 10 27 [10] 1961 ld de, #0x2710
|
|
00000ABA 21 00 00 [10] 1962 ld hl, #0x0000
|
|
00000ABD CDrDEr01 [17] 1963 call _esp_wait_busy
|
|
1964 ;src/main.c:535: esp_cmd(ESP_CMD_KILL_OBJECTS);
|
|
00000AC0 3E E4 [ 7] 1965 ld a, #0xe4
|
|
00000AC2 CDr0Er00 [17] 1966 call _esp_cmd
|
|
1967 ;src/main.c:536: esp_wait_busy(10000);
|
|
00000AC5 11 10 27 [10] 1968 ld de, #0x2710
|
|
00000AC8 21 00 00 [10] 1969 ld hl, #0x0000
|
|
00000ACB CDrDEr01 [17] 1970 call _esp_wait_busy
|
|
1971 ;src/main.c:537: wc_rresb(&win_xm);
|
|
00000ACE 21r71r02 [10] 1972 ld hl, #_win_xm
|
|
00000AD1 CDr00r00 [17] 1973 call _wc_rresb
|
|
1974 ;src/main.c:538: wc_exit(WC_EXIT);
|
|
00000AD4 AF [ 4] 1975 xor a, a
|
|
00000AD5 CDr00r00 [17] 1976 call _wc_exit
|
|
00000AD8 C3r3Ar0A [10] 1977 jp 00119$
|
|
00000ADB 1978 00121$:
|
|
1979 ;src/main.c:541: }
|
|
00000ADB 33 [ 6] 1980 inc sp
|
|
00000ADC C9 [10] 1981 ret
|
|
1982 ;src/main.c:544: void main()
|
|
1983 ; ---------------------------------
|
|
1984 ; Function main
|
|
1985 ; ---------------------------------
|
|
00000ADD 1986 _main::
|
|
1987 ;src/main.c:554: __endasm;
|
|
00000ADD ED 73r00r10 [20] 1988 ld (_ret_sp), sp
|
|
00000AE1 32r07r10 [13] 1989 ld (_call_type), a
|
|
00000AE4 ED 43r09r10 [20] 1990 ld (_p_file_name), bc
|
|
00000AE8 08 [ 4] 1991 ex af, af
|
|
00000AE9 32r06r10 [13] 1992 ld (_file_ext), a
|
|
00000AEC 22r02r10 [16] 1993 ld (_filesize), hl
|
|
00000AEF ED 53r04r10 [20] 1994 ld (_filesize + 2), de
|
|
1995 ;src/main.c:556: switch (call_type)
|
|
00000AF3 3Ar07r10 [13] 1996 ld a, (_call_type+0)
|
|
00000AF6 B7 [ 4] 1997 or a, a
|
|
00000AF7 CArD0r09 [10] 1998 jp z, _main_start
|
|
00000AFA 3Ar07r10 [13] 1999 ld a, (_call_type)
|
|
00000AFD D6 03 [ 7] 2000 sub a, #0x03
|
|
00000AFF CAr76r05 [10] 2001 jp z, _about
|
|
2002 ;src/main.c:558: case WC_CALL_EXT:
|
|
2003 ;src/main.c:559: main_start();
|
|
2004 ;src/main.c:560: break;
|
|
2005 ;src/main.c:562: case WC_CALL_MENU:
|
|
2006 ;src/main.c:563: about();
|
|
2007 ;src/main.c:564: break;
|
|
2008 ;src/main.c:566: default:
|
|
2009 ;src/main.c:567: wc_exit(WC_EXIT);
|
|
00000B02 AF [ 4] 2010 xor a, a
|
|
2011 ;src/main.c:568: }
|
|
2012 ;src/main.c:569: }
|
|
00000B03 C3r00r00 [10] 2013 jp _wc_exit
|
|
2014 .area _CODE
|
|
2015 .area _INITIALIZER
|
|
00000000 2016 __xinit__state_esp:
|
|
00000000 FF 2017 .db #0xff ; 255
|
|
2018 .area _CABS (ABS)
|