📄 ap_message2.lst
字号:
\ 00E4 1E01 LD E,1
\ 00E6 3E00 LD A,BYTE3 Lightmodeset
\ 00E8 210000 LD HL,LWRD Lightmodeset
\ 00EB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
145 g_light_flag = TRUE;
\ 00EE 3E01 LD A,1
\ 00F0 320B00 LD (g_light_flag),A
146 return NULL;
\ 00F3 C3D801 JP LWRD ?0096
147 }
\ 00F6 ?0026:
148 key = key_value | AP_KEY_UP;
\ 00F6 78 LD A,B
\ 00F7 CBEF SET 5,A
\ 00F9 C3AF01 JP LWRD ?0097
149 break;
\ 00FC ?0027:
150
151
152 case MSG_RTC2HZ: //rtc
153 case MSG_BAT_V_CHG: //charging & rtc
154 g_rtc_counter++;
\ 00FC 2A0700 LD HL,(g_rtc_counter)
\ 00FF 23 INC HL
\ 0100 220700 LD (g_rtc_counter),HL
155
156 if((g_light_time != 0) && (g_rtc_counter >= g_light_time)&&((input8(0x57) & 0x02)==0)) //自动关背光
\ 0103 3A0000 LD A,(g_light_time)
\ 0106 B7 OR A
\ 0107 281A JR Z,?0029
\ 0109 4F LD C,A
\ 010A 0600 LD B,0
\ 010C ED42 SBC HL,BC
\ 010E 3813 JR C,?0029
\ 0110 DB57 IN A,(87)
\ 0112 CB4F BIT 1,A
\ 0114 200D JR NZ,?0029
\ 0116 ?0031:
\ 0116 ?0030:
\ 0116 ?0028:
157 {
158 //关背光
159 Lightmodeset(FALSE); //开关背光(true: 开, false:关) //zxs add for test
\ 0116 58 LD E,B
\ 0117 3E00 LD A,BYTE3 Lightmodeset
\ 0119 210000 LD HL,LWRD Lightmodeset
\ 011C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
160 g_light_flag = FALSE;
\ 011F AF XOR A
\ 0120 320B00 LD (g_light_flag),A
\ 0123 ?0029:
161 }
162 if(g_sleep_time != 0 && g_rtc_counter == g_sleep_time) //睡眠
\ 0123 2A0300 LD HL,(g_sleep_time)
\ 0126 7D LD A,L
\ 0127 B4 OR H
\ 0128 280D JR Z,?0033
\ 012A ED4B0700 LD BC,(g_rtc_counter)
\ 012E ED42 SBC HL,BC
\ 0130 2005 JR NZ,?0033
\ 0132 ?0035:
\ 0132 ?0034:
\ 0132 ?0032:
163 {
164 return AP_MSG_SLEEP;
\ 0132 2E1F LD L,31
165 }
\ 0134 C3DF01 JP LWRD ?0057
\ 0137 ?0033:
166
167 if(g_standby_time != 0 && g_rtc_counter == g_standby_time) //自动关机
\ 0137 2A0500 LD HL,(g_standby_time)
\ 013A 7D LD A,L
\ 013B B4 OR H
\ 013C 280D JR Z,?0037
\ 013E ED4B0700 LD BC,(g_rtc_counter)
\ 0142 ED42 SBC HL,BC
\ 0144 2005 JR NZ,?0037
\ 0146 ?0039:
\ 0146 ?0038:
\ 0146 ?0036:
168 {
169 return AP_MSG_STANDBY;
\ 0146 2E1D LD L,29
170 }
\ 0148 C3DF01 JP LWRD ?0057
\ 014B ?0037:
171
172 if( (g_rtc_counter % 16) == 0 )
\ 014B 2A0700 LD HL,(g_rtc_counter)
\ 014E 7D LD A,L
\ 014F E60F AND 15
\ 0151 2005 JR NZ,?0041
\ 0153 ?0040:
173 {
174
175 return AP_MSG_WAIT_TIMEOUT; //8 sec timeout
\ 0153 2E1E LD L,30
176 }
\ 0155 C3DF01 JP LWRD ?0057
\ 0158 ?0041:
177
178 if(key == MSG_RTC2HZ) key = AP_MSG_RTC;
\ 0158 DD46FE LD B,(IX-2)
\ 015B 05 DEC B
\ 015C E26501 JP PO,?0043
\ 015F ?0042:
\ 015F DD36FE1C LD (IX-2),28
\ 0163 1877 JR ?0056
\ 0165 ?0043:
179 else key = AP_MSG_CHARGING;
\ 0165 DD36FE1B LD (IX-2),27
\ 0169 ?0044:
180
181 break;
\ 0169 1871 JR ?0056
\ 016B ?0045:
182
183
184 case MSG_USB_STICK: //usb plugin, 等同按键
185 output8(0xf4,input8(0x0f4)&0xF7); //set gio_c3 to low to cut battery
\ 016B DBF4 IN A,(244)
\ 016D CB9F RES 3,A
\ 016F D3F4 OUT (244),A
186 g_rtc_counter = 0;
\ 0171 210000 LD HL,0
\ 0174 220700 LD (g_rtc_counter),HL
187 key_count = 1;
\ 0177 23 INC HL
\ 0178 220C00 LD (?0012),HL
188 key = AP_MSG_USB_PLUGIN;
\ 017B DD36FE1A LD (IX-2),26
189
190 //开背光
191 if(g_light_time != 0)
\ 017F 3A0000 LD A,(g_light_time)
\ 0182 B7 OR A
\ 0183 2857 JR Z,?0056
\ 0185 ?0046:
192 {
193 Lightmodeset(TRUE);//开关背光(TRUE: 开, FALSE:关)
\ 0185 5D LD E,L
\ 0186 3E00 LD A,BYTE3 Lightmodeset
\ 0188 210000 LD HL,LWRD Lightmodeset
\ 018B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
194 g_light_flag = FALSE;
\ 018E AF XOR A
\ 018F 320B00 LD (g_light_flag),A
195 }
196 else
\ 0192 ?0047:
\ 0192 ?0048:
197 {
198 }
199 break;
\ 0192 1848 JR ?0056
\ 0194 ?0049:
200
201 //#ifndef DEBUG
202 case MSG_LOW_POWER: //low power, nmi 0.98v
203 DUMP("low power", 0);
204 key = AP_MSG_LOW_POWER;
\ 0194 DD36FE1F LD (IX-2),31
205 break;
\ 0198 1842 JR ?0056
\ 019A ?0050:
206 //#endif
207
208 case MSG_USB_UNSTICK: //ap 不识别的消息
209
210 case Msg_KeyNull: //没有按键
211
212 case Msg_KeyUnHold:
213 key = AP_KEY_NULL;
\ 019A DD36FE00 LD (IX-2),0
214 break;
\ 019E 183C JR ?0056
\ 01A0 ?0051:
215
216
217 case Msg_KeyHold:
218 //lock 后还会有up消息
219 key = AP_MSG_LOCK;
220 g_rtc_counter = 0;
\ 01A0 210000 LD HL,0
\ 01A3 220700 LD (g_rtc_counter),HL
221 key_count = 1;
\ 01A6 23 INC HL
\ 01A7 220C00 LD (?0012),HL
222 key_value = key;
\ 01AA 3E19 LD A,25
\ 01AC 320E00 LD (?0013),A
\ 01AF ?0097:
\ 01AF DD77FE LD (IX-2),A
223
224 break;
\ 01B2 1828 JR ?0056
\ 01B4 ?0052:
225
226 case MSG_SD_IN:/*插卡状态*/
227 key = AP_MSG_SD_IN;
\ 01B4 DD36FE38 LD (IX-2),56
228 break;
\ 01B8 1822 JR ?0056
\ 01BA ?0053:
229
230 case MSG_SD_OUT:/*拨卡状态*/
231 key = AP_MSG_SD_OUT;
\ 01BA DD36FE37 LD (IX-2),55
232 break;
\ 01BE 181C JR ?0056
\ 01C0 ?0054:
233
234 default: //新的按键
235 g_rtc_counter = 0;
\ 01C0 210000 LD HL,0
\ 01C3 220700 LD (g_rtc_counter),HL
236 key_count = 1;
\ 01C6 23 INC HL
\ 01C7 220C00 LD (?0012),HL
237 key_value = key;
\ 01CA 7B LD A,E
\ 01CB 320E00 LD (?0013),A
238
239 //开背光
240 if (!g_light_flag)
\ 01CE 3A0B00 LD A,(g_light_flag)
\ 01D1 B7 OR A
\ 01D2 2008 JR NZ,?0056
\ 01D4 ?0055:
241 {
242 //如背灯没开,不理按键
243 key_count = 0;
\ 01D4 2B DEC HL
\ 01D5 220C00 LD (?0012),HL
244 g_rtc_counter = 0;
245 return NULL;
\ 01D8 ?0096:
\ 01D8 2E00 LD L,0
246 }
\ 01DA 1803 JR ?0057
\ 01DC ?0056:
\ 01DC ?0023:
247 } //switch()
248 return key;
\ 01DC DD6EFE LD L,(IX-2)
249 }
\ 01DF ?0057:
\ 01DF DDF9 LD SP,IX
\ 01E1 DDE1 POP IX
\ 01E3 C1 POP BC
\ 01E4 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01E7 ap_set_event:
250
251
252 /*
253 ********************************************************************************
254 * Description : 设置事件发生标志
255 *
256 * Arguments : event, 事件集合
257 *
258 * Returns :
259 *
260 * Notes :
261 *
262 ********************************************************************************
263 */
264 void ap_set_event(WORD event)
265 {
\ 01E7 C5 PUSH BC
\ 01E8 D5 PUSH DE
\ 01E9 4B LD C,E
\ 01EA 42 LD B,D
\ 01EB 210900 LD HL,g_ap_event
\ 01EE 7E LD A,(HL)
\ 01EF B1 OR C
\ 01F0 77 LD (HL),A
\ 01F1 23 INC HL
\ 01F2 7E LD A,(HL)
\ 01F3 B0 OR B
\ 01F4 77 LD (HL),A
266 g_ap_event |= event;
267 }
\ 01F5 E1 POP HL
\ 01F6 C1 POP BC
\ 01F7 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01FA ap_get_event:
268
269 /*
270 ********************************************************************************
271 * Description : 检测事件是否发生
272 *
273 * Arguments : event, 需要检测的事件集合
274 condition:
275 AP_EVENT_ALL: 所有事件发生,返回event,否则返回0
276 AP_EVENT_ANY: 任意事件发生,返回event,否则返回0
277 * Returns : event 按照 condition 指定的条件发生,返回系统事件的集合
278 不满足条件, 返回0
279 *
280 * Notes :
281 *
282 ********************************************************************************
283 */
284 WORD ap_get_event(WORD event, WORD condition)
285 {
\ 01FA FDE5 PUSH IY
\ 01FC DDE5 PUSH IX
\ 01FE D5 PUSH DE
\ 01FF DDE1 POP IX
\ 0201 C5 PUSH BC
\ 0202 FDE1 POP IY
286 if(condition == AP_EVENT_ALL)
\ 0204 79 LD A,C
\ 0205 A0 AND B
\ 0206 3C INC A
\ 0207 2013 JR NZ,?0059
\ 0209 ?0058:
287 {
288 if( (g_ap_event & event) == event) return g_ap_event;
\ 0209 2A0900 LD HL,(g_ap_event)
\ 020C DDE5 PUSH IX
\ 020E C1 POP BC
\ 020F 7D LD A,L
\ 0210 A1 AND C
\ 0211 5F LD E,A
\ 0212 7C LD A,H
\ 0213 A0 AND B
\ 0214 57 LD D,A
\ 0215 EB EX DE,HL
\ 0216 ED42 SBC HL,BC
\ 0218 201C JR NZ,?0063
\ 021A ?0060:
\ 021A 1815 JR ?0103
\ 021C ?0061:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -