📄 main.lst
字号:
\ 019A CD0000 CALL LWRD FS_GetName
\ 019D 0600 LD B,0
243 if (result != 0)
\ 019F B7 OR A
\ 01A0 2815 JR Z,?0037
\ 01A2 ?0036:
244 {
245 unitochar(dir_name, sizeof(dir_name), g_comval.langid);
\ 01A2 210C00 LD HL,g_comval+12
\ 01A5 4E LD C,(HL)
\ 01A6 C5 PUSH BC
\ 01A7 0E1E LD C,30
\ 01A9 110000 LD DE,dir_name
\ 01AC 3E00 LD A,BYTE3 unitochar
\ 01AE 210000 LD HL,LWRD unitochar
\ 01B1 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01B4 F1 POP AF
246 }
247 else
\ 01B5 1810 JR ?0038
\ 01B7 ?0037:
248 {
249 memcpy(dir_name, g_record_vars.location.path, 12);
\ 01B7 0E0C LD C,12
\ 01B9 110000 LD DE,dir_name
\ 01BC 213800 LD HL,g_record_vars+24
\ 01BF EDB0 LDIR
250 dir_name[8]=0;
\ 01C1 320800 LD (dir_name+8),A
251 dir_name[9]=0;
\ 01C4 320900 LD (dir_name+9),A
\ 01C7 ?0038:
252 }
253 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 01C7 210000 LD HL,0
\ 01CA E5 PUSH HL
\ 01CB 0E02 LD C,2
\ 01CD 23 INC HL
\ 01CE 23 INC HL
\ 01CF 39 ADD HL,SP
\ 01D0 EB EX DE,HL
\ 01D1 CD0000 CALL LWRD FS_Restore
\ 01D4 E1 POP HL
\ 01D5 ?0035:
254 }
255 }
\ 01D5 212000 LD HL,32
\ 01D8 39 ADD HL,SP
\ 01D9 F9 LD SP,HL
\ 01DA DDE1 POP IX
\ 01DC D1 POP DE
\ 01DD C1 POP BC
\ 01DE C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01E1 read_var:
256 void read_var(void)
257 {
\ 01E1 C5 PUSH BC
\ 01E2 D5 PUSH DE
\ 01E3 DDE5 PUSH IX
258 int result;
259 BOOL status;
260
261 //comval
262 result = VMRead(&g_comval, VM_SYSTEM, sizeof(g_comval));
\ 01E5 212000 LD HL,32
\ 01E8 E5 PUSH HL
\ 01E9 010002 LD BC,512
\ 01EC 110000 LD DE,g_comval
\ 01EF CD0000 CALL LWRD VMRead
\ 01F2 E1 POP HL
263 ASSERT(result);
264
265 if(g_comval.magic != MAGIC_COMVAL)
\ 01F3 21ADDE LD HL,57005
\ 01F6 ED4B0000 LD BC,(g_comval)
\ 01FA A7 AND A
\ 01FB ED42 SBC HL,BC
\ 01FD 2806 JR Z,?0040
\ 01FF ?0039:
266 {
267 DUMP_STRING("comval init-ed!");
268
269 //COMVAL_INIT(g_comval);
270 GetDefaultComval(&g_comval);
\ 01FF 110000 LD DE,g_comval
\ 0202 CD0000 CALL LWRD GetDefaultComval
\ 0205 ?0040:
271 }
272
273 //init message for auto standby
274 ap_message_init(&g_comval);
\ 0205 110000 LD DE,g_comval
\ 0208 3E00 LD A,BYTE3 ap_message_init
\ 020A 210000 LD HL,LWRD ap_message_init
\ 020D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
275
276 //ap var
277 result = VMRead(&g_record_vars, VM_AP_FMRECORD, sizeof(g_record_vars));
\ 0210 213500 LD HL,53
\ 0213 E5 PUSH HL
\ 0214 010038 LD BC,14336
\ 0217 112000 LD DE,g_record_vars
\ 021A CD0000 CALL LWRD VMRead
\ 021D E1 POP HL
278 ASSERT(result);
279
280 if(g_record_vars.maigc != MAGIC_RECORD)
\ 021E 213D3D LD HL,15677
\ 0221 ED4B2000 LD BC,(g_record_vars)
\ 0225 A7 AND A
\ 0226 ED42 SBC HL,BC
\ 0228 2823 JR Z,?0042
\ 022A ?0041:
281 {
282 //init vars
283 g_record_vars.maigc = MAGIC_RECORD;
\ 022A 213D3D LD HL,15677
\ 022D 222000 LD (g_record_vars),HL
284 g_record_vars.Rec_Fsrate=0;
\ 0230 AF XOR A
\ 0231 322200 LD (g_record_vars+2),A
285 g_record_vars.rec_bitrate= 1;
\ 0234 3E01 LD A,1
\ 0236 322300 LD (g_record_vars+3),A
286 g_record_vars.rec_source = 2;
\ 0239 3E02 LD A,2
\ 023B 322400 LD (g_record_vars+4),A
287 g_record_vars.wav_num = 1;
\ 023E 210100 LD HL,1
\ 0241 222600 LD (g_record_vars+6),HL
288 g_record_vars.rec_type = 0;
\ 0244 AF XOR A
\ 0245 322500 LD (g_record_vars+5),A
289 g_record_vars.location.disk = 'C';
\ 0248 3E43 LD A,67
\ 024A 322A00 LD (g_record_vars+10),A
\ 024D ?0042:
290 }
291 //switch the real-time bank,
292 //注意自己所在的bank code 不能和控件用同一段地址
293 if(g_record_vars.rec_bitrate % 2 == 0 )
\ 024D 3A2300 LD A,(g_record_vars+3)
\ 0250 CB47 BIT 0,A
\ 0252 2004 JR NZ,?0044
\ 0254 ?0043:
294 channelnum = SINGLE_CH;
\ 0254 3E01 LD A,1
\ 0256 1802 JR ?0128
295 else
\ 0258 ?0044:
296 channelnum = DUAL_CH;
\ 0258 3E02 LD A,2
\ 025A ?0128:
\ 025A 320000 LD (channelnum),A
\ 025D ?0045:
297 BankSwitch((ulong)wavrSendCommand >> 16);
\ 025D 1E00 LD E,BYTE3 wavrSendCommand
\ 025F CD0000 CALL LWRD BankSwitch
298 BankSwitch((ulong)ui_show_a >> 16);
\ 0262 1E00 LD E,BYTE3 ui_show_a
\ 0264 CD0000 CALL LWRD BankSwitch
299
300 }
\ 0267 DDE1 POP IX
\ 0269 D1 POP DE
\ 026A C1 POP BC
\ 026B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 026E main:
301
302
303 /*
304 ********************************************************************************
305 * Description : 主函数
306 *
307 * Arguments :
308 param:
309 0, 不自动开始录音
310 1, 自动开始录音
311 *
312 * Returns : 结果消息或0
313 *
314 * Notes :
315 *
316 ********************************************************************************
317 */
318 int main(int param)
319 {
\ 026E C5 PUSH BC
\ 026F FDE5 PUSH IY
\ 0271 DDE5 PUSH IX
\ 0273 DD210000 LD IX,0
\ 0277 DD39 ADD IX,SP
\ 0279 D5 PUSH DE
\ 027A 21F6FF LD HL,65526
\ 027D 39 ADD HL,SP
\ 027E F9 LD SP,HL
320 BOOL mc_result;
321 int result=0;
322 BOOL disk_ok=TRUE;
323 BOOL status;
324 BOOL ReturnToFm=0;
325 BOOL need_reset_dir=0;
326 g_DiskStateFlag=0;
\ 027F AF XOR A
\ 0280 322000 LD (g_DiskStateFlag),A
327 ASSERT_BANK(wavrSendCommand);
328
329
330 ClearScreen(NULL);
\ 0283 5F LD E,A
\ 0284 57 LD D,A
\ 0285 CD0000 CALL LWRD ClearScreen
331 //UpdateScreen(NULL);
332
333 mc_result= DRV_ActiveUD(0,MODE_SLOW);
\ 0288 0E01 LD C,1
\ 028A 1E00 LD E,0
\ 028C CD0000 CALL LWRD DRV_ActiveUD
334 ASSERT(mc_result);
335
336 //read var from vm
337 read_var();
\ 028F 3E00 LD A,BYTE3 read_var
\ 0291 21E101 LD HL,LWRD read_var
\ 0294 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
338
339 //初始化资源文件
340 res_fp = ResOpen("ui30.res");
\ 0297 110900 LD DE,?0046
\ 029A 3E00 LD A,BYTE3 ResOpen
\ 029C 210000 LD HL,LWRD ResOpen
\ 029F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02A2 220000 LD (res_fp),HL
341 ASSERT( res_fp != NULL);
342
343 if (DRV_ActiveDrive('C', MODE_SLOW))
\ 02A5 FD210000 LD IY,0
\ 02A9 DD36F701 LD (IX-9),1
\ 02AD DD36F900 LD (IX-7),0
\ 02B1 DD36FA00 LD (IX-6),0
\ 02B5 0E01 LD C,1
\ 02B7 1E43 LD E,67
\ 02B9 CD0000 CALL LWRD DRV_ActiveDrive
\ 02BC B7 OR A
\ 02BD 2805 JR Z,?0048
\ 02BF ?0047:
344 {
345 g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
\ 02BF 212000 LD HL,g_DiskStateFlag
\ 02C2 CBFE SET 7,(HL)
\ 02C4 ?0048:
346 }
347 if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
\ 02C4 3A2000 LD A,(g_DiskStateFlag)
\ 02C7 CB7F BIT 7,A
\ 02C9 200B JR NZ,?0050
\ 02CB ?0049:
348 {
349 show_error(MREADERR);//显示磁盘错
\ 02CB 11FC01 LD DE,508
\ 02CE 3E00 LD A,BYTE3 show_error
\ 02D0 210900 LD HL,LWRD show_error
\ 02D3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02D6 ?0050:
350 }
351
352 if (DRV_DetectUD(1) == 0x20)
\ 02D6 1E01 LD E,1
\ 02D8 CD0000 CALL LWRD DRV_DetectUD
\ 02DB FE20 CP 32
\ 02DD 203D JR NZ,?0052
\ 02DF ?0051:
353 { //有卡
354 DRV_ActiveUD(1,MODE_SLOW);
\ 02DF 0E01 LD C,1
\ 02E1 59 LD E,C
\ 02E2 CD0000 CALL LWRD DRV_ActiveUD
355 if (!DRV_ActiveDrive('H', MODE_SLOW))
\ 02E5 0E01 LD C,1
\ 02E7 1E48 LD E,72
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -