ap_common.lst

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

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

   \   0000                    NAME    ap_common(17)
   \   0000                    RSEG    COM_RES(0)
   \   0000                    RSEG    UDATA0(0)
   \   0000                    RSEG    IDATA0(0)
   \   0000                    RSEG    CDATA0(0)
   \   0000                    EXTERN  InvertRegion
   \   0000                    EXTERN  PutSDImage
   \   0000                    PUBLIC  ResClose
   \   0000                    PUBLIC  ResInvertShowPic
   \   0000                    PUBLIC  ResOpen
   \   0000                    PUBLIC  ResShowPic
   \   0000                    EXTERN  SD_FClose
   \   0000                    EXTERN  SD_FOpen
   \   0000                    EXTERN  SD_FRead
   \   0000                    EXTERN  SD_FSeek
   \   0000                    EXTERN  UpdateScreen
   \   0000                    PUBLIC  res_entry
   \   0000                    PUBLIC  res_fp
   \   0000                    PUBLIC  res_head
   \   0000                    PUBLIC  res_region
   \   0000                    PUBLIC  ui_auto_select
   \   0000                    PUBLIC  ui_auto_update
   \   0000                    PUBLIC  ui_run_realtime
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?L_LSH_L03
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    COM_RES
   \   0000            ResOpen:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib file, udisk use this file too
      5          *
      6          *        (c) Copyright, Actions Co,Ld.                             
      7          *             All Right Reserved                          
      8          *
      9          *  $Id: ap_common.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
     10          *******************************************************************************
     11          */ 
     12          #pragma codeseg(COM_RES)
     13          
     14          #ifdef USB_DISK_USING
     15          
     16          /* usb disk 不使用调试宏*/
     17          #define NAPDEBUG
     18          
     19          /* usb disk 使用 non_bankl 方式call 这些函数*/
     20          #pragma function=non_banked
     21          
     22          #endif    /* USB_DISK_USING*/
     23          
     24          #include "ap_common.h"
     25          #ifndef USB_DISK_USING
     26          #define InvertFlag
     27          #endif
     28          //========== global field ===============
     29          
     30          //操作这些资源时不能被中断, 这些变量应该放在所有ap可见的地方
     31          SD_FILE *res_fp;
     32          res_head_t res_head;
     33          res_entry_t res_entry;
     34          region_t res_region;
     35           
     36          
     37          //请不要把这个变量定义在非IDATA0 段,否则不能初始化
     38          BOOL ui_auto_update=TRUE;    //是否自动刷新屏幕
     39          BOOL ui_auto_select=TRUE;    //是否自动确认
     40          BOOL ui_run_realtime=FALSE;    //控件跑实时模式
     41          
     42          /*
     43          ********************************************************************************
     44          * Description : 打开资源文件
     45          *
     46          * Arguments   : filename, 资源文件名字
     47          *
     48          * Returns     : 成功,文件指针
     49                  失败, NULL
     50          *
     51          * Notes       :
     52          *
     53          ********************************************************************************
     54          */
     55          SD_FILE *ResOpen(const char * filename)
     56          {    
   \   0000  C5                PUSH    BC
   \   0001  D5                PUSH    DE
     57                  //open res file
     58                  res_fp = SD_FOpen(filename, 0);
   \   0002  0E00              LD      C,0
   \   0004  CD0000            CALL    LWRD SD_FOpen
   \   0007  220000            LD      (res_fp),HL
     59                  if(res_fp == NULL ) return NULL;
   \   000A  7D                LD      A,L
   \   000B  B4                OR      H
   \   000C  282E              JR      Z,?0020
   \   000E            ?0002:
   \   000E            ?0003:
     60              
     61              //check magic "RES 0x19"
     62              SD_FRead(res_fp, &res_head, sizeof(res_head));
   \   000E  211000            LD      HL,16
   \   0011  E5                PUSH    HL
   \   0012  010200            LD      BC,res_head
   \   0015  CD4C00            CALL    LWRD ?0021
   \   0018  F1                POP     AF
     63              if( res_head.magic[0] != 'R' || 
     64                  res_head.magic[1] != 'E' ||
     65                  res_head.magic[2] != 'S' ||
     66                  res_head.magic[3] != 0x19 )
   \   0019  3A0200            LD      A,(res_head)
   \   001C  FE52              CP      82
   \   001E  2015              JR      NZ,?0006
   \   0020  3A0300            LD      A,(res_head+1)
   \   0023  FE45              CP      69
   \   0025  200E              JR      NZ,?0006
   \   0027  3A0400            LD      A,(res_head+2)
   \   002A  FE53              CP      83
   \   002C  2007              JR      NZ,?0006
   \   002E  3A0500            LD      A,(res_head+3)
   \   0031  FE19              CP      25
   \   0033  280C              JR      Z,?0005
   \   0035            ?0006:
   \   0035            ?0007:
   \   0035            ?0004:
     67              {
     68                  SD_FClose(res_fp);
   \   0035  ED5B0000          LD      DE,(res_fp)
   \   0039  CD0000            CALL    LWRD SD_FClose
     69                  return NULL;
   \   003C            ?0020:
   \   003C  210000            LD      HL,0
     70              }
   \   003F  1803              JR      ?0008
   \   0041            ?0005:
     71          
     72              //check count
     73              ASSERT(res_head.counts == UIID_MAX);
     74          
     75              //return ok
     76              return res_fp;    
   \   0041  2A0000            LD      HL,(res_fp)
     77          }
   \   0044            ?0008:
   \   0044  F1                POP     AF
   \   0045  C1                POP     BC
   \   0046  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0049            ?0022:
   \   0049  011200            LD      BC,res_entry
   \   004C            ?0021:
   \   004C  ED5B0000          LD      DE,(res_fp)
   \   0050  C30000            JP      LWRD SD_FRead
   \   0053            ResClose:
     78          
     79          /*
     80          ********************************************************************************
     81          * Description : 关闭资源文件
     82          *
     83          * Arguments   :
     84          *
     85          * Returns     :
     86          *
     87          * Notes       :
     88          *
     89          ********************************************************************************
     90          */
     91          void ResClose(const SD_FILE *fp)
     92          {
   \   0053  D5                PUSH    DE
     93              SD_FClose(fp);
   \   0054  CD0000            CALL    LWRD SD_FClose
     94          }
   \   0057  E1                POP     HL
   \   0058  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   005B            ResShowPic:
     95          
     96          /*
     97          ********************************************************************************
     98          * Description : 在指定位置显示图形
     99          *
    100          * Arguments   : id, 资源代号
    101                  x,y, 屏幕坐标
    102          *
    103          * Returns     : 成功, 1
    104                  失败, 0
    105          *
    106          * Notes       :
    107          *
    108          ********************************************************************************
    109          */
    110          int ResShowPic(WORD id, uchar x, uchar y)
    111          {
   \   005B  C5                PUSH    BC
   \   005C  D5                PUSH    DE
   \   005D  F5                PUSH    AF
   \   005E  F5                PUSH    AF
    112              WORD buf[2];    //buffer for sd read
    113          
    114              ASSERT(id <= UIID_MAX);
    115              
    116              //读entry
    117              SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t));
   \   005F  6B                LD      L,E
   \   0060  62                LD      H,D
   \   0061  010000            LD      BC,0
   \   0064  3E04              LD      A,4
   \   0066  CD0000            CALL    LWRD ?L_LSH_L03
   \   0069  C5                PUSH    BC
   \   006A  E5                PUSH    HL
   \   006B  0E00              LD      C,0
   \   006D  ED5B0000          LD      DE,(res_fp)
   \   0071  CD0000            CALL    LWRD SD_FSeek
   \   0074  E1                POP     HL
   \   0075  E1                POP     HL
    118              SD_FRead(res_fp, &res_entry, sizeof(res_entry_t));
   \   0076  211000            LD      HL,16
   \   0079  E5                PUSH    HL
   \   007A  CD4900            CALL    LWRD ?0022
   \   007D  F1                POP     AF
    119              if(res_entry.type != RES_TYPE_PIC) return 0;
   \   007E  3A1800            LD      A,(res_entry+6)
   \   0081  3D                DEC     A
   \   0082  2805              JR      Z,?0010

⌨️ 快捷键说明

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