📄 ap_message2.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:31:00 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ap_message2.c #
# List file = d:\case_i_d913f\ap\ap_fmrecord\list\ap_message2.lst #
# Object file = d:\case_i_d913f\ap\ap_fmrecord\obj\ap_message2.r01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_fmrecord\Obj\ -e #
# -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_fmrecord\List\ -q -t8 -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\COMMON\ap_message2.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ap_message2(17)
\ 0000 RSEG COM_MSG(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 PUBLIC EarProtectThreshold
\ 0000 EXTERN LightOnOff
\ 0000 PUBLIC Lightmodeset
\ 0000 EXTERN SetContrast
\ 0000 PUBLIC ap_get_event
\ 0000 EXTERN ap_get_message
\ 0000 PUBLIC ap_get_message_core
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC ap_handle_hotkey_core
\ 0000 PUBLIC ap_message_init
\ 0000 PUBLIC ap_set_event
\ 0000 PUBLIC ap_sleep
\ 0000 PUBLIC g_EarProtect_flag
\ 0000 PUBLIC g_autoswitch_counter
\ 0000 PUBLIC g_autoswitch_time
\ 0000 EXTERN g_comval
\ 0000 PUBLIC g_contrast_num
\ 0000 PUBLIC g_decrease_time
\ 0000 PUBLIC g_half_hour_counter
\ 0000 PUBLIC g_light_flag
\ 0000 PUBLIC g_light_mode
\ 0000 PUBLIC g_light_time
\ 0000 PUBLIC g_rtc_counter
\ 0000 PUBLIC g_sleep_time
\ 0000 PUBLIC g_standby_time
\ 0000 EXTERN sKY_Beep
\ 0000 EXTERN ui_run_realtime
\ 0000 EXTERN ui_show_lock
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG COM_MSG
\ 0000 Lightmodeset:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * ap common lib message file
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ap_message2.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
10 *******************************************************************************
11 */
12 #pragma codeseg(COM_MSG)
13
14 #include "ap_common.h"
15 //#define DEBUG
16
17 #ifdef EAR_PROTECT
18 #define EarProctetTimeTick 60 //30 seconds
19 byte g_decrease_time = 0;
20 int g_half_hour_counter = 0;
21 int g_autoswitch_counter = 0;
22 byte g_EarProtect_flag;
23 byte EarProtectThreshold;
24 int g_autoswitch_time;
25 #endif
26 BYTE g_light_time=0; //关背光时间,0.5秒为单位
27 BYTE g_light_mode=0; //关亮度模式,0:变暗,1:变黑
28 BYTE g_contrast_num=0; //对比度
29 WORD g_sleep_time=0; //睡眠时间,0.5秒为单位
30 WORD g_standby_time=0; //自动关机时间,0.5秒为单位
31 WORD g_rtc_counter=0; //rtc 消息计数
32 //BYTE charge_flag;
33 extern int DealPlayKey(void);
34 extern bool g_Pausetostop;
35 extern comval_t g_comval;
36 //WORD g_ap_event=0; //事件标志
37 bool g_light_flag = TRUE;//背景灯开关标志。
38 /*
39 * 对于普通按键的处理存在隐患,如果os把普通按键的值定义到0x20 以上,
40 * ap_get_message() 将不能正确处理, 正确的做法是用9个case, 不用default
41 */
42 #if Msg_KeyEQ > 0x20 || Msg_KeyMenu > 0x20 || \
43 Msg_KeyNext > 0x20 || Msg_KeyLast > 0x20 || \
44 Msg_KeyVolAdd > 0x20 || Msg_KeyVolSub > 0x20 || \
45 Msg_KeyPlayPause > 0x20 || Msg_KeyREC > 0x20 || \
46 Msg_KeyLoop > 0x20 || Msg_KeyVol > 0x20
47
48 #error os define key greater than 0x20
49 #endif
50 void Lightmodeset(bool OnOff)
51 {
\ 0000 D5 PUSH DE
52
53 if(g_light_mode==1)
\ 0001 3A0600 LD A,(g_light_mode)
\ 0004 3D DEC A
\ 0005 2005 JR NZ,?0005
\ 0007 ?0004:
54 {
55 LightOnOff(OnOff);
\ 0007 CD0000 CALL LWRD LightOnOff
56 }
57 else
\ 000A 180B JR ?0009
\ 000C ?0005:
58 {
59 if(!OnOff)SetContrast(0);
\ 000C AF XOR A
\ 000D B3 OR E
\ 000E 2804 JR Z,?0104
\ 0010 ?0007:
60 else
\ 0010 ?0008:
61 SetContrast(g_contrast_num);
\ 0010 ED5B0700 LD DE,(g_contrast_num)
\ 0014 ?0104:
\ 0014 CD0000 CALL LWRD SetContrast
\ 0017 ?0009:
\ 0017 ?0006:
62
63 }
64
65 }
\ 0017 E1 POP HL
\ 0018 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 001B ap_message_init:
66
67 /*
68 ********************************************************************************
69 * Description : 初始化消息处理
70 *
71 * Arguments : comval, 系统设定值, =null 表示只初始化内部计数器
72 *
73 * Returns :
74 *
75 * Notes :
76 *
77 ********************************************************************************
78 */
79 void ap_message_init(const comval_t *comval)
80 {
\ 001B C5 PUSH BC
\ 001C DDE5 PUSH IX
\ 001E D5 PUSH DE
\ 001F DDE1 POP IX
81
82 if(comval != NULL)
\ 0021 7B LD A,E
\ 0022 B2 OR D
\ 0023 2848 JR Z,?0011
\ 0025 ?0010:
83 {
84 g_light_time = comval->LightTime * 2;
\ 0025 DD7E09 LD A,(IX+9)
\ 0028 87 ADD A,A
\ 0029 320500 LD (g_light_time),A
85 g_light_mode = comval->Lightmode;
\ 002C DD7E14 LD A,(IX+20)
\ 002F 320600 LD (g_light_mode),A
86 g_sleep_time = comval->SleepTime * 60 * 2;
\ 0032 DD4E0B LD C,(IX+11)
\ 0035 0600 LD B,0
\ 0037 113C00 LD DE,60
\ 003A CD0000 CALL LWRD ?S_MUL_L02
\ 003D EB EX DE,HL
\ 003E 29 ADD HL,HL
\ 003F 220800 LD (g_sleep_time),HL
87
88 g_standby_time = comval->StandbyTime * 2;
\ 0042 DD6E0A LD L,(IX+10)
\ 0045 60 LD H,B
\ 0046 29 ADD HL,HL
\ 0047 220A00 LD (g_standby_time),HL
89 g_contrast_num = comval->DisplayContrast;
\ 004A DD7E08 LD A,(IX+8)
\ 004D 320700 LD (g_contrast_num),A
90 #ifdef EAR_PROTECT
91 g_EarProtect_flag = comval->EarProtect_flag;
\ 0050 DD7E18 LD A,(IX+24)
\ 0053 320000 LD (g_EarProtect_flag),A
92 EarProtectThreshold = comval->EarProtectThreshold;
\ 0056 DD7E19 LD A,(IX+25)
\ 0059 320100 LD (EarProtectThreshold),A
93 g_autoswitch_time = comval->auto_switchoff_time * 60 * 2;
\ 005C DD4E1B LD C,(IX+27)
\ 005F DD461C LD B,(IX+28)
\ 0062 113C00 LD DE,60
\ 0065 CD0000 CALL LWRD ?S_MUL_L02
\ 0068 EB EX DE,HL
\ 0069 29 ADD HL,HL
\ 006A 220200 LD (g_autoswitch_time),HL
\ 006D ?0011:
94 #endif
95 }
96
97 g_rtc_counter = 0;
\ 006D 210000 LD HL,0
\ 0070 220C00 LD (g_rtc_counter),HL
98 // g_light_flag = TRUE;
99 }
\ 0073 DDE1 POP IX
\ 0075 C1 POP BC
\ 0076 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0079 ap_get_message_core:
100
101
102 /*
103 ********************************************************************************
104 * Description : 处理系统消息, 返回按键消息, 同时负责开/关背光
105 *
106 * Arguments : key, 系统消息
107 *
108 * Returns : 返回ap能够识别的消息, 如果没有系统消息, 返回 AP_KEY_NULL
109 *
110 * Notes :
111
112 * 按键时序:
113 * 0.....1.2....1.5........... (s)
114 * key long hold up (>1.2s)
115 * key up (<1.2s)
116 *
117 * key rate: 0.3s
118 *
119 ********************************************************************************
120 */
121 char ap_get_message_core(char key)
122 {
\ 0079 C5 PUSH BC
\ 007A DDE5 PUSH IX
\ 007C DD210000 LD IX,0
\ 0080 DD39 ADD IX,SP
\ 0082 D5 PUSH DE
\ 0083 F5 PUSH AF
123 static WORD key_count=0; //当前按键消息发生的次数
124 static char key_value=Msg_KeyNull; //当前按键的值
125 #ifdef EAR_PROTECT
126 char tempVolume;
127 bool counter_flag = FALSE;
128
129 tempVolume = input8(0x87)&0x1f;
\ 0084 DB87 IN A,(135)
\ 0086 E61F AND 31
\ 0088 DD77FC LD (IX-4),A
130 if (tempVolume > EarProtectThreshold)
\ 008B 47 LD B,A
\ 008C 3A0100 LD A,(EarProtectThreshold)
\ 008F B8 CP B
\ 0090 3006 JR NC,?0015
\ 0092 ?0014:
131 {
132 counter_flag = TRUE;
\ 0092 DD36FD01 LD (IX-3),1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -