tryplaying.lst

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

LST
517
字号
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       25/Dec/106  17:01:38 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d90f\ap\ap_radio\tryplaying.c             #
#       List file     =  d:\case_i_d90f\ap\ap_radio\list\tryplaying.lst      #
#       Object file   =  d:\case_i_d90f\ap\ap_radio\obj\tryplaying.r01       #
#       ASM file      =  d:\case_i_d90f\ap\ap_radio\list\tryplaying.s01      #
#       Command line  =  -v0 -mb -OD:\case_i_d90f\ap\ap_radio\Obj\ -e -K -w  #
#                        -gA -s9 -RCODE -r0 -DNAPDEBUG                       #
#                        -LD:\case_i_d90f\ap\ap_radio\List\ -q -t8           #
#                        -AD:\case_i_d90f\ap\ap_radio\List\                  #
#                        -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\           #
#                        D:\CASE_I_D90F\AP\AP_RADIO\TryPlaying.c             #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    tryplaying(17)
   \   0000                    RSEG    CODE_2(0)
   \   0000                    EXTERN  AutoTabNum
   \   0000                    EXTERN  FMAutoTab
   \   0000                    EXTERN  FMStatus
   \   0000                    EXTERN  ResShowPic
   \   0000                    PUBLIC  TryPlayingHandle
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    EXTERN  fmSendCommand
   \   0000                    EXTERN  radio_param
   \   0000                    EXTERN  ui_show_volfm
   \   0000                    PUBLIC  volume_callback2
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?US_DIV_L02
   \   0000                    EXTERN  ?S_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    CODE_2
   \   0000            volume_callback2:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        main ap of sdk 3.0
      5          *
      6          *        (c) Copyright, Actions Co,Ld.
      7          *             All Right Reserved
      8          *
      9          *  $Id: TryPlaying.c,v 1.1.1.1 2006/05/22 03:24:00 selina Exp $
     10          *******************************************************************************
     11          */
     12          
     13          #pragma codeseg(CODE_2)
     14          
     15          #include "ap_radio.h"
     16          #include "actos.h"
     17          
     18          //extern    slider_t     slider;
     19          extern    comval_t    F_comval;
     20          extern    WORD     FMStationTab[40];         // 前20个是US, 后20个是JP.
     21          extern    fm_play_status_t    FMStatus;
     22          extern     FMRADIO_param_t radio_param;
     23          
     24          extern      WORD    FMAutoTab[20];        // 全自动收台,预存台.
     25          extern    BYTE    AutoTabNum;        // 预存台数.
     26          
     27          void    volume_callback2(int Vol)            //音量设置的CALLBACK函数
     28          {
   \   0000  C5                PUSH    BC
   \   0001  D5                PUSH    DE
     29          //实时改变音量的值
     30              fmSendCommand(MC_SETVOLUME,Vol);
   \   0002  4B                LD      C,E
   \   0003  42                LD      B,D
   \   0004  CD0C00            CALL    LWRD ?0050
     31          }
   \   0007  E1                POP     HL
   \   0008  C1                POP     BC
   \   0009  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   000C            ?0050:
   \   000C  1E40              LD      E,64
   \   000E            ?0051:
   \   000E  3E00              LD      A,BYTE3 fmSendCommand
   \   0010  210000            LD      HL,LWRD fmSendCommand
   \   0013  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   0016            TryPlayingHandle:
     32          /*
     33          ********************************************************************************
     34          * Description : 试播放5秒钟
     35          *
     36          * Arguments   :
     37          *
     38          * Returns     : RESULT_RADIO:PLAY和MODE键,  RESULT_IGNORE:NEXT和LAST键
     39                          其它为热键
     40          *
     41          * Notes       :
     42          *
     43          ********************************************************************************
     44          */
     45          int TryPlayingHandle(void)
     46          {
   \   0016  C5                PUSH    BC
   \   0017  D5                PUSH    DE
   \   0018  FDE5              PUSH    IY
   \   001A  DDE5              PUSH    IX
   \   001C  DD210000          LD      IX,0
   \   0020  DD39              ADD     IX,SP
   \   0022  21F6FF            LD      HL,65526
   \   0025  39                ADD     HL,SP
   \   0026  F9                LD      SP,HL
     47              int key, play_time = 12;
     48              int flash_point = 1;
     49              bool loop = TRUE;
     50              int k,i;
     51              if(FMStatus.mode==0)
   \   0027  DD36FC0C          LD      (IX-4),12
   \   002B  DD36FD00          LD      (IX-3),0
   \   002F  DD36FA01          LD      (IX-6),1
   \   0033  DD36FB00          LD      (IX-5),0
   \   0037  DD36FE01          LD      (IX-2),1
   \   003B  3A0500            LD      A,(FMStatus+5)
   \   003E  B7                OR      A
   \   003F  2A0100            LD      HL,(FMStatus+1)
   \   0042  200A              JR      NZ,?0003
   \   0044            ?0002:
     52              {
     53                  k = (FMStatus.freq-0x53d8)/127;
   \   0044  0128AC            LD      BC,44072
   \   0047  09                ADD     HL,BC
   \   0048  EB                EX      DE,HL
   \   0049  017F00            LD      BC,127
   \   004C  1808              JR      ?0044
     54              }
     55              else
   \   004E            ?0003:
     56              {
     57                  k=(FMStatus.freq-0x28e0)/105;
   \   004E  0120D7            LD      BC,55072
   \   0051  09                ADD     HL,BC
   \   0052  EB                EX      DE,HL
   \   0053  016900            LD      BC,105
   \   0056            ?0044:
   \   0056  CD0000            CALL    LWRD ?US_DIV_L02
   \   0059  DD73F6            LD      (IX-10),E
   \   005C  DD72F7            LD      (IX-9),D
   \   005F            ?0004:
     58              }
     59              fmSendCommand(MC_PLAY,0);
   \   005F  48                LD      C,B
   \   0060  1E04              LD      E,4
   \   0062  CD0E00            CALL    LWRD ?0051
     60              fmSendCommand(MC_SETVOLUME,FMStatus.volume);
   \   0065            ?0049:
   \   0065  ED4B0600          LD      BC,(FMStatus+6)
   \   0069  0600              LD      B,0
   \   006B  CD0C00            CALL    LWRD ?0050
   \   006E            ?0006:
     61          
     62              while(loop)
   \   006E  AF                XOR     A
   \   006F  DDB6FE            OR      (IX-2)
   \   0072  CA8001            JP      Z,?0005
   \   0075            ?0007:
     63              {
     64                  key=ap_get_message();
   \   0075  CD0000            CALL    LWRD ap_get_message
   \   0078  4F                LD      C,A
   \   0079  0600              LD      B,0
   \   007B  C5                PUSH    BC
   \   007C  FDE1              POP     IY
     65                  switch(key)
   \   007E  59                LD      E,C
   \   007F  50                LD      D,B
   \   0080  CD0000            CALL    LWRD ?S_V_SWITCH_L06
   \   0083  0A00              DEFW    10
   \   0085  0300              DEFW    3
   \   0087  0400              DEFW    4
   \   0089  1C00              DEFW    28
   \   008B  1D00              DEFW    29
   \   008D  2100              DEFW    33
   \   008F  2500              DEFW    37
   \   0091  2600              DEFW    38
   \   0093  3000              DEFW    48
   \   0095  4300              DEFW    67
   \   0097  4400              DEFW    68
   \   0099  6A01              DEFW    ?0032
   \   009B  3E01              DEFW    ?0024
   \   009D  4B01              DEFW    ?0028
   \   009F  B500              DEFW    ?0011
   \   00A1  AF00              DEFW    ?0010
   \   00A3  AF00              DEFW    ?0010
   \   00A5  B500              DEFW    ?0011
   \   00A7  6E00              DEFW    ?0006
   \   00A9  BE00              DEFW    ?0012
   \   00AB  3E01              DEFW    ?0024
   \   00AD  4B01              DEFW    ?0028
   \   00AF            ?0009:
     66                  {
     67                      case AP_MSG_STANDBY:
     68                          //do nothing
     69                          break;
   \   00AF            ?0010:
     70                      case AP_KEY_NEXT|AP_KEY_UP:
     71                      case AP_KEY_PREV|AP_KEY_UP:        // 停止试播
     72                          return RESULT_IGNORE;
   \   00AF  213400            LD      HL,52
     73                      case AP_KEY_PLAY | AP_KEY_UP:
   \   00B2  C3F501            JP      LWRD ?0041
   \   00B5            ?0011:
     74                      case AP_KEY_MODE|AP_KEY_UP:        // 保存电台, 返回播放界面.
     75                          loop = FALSE;
     76                          key = RESULT_RADIO;
   \   00B5  DD70FE            LD      (IX-2),B
   \   00B8  FD210700          LD      IY,7
     77                          break;
   \   00BC  18B0              JR      ?0006
   \   00BE            ?0012:
     78                      case AP_MSG_RTC:            // 时间记数,闪烁箭头.
     79                          play_time--;
   \   00BE  DD6EFC            LD      L,(IX-4)
   \   00C1  DD66FD            LD      H,(IX-3)
   \   00C4  2B                DEC     HL
   \   00C5  DD75FC            LD      (IX-4),L
   \   00C8  DD74FD            LD      (IX-3),H
     80                          if(play_time <= 0)
   \   00CB  4D                LD      C,L
   \   00CC  44                LD      B,H
   \   00CD  6A                LD      L,D
   \   00CE  62                LD      H,D
   \   00CF  F680              OR      128
   \   00D1  ED42              SBC     HL,BC
   \   00D3  E2D700            JP      PO,?0042
   \   00D6  AC                XOR     H
   \   00D7            ?0042:
   \   00D7  FAE100            JP      M,?0014
   \   00DA            ?0013:
     81                          {
     82                              loop = FALSE;
     83                              key = 0;
   \   00DA  DD72FE            LD      (IX-2),D
   \   00DD  FD210000          LD      IY,0
   \   00E1            ?0014:
     84                          }
     85                          if(flash_point)         // 箭头闪烁
   \   00E1  DD7EFA            LD      A,(IX-6)
   \   00E4  DDB6FB            OR      (IX-5)
   \   00E7  3A0500            LD      A,(FMStatus+5)
   \   00EA  2835              JR      Z,?0016
   \   00EC            ?0015:
     86                          {
     87                              if(FMStatus.mode==0)
   \   00EC  B7                OR      A
   \   00ED  0E35              LD      C,53
   \   00EF  C5                PUSH    BC
   \   00F0  DD7EF6            LD      A,(IX-10)
   \   00F3  2010              JR      NZ,?0018
   \   00F5            ?0017:

⌨️ 快捷键说明

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