📄 show_rec.lst
字号:
290 else if(g_comval.BatteryType == BATT_TYPE_LITHIUM) batt_level = 175; //3.2v in mode(11)
\ 0386 3A0F00 LD A,(g_comval+15)
\ 0389 3D DEC A
\ 038A 3D DEC A
\ 038B 2019 JR NZ,?0040
\ 038D ?0029:
\ 038D 1815 JR ?0137
291 else ASSERT(FALSE);
\ 038F ?0030:
\ 038F ?0031:
\ 038F ?0028:
\ 038F ?0025:
292 }
293 // file >= 32M
294 else
\ 038F ?0022:
295 {
296 if(g_comval.BatteryType == BATT_TYPE_ALKALINE ) batt_level = 49; //1.0v is low_bat in mode(00)
\ 038F B7 OR A
\ 0390 2004 JR NZ,?0034
\ 0392 ?0033:
\ 0392 ?0138:
\ 0392 1631 LD D,49
\ 0394 1810 JR ?0040
\ 0396 ?0034:
297 else if(g_comval.BatteryType == BATT_TYPE_NIH ) batt_level = 55; //1.05v is low_bat in mode(00)
\ 0396 3D DEC A
\ 0397 2004 JR NZ,?0037
\ 0399 ?0036:
\ 0399 1637 LD D,55
\ 039B 1809 JR ?0040
\ 039D ?0037:
298 else if(g_comval.BatteryType == BATT_TYPE_LITHIUM) batt_level = 175; //3.25v is low_bat in mode(11)
\ 039D 3A0F00 LD A,(g_comval+15)
\ 03A0 3D DEC A
\ 03A1 3D DEC A
\ 03A2 2002 JR NZ,?0040
\ 03A4 ?0039:
\ 03A4 ?0137:
\ 03A4 16AF LD D,175
299 else ASSERT(FALSE);
\ 03A6 ?0040:
\ 03A6 ?0041:
\ 03A6 ?0038:
\ 03A6 ?0035:
\ 03A6 ?0032:
300 }
301
302 if(batt <= batt_level) return TRUE;
\ 03A6 7A LD A,D
\ 03A7 BB CP E
\ 03A8 3803 JR C,?0043
\ 03AA ?0042:
\ 03AA 69 LD L,C
\ 03AB 1801 JR ?0044
\ 03AD ?0043:
303 else return FALSE;
\ 03AD 68 LD L,B
304 }
\ 03AE ?0044:
\ 03AE F1 POP AF
\ 03AF C1 POP BC
\ 03B0 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 03B3 show_rec:
305
306
307 /*
308 ********************************************************************************
309 * Description : 录音界面
310 *
311 * Arguments :
312 *
313 * Returns : 结果消息或0
314 RESULT_USER_STOP //用户按键结束
315 *
316 * Notes :
317 *
318 ********************************************************************************
319 */
320 int show_rec(void)
321 {
\ 03B3 C5 PUSH BC
\ 03B4 D5 PUSH DE
\ 03B5 FDE5 PUSH IY
\ 03B7 DDE5 PUSH IX
\ 03B9 DD210000 LD IX,0
\ 03BD DD39 ADD IX,SP
\ 03BF 21E2FF LD HL,65506
\ 03C2 39 ADD HL,SP
\ 03C3 F9 LD SP,HL
322 int result=0; //result for return
323 int mc_result=0; //command result
324 BOOL key_stop=FALSE; //用户按键结束
325 //当前状态
326 enum
327 {
328 recording,
329 wait_to_save,
330 saving
331 }status;
332 char key;
333 BOOL need_draw=FALSE; //stop -> rec ui no change!!!
334 wav_rec_status_t rec_stat;
335 int i=0;
336 int page_count=0;
337 BYTE low_power_count=0; //获得低电压的次数
338 BOOL vor_waiting=FALSE; //vor 没有写盘
339 BYTE vor_counter=0; //vor没有写盘的次数
340 BOOL flash_state=FALSE; //时间闪动
341 int batt_old=256; //
342 BOOL is_result_main = FALSE;
343 bool CardOutFlag=0;
344 ASSERT(ui_run_realtime == TRUE);
345
346 //init the counter
347 g_rec_time.hour = 0;
\ 03C4 AF XOR A
\ 03C5 320000 LD (g_rec_time),A
348 g_rec_time.minute = 0;
\ 03C8 320100 LD (g_rec_time+1),A
349 g_rec_time.second = 0;
\ 03CB 320200 LD (g_rec_time+2),A
350
351 //send record command
352 recordSendCommand(MC_RECORD, 0);
\ 03CE 4F LD C,A
\ 03CF 47 LD B,A
\ 03D0 1E08 LD E,8
\ 03D2 CD0601 CALL LWRD ?0151
353 //output8(0x4e,input8(0x4e)|0x8);
354 status = recording;
\ 03D5 FD210000 LD IY,0
\ 03D9 AF XOR A
\ 03DA DD77E6 LD (IX-26),A
\ 03DD DD77E9 LD (IX-23),A
\ 03E0 DD77F2 LD (IX-14),A
\ 03E3 DD77F3 LD (IX-13),A
\ 03E6 DD77F6 LD (IX-10),A
\ 03E9 DD77F7 LD (IX-9),A
\ 03EC DD77F8 LD (IX-8),A
\ 03EF DD77F9 LD (IX-7),A
\ 03F2 DD77FA LD (IX-6),A
\ 03F5 DD36FB01 LD (IX-5),1
\ 03F9 DD77FC LD (IX-4),A
\ 03FC DD77E7 LD (IX-25),A
\ 03FF ?0046:
355
356 while(1)
357 {
358 //show ui
359 if(need_draw)
\ 03FF AF XOR A
\ 0400 DDB6E9 OR (IX-23)
\ 0403 2816 JR Z,?0049
\ 0405 ?0048:
360 {
361 ui_draw();
\ 0405 3E00 LD A,BYTE3 ui_draw
\ 0407 21FB01 LD HL,LWRD ui_draw
\ 040A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
362 time_draw(FALSE);
\ 040D 1E00 LD E,0
\ 040F 3E00 LD A,BYTE3 time_draw
\ 0411 210D03 LD HL,LWRD time_draw
\ 0414 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
363
364 need_draw = FALSE;
\ 0417 DD36E900 LD (IX-23),0
\ 041B ?0049:
365 }
366
367 //handle msg
368 if((!is_result_main) &&(status != saving))
\ 041B AF XOR A
\ 041C DDB6FC OR (IX-4)
\ 041F 200D JR NZ,?0051
\ 0421 DD46E7 LD B,(IX-25)
\ 0424 05 DEC B
\ 0425 05 DEC B
\ 0426 2806 JR Z,?0051
\ 0428 ?0053:
\ 0428 ?0052:
\ 0428 ?0050:
369 key = ap_get_message();
\ 0428 CD0000 CALL LWRD ap_get_message
\ 042B DD77E8 LD (IX-24),A
\ 042E ?0051:
370 if(status==saving)
\ 042E DD46E7 LD B,(IX-25)
\ 0431 05 DEC B
\ 0432 05 DEC B
\ 0433 2004 JR NZ,?0055
\ 0435 ?0054:
371 key =AP_MSG_STANDBY;
\ 0435 DD36E81D LD (IX-24),29
\ 0439 ?0055:
372 switch( key )
\ 0439 DD5EE8 LD E,(IX-24)
\ 043C CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 043F 0800 DEFW 8
\ 0441 1B DEFB 27
\ 0442 1C DEFB 28
\ 0443 1D DEFB 29
\ 0444 21 DEFB 33
\ 0445 31 DEFB 49
\ 0446 37 DEFB 55
\ 0447 81 DEFB 129
\ 0448 91 DEFB 145
\ 0449 BF05 DEFW ?0094
\ 044B A904 DEFW ?0069
\ 044D A904 DEFW ?0069
\ 044F B505 DEFW ?0091
\ 0451 5B04 DEFW ?0058
\ 0453 5B04 DEFW ?0058
\ 0455 E705 DEFW ?0101
\ 0457 C204 DEFW ?0071
\ 0459 B804 DEFW ?0070
\ 045B ?0057:
373 {
374 //overwrite auto standby
375 //case AP_KEY_MODE | AP_KEY_LONG:
376 case AP_MSG_STANDBY:
377 //do nothing
378
379 break;
\ 045B ?0058:
380 case AP_KEY_PLAY | AP_KEY_UP:
381 case AP_KEY_AB | AP_KEY_UP:
382 //正在保存不要暂停
383 if(status == recording)
\ 045B AF XOR A
\ 045C DDB6E7 OR (IX-25)
\ 045F 2041 JR NZ,?0060
\ 0461 ?0059:
384 {
385 recordSendCommand(MC_GETTIME, (int)&g_rec_time); //取出现在时间
\ 0461 010000 LD BC,g_rec_time
\ 0464 1E80 LD E,128
\ 0466 CD0601 CALL LWRD ?0151
386 //send record command
387 // 要在show_pause() BANK 切换之前发送 MC_PAUSE
388 recordSendCommand(MC_PAUSE, 0);
\ 0469 010000 LD BC,0
\ 046C 1E05 LD E,5
\ 046E CD0601 CALL LWRD ?0151
389
390 result = show_pause();
\ 0471 3E00 LD A,BYTE3 show_pause
\ 0473 210000 LD HL,LWRD show_pause
\ 0476 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0479 E5 PUSH HL
\ 047A FDE1 POP IY
391 // 要在BANK 切换之后才发送 MC_RECORD, 避免DSP BUFFER FULL
392 recordSendCommand(MC_RECORD, 0);
\ 047C 010000 LD BC,0
\ 047F 1E08 LD E,8
\ 0481 CD0601 CALL LWRD ?0151
393
394 if(result != 0)
\ 0484 FDE5 PUSH IY
\ 0486 E1 POP HL
\ 0487 7D LD A,L
\ 0488 B4 OR H
\ 0489 CAE705 JP Z,?0101
\ 048C ?0061:
395 {
396 status = wait_to_save;
\ 048C DD36E701 LD (IX-25),1
397
398 //检查是否长按menu/play 返回
399 if(result == RESULT_USER_STOP)
\ 0490 3E65 LD A,101
\ 0492 AD XOR L
\ 0493 B4 OR H
\ 0494 2817 JR Z,?0149
\ 0496 ?0063:
400 {
401 key_stop = TRUE;
402 result = 0;
\ 0496 ?0064:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -