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 + -
显示快捷键?