searchhandle.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,099 行 · 第 1/4 页
LST
1,099 行
62 }
\ 00F0 ?0026:
\ 00F0 ?0014:
63 else if(Direct==20) //LAST搜索处理
\ 00F0 FE14 CP 20
\ 00F2 2055 JR NZ,?0029
\ 00F4 ?0028:
64 {
65 if(((FMStatus.freq-100)<0x53d8)&&(FMStatus.mode==0))FMStatus.freq=0xa5e0;
\ 00F4 2A0100 LD HL,(FMStatus+1)
\ 00F7 019CFF LD BC,65436
\ 00FA 09 ADD HL,BC
\ 00FB 01D853 LD BC,21464
\ 00FE A7 AND A
\ 00FF ED42 SBC HL,BC
\ 0101 300B JR NC,?0031
\ 0103 3A0500 LD A,(FMStatus+5)
\ 0106 B7 OR A
\ 0107 2005 JR NZ,?0031
\ 0109 ?0033:
\ 0109 ?0032:
\ 0109 ?0030:
\ 0109 21E0A5 LD HL,42464
\ 010C 1818 JR ?0124
\ 010E ?0031:
66 else if(((FMStatus.freq-100)<0x28e0)&&(FMStatus.mode==1))FMStatus.freq=0x5f90;
\ 010E 2A0100 LD HL,(FMStatus+1)
\ 0111 019CFF LD BC,65436
\ 0114 09 ADD HL,BC
\ 0115 01E028 LD BC,10464
\ 0118 A7 AND A
\ 0119 ED42 SBC HL,BC
\ 011B 300E JR NC,?0036
\ 011D 3A0500 LD A,(FMStatus+5)
\ 0120 3D DEC A
\ 0121 2008 JR NZ,?0036
\ 0123 ?0038:
\ 0123 ?0037:
\ 0123 ?0035:
\ 0123 21905F LD HL,24464
\ 0126 ?0124:
\ 0126 220100 LD (FMStatus+1),HL
67 else
\ 0129 180C JR ?0039
\ 012B ?0036:
68 FMStatus.freq-=100;
\ 012B 210100 LD HL,FMStatus+1
\ 012E 7E LD A,(HL)
\ 012F C69C ADD A,156
\ 0131 77 LD (HL),A
\ 0132 23 INC HL
\ 0133 7E LD A,(HL)
\ 0134 CEFF ADC A,255
\ 0136 77 LD (HL),A
\ 0137 ?0039:
\ 0137 ?0034:
69 if(Search_Show(DOWN))return 0;
\ 0137 D5 PUSH DE
\ 0138 1E00 LD E,0
\ 013A 3E00 LD A,BYTE3 Search_Show
\ 013C 21FC01 LD HL,LWRD Search_Show
\ 013F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0142 2C INC L
\ 0143 2D DEC L
\ 0144 D1 POP DE
\ 0145 280C JR Z,?0044
\ 0147 ?0040:
\ 0147 1804 JR ?0126
70 }
\ 0149 ?0041:
\ 0149 ?0029:
71 else if(Direct==50)
\ 0149 FE32 CP 50
\ 014B 2006 JR NZ,?0044
\ 014D ?0043:
72 {
73 Direct=0;
74 return 0;
\ 014D ?0126:
\ 014D 210000 LD HL,0
75 }
\ 0150 C3E701 JP LWRD ?0071
\ 0153 ?0044:
\ 0153 ?0042:
\ 0153 ?0027:
\ 0153 ?0012:
76 }
77 if(need_draw) //显示
\ 0153 210000 LD HL,0
\ 0156 39 ADD HL,SP
\ 0157 AF XOR A
\ 0158 B6 OR (HL)
\ 0159 280E JR Z,?0046
\ 015B ?0045:
78 {
79 ShowFreqInFM();
\ 015B 3E00 LD A,BYTE3 ShowFreqInFM
\ 015D 21B102 LD HL,LWRD ShowFreqInFM
\ 0160 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
80 need_draw=FALSE;
\ 0163 210000 LD HL,0
\ 0166 39 ADD HL,SP
\ 0167 3600 LD (HL),0
\ 0169 ?0046:
81 }
82 key=ap_get_message();
\ 0169 CD0000 CALL LWRD ap_get_message
\ 016C 4F LD C,A
\ 016D 0600 LD B,0
\ 016F C5 PUSH BC
\ 0170 DDE1 POP IX
83 switch(key)
\ 0172 3E1D LD A,29
\ 0174 A9 XOR C
\ 0175 CA8B00 JP Z,?0009
\ 0178 3E31 LD A,49
\ 017A A9 XOR C
\ 017B CA8B00 JP Z,?0009
\ 017E ?0048:
84 {
85 case AP_MSG_STANDBY:
86 case AP_KEY_AB | AP_KEY_UP: //搜索时不响音REC
87 //do nothing
88 break;
\ 017E ?0049:
\ 017E 3E26 LD A,38
\ 0180 A9 XOR C
\ 0181 2019 JR NZ,?0057
89 case AP_KEY_NEXT|AP_KEY_UP: //NEXT搜索时按NEXT键,停止搜索
90 if(Searchflag==1)
\ 0183 42 LD B,D
\ 0184 05 DEC B
\ 0185 281E JR Z,?0128
\ 0187 ?0050:
91 {
92 Searchflag=0;
\ 0187 ?0051:
93 }
94 else if(Direct==10)
\ 0187 210200 LD HL,2
\ 018A 39 ADD HL,SP
\ 018B 7E LD A,(HL)
\ 018C FE0A CP 10
\ 018E C28B00 JP NZ,?0009
\ 0191 ?0053:
95 {
96 Direct=50;
\ 0191 3632 LD (HL),50
97 if(FMStatus.volume)
\ 0193 3A0600 LD A,(FMStatus+6)
\ 0196 B7 OR A
\ 0197 CA8B00 JP Z,?0009
\ 019A ?0055:
98 fmSendCommand(MC_MUTE,releaseMUTE);
\ 019A 1821 JR ?0127
\ 019C ?0056:
\ 019C ?0054:
\ 019C ?0052:
99 }
100 break;
\ 019C ?0057:
\ 019C 3E25 LD A,37
\ 019E A9 XOR C
\ 019F 2024 JR NZ,?0065
101 case AP_KEY_PREV|AP_KEY_UP: //LAST搜索时按LAST键,停止搜索
102 if(Searchflag==1)
\ 01A1 42 LD B,D
\ 01A2 05 DEC B
\ 01A3 2005 JR NZ,?0059
\ 01A5 ?0058:
103 {
104 Searchflag=0;
\ 01A5 ?0128:
\ 01A5 1600 LD D,0
\ 01A7 C38B00 JP LWRD ?0009
\ 01AA ?0059:
105 }
106 else if(Direct==20)
\ 01AA 210200 LD HL,2
\ 01AD 39 ADD HL,SP
\ 01AE 7E LD A,(HL)
\ 01AF FE14 CP 20
\ 01B1 C28B00 JP NZ,?0009
\ 01B4 ?0061:
107 {
108 Direct=50;
\ 01B4 3632 LD (HL),50
109 if(FMStatus.volume)
\ 01B6 3A0600 LD A,(FMStatus+6)
\ 01B9 B7 OR A
\ 01BA CA8B00 JP Z,?0009
\ 01BD ?0063:
110 fmSendCommand(MC_MUTE,releaseMUTE);
\ 01BD ?0127:
\ 01BD D5 PUSH DE
\ 01BE CDEF01 CALL LWRD ?0140
\ 01C1 D1 POP DE
\ 01C2 ?0064:
\ 01C2 ?0062:
\ 01C2 ?0060:
111 }
112 break;
\ 01C2 C38B00 JP LWRD ?0009
\ 01C5 ?0065:
113 default: //热键处理
114 key=ap_handle_hotkey(key);
\ 01C5 D5 PUSH DE
\ 01C6 DDE5 PUSH IX
\ 01C8 E1 POP HL
\ 01C9 5D LD E,L
\ 01CA CD0000 CALL LWRD ap_handle_hotkey
\ 01CD 4F LD C,A
\ 01CE C5 PUSH BC
\ 01CF DDE1 POP IX
\ 01D1 D1 POP DE
115 if(key == RESULT_REDRAW)need_draw=TRUE;
\ 01D2 3E32 LD A,50
\ 01D4 A9 XOR C
\ 01D5 2008 JR NZ,?0067
\ 01D7 ?0066:
\ 01D7 68 LD L,B
\ 01D8 60 LD H,B
\ 01D9 39 ADD HL,SP
\ 01DA 3601 LD (HL),1
\ 01DC C38B00 JP LWRD ?0009
\ 01DF ?0067:
116 else if(key!=0)
\ 01DF DDE5 PUSH IX
\ 01E1 E1 POP HL
\ 01E2 7D LD A,L
\ 01E3 B4 OR H
\ 01E4 CA8B00 JP Z,?0009
\ 01E7 ?0069:
117 {
118 return key;
119 }
\ 01E7 ?0071:
\ 01E7 F1 POP AF
\ 01E8 F1 POP AF
\ 01E9 DDE1 POP IX
\ 01EB C1 POP BC
\ 01EC C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01EF ?0140:
\ 01EF 010000 LD BC,0
\ 01F2 ?0141:
\ 01F2 1E0C LD E,12
\ 01F4 ?0142:
\ 01F4 3E00 LD A,BYTE3 fmSendCommand
\ 01F6 210000 LD HL,LWRD fmSendCommand
\ 01F9 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 01FC ?0070:
\ 01FC ?0068:
\ 01FC ?0047:
120 }
121 }
122 }
\ 01FC Search_Show:
123
124
125 bool Search_Show(FM_direct_t Direct)
126 {
\ 01FC C5 PUSH BC
\ 01FD DDE5 PUSH IX
\ 01FF D5 PUSH DE
\ 0200 F5 PUSH AF
127 bool Search_Flag;
128 int i;
129 FMStatus.stereo_status=1;
\ 0201 3E01 LD A,1
\ 0203 320700 LD (FMStatus+7),A
130 FMStatus.station=0;
\ 0206 AF XOR A
\ 0207 320300 LD (FMStatus+3),A
131 fmSendCommand(MC_MUTE,SetMUTE);
\ 020A 010100 LD BC,1
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?