📄 ap_message2.lst
字号:
369 //void ap_del_event(WORD event)
370 //{
371 // g_ap_event &= (~event);
372 //}
373
374 /*
375 ********************************************************************************
376 * Description : 睡眠指定的时间
377 *
378 * Arguments : half_sec, 时间, 0.5秒为单位
379 *
380 * Returns : 如果指定的时间内没有其他消息产生, 返回0
381 如果指定的时间内有其他消息产生, 返回该消息
382 * Notes : 如果指定的时间内有其他消息产生, 睡眠的时间将< 指定的时间
383 *
384 ********************************************************************************
385 */
386 char ap_sleep(int half_sec)
387 {
\ 033A C5 PUSH BC
\ 033B FDE5 PUSH IY
\ 033D DDE5 PUSH IX
\ 033F DD210000 LD IX,0
\ 0343 DD39 ADD IX,SP
\ 0345 F5 PUSH AF
\ 0346 D5 PUSH DE
\ 0347 FDE1 POP IY
388 unsigned char n=0; //rtc counter
\ 0349 DD36FF00 LD (IX-1),0
\ 034D ?0078:
389 char key;
390
391 while(1)
392 {
393 key = ap_get_message();
\ 034D CD0000 CALL LWRD ap_get_message
\ 0350 DD77FE LD (IX-2),A
394 if(key == AP_MSG_RTC ||
395 key == AP_MSG_CHARGING ||
396 key == AP_MSG_WAIT_TIMEOUT) //sleep 时不管timeout
\ 0353 FE1C CP 28
\ 0355 280E JR Z,?0082
\ 0357 DD7EFE LD A,(IX-2)
\ 035A FE1B CP 27
\ 035C 2807 JR Z,?0082
\ 035E DD7EFE LD A,(IX-2)
\ 0361 FE1E CP 30
\ 0363 201A JR NZ,?0081
\ 0365 ?0082:
\ 0365 ?0083:
\ 0365 ?0080:
397 {
398 n++;
\ 0365 DD34FF INC (IX-1)
399 if(n >= half_sec) return 0;
\ 0368 DD6EFF LD L,(IX-1)
\ 036B 2600 LD H,0
\ 036D FDE5 PUSH IY
\ 036F C1 POP BC
\ 0370 F680 OR 128
\ 0372 ED42 SBC HL,BC
\ 0374 E27803 JP PO,?0103
\ 0377 AC XOR H
\ 0378 ?0103:
\ 0378 FA4D03 JP M,?0078
\ 037B ?0084:
\ 037B 2E00 LD L,0
400 }
\ 037D 1829 JR ?0091
\ 037F ?0085:
\ 037F ?0081:
401 else if(key == AP_KEY_NULL ||
402 key == AP_MSG_UNLOCK ||
403 key == (AP_MSG_UNLOCK | AP_KEY_UP) ||
404 key == AP_MSG_LOCK ||
405 key == (AP_MSG_LOCK | AP_KEY_UP)) //lock 只有up, 没有long/hold
\ 037F AF XOR A
\ 0380 DDB6FE OR (IX-2)
\ 0383 28C8 JR Z,?0078
\ 0385 DD7EFE LD A,(IX-2)
\ 0388 FE18 CP 24
\ 038A 28C1 JR Z,?0078
\ 038C DD7EFE LD A,(IX-2)
\ 038F FE38 CP 56
\ 0391 28BA JR Z,?0078
\ 0393 DD7EFE LD A,(IX-2)
\ 0396 FE19 CP 25
\ 0398 28B3 JR Z,?0078
\ 039A DD7EFE LD A,(IX-2)
\ 039D FE39 CP 57
\ 039F 28AC JR Z,?0078
\ 03A1 ?0089:
\ 03A1 ?0090:
\ 03A1 ?0087:
406 {
407 continue;
\ 03A1 ?0088:
408 }
409 else
410 {
411 //here maybe hotkey
412 return ap_handle_hotkey(key);
\ 03A1 DD5EFE LD E,(IX-2)
\ 03A4 CD0000 CALL LWRD ap_handle_hotkey
\ 03A7 6F LD L,A
413 }
\ 03A8 ?0091:
\ 03A8 DDF9 LD SP,IX
\ 03AA DDE1 POP IX
\ 03AC FDE1 POP IY
\ 03AE C1 POP BC
\ 03AF C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 03B2 ?0086:
414 }
415
416 }
\ 03B2 1899 JR ?0078
\ 03B4 ap_handle_hotkey_core:
417
418 /*
419 ********************************************************************************
420 * Description : 处理热键消息, 返回结果消息
421 *
422 * Arguments : key, 按键消息
423 *
424 * Returns : 如果有可识别的热键消息, 返回结果消息
425 如果没有可识别的热键消息, 返回0
426 *
427 * Notes :
428 *
429 ********************************************************************************
430 */
431 char ap_handle_hotkey_core(char key)
432 {
\ 03B4 DDE5 PUSH IX
\ 03B6 DD210000 LD IX,0
\ 03BA DD39 ADD IX,SP
\ 03BC D5 PUSH DE
433 switch( key )
\ 03BD CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 03C0 0900 DEFW 9
\ 03C2 18 DEFB 24
\ 03C3 19 DEFB 25
\ 03C4 1A DEFB 26
\ 03C5 1D DEFB 29
\ 03C6 1F DEFB 31
\ 03C7 31 DEFB 49
\ 03C8 81 DEFB 129
\ 03C9 8B DEFB 139
\ 03CA 90 DEFB 144
\ 03CB 0F04 DEFW ?0101
\ 03CD E703 DEFW ?0095
\ 03CF DF03 DEFW ?0093
\ 03D1 E303 DEFW ?0094
\ 03D3 EB03 DEFW ?0096
\ 03D5 E303 DEFW ?0094
\ 03D7 E303 DEFW ?0094
\ 03D9 EF03 DEFW ?0097
\ 03DB F303 DEFW ?0098
\ 03DD F303 DEFW ?0098
\ 03DF ?0093:
434 {
435 case AP_MSG_LOW_POWER_MY:
436 return RESULT_STANDBYY;
\ 03DF 2ECA LD L,202
437
438 case AP_KEY_PLAY | AP_KEY_LONG: //长按play发standby
\ 03E1 182E JR ?0102
\ 03E3 ?0094:
439 case AP_MSG_STANDBY: //自动关机
440 //case AP_MSG_SLEEP: //睡眠
441 //case AP_MSG_LOW_POWER: //低电自动关机
442 case AP_MSG_FORCE_STANDBY: //使用上两个会报label duplicate
443 return RESULT_STANDBY;
\ 03E3 2E02 LD L,2
444 case AP_KEY_MODE | AP_KEY_LONG: //长按menu进入main
\ 03E5 182A JR ?0102
\ 03E7 ?0095:
445 return RESULT_MAIN;
\ 03E7 2E0A LD L,10
446
447 case AP_KEY_AB | AP_KEY_UP: //进入录音
\ 03E9 1826 JR ?0102
\ 03EB ?0096:
448 return RESULT_RECORD;
\ 03EB 2E09 LD L,9
449 case AP_MSG_USB_PLUGIN: //进入udisk 模式
\ 03ED 1822 JR ?0102
\ 03EF ?0097:
450 return RESULT_UDISK;
\ 03EF 2E04 LD L,4
451 case AP_MSG_LOCK: //locked
\ 03F1 181E JR ?0102
\ 03F3 ?0098:
452 case AP_MSG_UNLOCK: //unlocked
453 if(ui_run_realtime) //实时模式不显示lock
\ 03F3 3A0000 LD A,(ui_run_realtime)
\ 03F6 B7 OR A
\ 03F7 2804 JR Z,?0100
\ 03F9 ?0099:
454 {
455 //TODO: send lock message to message queue
456 return 0;
\ 03F9 2E00 LD L,0
457 }
\ 03FB 1814 JR ?0102
\ 03FD ?0100:
458 else
459 {
460 ///-ui_show_lock(1); //这里不处理热键,防止嵌套
461 ui_show_lock(key - AP_MSG_UNLOCK);
\ 03FD DD7EFE LD A,(IX-2)
\ 0400 C6E8 ADD A,232
\ 0402 5F LD E,A
\ 0403 3E00 LD A,BYTE3 ui_show_lock
\ 0405 210000 LD HL,LWRD ui_show_lock
\ 0408 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
462 return RESULT_REDRAW;
\ 040B 2E32 LD L,50
463 }
\ 040D 1802 JR ?0102
\ 040F ?0101:
464 default:
465 //here just drop the key
466 return 0;
\ 040F 2E00 LD L,0
467 }
\ 0411 ?0102:
\ 0411 DDF9 LD SP,IX
\ 0413 DDE1 POP IX
\ 0415 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0418 ?0092:
468 }
\ 0000 RSEG UDATA0
\ 0000 g_EarProtect_flag:
\ 0001 DEFS 1
\ 0001 EarProtectThreshold:
\ 0002 DEFS 1
\ 0002 g_autoswitch_time:
\ 0004 DEFS 2
\ 0000 RSEG IDATA0
\ 0000 g_decrease_time:
\ 0001 DEFS 1
\ 0001 g_half_hour_counter:
\ 0003 DEFS 2
\ 0003 g_autoswitch_counter:
\ 0005 DEFS 2
\ 0005 g_light_time:
\ 0006 DEFS 1
\ 0006 g_light_mode:
\ 0007 DEFS 1
\ 0007 g_contrast_num:
\ 0008 DEFS 1
\ 0008 g_sleep_time:
\ 000A DEFS 2
\ 000A g_standby_time:
\ 000C DEFS 2
\ 000C g_rtc_counter:
\ 000E DEFS 2
\ 000E g_light_flag:
\ 000F DEFS 1
\ 000F ?0012:
\ 0011 DEFS 2
\ 0011 ?0013:
\ 0012 DEFS 1
\ 0000 RSEG CDATA0
\ 0000 00 DEFB 0
\ 0001 0000 DEFW 0
\ 0003 0000 DEFW 0
\ 0005 00 DEFB 0
\ 0006 00 DEFB 0
\ 0007 00 DEFB 0
\ 0008 0000 DEFW 0
\ 000A 0000 DEFW 0
\ 000C 0000 DEFW 0
\ 000E 01 DEFB 1
\ 000F 0000 DEFW 0
\ 0011 00 DEFB 0
\ 0012 END
Errors: none
Warnings: none
Code size: 1048
Constant size: 18
Static variable size: Data(22) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -