basal_fmradio.lst

来自「MP3 整个 SDK」· LST 代码 · 共 984 行 · 第 1/4 页

LST
984
字号
   \   01F8  FD210000          LD      IY,0
   \   01FC            ?0064:
   \   01FC  011480            LD      BC,32788
   \   01FF  FDE5              PUSH    IY
   \   0201  E1                POP     HL
   \   0202  78                LD      A,B
   \   0203  AC                XOR     H
   \   0204  67                LD      H,A
   \   0205  ED42              SBC     HL,BC
   \   0207  D23104            JP      NC,?0000
   \   020A            ?0065:
    122                         {
    123                             if(m_FMStationTab[i]!=0)k++;
   \   020A  FDE5              PUSH    IY
   \   020C  E1                POP     HL
   \   020D  29                ADD     HL,HL
   \   020E  010000            LD      BC,m_FMStationTab
   \   0211  09                ADD     HL,BC
   \   0212  7E                LD      A,(HL)
   \   0213  23                INC     HL
   \   0214  B6                OR      (HL)
   \   0215  2803              JR      Z,?0068
   \   0217            ?0067:
   \   0217  DD34FA            INC     (IX-6)
   \   021A            ?0068:
    124                             if(k==m_FMPlaystatus.station)
   \   021A  3A2B00            LD      A,(m_FMPlaystatus+3)
   \   021D  47                LD      B,A
   \   021E  DD7EFA            LD      A,(IX-6)
   \   0221  B8                CP      B
   \   0222  200B              JR      NZ,?0070
   \   0224            ?0069:
    125                             {
    126                                 m_FMStationTab[i]=m_FMPlaystatus.freq;
   \   0224  FDE5              PUSH    IY
   \   0226  E1                POP     HL
   \   0227  29                ADD     HL,HL
   \   0228  010000            LD      BC,m_FMStationTab
   \   022B  09                ADD     HL,BC
   \   022C  C32404            JP      LWRD ?0137
    127                                 break;
   \   022F            ?0070:
    128                             }
    129                         }
    130                     }                    
   \   022F  FD23              INC     IY
   \   0231  18C9              JR      ?0064
   \   0233            ?0063:
   \   0233            ?0062:
    131                     else if(m_FMPlaystatus.station_count>19)return    FALSE;
   \   0233  3A2C00            LD      A,(m_FMPlaystatus+4)
   \   0236  47                LD      B,A
   \   0237  3E13              LD      A,19
   \   0239  B8                CP      B
   \   023A  DA7203            JP      C,?0128
   \   023D            ?0072:
    132                     else                                    //新的电台频率保存到电台表
   \   023D            ?0073:
    133                     {
    134                         m_FMPlaystatus.station_count++;
   \   023D  212C00            LD      HL,m_FMPlaystatus+4
   \   0240  34                INC     (HL)
    135                         for(i=0;i<20;i++)
   \   0241  FD210000          LD      IY,0
   \   0245            ?0075:
   \   0245  011480            LD      BC,32788
   \   0248  FDE5              PUSH    IY
   \   024A  E1                POP     HL
   \   024B  78                LD      A,B
   \   024C  AC                XOR     H
   \   024D  67                LD      H,A
   \   024E  ED42              SBC     HL,BC
   \   0250  D23104            JP      NC,?0000
   \   0253            ?0076:
    136                         {
    137                             if(m_FMStationTab[i]==0)
   \   0253  FDE5              PUSH    IY
   \   0255  E1                POP     HL
   \   0256  29                ADD     HL,HL
   \   0257  010000            LD      BC,m_FMStationTab
   \   025A  09                ADD     HL,BC
   \   025B  7E                LD      A,(HL)
   \   025C  23                INC     HL
   \   025D  B6                OR      (HL)
   \   025E  2014              JR      NZ,?0079
   \   0260            ?0078:
    138                             {
    139                                 m_FMStationTab[i]=m_FMPlaystatus.freq;
   \   0260  FDE5              PUSH    IY
   \   0262  E1                POP     HL
   \   0263  29                ADD     HL,HL
   \   0264  09                ADD     HL,BC
   \   0265  ED4B2900          LD      BC,(m_FMPlaystatus+1)
   \   0269  71                LD      (HL),C
   \   026A  23                INC     HL
   \   026B  70                LD      (HL),B
    140                                 m_FMPlaystatus.station=i+1;
   \   026C  FDE5              PUSH    IY
   \   026E  E1                POP     HL
   \   026F  2C                INC     L
   \   0270  7D                LD      A,L
   \   0271  C3C403            JP      LWRD ?0135
    141                                 break;
   \   0274            ?0079:
    142                             }
    143                         }
    144                     }
   \   0274  FD23              INC     IY
   \   0276  18CD              JR      ?0075
   \   0278            ?0074:
   \   0278            ?0071:
    145                     
    146                     return TRUE;
    147                 case    MC_SETMODE:
   \   0278            ?0080:
    148                     m_FMPlaystatus.mode=(Station_bank_t)param;                
   \   0278  79                LD      A,C
   \   0279  322D00            LD      (m_FMPlaystatus+5),A
    149                     break;
   \   027C  C33104            JP      LWRD ?0000
   \   027F            ?0081:
    150                 case    MC_SETVOLUME:              
    151                     BankSwitch(address_24_of(FM_VolumeSet) >> 16);
   \   027F  210000            LD      HL,FM_VolumeSet
   \   0282  0E00              LD      C,BYTE3 FM_VolumeSet
   \   0284  CD4B04            CALL    LWRD ?0140
    152                     FM_VolumeSet((BYTE)param);
   \   0287  DD5EFE            LD      E,(IX-2)
   \   028A  CD0000            CALL    LWRD FM_VolumeSet
    153                     m_FMPlaystatus.volume=(BYTE)param;
   \   028D  DD7EFE            LD      A,(IX-2)
   \   0290  322E00            LD      (m_FMPlaystatus+6),A
    154                     break;               
   \   0293  C33104            JP      LWRD ?0000
   \   0296            ?0082:
    155                 case    MC_BACKUP:
    156                     memcpy((void *)(*(WORD *)param),m_FMStationTab, 40);                
   \   0296  012800            LD      BC,40
   \   0299  DD6EFE            LD      L,(IX-2)
   \   029C  DD66FF            LD      H,(IX-1)
   \   029F  5E                LD      E,(HL)
   \   02A0  23                INC     HL
   \   02A1  56                LD      D,(HL)
   \   02A2  210000            LD      HL,m_FMStationTab
   \   02A5  EDB0              LDIR
    157                     memcpy((void *)(*(WORD *)(param+2)),&m_FMPlaystatus, sizeof(fm_play_status_t));
   \   02A7  0E08              LD      C,8
   \   02A9  DD6EFE            LD      L,(IX-2)
   \   02AC  DD66FF            LD      H,(IX-1)
   \   02AF  23                INC     HL
   \   02B0  23                INC     HL
   \   02B1  5E                LD      E,(HL)
   \   02B2  23                INC     HL
   \   02B3  56                LD      D,(HL)
   \   02B4  C35603            JP      LWRD ?0131
    158                     break;
   \   02B7            ?0083:
    159                 
    160                 case    MC_RESTORE:
    161                     memcpy(m_FMStationTab, (void *)(*(WORD *)param), 40);
   \   02B7  012800            LD      BC,40
   \   02BA  110000            LD      DE,m_FMStationTab
   \   02BD  DD6EFE            LD      L,(IX-2)
   \   02C0  DD66FF            LD      H,(IX-1)
   \   02C3  7E                LD      A,(HL)
   \   02C4  23                INC     HL
   \   02C5  66                LD      H,(HL)
   \   02C6  6F                LD      L,A
   \   02C7  EDB0              LDIR
    162                     memcpy(&m_FMPlaystatus,(void *)(*(WORD *)(param+2)), sizeof(fm_play_status_t));
   \   02C9  0E08              LD      C,8
   \   02CB  112800            LD      DE,m_FMPlaystatus
   \   02CE  DD6EFE            LD      L,(IX-2)
   \   02D1  DD66FF            LD      H,(IX-1)
   \   02D4  23                INC     HL
   \   02D5  23                INC     HL
   \   02D6  7E                LD      A,(HL)
   \   02D7  23                INC     HL
   \   02D8  66                LD      H,(HL)
   \   02D9  6F                LD      L,A
   \   02DA  C36703            JP      LWRD ?0121
    163                     break;
   \   02DD            ?0084:
    164                 
    165                 case    MC_GETSTATUS:
    166                     BankSwitch(address_24_of(FM_GetStatus) >> 16);
   \   02DD  210000            LD      HL,FM_GetStatus
   \   02E0  0E00              LD      C,BYTE3 FM_GetStatus
   \   02E2  CD4B04            CALL    LWRD ?0140
    167                     FM_GetStatus(&d_FMStatus);
   \   02E5  113000            LD      DE,d_FMStatus
   \   02E8  CD0000            CALL    LWRD FM_GetStatus
    168                     m_FMPlaystatus.freq=d_FMStatus.FM_CurrentFreq;
   \   02EB  2A3100            LD      HL,(d_FMStatus+1)
   \   02EE  222900            LD      (m_FMPlaystatus+1),HL
    169                     m_FMPlaystatus.stereo_status=d_FMStatus.FM_Stereo_Status;
   \   02F1  3A3000            LD      A,(d_FMStatus)
   \   02F4  322F00            LD      (m_FMPlaystatus+7),A
    170                     k=0; 
    171                     //当前电台频率值和电台表中某一频率差距小于150KHZ,此电台和此电台表对应         
    172                     for(i=0;i<20;i++)
   \   02F7  DD36FA00          LD      (IX-6),0
   \   02FB  FD210000          LD      IY,0
   \   02FF            ?0086:
   \   02FF  011480            LD      BC,32788
   \   0302  FDE5              PUSH    IY
   \   0304  E1                POP     HL
   \   0305  78                LD      A,B
   \   0306  AC                XOR     H
   \   0307  67                LD      H,A
   \   0308  ED42              SBC     HL,BC
   \   030A  3041              JR      NC,?0085
   \   030C            ?0087:
    173                     {
    174                         m_FMPlaystatus.station=0;
   \   030C  AF                XOR     A
   \   030D  322B00            LD      (m_FMPlaystatus+3),A
    175                         if(m_FMStationTab[i]!=0)
   \   0310  FDE5              PUSH    IY
   \   0312  E1                POP     HL
   \   0313  29                ADD     HL,HL
   \   0314  010000            LD      BC,m_FMStationTab
   \   0317  09                ADD     HL,BC
   \   0318  7E                LD      A,(HL)
   \   0319  23                INC     HL
   \   031A  B6                OR      (HL)
   \   031B  282C              JR      Z,?0092
   \   031D            ?0089:
    176                         {
    177                             k++;
   \   031D  DD34FA            INC     (IX-6)
    178                             if(abs(m_FMPlaystatus.freq-m_FMStationTab[i])<100)
   \   0320  FDE5              PUSH    IY
   \   0322  E1                POP     HL
   \   0323  29                ADD     HL,HL
   \   0324  09                ADD     HL,BC
   \   0325  4E                LD      C,(HL)
   \   0326  23                INC     HL
   \   0327  46                LD      B,(HL)
   \   0328  2A2900            LD      HL,(m_FMPlaystatus+1)
   \   032B  A7                AND     A
   \   032C  ED42              SBC     HL,BC
   \   032E  EB                EX      DE,HL
   \   032F  3E00              LD      A,BYTE3 abs
   \   0331  210000            LD      HL,LWRD abs
   \   0334  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?