⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tryplaying.lst

📁 5807收音机模块用于炬力平台
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       23/Feb/109  09:19:55 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d95f\ap\ap_radio\tryplaying.c             #
#       List file     =  d:\case_i_d95f\ap\ap_radio\list\tryplaying.lst      #
#       Object file   =  d:\case_i_d95f\ap\ap_radio\obj\tryplaying.r01       #
#       ASM file      =  d:\case_i_d95f\ap\ap_radio\list\tryplaying.s01      #
#       Command line  =  -v0 -mb -OD:\case_i_d95f\ap\ap_radio\Obj\ -e -K -w  #
#                        -gA -s9 -RCODE -r0 -DNAPDEBUG                       #
#                        -LD:\case_i_d95f\ap\ap_radio\List\ -q -t8           #
#                        -AD:\case_i_d95f\ap\ap_radio\List\                  #
#                        -Id:\sdk_i_95f\inc\ -Id:\case_i_d95f\inc\           #
#                        d:\case_i_d95f\ap\ap_radio\TryPlaying.c             #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    tryplaying(17)
   \   0000                    RSEG    CODE_2(0)
   \   0000                    RSEG    CSTR(0)
   \   0000                    EXTERN  AutoTabNum
   \   0000                    EXTERN  ClearScreen
   \   0000                    EXTERN  FMAutoTab
   \   0000                    EXTERN  FMStatus
   \   0000                    EXTERN  GetBattery
   \   0000                    EXTERN  PutS
   \   0000                    EXTERN  ResShowPic
   \   0000                    EXTERN  SetTextPos
   \   0000                    PUBLIC  TryPlayingHandle
   \   0000                    EXTERN  UpdateScreen
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    EXTERN  fmSendCommand
   \   0000                    EXTERN  g_comval
   \   0000                    EXTERN  m_FMPlaystatus
   \   0000                    EXTERN  radio_param
   \   0000                    EXTERN  slider
   \   0000                    EXTERN  ui_show_batt
   \   0000                    EXTERN  ui_slider
   \   0000                    PUBLIC  volume_callback2
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?US_DIV_L02
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?S_MUL_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           *******************************************************************************
     10           */
     11          
     12          #pragma codeseg(CODE_2)
     13          
     14          #include "ap_radio.h"
     15          #include "actos.h"
     16          
     17          extern slider_t slider;
     18          extern comval_t F_comval;
     19          extern WORD FMStationTab[40]; // 前20个是US, 后20个是JP.
     20          extern fm_play_status_t FMStatus;
     21          extern FMRADIO_param_t radio_param;
     22          extern fm_play_status_t m_FMPlaystatus;
     23          
     24          extern WORD FMAutoTab[20]; // 全自动收台,预存台.
     25          extern BYTE AutoTabNum; // 预存台数.
     26          
     27          void volume_callback2(int Vol) //音量设置的CALLBACK函数
     28          {
   \   0000  C5                PUSH    BC
   \   0001  DDE5              PUSH    IX
   \   0003  D5                PUSH    DE
   \   0004  DDE1              POP     IX
     29              //实时改变音量的值
     30              FMStatus.vol_display = Vol;
   \   0006  7B                LD      A,E
   \   0007  320800            LD      (FMStatus+8),A
     31              FMStatus.volume = Vol * 31 / g_comval.VolumeMax;
   \   000A  ED4B1F00          LD      BC,(g_comval+31)
   \   000E  0600              LD      B,0
   \   0010  C5                PUSH    BC
   \   0011  111F00            LD      DE,31
   \   0014  DDE5              PUSH    IX
   \   0016  C1                POP     BC
   \   0017  CD0000            CALL    LWRD ?S_MUL_L02
   \   001A  C1                POP     BC
   \   001B  CD0000            CALL    LWRD ?SS_DIV_L02
   \   001E  7B                LD      A,E
   \   001F  320600            LD      (FMStatus+6),A
     32              fmSendCommand(MC_SETVOLUME, FMStatus.volume);
   \   0022  4F                LD      C,A
   \   0023  CD3F00            CALL    LWRD ?0047
     33              if (FMStatus.volume == 0)
   \   0026  3A0600            LD      A,(FMStatus+6)
   \   0029  B7                OR      A
   \   002A  2005              JR      NZ,?0003
   \   002C            ?0002:
     34                  fmSendCommand(MC_MUTE, SetMUTE);
   \   002C  010100            LD      BC,1
   \   002F  1803              JR      ?0040
     35              else
   \   0031            ?0003:
     36                  fmSendCommand(MC_MUTE, releaseMUTE);
   \   0031  010000            LD      BC,0
   \   0034            ?0040:
   \   0034  1E0C              LD      E,12
   \   0036  CD4300            CALL    LWRD ?0048
   \   0039            ?0004:
     37          }
   \   0039  DDE1              POP     IX
   \   003B  C1                POP     BC
   \   003C  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   003F            ?0047:
   \   003F  0600              LD      B,0
   \   0041  1E40              LD      E,64
   \   0043            ?0048:
   \   0043  3E00              LD      A,BYTE3 fmSendCommand
   \   0045  210000            LD      HL,LWRD fmSendCommand
   \   0048  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   004B            TryPlayingHandle:
     38          /*
     39           ********************************************************************************
     40           * Description : 试播放5秒钟
     41           *
     42           * Arguments   :
     43           *
     44           * Returns     : RESULT_RADIO:PLAY和MODE键,  RESULT_IGNORE:NEXT和LAST键
     45           其它为热键
     46           *
     47           * Notes       :
     48           *
     49           ********************************************************************************
     50           */
     51          int TryPlayingHandle(void)
     52          {
   \   004B  C5                PUSH    BC
   \   004C  D5                PUSH    DE
   \   004D  FDE5              PUSH    IY
   \   004F  DDE5              PUSH    IX
   \   0051  DD210000          LD      IX,0
   \   0055  DD39              ADD     IX,SP
   \   0057  21F6FF            LD      HL,65526
   \   005A  39                ADD     HL,SP
   \   005B  F9                LD      SP,HL
     53              int key, play_time = 12;
     54              int flash_point = 1;
     55              bool loop = TRUE;
     56              int k, i;
     57              if (FMStatus.mode == 0)
   \   005C  DD36FC0C          LD      (IX-4),12
   \   0060  DD36FD00          LD      (IX-3),0
   \   0064  DD36FA01          LD      (IX-6),1
   \   0068  DD36FB00          LD      (IX-5),0
   \   006C  DD36FE01          LD      (IX-2),1
   \   0070            ?0005:
     58              {
     59                  k = (FMStatus.freq) *100/ 200;
     60              }
     61              else
   \   0070            ?0006:
     62              {
     63                  k = (FMStatus.freq)*100 / 200;
   \   0070  ED4B0100          LD      BC,(FMStatus+1)
   \   0074  116400            LD      DE,100
   \   0077  CD0000            CALL    LWRD ?S_MUL_L02
   \   007A  01C800            LD      BC,200
   \   007D  CD0000            CALL    LWRD ?US_DIV_L02
   \   0080  DD73F6            LD      (IX-10),E
   \   0083  DD72F7            LD      (IX-9),D
   \   0086            ?0007:
     64              }
     65              fmSendCommand(MC_PLAY, 0);
   \   0086  48                LD      C,B
   \   0087  1E04              LD      E,4
   \   0089  CD4300            CALL    LWRD ?0048
     66              fmSendCommand(MC_SETVOLUME, FMStatus.volume);
   \   008C  ED4B0600          LD      BC,(FMStatus+6)
   \   0090  CD3F00            CALL    LWRD ?0047
   \   0093            ?0009:
     67          
     68              while (loop)
   \   0093  AF                XOR     A
   \   0094  DDB6FE            OR      (IX-2)
   \   0097  CA0302            JP      Z,?0008
   \   009A            ?0010:
     69              {
     70                  key = ap_get_message();
   \   009A  CD0000            CALL    LWRD ap_get_message
   \   009D  4F                LD      C,A
   \   009E  0600              LD      B,0
   \   00A0  C5                PUSH    BC
   \   00A1  FDE1              POP     IY
     71                  switch (key)
   \   00A3  59                LD      E,C
   \   00A4  50                LD      D,B
   \   00A5  CD0000            CALL    LWRD ?S_V_SWITCH_L06
   \   00A8  0800              DEFW    8
   \   00AA  0300              DEFW    3
   \   00AC  0400              DEFW    4
   \   00AE  1C00              DEFW    28
   \   00B0  1D00              DEFW    29
   \   00B2  2100              DEFW    33
   \   00B4  2500              DEFW    37
   \   00B6  2600              DEFW    38
   \   00B8  2700              DEFW    39
   \   00BA  EC01              DEFW    ?0029
   \   00BC  D200              DEFW    ?0014
   \   00BE  CC00              DEFW    ?0013
   \   00C0  CC00              DEFW    ?0013
   \   00C2  D200              DEFW    ?0014
   \   00C4  9300              DEFW    ?0009
   \   00C6  DB00              DEFW    ?0015
   \   00C8  6B01              DEFW    ?0028
   \   00CA  6B01              DEFW    ?0028
   \   00CC            ?0012:
     72                  {
     73                      case AP_MSG_STANDBY:
     74                      //do nothing
     75                      break;
   \   00CC            ?0013:
     76                      case AP_KEY_NEXT | AP_KEY_UP:
     77                      case AP_KEY_PREV | AP_KEY_UP: // 停止试播
     78                      return RESULT_IGNORE;
   \   00CC  213000            LD      HL,48
     79                      case AP_KEY_PLAY | AP_KEY_UP:
   \   00CF  C37802            JP      LWRD ?0038
   \   00D2            ?0014:
     80                      case AP_KEY_MODE | AP_KEY_UP: // 保存电台, 返回播放界面.
     81                      loop = FALSE;
     82                      key = RESULT_RADIO;
   \   00D2  DD70FE            LD      (IX-2),B
   \   00D5  FD210500          LD      IY,5
     83                      break;
   \   00D9  18B8              JR      ?0009
   \   00DB            ?0015:
     84                      case AP_MSG_RTC: // 时间记数,闪烁箭头.
     85                      ui_show_batt(GetBattery(), g_comval.BatteryType);
   \   00DB  ED4B0F00          LD      BC,(g_comval+15)
   \   00DF  CD0000            CALL    LWRD GetBattery
   \   00E2  5F                LD      E,A
   \   00E3  3E00              LD      A,BYTE3 ui_show_batt
   \   00E5  210000            LD      HL,LWRD ui_show_batt
   \   00E8  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     86                      play_time--;
   \   00EB  DD6EFC            LD      L,(IX-4)
   \   00EE  DD66FD            LD      H,(IX-3)
   \   00F1  2B                DEC     HL
   \   00F2  DD75FC            LD      (IX-4),L
   \   00F5  DD74FD            LD      (IX-3),H
     87                      if (play_time <= 0)
   \   00F8  4D                LD      C,L
   \   00F9  44                LD      B,H
   \   00FA  210000            LD      HL,0
   \   00FD  F680              OR      128
   \   00FF  ED42              SBC     HL,BC
   \   0101  E20501            JP      PO,?0041
   \   0104  AC                XOR     H
   \   0105            ?0041:
   \   0105  FA1001            JP      M,?0017
   \   0108            ?0016:
     88                      {
     89                          loop = FALSE;
     90                          key = 0;
   \   0108  DD36FE00          LD      (IX-2),0
   \   010C  FD210000          LD      IY,0

⌨️ 快捷键说明

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