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

📄 ap_common2.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       25/Dec/106  17:00:04 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d90f\ap\common\ap_common2.c               #
#       List file     =  d:\case_i_d90f\ap\ap_fmrecord\list\ap_common2.lst   #
#       Object file   =  d:\case_i_d90f\ap\ap_fmrecord\obj\ap_common2.r01    #
#       Command line  =  -v0 -mb -OD:\case_i_d90f\ap\ap_fmrecord\Obj\ -e -K  #
#                        -w -gA -s9 -RCODE -r0 -DNAPDEBUG                    #
#                        -LD:\case_i_d90f\ap\ap_fmrecord\List\ -q -t8 -X     #
#                        -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\           #
#                        d:\case_i_d90f\AP\COMMON\ap_common2.c               #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ap_common2(17)
   \   0000                    RSEG    COM_RES(0)
   \   0000                    RSEG    CONST(0)
   \   0000                    RSEG    UDATA0(0)
   \   0000                    EXTERN  PutS
   \   0000                    PUBLIC  ResShowMultiString
   \   0000                    EXTERN  SD_FRead
   \   0000                    EXTERN  SD_FSeek
   \   0000                    EXTERN  SetTextPos
   \   0000                    PUBLIC  dir_name
   \   0000                    PUBLIC  file_name
   \   0000                    PUBLIC  get_large_text_width
   \   0000                    PUBLIC  get_text_width
   \   0000                    PUBLIC  music_ext
   \   0000                    EXTERN  res_entry
   \   0000                    EXTERN  res_fp
   \   0000                    PUBLIC  voice_ext
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?L_LSH_L03
   \   0000                    EXTERN  ?L_ADDASG_L03
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    EXTERN  ?STRLEN_L11
   \   0000                    RSEG    COM_RES
   \   0000            get_text_width:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib file, part 2
      5          *
      6          *        (c) Copyright, Actions Co,Ld.
      7          *             All Right Reserved
      8          *
      9          *  $Id: ap_common2.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
     10          *******************************************************************************
     11          */
     12          #pragma codeseg(COM_RES)
     13          
     14          #include "ap_common.h"
     15          
     16          //========== global field ===============
     17          char file_name[12];
     18          char dir_name[30];
     19          extern res_entry_t res_entry;
     20          
     21          //========== const field ===============
     22          const char music_ext[][4] = {"MP3", "WMA", "ASF", "WMV", "OGG", "APE"};
     23          const char voice_ext[][4] = {"WAV", "ACT"};
     24          
     25           
     26          
     27          /*
     28          ********************************************************************************
     29          * Description : 获得字符串的显示宽度
     30          *
     31          * Arguments   :
     32          *
     33          *
     34          * Returns     :
     35          *
     36          * Notes       : 能够识别 \r \n, 中文作为2个TCHAR 识别
     37          *
     38          ********************************************************************************
     39          */
     40          
     41          int get_text_width(const char *string)
     42          {
   \   0000  C5                PUSH    BC
   \   0001  FDE5              PUSH    IY
   \   0003  DDE5              PUSH    IX
   \   0005  D5                PUSH    DE
   \   0006  DDE1              POP     IX
     43              int w=0;
   \   0008  FD210000          LD      IY,0
   \   000C            ?0003:
     44          
     45              ASSERT(string != NULL);
     46          
     47              while(*string != 0)
   \   000C  AF                XOR     A
   \   000D  DDB600            OR      (IX+0)
   \   0010  2823              JR      Z,?0002
   \   0012            ?0004:
     48              {
     49                  if(*string == '\r'|| *string == '\n') {;}    //不计算回车换行
   \   0012  DD7E00            LD      A,(IX+0)
   \   0015  FE0D              CP      13
   \   0017  2818              JR      Z,?0012
   \   0019  DD7E00            LD      A,(IX+0)
   \   001C  FE0A              CP      10
   \   001E  2811              JR      Z,?0012
   \   0020            ?0007:
   \   0020            ?0008:
   \   0020            ?0005:
   \   0020            ?0006:
     50                  else if(*string < 0x80) w += CHAR_WIDTH;
   \   0020  DD7E00            LD      A,(IX+0)
   \   0023  FE80              CP      128
   \   0025  3005              JR      NC,?0011
   \   0027            ?0010:
   \   0027  010600            LD      BC,6
   \   002A  1803              JR      ?0041
   \   002C            ?0011:
     51                  else w += TCHAR_WIDTH;
   \   002C  010800            LD      BC,8
   \   002F            ?0041:
   \   002F  FD09              ADD     IY,BC
   \   0031            ?0012:
   \   0031            ?0009:
     52          
     53                  string++;
   \   0031  DD23              INC     IX
   \   0033  18D7              JR      ?0003
   \   0035            ?0002:
     54              }
     55              return w;
   \   0035  FDE5              PUSH    IY
   \   0037  E1                POP     HL
     56          }
   \   0038  DDE1              POP     IX
   \   003A  FDE1              POP     IY
   \   003C  C1                POP     BC
   \   003D  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0040            get_large_text_width:
     57          
     58          /*
     59          ********************************************************************************
     60          * Description : 获得大字体字符串的显示宽度
     61          *
     62          * Arguments   :
     63          *
     64          *
     65          * Returns     :
     66          *
     67          * Notes       : 能够识别 \r \n, 中文作为2个TCHAR 识别
     68          *
     69          ********************************************************************************
     70          */
     71          
     72          int get_large_text_width(const char *string)
     73          {
   \   0040  C5                PUSH    BC
   \   0041  D5                PUSH    DE
     74          //注意: 如果 LARGE_CHAR_WIDTH != TCHAR_WIDTH, 请使用注释起来的代码
     75          
     76              ASSERT(LARGE_CHAR_WIDTH == TCHAR_WIDTH);
     77              return strlen(string) * 8;
   \   0042  6B                LD      L,E
   \   0043  62                LD      H,D
   \   0044  CD0000            CALL    LWRD ?STRLEN_L11
   \   0047  29                ADD     HL,HL
   \   0048  29                ADD     HL,HL
   \   0049  29                ADD     HL,HL
     78          
     79           
     80          }
   \   004A  F1                POP     AF
   \   004B  C1                POP     BC
   \   004C  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   004F            ResShowMultiString:
     81          
     82           
     83           
     84          /*
     85          ********************************************************************************
     86          * Description : 在指定位置显示多语言字符串
     87          *
     88          * Arguments   : id, 资源代号
     89                  string_id, 语言代号
     90                  x, y, 屏幕坐标,x=255 表示x方向居中
     91          *
     92          * Returns     : 成功, 1
     93                  失败, 0
     94          *
     95          * Notes       :
     96          *
     97          ********************************************************************************
     98          */
     99           
    100          
    101          int ResShowMultiString(WORD id, BYTE string_id, uchar x, uchar y)
    102          {
   \   004F  FDE5              PUSH    IY
   \   0051  DDE5              PUSH    IX
   \   0053  DD210000          LD      IX,0
   \   0057  DD39              ADD     IX,SP
   \   0059  C5                PUSH    BC
   \   005A  D5                PUSH    DE
   \   005B  21CAFF            LD      HL,65482
   \   005E  39                ADD     HL,SP
   \   005F  F9                LD      SP,HL
    103          
    104              //需要动态申请 string 的空间
    105              char *p,AddBuf;
    106              char buf[50];
    107              BYTE StrLength,string_idtemp;
    108          
    109              ASSERT(id <= UIID_MAX);
    110          
    111              //读entry
    112              SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t)); // 指针指向字符在文件中的位置
   \   0060  EB                EX      DE,HL
   \   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
    113              SD_FRead(res_fp, &res_entry, sizeof(res_entry_t));          //res_fp->&res_entry
   \   0076  211000            LD      HL,16
   \   0079  E5                PUSH    HL
   \   007A  010000            LD      BC,res_entry
   \   007D  ED5B0000          LD      DE,(res_fp)
   \   0081  CD0000            CALL    LWRD SD_FRead
   \   0084  F1                POP     AF
    114              if( res_entry.type != RES_TYPE_MSTRING) return 0;           //非Multisring 返回
   \   0085  3A0600            LD      A,(res_entry+6)
   \   0088  FE03              CP      3
   \   008A  2806              JR      Z,?0014
   \   008C            ?0013:
   \   008C  210000            LD      HL,0
    115          
    116              ASSERT(res_entry.length <= sizeof(buf));
   \   008F  C3BE01            JP      LWRD ?0037
   \   0092            ?0014:
    117          
    118              //读数据
    119              SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
   \   0092  2A0200            LD      HL,(res_entry+2)
   \   0095  E5                PUSH    HL
   \   0096  2A0000            LD      HL,(res_entry)
   \   0099  E5                PUSH    HL
   \   009A  0E00              LD      C,0
   \   009C  ED5B0000          LD      DE,(res_fp)
   \   00A0  CD0000            CALL    LWRD SD_FSeek
   \   00A3  E1                POP     HL
   \   00A4  E1                POP     HL
    120              SD_FRead(res_fp, buf, 50);
   \   00A5  213200            LD      HL,50

⌨️ 快捷键说明

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