ui_stop.lst

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

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

   \   0000                    NAME    ui_stop(17)
   \   0000                    RSEG    AP_UI_STP(0)
   \   0000                    RSEG    UDATA0(0)
   \   0000                    RSEG    IDATA0(0)
   \   0000                    RSEG    CDATA0(0)
   \   0000                    EXTERN  BackupCurrentTime
   \   0000                    PUBLIC  CaltimeFlag
   \   0000                    EXTERN  ChangeMusic
   \   0000                    EXTERN  CheckMusicType
   \   0000                    EXTERN  DisplayErrMsg
   \   0000                    EXTERN  DisplayTimeRollback
   \   0000                    EXTERN  ErrReport
   \   0000                    EXTERN  FadeOut
   \   0000                    EXTERN  GetInformation
   \   0000                    EXTERN  PlayStatus
   \   0000                    EXTERN  RefreshMainScreen
   \   0000                    EXTERN  UpDisplayFlag
   \   0000                    EXTERN  UpdateFileSelector
   \   0000                    PUBLIC  WaitForCaltimeCNT
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    EXTERN  ap_message_init
   \   0000                    EXTERN  fselGetLocation
   \   0000                    EXTERN  fselGetNextFile
   \   0000                    EXTERN  fselGetNo
   \   0000                    EXTERN  fselGetPrevFile
   \   0000                    EXTERN  fselGetTotal
   \   0000                    EXTERN  fselSetMode
   \   0000                    EXTERN  g_FCexitflag
   \   0000                    EXTERN  g_OldSecTempBackup
   \   0000                    EXTERN  g_Openparam
   \   0000                    EXTERN  g_PowerOffFlag
   \   0000                    EXTERN  g_ScrollFlag
   \   0000                    EXTERN  g_TagInfoBuf
   \   0000                    EXTERN  g_TagInfoBuf1
   \   0000                    EXTERN  g_comval
   \   0000                    EXTERN  g_currentMusicType
   \   0000                    EXTERN  g_introCNT
   \   0000                    EXTERN  g_introCntMode
   \   0000                    EXTERN  g_music_vars
   \   0000                    EXTERN  g_musicamount
   \   0000                    EXTERN  g_musicsequence
   \   0000                    EXTERN  g_result
   \   0000                    EXTERN  ifSelBuffToltalTimeFlag
   \   0000                    EXTERN  make_dirname
   \   0000                    EXTERN  musicpSendCommand
   \   0000                    EXTERN  need_draw
   \   0000                    EXTERN  slider
   \   0000                    PUBLIC  testram
   \   0000                    EXTERN  ui_auto_update
   \   0000                    EXTERN  ui_play
   \   0000                    EXTERN  ui_slider
   \   0000                    PUBLIC  ui_stop
   \   0000                    PUBLIC  ui_stop_loop
   \   0000                    EXTERN  ui_stop_menu
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_LEAVE_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    EXTERN  ?ENT_AUTO_DIRECT_L09
   \   0000                    RSEG    AP_UI_STP
   \   0000            ui_stop:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        This program demostrates how to build an AP
      5          *
      6          *        (c) Copyright Actions Co,Ld.
      7          *
      8          *  $Id: ui_stop.c,v 1.2 2006/07/14 06:46:20 tangwh Exp $
      9          *******************************************************************************
     10          */
     11          #include "ap_music.h"
     12          char testram = 0;
     13          
     14          char WaitForCaltimeCNT;//在停止状态下先不计时,到无按键动作一定时间后再开始计时
     15                                  // 这样可以提高在停止状态时按next 跳歌的速度.
     16          bool CaltimeFlag;       //true: 不用再算时间
     17          extern void make_dirname(void);                        //false: 未算时间
     18          
     19          extern bool g_FCexitflag;
     20          
     21          int ui_stop_loop(void);
     22          int DealForDRMsong(void);
     23          void ttest(void);
     24          bool DisplayTimeRollback(void);
     25          
     26          #pragma codeseg(AP_UI_STP)
     27          //======================================================================================
     28          //RESULT_CURR_UI: 还要处在当前界面
     29          //RESULT_UI_STOP: 到UI_STOP界面(因现在就是UI_STOP界面,所以同上)
     30          //RESULT_LAST_UI: 到上一级界面
     31          //--------------------------------------------------------------------------------------
     32          int ui_stop(void)
     33          {
   \   0000  C5                PUSH    BC
   \   0001  D5                PUSH    DE
     34              int result;
     35              ap_message_init(NULL);//开始算STANDBY 时间
   \   0002  CDDD00            CALL    LWRD ?0136
   \   0005            ?0004:
     36          
     37              do
     38              {
     39                  if (UpdateFileSelector() == 0)
   \   0005  3E00              LD      A,BYTE3 UpdateFileSelector
   \   0007  210000            LD      HL,LWRD UpdateFileSelector
   \   000A  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   000D  7D                LD      A,L
   \   000E  B4                OR      H
   \   000F  CAD500            JP      Z,?0111
   \   0012            ?0005:
     40                   {
     41                       return 0;
     42                   }
   \   0012            ?0006:
     43          
     44                  g_musicamount = FSELGetTotal();
   \   0012  3E00              LD      A,BYTE3 fselGetTotal
   \   0014  210000            LD      HL,LWRD fselGetTotal
   \   0017  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   001A  220000            LD      (g_musicamount),HL
     45                  g_musicsequence = FSELGetNo();
   \   001D  3E00              LD      A,BYTE3 fselGetNo
   \   001F  210000            LD      HL,LWRD fselGetNo
   \   0022  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0025  220000            LD      (g_musicsequence),HL
     46                  FSELSetMode(g_music_vars.repeat_mode);
   \   0028  CD9701            CALL    LWRD ?0142
     47                   make_dirname();
   \   002B  3E00              LD      A,BYTE3 make_dirname
   \   002D  210000            LD      HL,LWRD make_dirname
   \   0030  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     48                  g_currentMusicType = CheckMusicType(g_music_vars.location.filename);
   \   0033  112100            LD      DE,g_music_vars+33
   \   0036  3E00              LD      A,BYTE3 CheckMusicType
   \   0038  210000            LD      HL,LWRD CheckMusicType
   \   003B  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   003E  7D                LD      A,L
   \   003F  320000            LD      (g_currentMusicType),A
     49          
     50                  //TEST_UIST =0x73;
     51              FSELSetMode( FSEL_ALL_REPEATALL );
     52              FSELGetNext(g_music_vars.location.filename);
     53              fselGetLocation(& g_music_vars.location);
     54              GetInformation();
   \   0042  CD6F01            CALL    LWRD ?0139
     55              memcpy(g_TagInfoBuf1,g_TagInfoBuf,20);
   \   0045  011400            LD      BC,20
   \   0048  110000            LD      DE,g_TagInfoBuf1
   \   004B  210000            LD      HL,g_TagInfoBuf
   \   004E  EDB0              LDIR
     56              FSELGetPrev(g_music_vars.location.filename);
   \   0050  112100            LD      DE,g_music_vars+33
   \   0053  3E00              LD      A,BYTE3 fselGetPrevFile
   \   0055  210000            LD      HL,LWRD fselGetPrevFile
   \   0058  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     57              fselGetLocation(& g_music_vars.location);
   \   005B  110700            LD      DE,g_music_vars+7
   \   005E  3E00              LD      A,BYTE3 fselGetLocation
   \   0060  210000            LD      HL,LWRD fselGetLocation
   \   0063  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     58              FSELSetMode(g_music_vars.repeat_mode);
   \   0066  CD9701            CALL    LWRD ?0142
     59              GetInformation(); //取文件信息
   \   0069  CD8F01            CALL    LWRD ?0140
     60                  musicpSendCommand( MC_OPEN,  (int)& g_Openparam );
   \   006C  010000            LD      BC,g_Openparam
   \   006F  1E01              LD      E,1
   \   0071  CDA701            CALL    LWRD ?0143
     61                  musicpSendCommand(MC_LOAD, NULL);//04-4-23 9:32
   \   0074  010000            LD      BC,0
   \   0077  1E03              LD      E,3
   \   0079  CDA701            CALL    LWRD ?0143
     62                  SetFullInterface();
   \   007C  AF                XOR     A
   \   007D  320000            LD      (ui_auto_update),A
   \   0080  210000            LD      HL,UpDisplayFlag
   \   0083  7E                LD      A,(HL)
   \   0084  F6C1              OR      193
   \   0086  77                LD      (HL),A
   \   0087  23                INC     HL
   \   0088  36FF              LD      (HL),255
     63                  if(PlayStatus==PauseSta)                             //add  by zxs for not refresh background when pause
   \   008A  3A0000            LD      A,(PlayStatus)
   \   008D  3D                DEC     A
   \   008E  2010              JR      NZ,?0008
   \   0090            ?0007:
     64                   {
     65                    UpDisplayFlag=UpDisplayFlag & clr_musicBackGDPic;
   \   0090  210000            LD      HL,UpDisplayFlag
   \   0093  CB86              RES     0,(HL)
     66                    UpDisplayFlag=UpDisplayFlag & clr_musiccurrenttime; 
   \   0095  23                INC     HL
   \   0096  CB8E              RES     1,(HL)
     67                    UpDisplayFlag=UpDisplayFlag & clr_musicbitrate; 
   \   0098  210000            LD      HL,UpDisplayFlag
   \   009B  23                INC     HL
   \   009C  CBAE              RES     5,(HL)
     68                   }
     69                  else
   \   009E  1804              JR      ?0009
   \   00A0            ?0008:
     70                     PlayStatus = StopSta;
   \   00A0  AF                XOR     A
   \   00A1  320000            LD      (PlayStatus),A
   \   00A4            ?0009:
     71                  need_draw = TRUE;
   \   00A4  3E01              LD      A,1
   \   00A6  320000            LD      (need_draw),A
     72                   musicpSendCommand(MC_CALTIME, NULL);                      //zxs add
   \   00A9  010000            LD      BC,0
   \   00AC  CDA501            CALL    LWRD ?0144
     73                   CaltimeFlag=TRUE;
   \   00AF  3E01              LD      A,1
   \   00B1  320100            LD      (CaltimeFlag),A
     74                  g_result = ui_stop_loop();
   \   00B4  3E00              LD      A,BYTE3 ui_stop_loop
   \   00B6  21AF01            LD      HL,LWRD ui_stop_loop
   \   00B9  CD5B01            CALL    LWRD ?0138
     75              }while( (g_result == RESULT_CURR_UI)
     76                          || (g_result == RESULT_UI_STOP)
     77                          || (g_result == RESULT_UI_STOP2) );//还保持在ui_stop界面
   \   00BC  7D                LD      A,L
   \   00BD  B4                OR      H
   \   00BE  CA0500            JP      Z,?0004
   \   00C1  3E66              LD      A,102
   \   00C3  AD                XOR     L
   \   00C4  B4                OR      H
   \   00C5  CA0500            JP      Z,?0004
   \   00C8  3E67              LD      A,103
   \   00CA  AD                XOR     L
   \   00CB  B4                OR      H
   \   00CC  CA0500            JP      Z,?0004
   \   00CF            ?0002:
     78              if (g_result == RESULT_LAST_UI)
   \   00CF  3E65              LD      A,101
   \   00D1  AD                XOR     L
   \   00D2  B4                OR      H
   \   00D3  2003              JR      NZ,?0013
   \   00D5            ?0012:
     79              {
     80                  return NULL;//不带参数回到上一级
   \   00D5            ?0111:
   \   00D5  210000            LD      HL,0
     81              }
   \   00D8            ?0013:
     82              return g_result;//带参数回到上一级
     83          }
   \   00D8            ?0014:
   \   00D8  D1                POP     DE
   \   00D9  C1                POP     BC
   \   00DA  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   00DD            ?0136:
   \   00DD  110000            LD      DE,0
   \   00E0  3E00              LD      A,BYTE3 ap_message_init
   \   00E2  210000            LD      HL,LWRD ap_message_init
   \   00E5  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   00E8            ?0137:
   \   00E8  011400            LD      BC,20

⌨️ 快捷键说明

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