📄 ap_message2.lst
字号:
\ 00C5 ED42 SBC HL,BC
\ 00C7 2003 JR NZ,?0021
\ 00C9 ?0023:
\ 00C9 ?0022:
\ 00C9 ?0020:
145 {
146 //关背光
147 sKY_CloseBacklight();
\ 00C9 CD0000 CALL LWRD sKY_CloseBacklight
\ 00CC ?0021:
148 }
149
150 if(g_sleep_time != 0 && g_rtc_counter == g_sleep_time) //睡眠
\ 00CC 2A0100 LD HL,(g_sleep_time)
\ 00CF 7D LD A,L
\ 00D0 B4 OR H
\ 00D1 280D JR Z,?0025
\ 00D3 ED4B0500 LD BC,(g_rtc_counter)
\ 00D7 ED42 SBC HL,BC
\ 00D9 2005 JR NZ,?0025
\ 00DB ?0027:
\ 00DB ?0026:
\ 00DB ?0024:
151 {
152 return AP_MSG_SLEEP;
\ 00DB 2E1F LD L,31
153 }
\ 00DD C36C01 JP LWRD ?0048
\ 00E0 ?0025:
154
155 if(g_standby_time != 0 && g_rtc_counter == g_standby_time) //自动关机
\ 00E0 2A0300 LD HL,(g_standby_time)
\ 00E3 7D LD A,L
\ 00E4 B4 OR H
\ 00E5 280C JR Z,?0029
\ 00E7 ED4B0500 LD BC,(g_rtc_counter)
\ 00EB ED42 SBC HL,BC
\ 00ED 2004 JR NZ,?0029
\ 00EF ?0031:
\ 00EF ?0030:
\ 00EF ?0028:
156 {
157 return AP_MSG_STANDBY;
\ 00EF 2E1D LD L,29
158 }
\ 00F1 1879 JR ?0048
\ 00F3 ?0029:
159
160 if( (g_rtc_counter % 16) == 0 )
\ 00F3 2A0500 LD HL,(g_rtc_counter)
\ 00F6 7D LD A,L
\ 00F7 E60F AND 15
\ 00F9 2004 JR NZ,?0033
\ 00FB ?0032:
161 {
162
163 return AP_MSG_WAIT_TIMEOUT; //8 sec timeout
\ 00FB 2E1E LD L,30
164 }
\ 00FD 186D JR ?0048
\ 00FF ?0033:
165
166 if(key == MSG_RTC2HZ) key = AP_MSG_RTC;
\ 00FF 43 LD B,E
\ 0100 05 DEC B
\ 0101 E20A01 JP PO,?0035
\ 0104 ?0034:
\ 0104 DD36FE1C LD (IX-2),28
\ 0108 185F JR ?0047
\ 010A ?0035:
167 else key = AP_MSG_CHARGING;
\ 010A DD36FE1B LD (IX-2),27
\ 010E ?0036:
168
169 break;
\ 010E 1859 JR ?0047
\ 0110 ?0037:
170
171
172 case MSG_USB_STICK: //usb plugin, 等同按键
173 g_rtc_counter = 0;
\ 0110 210000 LD HL,0
\ 0113 220500 LD (g_rtc_counter),HL
174 key_count = 1;
\ 0116 23 INC HL
\ 0117 220900 LD (?0006),HL
175 key = AP_MSG_USB_PLUGIN;
\ 011A DD36FE1A LD (IX-2),26
176
177 //开背光
178 if(g_light_time != 0) sKY_OpenBacklight();
\ 011E 3A0000 LD A,(g_light_time)
\ 0121 B7 OR A
\ 0122 2845 JR Z,?0047
\ 0124 ?0038:
\ 0124 1840 JR ?0084
\ 0126 ?0039:
179
180 break;
\ 0126 ?0040:
181
182
183 case MSG_LOW_POWER: //low power, nmi 0.98v
184 DUMP("low power", 0);
185 key = AP_MSG_LOW_POWER;
\ 0126 DD36FE1F LD (IX-2),31
186 break;
\ 012A 183D JR ?0047
\ 012C ?0041:
187
188
189 case Msg_KeyNull: //没有按键
190 case MSG_USB_UNSTICK: //ap 不识别的消息
191 case Msg_KeyUnHold:
192 key = AP_KEY_NULL;
\ 012C DD36FE00 LD (IX-2),0
193 break;
\ 0130 1837 JR ?0047
\ 0132 ?0042:
194
195
196 case Msg_KeyHold:
197 //lock 后还会有up消息
198 key = AP_MSG_LOCK;
199 g_rtc_counter = 0;
\ 0132 210000 LD HL,0
\ 0135 220500 LD (g_rtc_counter),HL
200 key_count = 1;
\ 0138 23 INC HL
\ 0139 220900 LD (?0006),HL
201 key_value = key;
\ 013C 3E19 LD A,25
\ 013E 320B00 LD (?0007),A
\ 0141 ?0085:
\ 0141 DD77FE LD (IX-2),A
202
203 break;
\ 0144 1823 JR ?0047
\ 0146 ?0043:
204
205 case MSG_SD_IN:/*插卡状态*/
206 key = AP_MSG_SD_IN;
\ 0146 DD36FE38 LD (IX-2),56
207 break;
\ 014A 181D JR ?0047
\ 014C ?0044:
208
209 case MSG_SD_OUT:/*拨卡状态*/
210 key = AP_MSG_SD_OUT;
\ 014C DD36FE37 LD (IX-2),55
211 break;
\ 0150 1817 JR ?0047
\ 0152 ?0045:
212
213 default: //新的按键
214 g_rtc_counter = 0;
\ 0152 210000 LD HL,0
\ 0155 220500 LD (g_rtc_counter),HL
215 key_count = 1;
\ 0158 23 INC HL
\ 0159 220900 LD (?0006),HL
216 key_value = key;
\ 015C 7B LD A,E
\ 015D 320B00 LD (?0007),A
217
218 //开背光
219 if(g_light_time != 0) sKY_OpenBacklight();
\ 0160 3A0000 LD A,(g_light_time)
\ 0163 B7 OR A
\ 0164 2803 JR Z,?0047
\ 0166 ?0046:
\ 0166 ?0084:
\ 0166 CD0000 CALL LWRD sKY_OpenBacklight
\ 0169 ?0047:
\ 0169 ?0017:
220
221 } //switch()
222 return key;
\ 0169 DD6EFE LD L,(IX-2)
223 }
\ 016C ?0048:
\ 016C DDF9 LD SP,IX
\ 016E DDE1 POP IX
\ 0170 C1 POP BC
\ 0171 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0174 ap_set_event:
224 /*
225 void ap_send_message(char message)
226 {
227 g_ap_message_index++;
228
229 //check if exeeds tail
230 if( g_ap_message_index >= sizeof(g_ap_message)) g_ap_message_index = 0;
231
232 g_ap_message[g_ap_message_index] = message;
233 }
234
235 void ap_clear_message(void)
236 {
237 BYTE i;
238
239 for(i=0; i<sizeof(g_ap_message); i++) g_ap_message[i] = 0;
240 }
241 */
242
243 /*
244 ********************************************************************************
245 * Description : 设置事件发生标志
246 *
247 * Arguments : event, 事件集合
248 *
249 * Returns :
250 *
251 * Notes :
252 *
253 ********************************************************************************
254 */
255 void ap_set_event(WORD event)
256 {
\ 0174 C5 PUSH BC
\ 0175 D5 PUSH DE
\ 0176 4B LD C,E
\ 0177 42 LD B,D
\ 0178 210700 LD HL,g_ap_event
\ 017B 7E LD A,(HL)
\ 017C B1 OR C
\ 017D 77 LD (HL),A
\ 017E 23 INC HL
\ 017F 7E LD A,(HL)
\ 0180 B0 OR B
\ 0181 77 LD (HL),A
257 g_ap_event |= event;
258 }
\ 0182 E1 POP HL
\ 0183 C1 POP BC
\ 0184 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0187 ap_get_event:
259
260 /*
261 ********************************************************************************
262 * Description : 检测事件是否发生
263 *
264 * Arguments : event, 需要检测的事件集合
265 condition:
266 AP_EVENT_ALL: 所有事件发生,返回event,否则返回0
267 AP_EVENT_ANY: 任意事件发生,返回event,否则返回0
268 * Returns : event 按照 condition 指定的条件发生,返回系统事件的集合
269 不满足条件, 返回0
270 *
271 * Notes :
272 *
273 ********************************************************************************
274 */
275 WORD ap_get_event(WORD event, WORD condition)
276 {
\ 0187 FDE5 PUSH IY
\ 0189 DDE5 PUSH IX
\ 018B D5 PUSH DE
\ 018C DDE1 POP IX
\ 018E C5 PUSH BC
\ 018F FDE1 POP IY
277 if(condition == AP_EVENT_ALL)
\ 0191 79 LD A,C
\ 0192 A0 AND B
\ 0193 3C INC A
\ 0194 2013 JR NZ,?0050
\ 0196 ?0049:
278 {
279 if( (g_ap_event & event) == event) return g_ap_event;
\ 0196 2A0700 LD HL,(g_ap_event)
\ 0199 DDE5 PUSH IX
\ 019B C1 POP BC
\ 019C 7D LD A,L
\ 019D A1 AND C
\ 019E 5F LD E,A
\ 019F 7C LD A,H
\ 01A0 A0 AND B
\ 01A1 57 LD D,A
\ 01A2 EB EX DE,HL
\ 01A3 ED42 SBC HL,BC
\ 01A5 201C JR NZ,?0054
\ 01A7 ?0051:
\ 01A7 1815 JR ?0091
\ 01A9 ?0052:
280 else return 0;
281 }
\ 01A9 ?0050:
282 else if(condition == AP_EVENT_ANY)
\ 01A9 FDE5 PUSH IY
\ 01AB E1 POP HL
\ 01AC 7D LD A,L
\ 01AD B4 OR H
\ 01AE 2013 JR NZ,?0054
\ 01B0 ?0053:
283 {
284 if( (g_ap_event & event) != 0) return g_ap_event;
\ 01B0 2A0700 LD HL,(g_ap_event)
\ 01B3 DDE5 PUSH IX
\ 01B5 C1 POP BC
\ 01B6 7D LD A,L
\ 01B7 A1 AND C
\ 01B8 57 LD D,A
\ 01B9 7C LD A,H
\ 01BA A0 AND B
\ 01BB B2 OR D
\ 01BC 2805 JR Z,?0054
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -