📄 main.lst
字号:
\ 0175 1E04 LD E,4
\ 0177 CDFD03 CALL LWRD ?0139
219 fselGetNextFile(g_voice_vars.location.filename);
220 fselGetLocation(&g_voice_vars.location);
\ 017A CDF203 CALL LWRD ?0138
221 memcpy(g_file_name_time, g_voice_vars.location.filename, 12);
\ 017D 010C00 LD BC,12
\ 0180 116200 LD DE,g_file_name_time
\ 0183 214000 LD HL,g_voice_vars+32
\ 0186 EDB0 LDIR
222 result = FS_GetName(g_file_name_time, 31); //取出长名
\ 0188 0E1F LD C,31
\ 018A 116200 LD DE,g_file_name_time
\ 018D CD0000 CALL LWRD FS_GetName
\ 0190 0600 LD B,0
223 if (result != 0)
\ 0192 B7 OR A
\ 0193 2815 JR Z,?0021
\ 0195 ?0020:
224 {
225 unitochar(g_file_name_time, sizeof(g_file_name_next), g_comval.langid);
\ 0195 210C00 LD HL,g_comval+12
\ 0198 4E LD C,(HL)
\ 0199 C5 PUSH BC
\ 019A 0E11 LD C,17
\ 019C 116200 LD DE,g_file_name_time
\ 019F 3E00 LD A,BYTE3 unitochar
\ 01A1 210000 LD HL,LWRD unitochar
\ 01A4 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01A7 F1 POP AF
226 }
227 else
\ 01A8 1810 JR ?0022
\ 01AA ?0021:
228 {
229 memcpy(g_file_name_time, g_voice_vars.location.filename, 12);
\ 01AA 0E0C LD C,12
\ 01AC 116200 LD DE,g_file_name_time
\ 01AF 214000 LD HL,g_voice_vars+32
\ 01B2 EDB0 LDIR
230 g_file_name_time[8]=0;
\ 01B4 326A00 LD (g_file_name_time+8),A
231 g_file_name_next[9]=0;
\ 01B7 32A100 LD (g_file_name_next+9),A
\ 01BA ?0022:
232 }
233
234 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 01BA DB4E IN A,(78)
\ 01BC CBDF SET 3,A
\ 01BE D34E OUT (78),A
235 memcpy(g_file_name_next,g_file_name_time,16);
\ 01C0 011000 LD BC,16
\ 01C3 119800 LD DE,g_file_name_next
\ 01C6 216200 LD HL,g_file_name_time
\ 01C9 EDB0 LDIR
236 g_file_name_next[16]=0;
\ 01CB AF XOR A
\ 01CC 32A800 LD (g_file_name_next+16),A
237 fselGetPrevFile(g_voice_vars.location.filename);
\ 01CF 114000 LD DE,g_voice_vars+32
\ 01D2 3E00 LD A,BYTE3 fselGetPrevFile
\ 01D4 210000 LD HL,LWRD fselGetPrevFile
\ 01D7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
238 fselGetLocation(&g_voice_vars.location);
\ 01DA CDF203 CALL LWRD ?0138
239 FSELSetMode(g_voice_vars.repeat_mode);
\ 01DD ED5B2300 LD DE,(g_voice_vars+3)
\ 01E1 3E00 LD A,BYTE3 fselSetMode
\ 01E3 210000 LD HL,LWRD fselSetMode
\ 01E6 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
240 //parse voice type
241 if(memcmp(&(g_voice_vars.location.filename[8]), "WAV", 3) == 0 ) g_voice_type = 1;
\ 01E9 0E03 LD C,3
\ 01EB 114800 LD DE,g_voice_vars+40
\ 01EE 210700 LD HL,?0025
\ 01F1 CD0000 CALL LWRD ?MEMCMP_L11
\ 01F4 7D LD A,L
\ 01F5 B4 OR H
\ 01F6 2004 JR NZ,?0024
\ 01F8 ?0023:
\ 01F8 3E01 LD A,1
\ 01FA 180C JR ?0121
\ 01FC ?0024:
242 else if(memcmp(&(g_voice_vars.location.filename[8]), "ACT", 3) == 0 ) g_voice_type = 2;
\ 01FC 210B00 LD HL,?0029
\ 01FF CD0000 CALL LWRD ?MEMCMP_L11
\ 0202 7D LD A,L
\ 0203 B4 OR H
\ 0204 2007 JR NZ,?0028
\ 0206 ?0027:
\ 0206 3E02 LD A,2
\ 0208 ?0121:
\ 0208 325800 LD (g_voice_type),A
243 else
\ 020B 1807 JR ?0030
\ 020D ?0028:
244 {
245 g_voice_type = 0;
\ 020D AF XOR A
\ 020E 325800 LD (g_voice_type),A
246 //DUMP(g_voice_vars.location.filename, 0);
247 return FALSE;
\ 0211 C3E103 JP LWRD ?0124
248 }
\ 0214 ?0030:
\ 0214 ?0026:
249
250 f_handle = FS_FOpen(g_voice_vars.location.filename, FS_OPEN_NORMAL);
\ 0214 48 LD C,B
\ 0215 114000 LD DE,g_voice_vars+32
\ 0218 CD0000 CALL LWRD FS_FOpen
\ 021B E5 PUSH HL
\ 021C FDE1 POP IY
251 if(f_handle == NULL)
\ 021E 7D LD A,L
\ 021F B4 OR H
\ 0220 200F JR NZ,?0032
\ 0222 ?0031:
252 {
253 FS_FClose(f_handle);
\ 0222 FDE5 PUSH IY
\ 0224 D1 POP DE
\ 0225 CD0000 CALL LWRD FS_FClose
254 output8(0x4e,input8(0x4e)|0x8);
\ 0228 DB4E IN A,(78)
\ 022A CBDF SET 3,A
\ 022C D34E OUT (78),A
255 return FALSE;
\ 022E C3E103 JP LWRD ?0124
256 }
\ 0231 ?0032:
257 //get the long file name
258 strcpy(g_file_name_time, g_voice_vars.location.filename);
\ 0231 114000 LD DE,g_voice_vars+32
\ 0234 216200 LD HL,g_file_name_time
\ 0237 CD0000 CALL LWRD ?STRCPY_L11
259 len = FS_GetName(g_file_name_time, 16);
\ 023A 0E10 LD C,16
\ 023C 116200 LD DE,g_file_name_time
\ 023F CD0000 CALL LWRD FS_GetName
\ 0242 DD77FB LD (IX-5),A
260 if(len == 0) //no long name
\ 0245 B7 OR A
\ 0246 2041 JR NZ,?0034
\ 0248 ?0033:
261 {
262 char *p;
263 WORD name_len;
264
265 //remove space
266 p = strchr(g_voice_vars.location.filename, ' ');
\ 0248 112000 LD DE,32
\ 024B 214000 LD HL,g_voice_vars+32
\ 024E CD0000 CALL LWRD ?STRCHR_L11
267 if(p == NULL) name_len = 8;
\ 0251 7D LD A,L
\ 0252 B4 OR H
\ 0253 2009 JR NZ,?0036
\ 0255 ?0035:
\ 0255 DD36FE08 LD (IX-2),8
\ 0259 DD72FF LD (IX-1),D
\ 025C 180B JR ?0037
\ 025E ?0036:
268 else name_len = (WORD)p - (WORD)&g_voice_vars.location.filename[0];
\ 025E 014000 LD BC,g_voice_vars+32
\ 0261 ED42 SBC HL,BC
\ 0263 DD75FE LD (IX-2),L
\ 0266 DD74FF LD (IX-1),H
\ 0269 ?0037:
269
270 //convert to xxx
271 memcpy(g_file_name_time, g_voice_vars.location.filename, name_len);
\ 0269 DD4EFE LD C,(IX-2)
\ 026C 79 LD A,C
\ 026D DD46FF LD B,(IX-1)
\ 0270 116200 LD DE,g_file_name_time
\ 0273 214000 LD HL,g_voice_vars+32
\ 0276 B0 OR B
\ 0277 2802 JR Z,?0120
\ 0279 EDB0 LDIR
\ 027B ?0120:
272 g_file_name_time[name_len] = 0;
\ 027B 216200 LD HL,g_file_name_time
\ 027E DD4EFE LD C,(IX-2)
\ 0281 DD46FF LD B,(IX-1)
\ 0284 09 ADD HL,BC
\ 0285 3600 LD (HL),0
273 }
274 else
\ 0287 182D JR ?0038
\ 0289 ?0034:
275 {
276 BYTE encode;
277
278 ASSERT(len <= 17); // +zero end
279
280 if(g_comval.langid == 0) encode = CP_CHS;
\ 0289 3A0C00 LD A,(g_comval+12)
\ 028C B7 OR A
\ 028D 2005 JR NZ,?0040
\ 028F ?0039:
\ 028F DD77FC LD (IX-4),A
\ 0292 180D JR ?0044
\ 0294 ?0040:
281 else if(g_comval.langid == 1) encode = CP_ASCII;
\ 0294 3D DEC A
\ 0295 2006 JR NZ,?0043
\ 0297 ?0042:
\ 0297 DD36FC01 LD (IX-4),1
\ 029B 1804 JR ?0044
\ 029D ?0043:
282 else encode = CP_CHT;
\ 029D DD36FC02 LD (IX-4),2
\ 02A1 ?0044:
\ 02A1 ?0041:
283 unitochar(g_file_name_time, len, encode);
\ 02A1 DD6EFC LD L,(IX-4)
\ 02A4 E5 PUSH HL
\ 02A5 DD4EFB LD C,(IX-5)
\ 02A8 0600 LD B,0
\ 02AA 116200 LD DE,g_file_name_time
\ 02AD 3E00 LD A,BYTE3 unitochar
\ 02AF 210000 LD HL,LWRD unitochar
\ 02B2 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02B5 F1 POP AF
\ 02B6 ?0038:
284 }
285
286 //get file time
287 FS_GetCrtTime(&time, f_handle);
\ 02B6 FDE5 PUSH IY
\ 02B8 C1 POP BC
\ 02B9 210200 LD HL,2
\ 02BC 39 ADD HL,SP
\ 02BD EB EX DE,HL
\ 02BE CD0000 CALL LWRD FS_GetCrtTime
288
289 //FS_FClose(f_handle);
290
291 //format "name 04/01/01 12:00 "
292 len = strlen(g_file_name_time);
\ 02C1 216200 LD HL,g_file_name_time
\ 02C4 CD0000 CALL LWRD ?STRLEN_L11
\ 02C7 DD75FB LD (IX-5),L
293 g_file_name_time[len] = ' '; //seperator
\ 02CA 2600 LD H,0
\ 02CC 016200 LD BC,g_file_name_time
\ 02CF 09 ADD HL,BC
\ 02D0 3620 LD (HL),32
294
295 g_file_name_time[len + 1] = (time.year % 100) / 10 + '0';
\ 02D2 216300 LD HL,g_file_name_time+1
\ 02D5 DD4EFB LD C,(IX-5)
\ 02D8 0600 LD B,0
\ 02DA 09 ADD HL,BC
\ 02DB 0E64 LD C,100
\ 02DD DD5EF2 LD E,(IX-14)
\ 02E0 DD56F3 LD D,(IX-13)
\ 02E3 CD0000 CALL LWRD ?US_MOD_L02
\ 02E6 0E0A LD C,10
\ 02E8 CD0000 CALL LWRD ?US_DIV_L02
\ 02EB 7B LD A,E
\ 02EC C630 ADD A,48
\ 02EE 77 LD (HL),A
296 g_file_name_time[len + 2] = (time.year % 10) + '0';
\ 02EF 216400 LD HL,g_file_name_time+2
\ 02F2 DD4EFB LD C,(IX-5)
\ 02F5 09 ADD HL,BC
\ 02F6 0E0A LD C,10
\ 02F8 DD5EF2 LD E,(IX-14)
\ 02FB DD56F3 LD D,(IX-13)
\ 02FE CD0000 CALL LWRD ?US_MOD_L02
\ 0301 7B LD A,E
\ 0302 C630 ADD A,48
\ 0304 77 LD (HL),A
297
298 //get date time, 2003/12/12 12:20
299 g_file_name_time[len + 3] = '/';
\ 0305 216500 LD HL,g_file_name_time+3
\ 0308 DD4EFB LD C,(IX-5)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -