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

📄 ap_common2.lst

📁 action mp3 devo,eki e,eikf, kdife l
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       12/Apr/106  09:56:13 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d35f\ap\common\ap_common2.c               #
#       List file     =  d:\case_i_d35f\ap\ap_main\list\ap_common2.lst       #
#       Object file   =  d:\case_i_d35f\ap\ap_main\release\obj\ap_common2.r01#
#       Command line  =  -v0 -mb -OD:\case_i_d35f\ap\ap_main\release\Obj\    #
#                        -e -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG              #
#                        -LD:\case_i_d35f\ap\ap_main\List\ -q -t8 -X         #
#                        -Id:\sdk_i_35f\inc\ -Id:\case_i_d35f\inc\           #
#                        d:\case_i_d35f\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                    EXTERN  PutS
   \   0000                    PUBLIC  ResShowMultiString
   \   0000                    PUBLIC  ResShowString
   \   0000                    EXTERN  SD_FRead
   \   0000                    EXTERN  SD_FSeek
   \   0000                    EXTERN  SetAsciiFont
   \   0000                    EXTERN  SetTextPos
   \   0000                    EXTERN  UpdateScreen
   \   0000                    PUBLIC  get_large_text_width
   \   0000                    PUBLIC  get_text_width
   \   0000                    PUBLIC  music_ext
   \   0000                    EXTERN  res_entry
   \   0000                    EXTERN  res_fp
   \   0000                    EXTERN  ui_auto_update
   \   0000                    PUBLIC  voice_ext
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?L_LSH_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          *******************************************************************************
     10          */ 
     11          #pragma codeseg(COM_RES)
     12          
     13          #include "ap_common.h"
     14          
     15          //========== global field ===============
     16          
     17          extern res_entry_t res_entry;
     18          
     19          //========== const field ===============
     20          const char music_ext[][4] = {"MP3", "WMA", "ASF", "WMV", "OGG"};
     21          const char voice_ext[][4] = {"WAV", "ACT"};
     22          
     23          //do not use printf
     24          //const char mychar[] = "0123456789";
     25          
     26          /*
     27          ********************************************************************************
     28          * Description : 获得字符串的显示宽度
     29          *
     30          * Arguments   : 
     31          *               
     32          *
     33          * Returns     : 
     34          *
     35          * Notes       : 能够识别 \r \n, 中文作为2个TCHAR 识别
     36          *
     37          ********************************************************************************
     38          */
     39          
     40          int get_text_width(const char *string)
     41          {
   \   0000  C5                PUSH    BC
   \   0001  FDE5              PUSH    IY
   \   0003  DDE5              PUSH    IX
   \   0005  D5                PUSH    DE
   \   0006  DDE1              POP     IX
     42                  int w=0;
   \   0008  FD210000          LD      IY,0
   \   000C            ?0003:
     43          
     44                  ASSERT(string != NULL);
     45                  
     46                  while(*string != 0)
   \   000C  AF                XOR     A
   \   000D  DDB600            OR      (IX+0)
   \   0010  2823              JR      Z,?0002
   \   0012            ?0004:
     47                  {
     48                          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:
     49                          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      ?0039
   \   002C            ?0011:
     50                          else w += TCHAR_WIDTH;
   \   002C  010800            LD      BC,8
   \   002F            ?0039:
   \   002F  FD09              ADD     IY,BC
   \   0031            ?0012:
   \   0031            ?0009:
     51                          
     52                          string++;
   \   0031  DD23              INC     IX
   \   0033  18D7              JR      ?0003
   \   0035            ?0002:
     53                  }
     54                  return w;
   \   0035  FDE5              PUSH    IY
   \   0037  E1                POP     HL
     55          }
   \   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:
     56          
     57          /*
     58          ********************************************************************************
     59          * Description : 获得大字体字符串的显示宽度
     60          *
     61          * Arguments   : 
     62          *               
     63          *
     64          * Returns     : 
     65          *
     66          * Notes       : 能够识别 \r \n, 中文作为2个TCHAR 识别
     67          *
     68          ********************************************************************************
     69          */
     70          
     71          int get_large_text_width(const char *string)
     72          {
   \   0040  C5                PUSH    BC
   \   0041  D5                PUSH    DE
     73          //注意: 如果 LARGE_CHAR_WIDTH != TCHAR_WIDTH, 请使用注释起来的代码
     74          
     75                  ASSERT(LARGE_CHAR_WIDTH == TCHAR_WIDTH);
     76                  return strlen(string) * LARGE_CHAR_WIDTH;
   \   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
     77                  
     78          /*      
     79                  int w=0;
     80          
     81                  ASSERT(string != NULL);
     82                  
     83                  while(*string != 0)
     84                  {
     85                          if(*string == '\r'|| *string == '\n') {;}       //不计算回车换行
     86                          else if(*string < 0x80) w += LARGE_CHAR_WIDTH;
     87                          else w += TCHAR_WIDTH;
     88                          
     89                          string++;
     90                  }
     91                  return w;
     92          */      
     93          }
   \   004A  F1                POP     AF
   \   004B  C1                POP     BC
   \   004C  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   004F            ResShowString:
     94          
     95          /*
     96          ********************************************************************************
     97          * Description : 在指定位置显示字符串
     98          *
     99          * Arguments   : id, 资源代号
    100                          x, y, 屏幕坐标, x=255 表示x方向居中
    101          *
    102          * Returns     : 成功, 1
    103                          失败, 0
    104          *
    105          * Notes       : 
    106                          资源的类型可以是 RES_TYPE_STRING 或者 RES_TYPE_MSTRING
    107          *
    108          ********************************************************************************
    109          */
    110          int ResShowString(WORD id, uchar x, uchar y)
    111          {
   \   004F  DDE5              PUSH    IX
   \   0051  DD210000          LD      IX,0
   \   0055  DD39              ADD     IX,SP
   \   0057  C5                PUSH    BC
   \   0058  D5                PUSH    DE
   \   0059  21CEFF            LD      HL,65486
   \   005C  39                ADD     HL,SP
   \   005D  F9                LD      SP,HL
    112                  //需要动态申请 string 的空间
    113          //      char *buf = NULL;
    114                  char buf[50];
    115          
    116                  ASSERT(id <= UIID_MAX);
    117          
    118                  //读entry
    119                  SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t));
   \   005E  EB                EX      DE,HL
   \   005F  010000            LD      BC,0
   \   0062  3E04              LD      A,4
   \   0064  CD0000            CALL    LWRD ?L_LSH_L03
   \   0067  C5                PUSH    BC
   \   0068  E5                PUSH    HL
   \   0069  CDF700            CALL    LWRD ?0044
   \   006C  E1                POP     HL
   \   006D  E1                POP     HL
    120                  SD_FRead(res_fp, &res_entry, sizeof(res_entry_t));
   \   006E  211000            LD      HL,16
   \   0071  E5                PUSH    HL
   \   0072  010000            LD      BC,res_entry
   \   0075  ED5B0000          LD      DE,(res_fp)
   \   0079  CD0000            CALL    LWRD SD_FRead
   \   007C  F1                POP     AF
    121                  if(res_entry.type != RES_TYPE_STRING && 
    122                          res_entry.type != RES_TYPE_MSTRING) return 0;
   \   007D  3A0600            LD      A,(res_entry+6)
   \   0080  3D                DEC     A
   \   0081  3D                DEC     A
   \   0082  280C              JR      Z,?0014
   \   0084  3A0600            LD      A,(res_entry+6)
   \   0087  FE03              CP      3
   \   0089  2805              JR      Z,?0014
   \   008B            ?0016:
   \   008B            ?0015:
   \   008B            ?0013:
   \   008B  210000            LD      HL,0
    123          
    124                  //realloc buf = res_entry.length
    125          //      buf = (char *)BufAlloc(res_entry.length);
    126          //      ASSERT(buf != NULL);
    127                  ASSERT(res_entry.length <= sizeof(buf));
   \   008E  1860              JR      ?0022
   \   0090            ?0014:
    128          
    129                  //读数据
    130                  SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
   \   0090  2A0200            LD      HL,(res_entry+2)
   \   0093  E5                PUSH    HL
   \   0094  2A0000            LD      HL,(res_entry)
   \   0097  E5                PUSH    HL
   \   0098  CDF700            CALL    LWRD ?0044
   \   009B  E1                POP     HL
   \   009C  E1                POP     HL
    131                  SD_FRead(res_fp, buf, res_entry.length);
   \   009D  210400            LD      HL,res_entry+4
   \   00A0  4E                LD      C,(HL)
   \   00A1  23                INC     HL
   \   00A2  46                LD      B,(HL)
   \   00A3  C5                PUSH    BC
   \   00A4  210200            LD      HL,2
   \   00A7  39                ADD     HL,SP
   \   00A8  4D                LD      C,L
   \   00A9  44                LD      B,H
   \   00AA  ED5B0000          LD      DE,(res_fp)
   \   00AE  CD0000            CALL    LWRD SD_FRead
   \   00B1  F1                POP     AF

⌨️ 快捷键说明

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