📄 autosearchhandle.lst
字号:
173 for (i = 0; i < AutoTabNum; i++) // 检查是否在电台表中
\ 0284 FD210000 LD IY,0
\ 0288 ?0027:
\ 0288 ED4B2800 LD BC,(AutoTabNum)
\ 028C 0600 LD B,0
\ 028E FDE5 PUSH IY
\ 0290 E1 POP HL
\ 0291 F680 OR 128
\ 0293 ED42 SBC HL,BC
\ 0295 E29902 JP PO,?0174
\ 0298 AC XOR H
\ 0299 ?0174:
\ 0299 F2BD02 JP P,?0026
\ 029C ?0028:
174 {
175 if (FMAutoTab[i] == temp)
\ 029C FDE5 PUSH IY
\ 029E E1 POP HL
\ 029F 29 ADD HL,HL
\ 02A0 010000 LD BC,FMAutoTab
\ 02A3 09 ADD HL,BC
\ 02A4 46 LD B,(HL)
\ 02A5 23 INC HL
\ 02A6 66 LD H,(HL)
\ 02A7 68 LD L,B
\ 02A8 DD4EFC LD C,(IX-4)
\ 02AB DD46FD LD B,(IX-3)
\ 02AE A7 AND A
\ 02AF ED42 SBC HL,BC
\ 02B1 2006 JR NZ,?0031
\ 02B3 ?0030:
176 {
177 Search_Flag = FALSE;
\ 02B3 DD36FA00 LD (IX-6),0
178 break;
\ 02B7 1804 JR ?0026
\ 02B9 ?0031:
\ 02B9 FD23 INC IY
\ 02BB 18CB JR ?0027
\ 02BD ?0026:
179 }
180 }
181 if (Search_Flag)
\ 02BD AF XOR A
\ 02BE DDB6FA OR (IX-6)
\ 02C1 2816 JR Z,?0033
\ 02C3 ?0032:
182 {
183 if (FMStatus.volume)
\ 02C3 3A0600 LD A,(FMStatus+6)
\ 02C6 B7 OR A
\ 02C7 2808 JR Z,?0035
\ 02C9 ?0034:
184 fmSendCommand(MC_MUTE, releaseMUTE);
\ 02C9 010000 LD BC,0
\ 02CC 1E0C LD E,12
\ 02CE CD0C03 CALL LWRD ?0191
\ 02D1 ?0035:
185 fmSendCommand(MC_GETSTATUS, (int) &FMStatus);
\ 02D1 010000 LD BC,FMStatus
\ 02D4 1E83 LD E,131
\ 02D6 CD0C03 CALL LWRD ?0191
\ 02D9 ?0033:
\ 02D9 ?0025:
186 }
187 }
188 ShowFreqInFM2();
\ 02D9 3E00 LD A,BYTE3 ShowFreqInFM2
\ 02DB 21AB00 LD HL,LWRD ShowFreqInFM2
\ 02DE CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
189 for (i = 0; i < 0x3999; i++)
\ 02E1 FD210000 LD IY,0
\ 02E5 ?0037:
\ 02E5 0199B9 LD BC,47513
\ 02E8 FDE5 PUSH IY
\ 02EA E1 POP HL
\ 02EB 3E80 LD A,128
\ 02ED AC XOR H
\ 02EE 67 LD H,A
\ 02EF ED42 SBC HL,BC
\ 02F1 3004 JR NC,?0036
\ 02F3 ?0038:
\ 02F3 FD23 INC IY
\ 02F5 18EE JR ?0037
\ 02F7 ?0036:
190 {
191 }
192 return Search_Flag;
\ 02F7 DD6EFA LD L,(IX-6)
193 }
\ 02FA ?0188:
\ 02FA DDF9 LD SP,IX
\ 02FC DDE1 POP IX
\ 02FE FDE1 POP IY
\ 0300 C1 POP BC
\ 0301 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0304 ?0192:
\ 0304 ED4B0600 LD BC,(FMStatus+6)
\ 0308 0600 LD B,0
\ 030A 1E40 LD E,64
\ 030C ?0191:
\ 030C 3E00 LD A,BYTE3 fmSendCommand
\ 030E 210000 LD HL,LWRD fmSendCommand
\ 0311 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0314 RestartSearch:
194 /*
195 ********************************************************************************
196 * Description : 设置门限值,重新开始搜索.
197 *
198 * Arguments : 门限值
199 *
200 * Returns : TRUE:继续搜索,FALSE:中断搜索,正常结束.
201 *
202 * Notes :
203 *
204 ********************************************************************************
205 */
206 bool RestartSearch(byte level)
207 {
\ 0314 C5 PUSH BC
\ 0315 D5 PUSH DE
208 if (level <= 2)
\ 0316 3E02 LD A,2
\ 0318 BB CP E
\ 0319 3804 JR C,?0041
\ 031B ?0040:
209 return FALSE;
\ 031B 2E00 LD L,0
\ 031D 1815 JR ?0042
\ 031F ?0041:
210 //fmSendCommand(MC_SETVOLUME,0);
211 //fmSendCommand(MC_CLOSE,0);
212 //fmSendCommand(MC_OPEN,level);
213 fmSendCommand(MC_MUTE, SetMUTE);
\ 031F 010100 LD BC,1
\ 0322 1E0C LD E,12
\ 0324 CD0C03 CALL LWRD ?0191
214 fmSendCommand(MC_SETVOLUME, FMStatus.volume);
\ 0327 CD0403 CALL LWRD ?0192
215 fmSendCommand(MC_RESTORE, (int) &radio_param);
\ 032A 010000 LD BC,radio_param
\ 032D 1E45 LD E,69
\ 032F CD0C03 CALL LWRD ?0191
216 return TRUE;
\ 0332 2E01 LD L,1
217 }
\ 0334 ?0042:
\ 0334 F1 POP AF
\ 0335 C1 POP BC
\ 0336 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0339 AutoSearchHandle:
218 /*
219 ********************************************************************************
220 * Description : 全自动搜索
221 *
222 * Arguments : Direct,Next或Last搜索.
223 *
224 * Returns : 如果有可识别的热键消息, 返回结果消息
225 如果没有可识别的热键消息, 返回0
226 *
227 * Notes :
228 *
229 ********************************************************************************
230 */
231 int AutoSearchHandle(BYTE Direct)
232 {
\ 0339 C5 PUSH BC
\ 033A FDE5 PUSH IY
\ 033C DDE5 PUSH IX
\ 033E DD210000 LD IX,0
\ 0342 DD39 ADD IX,SP
\ 0344 D5 PUSH DE
\ 0345 F5 PUSH AF
\ 0346 F5 PUSH AF
\ 0347 F5 PUSH AF
\ 0348 F5 PUSH AF
233 int key;
234 bool need_draw = TRUE;
235 //BYTE Searchflag=1;
236 BYTE Search_Level = SearchLevel;
237 bool loop = TRUE;
238 BYTE Search_Loop = 2; //搜台的次数
239 BYTE temp;
240
241 AutoTabNum = 0; // 全自动搜索,从极值开始.
\ 0349 AF XOR A
\ 034A 322800 LD (AutoTabNum),A
242 fmSendCommand(MC_BACKUP, (int) &radio_param);
\ 034D 010000 LD BC,radio_param
\ 0350 1E44 LD E,68
\ 0352 CD0C03 CALL LWRD ?0191
243 if (FMStatus.mode == 0)
\ 0355 DD36F801 LD (IX-8),1
\ 0359 DD36F903 LD (IX-7),3
\ 035D DD36FA01 LD (IX-6),1
\ 0361 DD36FB02 LD (IX-5),2
\ 0365 3A0500 LD A,(FMStatus+5)
\ 0368 B7 OR A
\ 0369 DD7EFE LD A,(IX-2)
\ 036C 2009 JR NZ,?0044
\ 036E ?0043:
244 {
245 if (Direct == 10) // US频段
\ 036E FE0A CP 10
\ 0370 2809 JR Z,?0186
\ 0372 ?0045:
246 {
247 FMStatus.freq = 0x00;
248 }
249 else
\ 0372 ?0046:
250 {
251 FMStatus.freq = 210;
\ 0372 21D200 LD HL,210
\ 0375 180C JR ?0178
\ 0377 ?0047:
252 }
253 }
254 else
\ 0377 ?0044:
255 { // JP频段
256 if (Direct == 10)
\ 0377 FE0A CP 10
\ 0379 2005 JR NZ,?0050
\ 037B ?0049:
257 {
258 FMStatus.freq = 0;
\ 037B ?0186:
\ 037B 210000 LD HL,0
\ 037E 1803 JR ?0178
259 }
260 else
\ 0380 ?0050:
261 {
262 FMStatus.freq = 140;
\ 0380 218C00 LD HL,140
\ 0383 ?0178:
\ 0383 220100 LD (FMStatus+1),HL
\ 0386 ?0051:
\ 0386 ?0048:
263 }
264 }
265
266 temp = FMStatus.station_count;
\ 0386 3A0400 LD A,(FMStatus+4)
\ 0389 DD77FC LD (IX-4),A
\ 038C ?0053:
267 while (loop)
\ 038C AF XOR A
\ 038D DDB6FA OR (IX-6)
\ 0390 CAF904 JP Z,?0052
\ 0393 ?0054:
268 {
269 if (Direct != 0)
\ 0393 AF XOR A
\ 0394 DDB6FE OR (IX-2)
\ 0397 CA8704 JP Z,?0118
\ 039A ?0055:
270 {
271 if (Direct == 10) //NEXT搜索处理
\ 039A FE0A CP 10
\ 039C C22D04 JP NZ,?0058
\ 039F ?0057:
272 {
273 if(((FMStatus.freq+1)>210)&&(FMStatus.mode==0))
\ 039F ED4B0100 LD BC,(FMStatus+1)
\ 03A3 03 INC BC
\ 03A4 21D200 LD HL,210
\ 03A7 A7 AND A
\ 03A8 ED42 SBC HL,BC
\ 03AA 3018 JR NC,?0060
\ 03AC 3A0500 LD A,(FMStatus+5)
\ 03AF B7 OR A
\ 03B0 2012 JR NZ,?0060
\ 03B2 ?0062:
\ 03B2 ?0061:
\ 03B2 ?0059:
274 {
275 FMStatus.freq=0;
\ 03B2 6F LD L,A
\ 03B3 67 LD H,A
\ 03B4 220100 LD (FMStatus+1),HL
276 Search_Level--; // 以不同门限搜索.
\ 03B7 DD35F9 DEC (IX-7)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -