📄 main.lst
字号:
\ 0361 018D00 LD BC,FMStatus
\ 0364 1E83 LD E,131
\ 0366 CD4A00 CALL LWRD ?0167
276
277 if(FMStatus.volume)
\ 0369 DD36FC00 LD (IX-4),0
\ 036D 3A9300 LD A,(FMStatus+6)
\ 0370 B7 OR A
\ 0371 2806 JR Z,?0059
\ 0373 ?0058:
278 fmSendCommand(MC_MUTE, releaseMUTE);
\ 0373 010000 LD BC,0
\ 0376 CD4800 CALL LWRD ?0168
\ 0379 ?0059:
\ 0379 ?0057:
279 }
280 key = ap_get_message();
\ 0379 CD0000 CALL LWRD ap_get_message
\ 037C DD77F4 LD (IX-12),A
\ 037F 0600 LD B,0
281 if (test == 0xff)
\ 0381 3EFF LD A,255
\ 0383 DDAEFE XOR (IX-2)
\ 0386 DDB6FF OR (IX-1)
\ 0389 2004 JR NZ,?0061
\ 038B ?0060:
282 key = AP_KEY_MODE | AP_KEY_LONG;
\ 038B DD36F487 LD (IX-12),135
\ 038F ?0061:
283 switch (key)
\ 038F DD5EF4 LD E,(IX-12)
\ 0392 50 LD D,B
\ 0393 CD0000 CALL LWRD ?S_V_SWITCH_L06
\ 0396 0A00 DEFW 10
\ 0398 0300 DEFW 3
\ 039A 0400 DEFW 4
\ 039C 1C00 DEFW 28
\ 039E 1D00 DEFW 29
\ 03A0 2100 DEFW 33
\ 03A2 2500 DEFW 37
\ 03A4 2600 DEFW 38
\ 03A6 2700 DEFW 39
\ 03A8 4500 DEFW 69
\ 03AA 4600 DEFW 70
\ 03AC A706 DEFW ?0117
\ 03AE 1804 DEFW ?0069
\ 03B0 2704 DEFW ?0070
\ 03B2 7704 DEFW ?0073
\ 03B4 3704 DEFW ?0071
\ 03B6 5704 DEFW ?0072
\ 03B8 E605 DEFW ?0111
\ 03BA AF02 DEFW ?0040
\ 03BC C503 DEFW ?0064
\ 03BE 0206 DEFW ?0112
\ 03C0 0206 DEFW ?0112
\ 03C2 ?0063:
284 {
285 case AP_MSG_STANDBY:
286 //do nothing
287 break;
\ 03C2 C3AF02 JP LWRD ?0040
\ 03C5 ?0064:
288 case AP_MSG_RTC: //2HZ中断到来,屏幕重画,为了电池显示更新
289 ui_show_batt(GetBattery(), g_comval.BatteryType);
\ 03C5 ED4B2C00 LD BC,(g_comval+15)
\ 03C9 CD0000 CALL LWRD GetBattery
\ 03CC 5F LD E,A
\ 03CD 3E00 LD A,BYTE3 ui_show_batt
\ 03CF 210000 LD HL,LWRD ui_show_batt
\ 03D2 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
290 if (g_comval.EarProtect_flag)
\ 03D5 3A3500 LD A,(g_comval+24)
\ 03D8 B7 OR A
\ 03D9 281B JR Z,?0066
\ 03DB ?0065:
291 {
292 FMStatus.volume = input8(0x99) & 0x3f;
\ 03DB DB99 IN A,(153)
\ 03DD E63F AND 63
\ 03DF 329300 LD (FMStatus+6),A
293 FMStatus.vol_display = FMStatus.volume * g_comval.VolumeMax / 31;
\ 03E2 ED4B3C00 LD BC,(g_comval+31)
\ 03E6 0600 LD B,0
\ 03E8 50 LD D,B
\ 03E9 5F LD E,A
\ 03EA CD0000 CALL LWRD ?S_MUL_L02
\ 03ED 0E1F LD C,31
\ 03EF CD0000 CALL LWRD ?SS_DIV_L02
\ 03F2 7B LD A,E
\ 03F3 329500 LD (FMStatus+8),A
\ 03F6 ?0066:
294 }
295 TimeCount++;
\ 03F6 2A0000 LD HL,(TimeCount)
\ 03F9 23 INC HL
\ 03FA 220000 LD (TimeCount),HL
296 need_draw = FALSE;
\ 03FD DD36F200 LD (IX-14),0
297 if (TimeCount >= 100)
\ 0401 016480 LD BC,32868
\ 0404 78 LD A,B
\ 0405 AC XOR H
\ 0406 67 LD H,A
\ 0407 ED42 SBC HL,BC
\ 0409 DAAF02 JP C,?0040
\ 040C ?0067:
298 {
299 need_draw = TRUE;
300 TimeCount = 0;
\ 040C 210000 LD HL,0
\ 040F 220000 LD (TimeCount),HL
\ 0412 C3B006 JP LWRD ?0147
\ 0415 ?0068:
301 }
302 break;
\ 0415 C3AF02 JP LWRD ?0040
\ 0418 ?0069:
303 case AP_KEY_HOLD|AP_KEY_NEXT:
304 {
305 // FMStatus.freq+=1;
306 result=SearchHandle(10);
\ 0418 1E0A LD E,10
\ 041A 180D JR ?0144
\ 041C 210000 LD HL,LWRD SearchHandle
\ 041F 180D JR ?0152
\ 0421 E5 PUSH HL
\ 0422 FDE1 POP IY
307 }
308 break;
\ 0424 C3AF02 JP LWRD ?0040
\ 0427 ?0070:
309 case AP_KEY_HOLD|AP_KEY_PREV:
310 {
311 // FMStatus.freq-=1;
312 result=SearchHandle(20);
\ 0427 1E14 LD E,20
\ 0429 ?0144:
\ 0429 3E00 LD A,BYTE3 SearchHandle
\ 042B 210000 LD HL,LWRD SearchHandle
\ 042E ?0152:
\ 042E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0431 E5 PUSH HL
\ 0432 FDE1 POP IY
313 }
314 break;
\ 0434 C3AF02 JP LWRD ?0040
\ 0437 ?0071:
315 case AP_KEY_NEXT|AP_KEY_UP:
316 {
317 fmSendCommand(MC_STEPGRID,UP);
\ 0437 0E01 LD C,1
\ 0439 181D JR ?0145
\ 043B 3E00 LD A,BYTE3 fmSendCommand
\ 043D C3EC05 JP LWRD ?0146
\ 0440 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
318 fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
\ 0443 C3EF05 JP LWRD ?0161
\ 0446 1E83 LD E,131
\ 0448 C3F405 JP LWRD ?0156
\ 044B 210000 LD HL,LWRD fmSendCommand
\ 044E C3F905 JP LWRD ?0163
319 need_draw=TRUE;
\ 0451 C3B006 JP LWRD ?0147
320 }
321 break;
\ 0454 C3AF02 JP LWRD ?0040
\ 0457 ?0072:
322 case AP_KEY_PREV|AP_KEY_UP:
323 {
324 fmSendCommand(MC_STEPGRID,DOWN);
\ 0457 48 LD C,B
\ 0458 ?0145:
\ 0458 1E09 LD E,9
\ 045A C3EA05 JP LWRD ?0154
\ 045D C3EC05 JP LWRD ?0146
\ 0460 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
325 fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
\ 0463 C3EF05 JP LWRD ?0161
\ 0466 1E83 LD E,131
\ 0468 C3F405 JP LWRD ?0156
\ 046B 210000 LD HL,LWRD fmSendCommand
\ 046E C3F905 JP LWRD ?0163
326 need_draw=TRUE;
\ 0471 C3B006 JP LWRD ?0147
327 }
328 break;
\ 0474 C3AF02 JP LWRD ?0040
\ 0477 ?0073:
329
330 case AP_KEY_MODE | AP_KEY_UP:
331 menu.active = active;
\ 0477 ED4B0100 LD BC,(?0031)
\ 047B 42 LD B,D
\ 047C ED431400 LD (menu+2),BC
332 menu.total = 6 + 2; //'+1' for FM Record by ccm
\ 0480 210800 LD HL,8
\ 0483 221200 LD (menu),HL
333 menu.pic_inactive = (WORD *) pic_inactive;
\ 0486 210000 LD HL,pic_inactive
\ 0489 221600 LD (menu+4),HL
334 menu.pic_active = (WORD *) pic_active;
\ 048C 211000 LD HL,pic_active
\ 048F 221800 LD (menu+6),HL
335 menu.string = (WORD *) string;
\ 0492 212000 LD HL,string
\ 0495 221A00 LD (menu+8),HL
336 //menu.string_id=0; //多语言修改
337 menu.string_id = F_comval.langid; //语言标志的选择
\ 0498 3A2900 LD A,(g_comval+12)
\ 049B 321C00 LD (menu+10),A
338 ui_auto_update = FALSE; //FALSE时,保证整屏写完再刷新
\ 049E AF XOR A
\ 049F 320000 LD (ui_auto_update),A
339 result = ui_function_menu(&menu, NULL);
\ 04A2 48 LD C,B
\ 04A3 C5 PUSH BC
\ 04A4 C5 PUSH BC
\ 04A5 111200 LD DE,menu
\ 04A8 3E00 LD A,BYTE3 ui_function_menu
\ 04AA 210000 LD HL,LWRD ui_function_menu
\ 04AD CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 04B0 F1 POP AF
\ 04B1 F1 POP AF
\ 04B2 E5 PUSH HL
\ 04B3 FDE1 POP IY
340 ui_auto_update = TRUE; //设置恢复
\ 04B5 3E01 LD A,1
\ 04B7 320000 LD (ui_auto_update),A
341 need_draw = TRUE;
\ 04BA DD77F2 LD (IX-14),A
342 //if(result==RESULT_IGNORE)result=0; //del by ccm
343 if (result == RESULT_IGNORE) //按PLAY键和8s超时返回FM收音界面,不执行当前激活的菜单!
\ 04BD 3E30 LD A,48
\ 04BF AD XOR L
\ 04C0 B4 OR H
\ 04C1 2007 JR NZ,?0075
\ 04C3 ?0074:
344 {
345 result = 0;
\ 04C3 FD210000 LD IY,0
346 break;
\ 04C7 C3AF02 JP LWRD ?0040
\ 04CA ?0075:
347 }
348 if (result != 0)
\ 04CA 7D LD A,L
\ 04CB B4 OR H
\ 04CC 2806 JR Z,?0077
\ 04CE ?0076:
349 return result;
\ 04CE C3D506 JP LWRD ?0128
\ 04D1 C3D806 JP LWRD ?0129
\ 04D4 ?0077:
350 active = menu.active;
\ 04D4 3A1400 LD A,(menu+2)
\ 04D7 320100 LD (?0031),A
351 if (menu.active == 0) //电台保存
\ 04DA 2A1400 LD HL,(menu+2)
\ 04DD 7D LD A,L
\ 04DE B4 OR H
\ 04DF 201A JR NZ,?0079
\ 04E1 ?0078:
352 {
353 if (fmSendCommand(MC_SAVESTATION, 0) != FALSE)
\ 04E1 1E0B LD E,11
\ 04E3 CD4A00 CALL LWRD ?0167
\ 04E6 2C INC L
\ 04E7 2D DEC L
\ 04E8 CAAF02 JP Z,?0040
\ 04EB ?0080:
354 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -