📄 ap_message2_formusic.lst
字号:
137 g_rtc_counter = 0;
\ 00D2 220700 LD (g_rtc_counter),HL
138 if (!g_light_flag)
\ 00D5 3A0B00 LD A,(g_light_flag)
\ 00D8 B7 OR A
\ 00D9 200D JR NZ,?0026
\ 00DB ?0025:
139 {
140 Lightmodeset(TRUE);//开关背光(TRUE: 开, FALSE:关)
\ 00DB 1E01 LD E,1
\ 00DD CDD001 CALL LWRD ?0107
141 g_light_flag = TRUE;
\ 00E0 3E01 LD A,1
\ 00E2 320B00 LD (g_light_flag),A
142 return NULL;
\ 00E5 C3C601 JP LWRD ?0097
143 }
\ 00E8 ?0026:
144 key = key_value | AP_KEY_UP;
\ 00E8 78 LD A,B
\ 00E9 CBEF SET 5,A
\ 00EB C39D01 JP LWRD ?0098
145 break;
\ 00EE ?0027:
146
147
148 case MSG_RTC2HZ: //rtc
149 case MSG_BAT_V_CHG: //charging & rtc
150 g_rtc_counter++;
\ 00EE 2A0700 LD HL,(g_rtc_counter)
\ 00F1 23 INC HL
\ 00F2 220700 LD (g_rtc_counter),HL
151
152 if((g_light_time != 0) && (g_rtc_counter >= g_light_time)&&((input8(0x57) & 0x02)==0)) //自动关背光
\ 00F5 3A0000 LD A,(g_light_time)
\ 00F8 B7 OR A
\ 00F9 2815 JR Z,?0029
\ 00FB 4F LD C,A
\ 00FC 0600 LD B,0
\ 00FE ED42 SBC HL,BC
\ 0100 380E JR C,?0029
\ 0102 DB57 IN A,(87)
\ 0104 CB4F BIT 1,A
\ 0106 2008 JR NZ,?0029
\ 0108 ?0031:
\ 0108 ?0030:
\ 0108 ?0028:
153 {
154 //关背光
155 Lightmodeset(FALSE); //开关背光(true: 开, false:关) zxs //
\ 0108 58 LD E,B
\ 0109 CDD001 CALL LWRD ?0107
156 g_light_flag = FALSE;
\ 010C AF XOR A
\ 010D 320B00 LD (g_light_flag),A
\ 0110 ?0029:
157 }
158
159 if(g_sleep_time != 0 && g_rtc_counter == g_sleep_time) //睡眠
\ 0110 2A0300 LD HL,(g_sleep_time)
\ 0113 7D LD A,L
\ 0114 B4 OR H
\ 0115 280D JR Z,?0033
\ 0117 ED4B0700 LD BC,(g_rtc_counter)
\ 011B ED42 SBC HL,BC
\ 011D 2005 JR NZ,?0033
\ 011F ?0035:
\ 011F ?0034:
\ 011F ?0032:
160 {
161 return AP_MSG_SLEEP;
\ 011F 2E1F LD L,31
162 }
\ 0121 C3CD01 JP LWRD ?0058
\ 0124 ?0033:
163
164 if(g_standby_time != 0 && g_rtc_counter == g_standby_time) //自动关机
\ 0124 2A0500 LD HL,(g_standby_time)
\ 0127 7D LD A,L
\ 0128 B4 OR H
\ 0129 280D JR Z,?0037
\ 012B ED4B0700 LD BC,(g_rtc_counter)
\ 012F ED42 SBC HL,BC
\ 0131 2005 JR NZ,?0037
\ 0133 ?0039:
\ 0133 ?0038:
\ 0133 ?0036:
165 {
166 return AP_MSG_STANDBY;
\ 0133 2E1D LD L,29
167 }
\ 0135 C3CD01 JP LWRD ?0058
\ 0138 ?0037:
168
169 if( (g_rtc_counter % 16) == 0 )
\ 0138 2A0700 LD HL,(g_rtc_counter)
\ 013B 7D LD A,L
\ 013C E60F AND 15
\ 013E 2005 JR NZ,?0041
\ 0140 ?0040:
170 {
171
172 return AP_MSG_WAIT_TIMEOUT; //8 sec timeout
\ 0140 2E1E LD L,30
173 }
\ 0142 C3CD01 JP LWRD ?0058
\ 0145 ?0041:
174
175 if(key == MSG_RTC2HZ) key = AP_MSG_RTC;
\ 0145 DD4602 LD B,(IX+2)
\ 0148 05 DEC B
\ 0149 E25201 JP PO,?0043
\ 014C ?0042:
\ 014C DD36021C LD (IX+2),28
\ 0150 1878 JR ?0057
\ 0152 ?0043:
176 else key = AP_MSG_CHARGING;
\ 0152 DD36021B LD (IX+2),27
\ 0156 ?0044:
177
178 break;
\ 0156 1872 JR ?0057
\ 0158 ?0045:
179
180
181 case MSG_USB_STICK: //usb plugin, 等同按键
182 output8(0xf4,input8(0x0f4)&0xF7); //set gio_c3 to low to cut battery
\ 0158 DBF4 IN A,(244)
\ 015A CB9F RES 3,A
\ 015C D3F4 OUT (244),A
183 g_rtc_counter = 0;
\ 015E 210000 LD HL,0
\ 0161 220700 LD (g_rtc_counter),HL
184 key_count = 1;
\ 0164 23 INC HL
\ 0165 220C00 LD (?0012),HL
185 key = AP_MSG_USB_PLUGIN;
\ 0168 DD36021A LD (IX+2),26
186
187 //开背光
188 if(g_light_time != 0)
\ 016C 3A0000 LD A,(g_light_time)
\ 016F B7 OR A
\ 0170 2858 JR Z,?0057
\ 0172 ?0046:
189 {
190 Lightmodeset(TRUE);//开关背光(TRUE: 开, FALSE:关)
\ 0172 5D LD E,L
\ 0173 CDD001 CALL LWRD ?0107
191 g_light_flag = FALSE;
\ 0176 AF XOR A
\ 0177 320B00 LD (g_light_flag),A
192 }
193 else
\ 017A ?0047:
\ 017A ?0048:
194 {
195 }
196 break;
\ 017A 184E JR ?0057
\ 017C ?0049:
197
198 //#ifndef DEBUG
199 case MSG_LOW_POWER: //low power, nmi 0.98v
200 DUMP("low power", 0);
201 key = AP_MSG_LOW_POWER;
\ 017C DD36021F LD (IX+2),31
202 break;
\ 0180 1848 JR ?0057
\ 0182 ?0050:
203 //#endif
204
205 case MSG_USB_UNSTICK: //ap 不识别的消息
206 output8(0xf4,input8(0x0f4)|0x08); //set gio_c3 to high to open battery
\ 0182 DBF4 IN A,(244)
\ 0184 CBDF SET 3,A
\ 0186 D3F4 OUT (244),A
\ 0188 ?0051:
207 case Msg_KeyNull: //没有按键
208 // case MSG_USB_UNSTICK: //ap 不识别的消息
209 case Msg_KeyUnHold:
210 key = AP_KEY_NULL;
\ 0188 DD360200 LD (IX+2),0
211 break;
\ 018C 183C JR ?0057
\ 018E ?0052:
212
213
214 case Msg_KeyHold:
215 //lock 后还会有up消息
216 key = AP_MSG_LOCK;
217 g_rtc_counter = 0;
\ 018E 210000 LD HL,0
\ 0191 220700 LD (g_rtc_counter),HL
218 key_count = 1;
\ 0194 23 INC HL
\ 0195 220C00 LD (?0012),HL
219 key_value = key;
\ 0198 3E19 LD A,25
\ 019A 320E00 LD (?0013),A
\ 019D ?0098:
\ 019D DD7702 LD (IX+2),A
220
221 break;
\ 01A0 1828 JR ?0057
\ 01A2 ?0053:
222
223 case MSG_SD_IN:/*插卡状态*/
224 key = AP_MSG_SD_IN;
\ 01A2 DD360238 LD (IX+2),56
225 break;
\ 01A6 1822 JR ?0057
\ 01A8 ?0054:
226
227 case MSG_SD_OUT:/*拨卡状态*/
228 key = AP_MSG_SD_OUT;
\ 01A8 DD360237 LD (IX+2),55
229 break;
\ 01AC 181C JR ?0057
\ 01AE ?0055:
230
231 default: //新的按键
232 g_rtc_counter = 0;
\ 01AE 210000 LD HL,0
\ 01B1 220700 LD (g_rtc_counter),HL
233 key_count = 1;
\ 01B4 23 INC HL
\ 01B5 220C00 LD (?0012),HL
234 key_value = key;
\ 01B8 7B LD A,E
\ 01B9 320E00 LD (?0013),A
235
236 //开背光
237 if (!g_light_flag)
\ 01BC 3A0B00 LD A,(g_light_flag)
\ 01BF B7 OR A
\ 01C0 2008 JR NZ,?0057
\ 01C2 ?0056:
238 {
239 //如背灯没开,不理按键
240 key_count = 0;
\ 01C2 2B DEC HL
\ 01C3 220C00 LD (?0012),HL
241 g_rtc_counter = 0;
242 return NULL;
\ 01C6 ?0097:
\ 01C6 2E00 LD L,0
243 }
\ 01C8 1803 JR ?0058
\ 01CA ?0057:
\ 01CA ?0023:
244 } //switch()
245 return key;
\ 01CA DD6E02 LD L,(IX+2)
246 }
\ 01CD ?0058:
\ 01CD C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 01D0 ?0107:
\ 01D0 3E00 LD A,BYTE3 Lightmodeset
\ 01D2 210000 LD HL,LWRD Lightmodeset
\ 01D5 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 01D8 ap_set_event:
247
248 /*
249 ********************************************************************************
250 * Description : 设置事件发生标志
251 *
252 * Arguments : event, 事件集合
253 *
254 * Returns :
255 *
256 * Notes :
257 *
258 ********************************************************************************
259 */
260 void ap_set_event(WORD event)
261 {
\ 01D8 CD0000 CALL LWRD ?ENT_PARM_DIRECT_L09
262 g_ap_event |= event;
\ 01DB 210900 LD HL,g_ap_event
\ 01DE 7E LD A,(HL)
\ 01DF B3 OR E
\ 01E0 77 LD (HL),A
\ 01E1 23 INC HL
\ 01E2 7E LD A,(HL)
\ 01E3 B2 OR D
\ 01E4 77 LD (HL),A
263 }
\ 01E5 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 01E8 ap_get_event:
264
265 /*
266 ********************************************************************************
267 * Description : 检测事件是否发生
268 *
269 * Arguments : event, 需要检测的事件集合
270 condition:
271 AP_EVENT_ALL: 所有事件发生,返回event,否则返回0
272 AP_EVENT_ANY: 任意事件发生,返回event,否则返回0
273 * Returns : event 按照 condition 指定的条件发生,返回系统事件的集合
274 不满足条件, 返回0
275 *
276 * Notes :
277 *
278 ********************************************************************************
279 */
280 WORD ap_get_event(WORD event, WORD condition)
281 {
\ 01E8 CD0000 CALL LWRD ?ENT_PARM_DIRECT_L09
282 if(condition == AP_EVENT_ALL)
\ 01EB 79 LD A,C
\ 01EC A0 AND B
\ 01ED 3C INC A
\ 01EE 2010 JR NZ,?0060
\ 01F0 ?0059:
283 {
284 if( (g_ap_event & event) == event) return g_ap_event;
\ 01F0 2A0900 LD HL,(g_ap_event)
\ 01F3 7D LD A,L
\ 01F4 A3 AND E
\ 01F5 4F LD C,A
\ 01F6 7C LD A,H
\ 01F7 A2 AND D
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -