📄 main.lst
字号:
\ 030B 09 ADD HL,BC
\ 030C 362F LD (HL),47
300 itoa_2(time.month, &g_file_name_time[len + 4]);
\ 030E 216600 LD HL,g_file_name_time+4
\ 0311 09 ADD HL,BC
\ 0312 4D LD C,L
\ 0313 44 LD B,H
\ 0314 DD5EF4 LD E,(IX-12)
\ 0317 3E00 LD A,BYTE3 itoa_2
\ 0319 210000 LD HL,LWRD itoa_2
\ 031C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
301 g_file_name_time[len + 6] = '/';
\ 031F 216800 LD HL,g_file_name_time+6
\ 0322 DD4EFB LD C,(IX-5)
\ 0325 0600 LD B,0
\ 0327 09 ADD HL,BC
\ 0328 362F LD (HL),47
302 itoa_2(time.day, &g_file_name_time[len + 7]);
\ 032A 216900 LD HL,g_file_name_time+7
\ 032D 09 ADD HL,BC
\ 032E 4D LD C,L
\ 032F 44 LD B,H
\ 0330 DD5EF5 LD E,(IX-11)
\ 0333 3E00 LD A,BYTE3 itoa_2
\ 0335 210000 LD HL,LWRD itoa_2
\ 0338 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
303 g_file_name_time[len + 9] = ' ';
\ 033B 216B00 LD HL,g_file_name_time+9
\ 033E DD4EFB LD C,(IX-5)
\ 0341 0600 LD B,0
\ 0343 09 ADD HL,BC
\ 0344 3620 LD (HL),32
304 itoa_2(time.hour, &g_file_name_time[len + 10]);
\ 0346 216C00 LD HL,g_file_name_time+10
\ 0349 09 ADD HL,BC
\ 034A 4D LD C,L
\ 034B 44 LD B,H
\ 034C DD5EF6 LD E,(IX-10)
\ 034F 3E00 LD A,BYTE3 itoa_2
\ 0351 210000 LD HL,LWRD itoa_2
\ 0354 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
305 g_file_name_time[len + 12] = ':';
\ 0357 216E00 LD HL,g_file_name_time+12
\ 035A DD4EFB LD C,(IX-5)
\ 035D 0600 LD B,0
\ 035F 09 ADD HL,BC
\ 0360 363A LD (HL),58
306 itoa_2(time.minute, &g_file_name_time[len + 13]);
\ 0362 216F00 LD HL,g_file_name_time+13
\ 0365 09 ADD HL,BC
\ 0366 4D LD C,L
\ 0367 44 LD B,H
\ 0368 DD5EF7 LD E,(IX-9)
\ 036B 3E00 LD A,BYTE3 itoa_2
\ 036D 210000 LD HL,LWRD itoa_2
\ 0370 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
307
308 strcat(g_file_name_time, " ");
\ 0373 110F00 LD DE,?0045
\ 0376 216200 LD HL,g_file_name_time
\ 0379 CD0000 CALL LWRD ?STRCAT_L11
309
310 filelong = FS_GetFileLen(f_handle);
\ 037C FDE5 PUSH IY
\ 037E D1 POP DE
\ 037F CD0000 CALL LWRD FS_GetFileLen
\ 0382 22B400 LD (filelong),HL
\ 0385 ED43B600 LD (filelong+2),BC
311 FS_FClose(f_handle);
\ 0389 FDE5 PUSH IY
\ 038B D1 POP DE
\ 038C CD0000 CALL LWRD FS_FClose
312 if(filelong == 0)
\ 038F 2AB400 LD HL,(filelong)
\ 0392 7D LD A,L
\ 0393 B4 OR H
\ 0394 2AB600 LD HL,(filelong+2)
\ 0397 B5 OR L
\ 0398 B4 OR H
\ 0399 2846 JR Z,?0124
\ 039B ?0046:
313 return FALSE;
\ 039B ?0047:
314
315 CLEAR_WATCHDOG();
\ 039B DB4E IN A,(78)
\ 039D CBDF SET 3,A
\ 039F D34E OUT (78),A
316 result = voiceSendCommand(MC_OPEN, 0);
\ 03A1 010000 LD BC,0
\ 03A4 1E01 LD E,1
\ 03A6 CD1104 CALL LWRD ?0140
\ 03A9 2600 LD H,0
\ 03AB 4C LD C,H
317 ASSERT(result);
318 voiceSendCommand(MC_SETVOLUME, 0);
\ 03AC 44 LD B,H
\ 03AD 1E40 LD E,64
\ 03AF CD1104 CALL LWRD ?0140
319
320 result = voiceSendCommand(MC_LOAD, (int)g_voice_vars.location.filename);
\ 03B2 014000 LD BC,g_voice_vars+32
\ 03B5 1E03 LD E,3
\ 03B7 CD1104 CALL LWRD ?0140
321 ASSERT(result);
322
323 voiceSendCommand(MC_GETSTATUS, (int)&g_play_status);
\ 03BA 015900 LD BC,g_play_status
\ 03BD 1E83 LD E,131
\ 03BF CD1104 CALL LWRD ?0140
324 voiceSendCommand(MC_GETAUDIOFMT, (int)&g_play_format);
\ 03C2 01D600 LD BC,g_play_format
\ 03C5 1E82 LD E,130
\ 03C7 CD1104 CALL LWRD ?0140
325
326 voiceSendCommand(MC_STOP, 0);
\ 03CA 010000 LD BC,0
\ 03CD 1E06 LD E,6
\ 03CF CD1104 CALL LWRD ?0140
327
328 voiceSendCommand(MC_CLOSE, 0);
\ 03D2 010000 LD BC,0
\ 03D5 1E02 LD E,2
\ 03D7 CD1104 CALL LWRD ?0140
329
330 if(g_play_status.state == PLAYING_ERROR) return FALSE;
\ 03DA 3A5900 LD A,(g_play_status)
\ 03DD FE0C CP 12
\ 03DF 2004 JR NZ,?0049
\ 03E1 ?0048:
\ 03E1 ?0124:
\ 03E1 2E00 LD L,0
\ 03E3 1802 JR ?0050
\ 03E5 ?0049:
331 else return TRUE;
\ 03E5 2E01 LD L,1
332
333 return TRUE;
334 }
\ 03E7 ?0050:
\ 03E7 DDF9 LD SP,IX
\ 03E9 DDE1 POP IX
\ 03EB FDE1 POP IY
\ 03ED D1 POP DE
\ 03EE C1 POP BC
\ 03EF C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 03F2 ?0138:
\ 03F2 112600 LD DE,g_voice_vars+6
\ 03F5 3E00 LD A,BYTE3 fselGetLocation
\ 03F7 210000 LD HL,LWRD fselGetLocation
\ 03FA C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 03FD ?0139:
\ 03FD 3E00 LD A,BYTE3 fselSetMode
\ 03FF 210000 LD HL,LWRD fselSetMode
\ 0402 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0405 114000 LD DE,g_voice_vars+32
\ 0408 3E00 LD A,BYTE3 fselGetNextFile
\ 040A 210000 LD HL,LWRD fselGetNextFile
\ 040D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0410 C9 RET
\ 0411 ?0140:
\ 0411 3E00 LD A,BYTE3 voiceSendCommand
\ 0413 210000 LD HL,LWRD voiceSendCommand
\ 0416 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0419 show_loop:
335
336 /*
337 ********************************************************************************
338 * Description : 循环模式菜单界面
339 *
340 * Arguments :
341 *
342 * Returns : 结果消息或0
343 *
344 * Notes :
345 *
346 ********************************************************************************
347 */
348 int show_loop(void)
349 {
\ 0419 C5 PUSH BC
\ 041A D5 PUSH DE
\ 041B DDE5 PUSH IX
350 int result;
351 list.active = g_voice_vars.repeat_mode;
\ 041D ED4B2300 LD BC,(g_voice_vars+3)
\ 0421 0600 LD B,0
\ 0423 ED43C600 LD (list+4),BC
352 list.total = 7;
\ 0427 210700 LD HL,7
\ 042A 22C400 LD (list+2),HL
353 list.strid = repeat_string;
\ 042D 210000 LD HL,repeat_string
\ 0430 22C200 LD (list),HL
354 list.headid = VPLAYM1;
\ 0433 21B501 LD HL,437
\ 0436 22C800 LD (list+6),HL
355 list.string_id = g_comval.langid;
\ 0439 3A0C00 LD A,(g_comval+12)
\ 043C 32CA00 LD (list+8),A
356 ui_auto_update = FALSE;
\ 043F AF XOR A
\ 0440 320000 LD (ui_auto_update),A
357 result = ui_popup_list(&list, NULL);
\ 0443 48 LD C,B
\ 0444 C5 PUSH BC
\ 0445 C5 PUSH BC
\ 0446 11C200 LD DE,list
\ 0449 3E00 LD A,BYTE3 ui_popup_list
\ 044B 210000 LD HL,LWRD ui_popup_list
\ 044E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0451 F1 POP AF
\ 0452 F1 POP AF
358
359 if(result == RESULT_IGNORE) {;}
\ 0453 3E34 LD A,52
\ 0455 AD XOR L
\ 0456 B4 OR H
\ 0457 280A JR Z,?0053
\ 0459 ?0051:
\ 0459 ?0052:
360 else if(result != 0) return result;
\ 0459 7D LD A,L
\ 045A B4 OR H
\ 045B 2008 JR NZ,?0056
\ 045D ?0054:
\ 045D ?0055:
361 else g_voice_vars.repeat_mode = list.active;
\ 045D 3AC600 LD A,(list+4)
\ 0460 322300 LD (g_voice_vars+3),A
\ 0463 ?0053:
362
363 return 0;
\ 0463 69 LD L,C
\ 0464 60 LD H,B
364 }
\ 0465 ?0056:
\ 0465 DDE1 POP IX
\ 0467 D1 POP DE
\ 0468 C1 POP BC
\ 0469 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 046C speed_callback:
365
366 /*
367 ********************************************************************************
368 * Description : 音量设置回调函数
369 *
370 * Arguments :
371 *
372 * Returns :
373 *
374 * Notes : 注意对0音量的处理
375 *
376 ********************************************************************************
377 */
378
379
380 /*
381 ********************************************************************************
382 * Description : 音量设置界面
383 *
384 * Arguments : set_hardware, 是否需要设置硬件
385 *
386 * Returns :
387 *
388 * Notes : 播放时调节音量需要设置硬件
389 停止时调节音量不需要设置硬件
390 *
391 ********************************************************************************
392
393
394 /*
395 ********************************************************************************
396 * Description : 播放速度设置界面回调函数
397 *
398 * Arguments : value, 速度值-8~8
399 *
400 * Returns :
401 *
402 * Notes : codec 的输入范围-40~100, module层负责转换
403 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -