📄 autosearchhandle.lst
字号:
\ 049B DD36F800 LD (IX-8),0
\ 049F ?0120:
388 }
389
390 if (AutoTabNum >= 20) // 已搜到20个电台,正常退出.
\ 049F 3A2800 LD A,(AutoTabNum)
\ 04A2 FE14 CP 20
\ 04A4 3804 JR C,?0124
\ 04A6 ?0123:
391 loop = FALSE;
\ 04A6 DD36FA00 LD (IX-6),0
\ 04AA ?0124:
392 if (loop)
\ 04AA AF XOR A
\ 04AB DDB6FA OR (IX-6)
\ 04AE CA8C03 JP Z,?0053
\ 04B1 ?0125:
393 {
394 key = ap_get_message();
\ 04B1 CD0000 CALL LWRD ap_get_message
\ 04B4 4F LD C,A
\ 04B5 0600 LD B,0
\ 04B7 C5 PUSH BC
\ 04B8 FDE1 POP IY
395 switch (key)
\ 04BA 3E1D LD A,29
\ 04BC A9 XOR C
\ 04BD CA8C03 JP Z,?0053
396 {
397 bool Search_Flag = FALSE;
\ 04C0 ?0128:
398 case AP_MSG_STANDBY:
399 //do nothing
400 break;
\ 04C0 ?0129:
\ 04C0 3E21 LD A,33
\ 04C2 A9 XOR C
\ 04C3 2805 JR Z,?0136
\ 04C5 3E27 LD A,39
\ 04C7 A9 XOR C
\ 04C8 200A JR NZ,?0130
\ 04CA ?0136:
401 case AP_KEY_PLAY | AP_KEY_UP:
402 case AP_KEY_MODE | AP_KEY_UP: // 保存电台, 返回播放界面.
403 loop = FALSE;
404 key = RESULT_IGNORE;
\ 04CA DD70FA LD (IX-6),B
\ 04CD FD213000 LD IY,48
405 break;
\ 04D1 C38C03 JP LWRD ?0053
\ 04D4 ?0130:
406 default: //热键处理
407 key = ap_handle_hotkey(key);
\ 04D4 FDE5 PUSH IY
\ 04D6 E1 POP HL
\ 04D7 5D LD E,L
\ 04D8 CD0000 CALL LWRD ap_handle_hotkey
\ 04DB 4F LD C,A
\ 04DC C5 PUSH BC
\ 04DD FDE1 POP IY
408 if (key == RESULT_REDRAW)
\ 04DF 3E2E LD A,46
\ 04E1 A9 XOR C
\ 04E2 2007 JR NZ,?0132
\ 04E4 ?0131:
409 need_draw = TRUE;
\ 04E4 DD36F801 LD (IX-8),1
\ 04E8 C38C03 JP LWRD ?0053
\ 04EB ?0132:
410 else if (key != 0)
\ 04EB FDE5 PUSH IY
\ 04ED E1 POP HL
\ 04EE 7D LD A,L
\ 04EF B4 OR H
\ 04F0 CA8C03 JP Z,?0053
\ 04F3 ?0134:
411 {
412 loop = FALSE;
\ 04F3 DD70FA LD (IX-6),B
\ 04F6 ?0135:
\ 04F6 ?0133:
\ 04F6 ?0127:
\ 04F6 ?0126:
\ 04F6 C38C03 JP LWRD ?0053
\ 04F9 ?0052:
413 }
414 } // end switch(key)
415 } // end if(loop)
416 } // end while(loop)
417 if (AutoTabNum > 0)
\ 04F9 3A2800 LD A,(AutoTabNum)
\ 04FC B7 OR A
\ 04FD 284B JR Z,?0138
\ 04FF ?0137:
418 {
419 memcpy(radio_param.param1, FMAutoTab, AutoTabNum * 2);
\ 04FF 6F LD L,A
\ 0500 2600 LD H,0
\ 0502 29 ADD HL,HL
\ 0503 4D LD C,L
\ 0504 79 LD A,C
\ 0505 44 LD B,H
\ 0506 ED5B0000 LD DE,(radio_param)
\ 050A 210000 LD HL,FMAutoTab
\ 050D B0 OR B
\ 050E 2802 JR Z,?0176
\ 0510 EDB0 LDIR
\ 0512 ?0176:
420 //if(FMStatus.station_count < AutoTabNum)
421 if (temp < AutoTabNum) // 覆盖所有电台
\ 0512 3A2800 LD A,(AutoTabNum)
\ 0515 47 LD B,A
\ 0516 DD7EFC LD A,(IX-4)
\ 0519 B8 CP B
\ 051A 3003 JR NC,?0140
\ 051C ?0139:
422 {
423 FMStatus.station_count = AutoTabNum;
\ 051C 78 LD A,B
\ 051D 1816 JR ?0181
424 }
425 else
\ 051F ?0140:
426 {
427 if (key == 0)
\ 051F FDE5 PUSH IY
\ 0521 E1 POP HL
\ 0522 7D LD A,L
\ 0523 B4 OR H
\ 0524 2004 JR NZ,?0143
\ 0526 ?0142:
428 {
429 FMStatus.station_count = AutoTabNum;
\ 0526 78 LD A,B
\ 0527 320400 LD (FMStatus+4),A
\ 052A ?0143:
430 }
431 if (key == RESULT_IGNORE) // 覆盖部分电台
\ 052A 3E30 LD A,48
\ 052C AD XOR L
\ 052D B4 OR H
\ 052E 2008 JR NZ,?0147
\ 0530 ?0144:
432 {
433 if (temp != 0)
\ 0530 DDB6FC OR (IX-4)
\ 0533 2803 JR Z,?0147
\ 0535 ?0146:
434 FMStatus.station_count = temp;
\ 0535 ?0181:
\ 0535 320400 LD (FMStatus+4),A
\ 0538 ?0147:
\ 0538 ?0145:
\ 0538 ?0141:
435 }
436 }
437 FMStatus.freq = FMAutoTab[0];
\ 0538 2A0000 LD HL,(FMAutoTab)
\ 053B 220100 LD (FMStatus+1),HL
438 FMStatus.station = 0;
\ 053E AF XOR A
\ 053F 320300 LD (FMStatus+3),A
439 fmSendCommand(MC_RESTORE, (int) &radio_param);
\ 0542 010000 LD BC,radio_param
\ 0545 1E45 LD E,69
\ 0547 CD0C03 CALL LWRD ?0191
\ 054A ?0138:
440 }
441
442 if (key == RESULT_IGNORE)
\ 054A FDE5 PUSH IY
\ 054C E1 POP HL
\ 054D 3E30 LD A,48
\ 054F AD XOR L
\ 0550 B4 OR H
\ 0551 2004 JR NZ,?0149
\ 0553 ?0148:
443 {
444 key = 0;
\ 0553 FD210000 LD IY,0
\ 0557 ?0149:
445 }
446
447 //fmSendCommand(MC_MUTE,releaseMUTE);
448 //fmSendCommand(MC_SETVOLUME,FMStatus.volume);
449
450 if (FMStatus.station_count > 0x00) // 没有搜到电台退出的情况.
\ 0557 3A0400 LD A,(FMStatus+4)
\ 055A B7 OR A
\ 055B 2820 JR Z,?0151
\ 055D ?0150:
451 {
452 fmSendCommand(MC_STEP, UP);
\ 055D 010100 LD BC,1
\ 0560 1E07 LD E,7
\ 0562 CD0C03 CALL LWRD ?0191
453 for (temp = 0; temp < 0xff; temp++) // 延迟
\ 0565 DD36FC00 LD (IX-4),0
\ 0569 ?0153:
\ 0569 DD7EFC LD A,(IX-4)
\ 056C FEFF CP 255
\ 056E 3005 JR NC,?0152
\ 0570 ?0154:
\ 0570 DD34FC INC (IX-4)
\ 0573 18F4 JR ?0153
\ 0575 ?0152:
454 {
455 }
456 fmSendCommand(MC_BACKUP, (int) &radio_param);
\ 0575 010000 LD BC,radio_param
\ 0578 1E44 LD E,68
\ 057A CD0C03 CALL LWRD ?0191
\ 057D ?0151:
457 }
458 return key;
\ 057D FDE5 PUSH IY
\ 057F E1 POP HL
459 }
\ 0580 C3FA02 JP LWRD ?0188
\ 0583 ?0193:
\ 0583 ED5B2800 LD DE,(AutoTabNum)
\ 0587 1600 LD D,0
\ 0589 13 INC DE
\ 058A 3E00 LD A,BYTE3 ShowStationCount
\ 058C 210000 LD HL,LWRD ShowStationCount
\ 058F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0592 3E00 LD A,BYTE3 TryPlayingHandle
\ 0594 210000 LD HL,LWRD TryPlayingHandle
\ 0597 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 059A E5 PUSH HL
\ 059B FDE1 POP IY
\ 059D 3E00 LD A,BYTE3 CleanStationCount
\ 059F 217A00 LD HL,LWRD CleanStationCount
\ 05A2 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
460
\ 0000 RSEG CSTR
\ 0000 ?0004:
\ 0000 5B DEFB '['
\ 0001 00 DEFB 0
\ 0002 ?0005:
\ 0002 4348 DEFB 'CH'
\ 0004 00 DEFB 0
\ 0005 ?0006:
\ 0005 5D DEFB ']'
\ 0006 00 DEFB 0
\ 0007 ?0011:
\ 0007 3C DEFB '<'
\ 0008 00 DEFB 0
\ 0009 ?0012:
\ 0009 464D DEFB 'FM'
\ 000B 00 DEFB 0
\ 000C ?0019:
\ 000C 2E DEFB '.'
\ 000D 00 DEFB 0
\ 000E ?0020:
\ 000E 3E DEFB '>'
\ 000F 00 DEFB 0
\ 0000 RSEG CONST
\ 0000 ?0007:
\ 0000 20202020 DEFB ' '
\ 0004 2020
\ 0006 00 DEFB 0
\ 0007 ?0008:
\ 0007 464D DEFB 'FM'
\ 0009 00 DEFB 0
\ 000A 00 DEFB 0
\ 0000 RSEG UDATA0
\ 0000 FMAutoTab:
\ 0028 DEFS 40
\ 0028 AutoTabNum:
\ 0029 DEFS 1
\ 0029 END
Errors: none
Warnings: none
Code size: 1445
Constant size: 27
Static variable size: Data(41) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -