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