autosearchhandle.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,436 行 · 第 1/5 页
LST
1,436 行
165
166 if(FMStatus.mode==0)
\ 0272 3A0500 LD A,(FMStatus+5)
\ 0275 B7 OR A
\ 0276 0E35 LD C,53
\ 0278 C5 PUSH BC
\ 0279 FDE5 PUSH IY
\ 027B E1 POP HL
\ 027C 7D LD A,L
\ 027D 2004 JR NZ,?0028
\ 027F ?0027:
167 {
168 ResShowPic(SLIDPTR,25+k,53); //显示箭头
\ 027F C619 ADD A,25
\ 0281 1802 JR ?0153
169 }
170 else
\ 0283 ?0028:
171 {
172 ResShowPic(SLIDPTR,40+k,53); //显示箭头
\ 0283 C628 ADD A,40
\ 0285 ?0153:
\ 0285 4F LD C,A
\ 0286 11DC00 LD DE,220
\ 0289 CD3D00 CALL LWRD ?0174
\ 028C F1 POP AF
\ 028D ?0029:
173 }
174 Updateflag=1;
\ 028D 3E01 LD A,1
\ 028F 320000 LD (Updateflag),A
175 output8(0x4e,input8(0x4e)|0x08);
\ 0292 DB4E IN A,(78)
\ 0294 CBDF SET 3,A
\ 0296 D34E OUT (78),A
176 }
\ 0298 DDF9 LD SP,IX
\ 029A DDE1 POP IX
\ 029C FDE1 POP IY
\ 029E D1 POP DE
\ 029F C1 POP BC
\ 02A0 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 02A3 Search_Show2:
177
178
179 /*
180 ********************************************************************************
181 * Description : 搜索下一个在电台表中没有的新电台.
182 *
183 * Arguments : Direct,Next或Last搜索.
184 *
185 * Returns : TRUE:搜到下一个新电台,FALSE:没有搜到.
186 *
187 * Notes :
188 *
189 ********************************************************************************
190 */
191 bool Search_Show2(FM_direct_t Direct)
192 {
\ 02A3 C5 PUSH BC
\ 02A4 FDE5 PUSH IY
\ 02A6 DDE5 PUSH IX
\ 02A8 DD210000 LD IX,0
\ 02AC DD39 ADD IX,SP
\ 02AE D5 PUSH DE
\ 02AF F5 PUSH AF
\ 02B0 F5 PUSH AF
193 bool Search_Flag;
194 int i;
195 WORD temp;
196
197 FMStatus.stereo_status = 1;
\ 02B1 3E01 LD A,1
\ 02B3 320700 LD (FMStatus+7),A
198 FMStatus.station=0;
\ 02B6 AF XOR A
\ 02B7 320300 LD (FMStatus+3),A
199 fmSendCommand(MC_MUTE,SetMUTE);
\ 02BA 010100 LD BC,1
\ 02BD 1E0C LD E,12
\ 02BF CD7103 CALL LWRD ?0175
200 fmSendCommand(MC_SETVOLUME,FMStatus.volume);
\ 02C2 CD6903 CALL LWRD ?0176
201 fmSendCommand(MC_RESTORE,(int)&radio_param);
\ 02C5 010000 LD BC,radio_param
\ 02C8 1E45 LD E,69
\ 02CA CD7103 CALL LWRD ?0175
202 Search_Flag=fmSendCommand(MC_SEARCH,Direct);
\ 02CD DD4EFE LD C,(IX-2)
\ 02D0 0600 LD B,0
\ 02D2 1E0A LD E,10
\ 02D4 CD7103 CALL LWRD ?0175
\ 02D7 DD75FA LD (IX-6),L
203 if(Search_Flag) //搜台成功后,MUTE释放
\ 02DA 2C INC L
\ 02DB 2D DEC L
\ 02DC 2860 JR Z,?0039
\ 02DE ?0030:
204 {
205 fmSendCommand(MC_GETFREQ,(int)&temp);
\ 02DE 210200 LD HL,2
\ 02E1 39 ADD HL,SP
\ 02E2 4D LD C,L
\ 02E3 44 LD B,H
\ 02E4 1E11 LD E,17
\ 02E6 CD7103 CALL LWRD ?0175
206 for(i=0; i<AutoTabNum; i++) // 检查是否在电台表中
\ 02E9 FD210000 LD IY,0
\ 02ED ?0033:
\ 02ED ED4B2800 LD BC,(AutoTabNum)
\ 02F1 0600 LD B,0
\ 02F3 FDE5 PUSH IY
\ 02F5 E1 POP HL
\ 02F6 F680 OR 128
\ 02F8 ED42 SBC HL,BC
\ 02FA E2FE02 JP PO,?0158
\ 02FD AC XOR H
\ 02FE ?0158:
\ 02FE F22203 JP P,?0032
\ 0301 ?0034:
207 {
208 if( FMAutoTab[i] == temp)
\ 0301 FDE5 PUSH IY
\ 0303 E1 POP HL
\ 0304 29 ADD HL,HL
\ 0305 010000 LD BC,FMAutoTab
\ 0308 09 ADD HL,BC
\ 0309 46 LD B,(HL)
\ 030A 23 INC HL
\ 030B 66 LD H,(HL)
\ 030C 68 LD L,B
\ 030D DD4EFC LD C,(IX-4)
\ 0310 DD46FD LD B,(IX-3)
\ 0313 A7 AND A
\ 0314 ED42 SBC HL,BC
\ 0316 2006 JR NZ,?0037
\ 0318 ?0036:
209 {
210 Search_Flag = FALSE;
\ 0318 DD36FA00 LD (IX-6),0
211 break;
\ 031C 1804 JR ?0032
\ 031E ?0037:
\ 031E FD23 INC IY
\ 0320 18CB JR ?0033
\ 0322 ?0032:
212 }
213 }
214 if(Search_Flag)
\ 0322 AF XOR A
\ 0323 DDB6FA OR (IX-6)
\ 0326 2816 JR Z,?0039
\ 0328 ?0038:
215 {
216 if(FMStatus.volume)
\ 0328 3A0600 LD A,(FMStatus+6)
\ 032B B7 OR A
\ 032C 2808 JR Z,?0041
\ 032E ?0040:
217 fmSendCommand(MC_MUTE,releaseMUTE);
\ 032E 010000 LD BC,0
\ 0331 1E0C LD E,12
\ 0333 CD7103 CALL LWRD ?0175
\ 0336 ?0041:
218 fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
\ 0336 010000 LD BC,FMStatus
\ 0339 1E83 LD E,131
\ 033B CD7103 CALL LWRD ?0175
\ 033E ?0039:
\ 033E ?0031:
219 }
220 }
221 ShowFreqInFM2();
\ 033E 3E00 LD A,BYTE3 ShowFreqInFM2
\ 0340 215800 LD HL,LWRD ShowFreqInFM2
\ 0343 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
222 for(i=0;i<0x3999;i++)
\ 0346 FD210000 LD IY,0
\ 034A ?0043:
\ 034A 0199B9 LD BC,47513
\ 034D FDE5 PUSH IY
\ 034F E1 POP HL
\ 0350 3E80 LD A,128
\ 0352 AC XOR H
\ 0353 67 LD H,A
\ 0354 ED42 SBC HL,BC
\ 0356 3004 JR NC,?0042
\ 0358 ?0044:
\ 0358 FD23 INC IY
\ 035A 18EE JR ?0043
\ 035C ?0042:
223 {
224 }
225 return Search_Flag;
\ 035C DD6EFA LD L,(IX-6)
226 }
\ 035F ?0172:
\ 035F DDF9 LD SP,IX
\ 0361 DDE1 POP IX
\ 0363 FDE1 POP IY
\ 0365 C1 POP BC
\ 0366 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0369 ?0176:
\ 0369 ED4B0600 LD BC,(FMStatus+6)
\ 036D 0600 LD B,0
\ 036F 1E40 LD E,64
\ 0371 ?0175:
\ 0371 3E00 LD A,BYTE3 fmSendCommand
\ 0373 210000 LD HL,LWRD fmSendCommand
\ 0376 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0379 RestartSearch:
227 /*
228 ********************************************************************************
229 * Description : 设置门限值,重新开始搜索.
230 *
231 * Arguments : 门限值
232 *
233 * Returns : TRUE:继续搜索,FALSE:中断搜索,正常结束.
234 *
235 * Notes :
236 *
237 ********************************************************************************
238 */
239 bool RestartSearch(byte level)
240 {
\ 0379 C5 PUSH BC
\ 037A D5 PUSH DE
241 if(level <= 2)
\ 037B 3E02 LD A,2
\ 037D BB CP E
\ 037E 3804 JR C,?0047
\ 0380 ?0046:
242 return FALSE;
\ 0380 2E00 LD L,0
\ 0382 1815 JR ?0048
\ 0384 ?0047:
243 //fmSendCommand(MC_SETVOLUME,0);
244 //fmSendCommand(MC_CLOSE,0);
245 //fmSendCommand(MC_OPEN,level);
246 fmSendCommand(MC_MUTE,SetMUTE);
\ 0384 010100 LD BC,1
\ 0387 1E0C LD E,12
\ 0389 CD7103 CALL LWRD ?0175
247 fmSendCommand(MC_SETVOLUME,FMStatus.volume);
\ 038C CD6903 CALL LWRD ?0176
248 fmSendCommand(MC_RESTORE,(int)&radio_param);
\ 038F 010000 LD BC,radio_param
\ 0392 1E45 LD E,69
\ 0394 CD7103 CALL LWRD ?0175
249 return TRUE;
\ 0397 2E01 LD L,1
250 }
\ 0399 ?0048:
\ 0399 F1 POP AF
\ 039A C1 POP BC
\ 039B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 039E AutoSearchHandle:
251 /*
252 ********************************************************************************
253 * Description : 全自动搜索
254 *
255 * Arguments : Direct,Next或Last搜索.
256 *
257 * Returns : 如果有可识别的热键消息, 返回结果消息
258 如果没有可识别的热键消息, 返回0
259 *
260 * Notes :
261 *
262 ********************************************************************************
263 */
264 int AutoSearchHandle(BYTE Direct)
265 {
\ 039E C5 PUSH BC
\ 039F FDE5 PUSH IY
\ 03A1 DDE5 PUSH IX
\ 03A3 DD210000 LD IX,0
\ 03A7 DD39 ADD IX,SP
\ 03A9 D5 PUSH DE
\ 03AA F5 PUSH AF
\ 03AB F5 PUSH AF
\ 03AC F5 PUSH AF
\ 03AD F5 PUSH AF
266 int key;
267 bool need_draw=TRUE;
268 //BYTE Searchflag=1;
269 BYTE Search_Level = SearchLevel;
270 bool loop=TRUE;
271 BYTE temp;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?