autosearchhandle.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,436 行 · 第 1/5 页
LST
1,436 行
\ 04FF ?0101:
\ 04FF ?0099:
356 {
357 ShowStationCount(AutoTabNum + 1);
358 key = TryPlayingHandle();
359 CleanStationCount();
\ 04FF CD3106 CALL LWRD ?0177
360 need_draw = TRUE;
\ 0502 DD36F801 LD (IX-8),1
361 if(key == RESULT_RADIO) // 处理Play,mode键.
\ 0506 FDE5 PUSH IY
\ 0508 E1 POP HL
\ 0509 3E07 LD A,7
\ 050B AD XOR L
\ 050C B4 OR H
\ 050D 2006 JR NZ,?0104
\ 050F ?0103:
362 {
363 key = RESULT_IGNORE;
364 loop = FALSE;
\ 050F ?0171:
\ 050F FD213400 LD IY,52
\ 0513 180A JR ?0167
365 }
366 else
\ 0515 ?0104:
367 {
368 if(key != RESULT_IGNORE && key != 0) // 处理热键.
\ 0515 3E34 LD A,52
\ 0517 AD XOR L
\ 0518 B4 OR H
\ 0519 281A JR Z,?0112
\ 051B 7D LD A,L
\ 051C B4 OR H
\ 051D 2816 JR Z,?0112
\ 051F ?0109:
\ 051F ?0108:
\ 051F ?0106:
369 {
370 loop = FALSE;
\ 051F ?0167:
\ 051F DD36FA00 LD (IX-6),0
\ 0523 ?0107:
\ 0523 ?0105:
\ 0523 ?0100:
\ 0523 1810 JR ?0112
\ 0525 ?0088:
371 }
372 }
373 }
374 }
375 else if(Direct==50)
\ 0525 FE32 CP 50
\ 0527 200C JR NZ,?0112
\ 0529 ?0111:
376 {
377 Direct=0;
378 loop = 0;
379 key = 0;
\ 0529 DD36FE00 LD (IX-2),0
\ 052D DD36FA00 LD (IX-6),0
\ 0531 FD210000 LD IY,0
\ 0535 ?0112:
\ 0535 ?0110:
\ 0535 ?0086:
\ 0535 ?0062:
380 }
381 }
382
383 if(loop && need_draw) //显示
\ 0535 AF XOR A
\ 0536 DDB6FA OR (IX-6)
\ 0539 2812 JR Z,?0114
\ 053B AF XOR A
\ 053C DDB6F8 OR (IX-8)
\ 053F 280C JR Z,?0114
\ 0541 ?0116:
\ 0541 ?0115:
\ 0541 ?0113:
384 {
385 ShowFreqInFM2();
\ 0541 3E00 LD A,BYTE3 ShowFreqInFM2
\ 0543 215800 LD HL,LWRD ShowFreqInFM2
\ 0546 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
386 need_draw=FALSE;
\ 0549 DD36F800 LD (IX-8),0
\ 054D ?0114:
387 }
388
389 if(AutoTabNum >= 20) // 已搜到20个电台,正常退出.
\ 054D 3A2800 LD A,(AutoTabNum)
\ 0550 FE14 CP 20
\ 0552 3804 JR C,?0118
\ 0554 ?0117:
390 loop = FALSE;
\ 0554 DD36FA00 LD (IX-6),0
\ 0558 ?0118:
391 if(loop)
\ 0558 AF XOR A
\ 0559 DDB6FA OR (IX-6)
\ 055C CAF203 JP Z,?0059
\ 055F ?0119:
392 {
393 key=ap_get_message();
\ 055F CD0000 CALL LWRD ap_get_message
\ 0562 4F LD C,A
\ 0563 0600 LD B,0
\ 0565 C5 PUSH BC
\ 0566 FDE1 POP IY
394 switch(key)
\ 0568 3E1D LD A,29
\ 056A A9 XOR C
\ 056B CAF203 JP Z,?0059
395 {
396 bool Search_Flag = FALSE;
\ 056E ?0122:
397 case AP_MSG_STANDBY:
398 //do nothing
399 break;
\ 056E ?0123:
\ 056E 3E21 LD A,33
\ 0570 A9 XOR C
\ 0571 2805 JR Z,?0130
\ 0573 3E30 LD A,48
\ 0575 A9 XOR C
\ 0576 200A JR NZ,?0124
\ 0578 ?0130:
400 case AP_KEY_PLAY | AP_KEY_UP:
401 case AP_KEY_MODE|AP_KEY_UP: // 保存电台, 返回播放界面.
402 loop = FALSE;
403 key = RESULT_IGNORE;
\ 0578 DD70FA LD (IX-6),B
\ 057B FD213400 LD IY,52
404 break;
\ 057F C3F203 JP LWRD ?0059
\ 0582 ?0124:
405 default: //热键处理
406 key=ap_handle_hotkey(key);
\ 0582 FDE5 PUSH IY
\ 0584 E1 POP HL
\ 0585 5D LD E,L
\ 0586 CD0000 CALL LWRD ap_handle_hotkey
\ 0589 4F LD C,A
\ 058A C5 PUSH BC
\ 058B FDE1 POP IY
407 if(key == RESULT_REDRAW)need_draw=TRUE;
\ 058D 3E32 LD A,50
\ 058F A9 XOR C
\ 0590 2007 JR NZ,?0126
\ 0592 ?0125:
\ 0592 DD36F801 LD (IX-8),1
\ 0596 C3F203 JP LWRD ?0059
\ 0599 ?0126:
408 else if(key!=0)
\ 0599 FDE5 PUSH IY
\ 059B E1 POP HL
\ 059C 7D LD A,L
\ 059D B4 OR H
\ 059E CAF203 JP Z,?0059
\ 05A1 ?0128:
409 {
410 loop = FALSE;
\ 05A1 DD70FA LD (IX-6),B
\ 05A4 ?0129:
\ 05A4 ?0127:
\ 05A4 ?0121:
\ 05A4 ?0120:
\ 05A4 C3F203 JP LWRD ?0059
\ 05A7 ?0058:
411 }
412 } // end switch(key)
413 } // end if(loop)
414 } // end while(loop)
415 if(AutoTabNum > 0)
\ 05A7 3A2800 LD A,(AutoTabNum)
\ 05AA B7 OR A
\ 05AB 284B JR Z,?0132
\ 05AD ?0131:
416 {
417 memcpy(radio_param.param1, FMAutoTab, AutoTabNum * 2);
\ 05AD 6F LD L,A
\ 05AE 2600 LD H,0
\ 05B0 29 ADD HL,HL
\ 05B1 4D LD C,L
\ 05B2 79 LD A,C
\ 05B3 44 LD B,H
\ 05B4 ED5B0000 LD DE,(radio_param)
\ 05B8 210000 LD HL,FMAutoTab
\ 05BB B0 OR B
\ 05BC 2802 JR Z,?0161
\ 05BE EDB0 LDIR
\ 05C0 ?0161:
418 //if(FMStatus.station_count < AutoTabNum)
419 if(temp < AutoTabNum) // 覆盖所有电台
\ 05C0 3A2800 LD A,(AutoTabNum)
\ 05C3 47 LD B,A
\ 05C4 DD7EFB LD A,(IX-5)
\ 05C7 B8 CP B
\ 05C8 3003 JR NC,?0134
\ 05CA ?0133:
420 {
421 FMStatus.station_count = AutoTabNum;
\ 05CA 78 LD A,B
\ 05CB 1816 JR ?0168
422 }
423 else
\ 05CD ?0134:
424 {
425 if(key == 0)
\ 05CD FDE5 PUSH IY
\ 05CF E1 POP HL
\ 05D0 7D LD A,L
\ 05D1 B4 OR H
\ 05D2 2004 JR NZ,?0137
\ 05D4 ?0136:
426 {
427 FMStatus.station_count = AutoTabNum;
\ 05D4 78 LD A,B
\ 05D5 320400 LD (FMStatus+4),A
\ 05D8 ?0137:
428 }
429 if(key == RESULT_IGNORE) // 覆盖部分电台
\ 05D8 3E34 LD A,52
\ 05DA AD XOR L
\ 05DB B4 OR H
\ 05DC 2008 JR NZ,?0141
\ 05DE ?0138:
430 {
431 if(temp != 0)
\ 05DE DDB6FB OR (IX-5)
\ 05E1 2803 JR Z,?0141
\ 05E3 ?0140:
432 FMStatus.station_count = temp;
\ 05E3 ?0168:
\ 05E3 320400 LD (FMStatus+4),A
\ 05E6 ?0141:
\ 05E6 ?0139:
\ 05E6 ?0135:
433 }
434 }
435 FMStatus.freq = FMAutoTab[0];
\ 05E6 2A0000 LD HL,(FMAutoTab)
\ 05E9 220100 LD (FMStatus+1),HL
436 FMStatus.station = 0;
\ 05EC AF XOR A
\ 05ED 320300 LD (FMStatus+3),A
437 fmSendCommand(MC_RESTORE,(int)&radio_param);
\ 05F0 010000 LD BC,radio_param
\ 05F3 1E45 LD E,69
\ 05F5 CD7103 CALL LWRD ?0175
\ 05F8 ?0132:
438 }
439
440 if(key == RESULT_IGNORE)
\ 05F8 FDE5 PUSH IY
\ 05FA E1 POP HL
\ 05FB 3E34 LD A,52
\ 05FD AD XOR L
\ 05FE B4 OR H
\ 05FF 2004 JR NZ,?0143
\ 0601 ?0142:
441 {
442 key = 0;
\ 0601 FD210000 LD IY,0
\ 0605 ?0143:
443 }
444
445
446 if(FMStatus.station_count > 0x00) // 没有搜到电台退出的情况.
\ 0605 3A0400 LD A,(FMStatus+4)
\ 0608 B7 OR A
\ 0609 2820 JR Z,?0145
\ 060B ?0144:
447 {
448 fmSendCommand(MC_STEP,UP);
\ 060B 010100 LD BC,1
\ 060E 1E07 LD E,7
\ 0610 CD7103 CALL LWRD ?0175
449 for(temp=0; temp<0xff; temp++) // 延迟
\ 0613 DD36FB00 LD (IX-5),0
\ 0617 ?0147:
\ 0617 DD7EFB LD A,(IX-5)
\ 061A FEFF CP 255
\ 061C 3005 JR NC,?
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?