main.lst

来自「MP3 整个 SDK」· LST 代码 · 共 1,352 行 · 第 1/5 页

LST
1,352
字号
   \   00B4            ?0124:
   \   00B4  F2BB00            JP      P,?0009
   \   00B7            ?0011:
     82              }
   \   00B7  DD2B              DEC     IX
   \   00B9  18EB              JR      ?0010
   \   00BB            ?0009:
   \   00BB  210000            LD      HL,0
   \   00BE  39                ADD     HL,SP
   \   00BF  34                INC     (HL)
   \   00C0  23                INC     HL
   \   00C1  20CF              JR      NZ,?0006
   \   00C3  34                INC     (HL)
   \   00C4  18CC              JR      ?0006
   \   00C6            ?0005:
   \   00C6            ?0014:
     83             // if(!DRV_Install("I2C_SLA.DRV",0)) while(1) {;}
     84              //clear message queue for make sure delay 0.5s
     85              while(ap_get_message() != 0) {;}
   \   00C6  CD0000            CALL    LWRD ap_get_message
   \   00C9  B7                OR      A
   \   00CA  20FA              JR      NZ,?0005
   \   00CC            ?0015:
   \   00CC            ?0013:
     86              ap_sleep(1);
   \   00CC  110100            LD      DE,1
   \   00CF  3E00              LD      A,BYTE3 ap_sleep
   \   00D1  210000            LD      HL,LWRD ap_sleep
   \   00D4  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     87          
     88              res_fp=ResOpen("ui30.res");                        //打开资源
   \   00D7  110000            LD      DE,?0016
   \   00DA  3E00              LD      A,BYTE3 ResOpen
   \   00DC  210000            LD      HL,LWRD ResOpen
   \   00DF  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   00E2  220000            LD      (res_fp),HL
     89              ASSERT(res_fp!=NULL);                             //问题报错,DEBUG时有效
     90              //-------安装ud驱动------------
     91              DRV_ActiveUD(0x00,MODE_SLOW);
   \   00E5  0E01              LD      C,1
   \   00E7  1E00              LD      E,0
   \   00E9  CD0000            CALL    LWRD DRV_ActiveUD
     92          
     93              result=VMRead(&F_comval,VM_SYSTEM,sizeof(F_comval));    //读系统变量
   \   00EC  212000            LD      HL,32
   \   00EF  E5                PUSH    HL
   \   00F0  010002            LD      BC,512
   \   00F3  111300            LD      DE,g_comval
   \   00F6  CD0000            CALL    LWRD VMRead
   \   00F9  E1                POP     HL
     94              ASSERT(result);
     95              //check if valid
     96              if(F_comval.magic != MAGIC_COMVAL)                        //第一次读,初始化
   \   00FA  21ADDE            LD      HL,57005
   \   00FD  ED4B1300          LD      BC,(g_comval)
   \   0101  A7                AND     A
   \   0102  ED42              SBC     HL,BC
   \   0104  2806              JR      Z,?0018
   \   0106            ?0017:
     97              {
     98                  DUMP_STRING("F_comval init-ed!");
     99                  //COMVAL_INIT(F_comval);
    100                  GetDefaultComval(&F_comval);
   \   0106  111300            LD      DE,g_comval
   \   0109  CD0000            CALL    LWRD GetDefaultComval
   \   010C            ?0018:
    101              }
    102              ap_message_init(&F_comval);                                //系统消息(如RTC COUNTER)初始化
   \   010C  111300            LD      DE,g_comval
   \   010F  3E00              LD      A,BYTE3 ap_message_init
   \   0111  210000            LD      HL,LWRD ap_message_init
   \   0114  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    103              result=VMRead(FMStationTab,VM_AP_RADIO,80+8*3+3);            //长度重新计算
   \   0117  216B00            LD      HL,107
   \   011A  E5                PUSH    HL
   \   011B  010020            LD      BC,8192
   \   011E  113400            LD      DE,FMStationTab
   \   0121  CD0000            CALL    LWRD VMRead
   \   0124  E1                POP     HL
    104              ASSERT(result);
    105              result=FMdeal();
   \   0125  3E00              LD      A,BYTE3 FMdeal
   \   0127  219201            LD      HL,LWRD FMdeal
   \   012A  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   012D  E5                PUSH    HL
   \   012E  FDE1              POP     IY
    106              //保存变量
    107              fmSendCommand(MC_BACKUP,(int)&radio_param);
   \   0130  010200            LD      BC,radio_param
   \   0133  1E44              LD      E,68
   \   0135  CD1000            CALL    LWRD ?0169
    108              if (result == RESULT_RECORD)                            //截获FM中所有Rec热键录音。
   \   0138  FDE5              PUSH    IY
   \   013A  E1                POP     HL
   \   013B  3E09              LD      A,9
   \   013D  AD                XOR     L
   \   013E  B4                OR      H
   \   013F  2004              JR      NZ,?0020
   \   0141            ?0019:
    109                  result = RESULT_FMREC_START;
   \   0141  FD210D00          LD      IY,13
   \   0145            ?0020:
    110              if ((result != RESULT_FMREC_NOSTART)&&(result != RESULT_FMREC_START)) //非电台录音退出!for FM record by ccm
   \   0145  FDE5              PUSH    IY
   \   0147  E1                POP     HL
   \   0148  3E0E              LD      A,14
   \   014A  AD                XOR     L
   \   014B  B4                OR      H
   \   014C  2822              JR      Z,?0022
   \   014E  3E0D              LD      A,13
   \   0150  AD                XOR     L
   \   0151  B4                OR      H
   \   0152  281C              JR      Z,?0022
   \   0154            ?0024:
   \   0154            ?0023:
   \   0154            ?0021:
    111              {
    112                  fmSendCommand(MC_CLOSE,0);
   \   0154  010000            LD      BC,0
   \   0157  1E02              LD      E,2
   \   0159  CD1000            CALL    LWRD ?0169
    113                  //Close VCCOUT. by ccm
    114                  CloseFMPower();
   \   015C  DBDF              IN      A,(223)
   \   015E  CB8F              RES     1,A
   \   0160  CBC7              SET     0,A
   \   0162  D3DF              OUT     (223),A
    115              CloseFMPower2();
   \   0164  DBFA              IN      A,(250)
   \   0166  CBCF              SET     1,A
   \   0168  D3FA              OUT     (250),A
    116              CloseFMPower1();
   \   016A  DBF8              IN      A,(248)
   \   016C  CB8F              RES     1,A
   \   016E  D3F8              OUT     (248),A
   \   0170            ?0022:
    117              }
    118              VMWrite(FMStationTab,VM_AP_RADIO);
   \   0170  010020            LD      BC,8192
   \   0173  113400            LD      DE,FMStationTab
   \   0176  CD0000            CALL    LWRD VMWrite
    119              ResClose(res_fp);                                        //资源关闭
   \   0179  ED5B0000          LD      DE,(res_fp)
   \   017D  3E00              LD      A,BYTE3 ResClose
   \   017F  210000            LD      HL,LWRD ResClose
   \   0182  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    120          
    121              return result;
   \   0185  FDE5              PUSH    IY
   \   0187  E1                POP     HL
    122          }
   \   0188  F1                POP     AF
   \   0189  F1                POP     AF
   \   018A  DDE1              POP     IX
   \   018C  FDE1              POP     IY
   \   018E  C1                POP     BC
   \   018F  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0192            FMdeal:
    123          
    124          int FMdeal()
    125          {
   \   0192  C5                PUSH    BC
   \   0193  D5                PUSH    DE
   \   0194  FDE5              PUSH    IY
   \   0196  DDE5              PUSH    IX
   \   0198  DD210000          LD      IX,0
   \   019C  DD39              ADD     IX,SP
   \   019E  21F4FF            LD      HL,65524
   \   01A1  39                ADD     HL,SP
   \   01A2  F9                LD      SP,HL
    126              int result=0,key;
    127              char FMBand[3],buf[4]={"FM"};
   \   01A3  210400            LD      HL,4
   \   01A6  39                ADD     HL,SP
   \   01A7  EB                EX      DE,HL
   \   01A8  211000            LD      HL,?0025
   \   01AB  010400            LD      BC,4
   \   01AE  EDB0              LDIR
    128          //标志:need_draw,重画 BandSwitch,频段切换 FirstWait,刚进AP
    129              bool need_draw=TRUE,BandSwitch=TRUE,FirstWait=TRUE;
    130              long i;
    131              int k,h;
    132              static char active=0;            //进入菜单的选中号
    133          
    134          
    135              //result=0;
    136              if(memcmp(fmdataflag,buf,2)!=0)
   \   01B0  FD210000          LD      IY,0
   \   01B4  DD36FC01          LD      (IX-4),1
   \   01B8  DD36FD01          LD      (IX-3),1
   \   01BC  DD36FE01          LD      (IX-2),1
   \   01C0  03                INC     BC
   \   01C1  03                INC     BC
   \   01C2  119C00            LD      DE,fmdataflag
   \   01C5  210400            LD      HL,4
   \   01C8  39                ADD     HL,SP
   \   01C9  CD0000            CALL    LWRD ?MEMCMP_L11
   \   01CC  7D                LD      A,L
   \   01CD  B4                OR      H
   \   01CE  287B              JR      Z,?0028
   \   01D0            ?0027:
    137              {
    138                  for(k=0;k<40;k++)
   \   01D0  AF                XOR     A
   \   01D1  DD77F6            LD      (IX-10),A
   \   01D4  DD77F7            LD      (IX-9),A
   \   01D7            ?0030:
   \   01D7  012880            LD      BC,32808
   \   01DA  DD6EF6            LD      L,(IX-10)
   \   01DD  DD66F7            LD      H,(IX-9)
   \   01E0  78                LD      A,B
   \   01E1  AC                XOR     H
   \   01E2  67                LD      H,A
   \   01E3  ED42              SBC     HL,BC
   \   01E5  3019              JR      NC,?0029
   \   01E7            ?0031:
    139                  {
    140                      FMStationTab[k]=0;
   \   01E7  DD6EF6            LD      L,(IX-10)
   \   01EA  DD66F7            LD      H,(IX-9)
   \   01ED  29                ADD     HL,HL
   \   01EE  013400            LD      BC,FMStationTab
   \   01F1  09                ADD     HL,BC
   \   01F2  AF                XOR     A
   \   01F3  77                LD      (HL),A
   \   01F4  23                INC     HL
   \   01F5  77                LD      (HL),A
   \   01F6  DD34F6            INC     (IX-10)
   \   01F9  20DC              JR      NZ,?0030
   \   01FB  DD34F7            INC     (IX-9)
   \   01FE  18D7              JR      ?0030
   \   0200            ?0029:
    141                  }
    142                  memcpy(fmdataflag,buf,3);        //FM BUFFER标志赋初值
   \   0200  010300            LD      BC,3
   \   0203  119C00            LD      DE,fmdataflag
   \   0206  210400            LD      HL,4
   \   0209  39                ADD     HL,SP
   \   020A  EDB0              LDIR
    143                  //US和JP暂存区赋初值
    144          //        FMStatusUS.freq=0x53d8;
    145                  FMStatusUS.freq=0x53d8;
   \   020C  21D853            LD      HL,21464
   \   020F  228D00            LD      (FMStatusUS+1),HL
    146                  FMStatusUS.mode=0;
   \   0212  AF                XOR     A
   \   0213  329100            LD      (FMStatusUS+5),A
    147                  FMStatusUS.volume=24;
   \   0216  3E18              LD      A,24
   \   0218  329200            LD      (FMStatusUS+6),A
    148                  FMStatusUS.station=0;
   \   021B  AF                XOR     A
   \   021C  328F00            LD      (FMStatusUS+3),A
    149                  FMStatusUS.station_count=0;
   \   021F  329000            LD      (FMStatusUS+4),A
    150                  FMStatusUS.stereo_status=1;
   \   0222  3E01              LD      A,1
   \   0224  329300            LD      (FMStatusUS+7),A
    151                  FMStatusJP.freq=0x28E0;
   \   0227  21E028            LD      HL,10464
   \   022A  229500            LD      (FMStatusJP+1),HL
    152                  FMStatusJP.mode=1;
   \   022D  329900            LD      (FMStatusJP+5),A
    153                  FMStatusJP.volume=24;
   \   0230  3E18              LD      A,24
   \   0232  329A00            LD      (FMStatusJP+6),A
    154                  FMStatusJP.station=0;
   \   0235  AF                XOR     A
   \   0236  329700            LD      (FMStatusJP+3),A
    155                  FMStatusJP.station_count=0;
   \   0239  329800            LD      (FMStatusJP+4),A

⌨️ 快捷键说明

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