📄 ap_message2.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 16:58:52 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\common\ap_message2.c #
# List file = d:\case_i_d90f\ap\ap_amv\list\ap_message2.lst #
# Object file = d:\case_i_d90f\ap\ap_amv\obj\ap_message2.r01 #
# ASM file = d:\case_i_d90f\ap\ap_amv\list\ap_message2.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_amv\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d90f\ap\ap_amv\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_amv\List\ #
# -ND:\case_i_d90f\ap\ap_amv\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# D:\CASE_I_D90F\AP\COMMON\ap_message2.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ap_message2(17)
\ 0000 RSEG COM_MSG(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN LightOnOff
\ 0000 PUBLIC Lightmodeset
\ 0000 EXTERN SetContrast
\ 0000 PUBLIC ap_del_event
\ 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_ap_event
\ 0000 PUBLIC g_contrast_num
\ 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 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 BYTE g_light_time=0; //关背光时间,0.5秒为单位
18 BYTE g_light_mode=0; //关亮度模式,0:变暗,1:变黑
19 BYTE g_contrast_num=0; //对比度
20 WORD g_sleep_time=0; //睡眠时间,0.5秒为单位
21 WORD g_standby_time=0; //自动关机时间,0.5秒为单位
22 WORD g_rtc_counter=0; //rtc 消息计数
23 //BYTE charge_flag;
24 extern int DealPlayKey(void);
25 extern bool g_Pausetostop;
26 extern comval_t g_comval;
27 WORD g_ap_event=0; //事件标志
28 /*
29 char g_ap_message[4]={0, 0, 0, 0}; //ap 消息队列
30 char g_ap_message_index=0; //ap 消息队列的读写指针
31 */
32 bool g_light_flag = TRUE;//背景灯开关标志。
33 /*
34 * 对于普通按键的处理存在隐患,如果os把普通按键的值定义到0x20 以上,
35 * ap_get_message() 将不能正确处理, 正确的做法是用9个case, 不用default
36 */
37 #if Msg_KeyEQ > 0x20 || Msg_KeyMenu > 0x20 || \
38 Msg_KeyNext > 0x20 || Msg_KeyLast > 0x20 || \
39 Msg_KeyVolAdd > 0x20 || Msg_KeyVolSub > 0x20 || \
40 Msg_KeyPlayPause > 0x20 || Msg_KeyREC > 0x20 || Msg_KeyLoop > 0x20
41
42 #error os define key greater than 0x20
43 #endif
44 void Lightmodeset(bool OnOff)
45 {
\ 0000 D5 PUSH DE
46
47 if(g_light_mode==1)
\ 0001 3A0100 LD A,(g_light_mode)
\ 0004 3D DEC A
\ 0005 2005 JR NZ,?0005
\ 0007 ?0004:
48 {
49 LightOnOff(OnOff);
\ 0007 CD0000 CALL LWRD LightOnOff
50 }
51 else
\ 000A 180B JR ?0009
\ 000C ?0005:
52 {
53 if(!OnOff)SetContrast(0);
\ 000C AF XOR A
\ 000D B3 OR E
\ 000E 2804 JR Z,?0093
\ 0010 ?0007:
54 else
\ 0010 ?0008:
55 SetContrast(g_contrast_num);
\ 0010 ED5B0200 LD DE,(g_contrast_num)
\ 0014 ?0093:
\ 0014 CD0000 CALL LWRD SetContrast
\ 0017 ?0009:
\ 0017 ?0006:
56
57 }
58
59 }
\ 0017 E1 POP HL
\ 0018 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 001B ap_message_init:
60
61 /*
62 ********************************************************************************
63 * Description : 初始化消息处理
64 *
65 * Arguments : comval, 系统设定值, =null 表示只初始化内部计数器
66 *
67 * Returns :
68 *
69 * Notes :
70 *
71 ********************************************************************************
72 */
73 void ap_message_init(const comval_t *comval)
74 {
\ 001B C5 PUSH BC
\ 001C DDE5 PUSH IX
\ 001E D5 PUSH DE
\ 001F DDE1 POP IX
75
76 if(comval != NULL)
\ 0021 7B LD A,E
\ 0022 B2 OR D
\ 0023 282B JR Z,?0011
\ 0025 ?0010:
77 {
78 g_light_time = comval->LightTime * 2;
\ 0025 DD7E09 LD A,(IX+9)
\ 0028 87 ADD A,A
\ 0029 320000 LD (g_light_time),A
79 g_light_mode = comval->Lightmode;
\ 002C DD7E16 LD A,(IX+22)
\ 002F 320100 LD (g_light_mode),A
80 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 220300 LD (g_sleep_time),HL
81
82 g_standby_time = comval->StandbyTime * 2;
\ 0042 DD6E0A LD L,(IX+10)
\ 0045 60 LD H,B
\ 0046 29 ADD HL,HL
\ 0047 220500 LD (g_standby_time),HL
83 g_contrast_num = comval->DisplayContrast;
\ 004A DD7E08 LD A,(IX+8)
\ 004D 320200 LD (g_contrast_num),A
\ 0050 ?0011:
84 }
85
86 g_rtc_counter = 0;
\ 0050 210000 LD HL,0
\ 0053 220700 LD (g_rtc_counter),HL
87 // g_light_flag = TRUE;
88 }
\ 0056 DDE1 POP IX
\ 0058 C1 POP BC
\ 0059 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 005C ap_get_message_core:
89
90
91 /*
92 ********************************************************************************
93 * Description : 处理系统消息, 返回按键消息, 同时负责开/关背光
94 *
95 * Arguments : key, 系统消息
96 *
97 * Returns : 返回ap能够识别的消息, 如果没有系统消息, 返回 AP_KEY_NULL
98 *
99 * Notes :
100
101 * 按键时序:
102 * 0.....1.2....1.5........... (s)
103 * key long hold up (>1.2s)
104 * key up (<1.2s)
105 *
106 * key rate: 0.3s
107 *
108 ********************************************************************************
109 */
110 char ap_get_message_core(char key)
111 {
\ 005C C5 PUSH BC
\ 005D DDE5 PUSH IX
\ 005F DD210000 LD IX,0
\ 0063 DD39 ADD IX,SP
\ 0065 D5 PUSH DE
112 static WORD key_count=0; //当前按键消息发生的次数
113 static char key_value=Msg_KeyNull; //当前按键的值
114
115
116 //和上次的一样
117 if(key == key_value)
\ 0066 3A0E00 LD A,(?0013)
\ 0069 47 LD B,A
\ 006A 7B LD A,E
\ 006B B8 CP B
\ 006C 203C JR NZ,?0015
\ 006E ?0014:
118 {
119 //开背光
120 if (!g_light_flag)
\ 006E 3A0B00 LD A,(g_light_flag)
\ 0071 B7 OR A
\ 0072 200B JR NZ,?0017
\ 0074 ?0016:
121 {
122 //如背灯没开,不理按键
123 key_count = 0;
\ 0074 6F LD L,A
\ 0075 67 LD H,A
\ 0076 220C00 LD (?0012),HL
124 g_rtc_counter = 0;
\ 0079 220700 LD (g_rtc_counter),HL
125 return NULL;
\ 007C C3D801 JP LWRD ?0096
126 }
\ 007F ?0017:
127
128 g_rtc_counter = 0;
\ 007F 210000 LD HL,0
\ 0082 220700 LD (g_rtc_counter),HL
129 key_count++;
\ 0085 2A0C00 LD HL,(?0012)
\ 0088 23 INC HL
\ 0089 220C00 LD (?0012),HL
130 //key rate: ...0.3...0.3...0.3...0.3
131 if(key_count == 4) key |= AP_KEY_LONG; //=1.2s
\ 008C 3E04 LD A,4
\ 008E AD XOR L
\ 008F B4 OR H
\ 0090 2007 JR NZ,?0019
\ 0092 ?0018:
\ 0092 DDCBFEFE SET 7,(IX-2)
\ 0096 C3DC01 JP LWRD ?0056
\ 0099 ?0019:
132 else if(key_count > 4) key |= AP_KEY_HOLD;
\ 0099 4D LD C,L
\ 009A 44 LD B,H
\ 009B 210400 LD HL,4
\ 009E ED42 SBC HL,BC
\ 00A0 D2DC01 JP NC,?0056
\ 00A3 ?0021:
\ 00A3 DDCBFEF6 SET 6,(IX-2)
\ 00A7 ?0022:
\ 00A7 ?0020:
133 return key;
\ 00A7 C3DC01 JP LWRD ?0056
134 }
\ 00AA ?0015:
135
136 switch( key )
\ 00AA CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 00AD 0C00 DEFW 12
\ 00AF 00 DEFB 0
\ 00B0 22 DEFB 34
\ 00B1 24 DEFB 36
\ 00B2 30 DEFB 48
\ 00B3 31 DEFB 49
\ 00B4 80 DEFB 128
\ 00B5 81 DEFB 129
\ 00B6 82 DEFB 130
\ 00B7 91 DEFB 145
\ 00B8 92 DEFB 146
\ 00B9 B0 DEFB 176
\ 00BA B1 DEFB 177
\ 00BB C001 DEFW ?0054
\ 00BD BA01 DEFW ?0053
\ 00BF B401 DEFW ?0052
\ 00C1 9A01 DEFW ?0050
\ 00C3 6B01 DEFW ?0045
\ 00C5 9401 DEFW ?0049
\ 00C7 FC00 DEFW ?0027
\ 00C9 FC00 DEFW ?0027
\ 00CB D500 DEFW ?0024
\ 00CD D500 DEFW ?0024
\ 00CF 9A01 DEFW ?0050
\ 00D1 A001 DEFW ?0051
\ 00D3 9A01 DEFW ?0050
\ 00D5 ?0024:
137 {
138 case Msg_KeyLongUp:
139 case Msg_KeyShortUp:
140 key_count = 0;
\ 00D5 210000 LD HL,0
\ 00D8 220C00 LD (?0012),HL
141 g_rtc_counter = 0;
\ 00DB 220700 LD (g_rtc_counter),HL
142 if (!g_light_flag)
\ 00DE 3A0B00 LD A,(g_light_flag)
\ 00E1 B7 OR A
\ 00E2 2012 JR NZ,?0026
\ 00E4 ?0025:
143 {
144 Lightmodeset(TRUE);//开关背光(TRUE: 开, FALSE:关)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -