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

📄 ap_common2.lst

📁 5807收音机模块用于炬力平台
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   00AE  CD0000            CALL    LWRD SD_FRead
   \   00B1  F1                POP     AF
    136          
    137                  //显示 
    138                  SetAsciiFont(FONT_TYPE_LARGE);
   \   00B2  1E04              LD      E,4
   \   00B4  CD0000            CALL    LWRD SetAsciiFont
    139                  if(x == 255)    //居中显示
   \   00B7  DD46FE            LD      B,(IX-2)
   \   00BA  04                INC     B
   \   00BB  DD4E06            LD      C,(IX+6)
   \   00BE  200C              JR      NZ,?0018
   \   00C0            ?0017:
    140                  {
    141                          SetTextPos((SCR_WIDTH - (BYTE)get_large_text_width(buf)) /2, y);
   \   00C0  C5                PUSH    BC
   \   00C1  210200            LD      HL,2
   \   00C4  39                ADD     HL,SP
   \   00C5  EB                EX      DE,HL
   \   00C6  CD0001            CALL    LWRD ?0045
   \   00C9  C1                POP     BC
   \   00CA  1803              JR      ?0040
    142                          PutS(buf, -1);
    143                  }
    144                  else
   \   00CC            ?0018:
    145                  {
    146                          SetTextPos(x, y);
   \   00CC  DD5EFE            LD      E,(IX-2)
   \   00CF            ?0040:
   \   00CF  CD0000            CALL    LWRD SetTextPos
    147                          PutS(buf, -1);
   \   00D2  0EFF              LD      C,255
   \   00D4  210000            LD      HL,0
   \   00D7  39                ADD     HL,SP
   \   00D8  EB                EX      DE,HL
   \   00D9  CD0000            CALL    LWRD PutS
   \   00DC            ?0019:
    148                  }
    149                  SetAsciiFont(FONT_TYPE_DEFAULT);        
   \   00DC  1E00              LD      E,0
   \   00DE  CD0000            CALL    LWRD SetAsciiFont
    150                  if(ui_auto_update) UpdateScreen(NULL); //MSG
   \   00E1  3A0000            LD      A,(ui_auto_update)
   \   00E4  B7                OR      A
   \   00E5  2806              JR      Z,?0021
   \   00E7            ?0020:
   \   00E7  110000            LD      DE,0
   \   00EA  CD0000            CALL    LWRD UpdateScreen
   \   00ED            ?0021:
    151                          
    152                  //释放内存
    153                  //if(buf != NULL) BufFree((int *)buf);
    154                  return 1;        
   \   00ED  210100            LD      HL,1
    155          }
   \   00F0            ?0022:
   \   00F0  DDF9              LD      SP,IX
   \   00F2  DDE1              POP     IX
   \   00F4  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   00F7            ?0044:
   \   00F7  0E00              LD      C,0
   \   00F9  ED5B0000          LD      DE,(res_fp)
   \   00FD  C30000            JP      LWRD SD_FSeek
   \   0100            ?0045:
   \   0100  3E00              LD      A,BYTE3 get_large_text_width
   \   0102  214000            LD      HL,LWRD get_large_text_width
   \   0105  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0108  5D                LD      E,L
   \   0109  50                LD      D,B
   \   010A  218000            LD      HL,128
   \   010D  A7                AND     A
   \   010E  ED52              SBC     HL,DE
   \   0110  EB                EX      DE,HL
   \   0111  0E02              LD      C,2
   \   0113  C30000            JP      LWRD ?SS_DIV_L02
   \   0116            ResShowMultiString:
    156          
    157          /*
    158          ********************************************************************************
    159          * Description : 在指定位置显示多语言字符串
    160          *
    161          * Arguments   : id, 资源代号
    162                          string_id, 语言代号
    163                          x, y, 屏幕坐标,x=255 表示x方向居中
    164          *
    165          * Returns     : 成功, 1
    166                          失败, 0
    167          *
    168          * Notes       : 
    169          *
    170          ********************************************************************************
    171          */
    172          int ResShowMultiString(WORD id, BYTE string_id, uchar x, uchar y)
    173          {
   \   0116  DDE5              PUSH    IX
   \   0118  C5                PUSH    BC
   \   0119  D5                PUSH    DE
   \   011A  219CFF            LD      HL,65436
   \   011D  39                ADD     HL,SP
   \   011E  F9                LD      SP,HL
    174                  //需要动态申请 string 的空间
    175          //      char *buf = NULL;
    176                  char *p;
    177                  char buf[100];
    178          
    179                  ASSERT(id <= UIID_MAX);
    180          
    181                  //读entry
    182                  SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t));
   \   011F  6B                LD      L,E
   \   0120  62                LD      H,D
   \   0121  010000            LD      BC,0
   \   0124  3E04              LD      A,4
   \   0126  CD0000            CALL    LWRD ?L_LSH_L03
   \   0129  C5                PUSH    BC
   \   012A  E5                PUSH    HL
   \   012B  CDF700            CALL    LWRD ?0044
   \   012E  E1                POP     HL
   \   012F  E1                POP     HL
    183                  SD_FRead(res_fp, &res_entry, sizeof(res_entry_t));
   \   0130  211000            LD      HL,16
   \   0133  E5                PUSH    HL
   \   0134  010000            LD      BC,res_entry
   \   0137  ED5B0000          LD      DE,(res_fp)
   \   013B  CD0000            CALL    LWRD SD_FRead
   \   013E  F1                POP     AF
    184                  if( res_entry.type != RES_TYPE_MSTRING) return 0;
   \   013F  3A0600            LD      A,(res_entry+6)
   \   0142  FE03              CP      3
   \   0144  2805              JR      Z,?0024
   \   0146            ?0023:
   \   0146  210000            LD      HL,0
    185          
    186                  //realloc buf = res_entry.length
    187                  //buf = (char *)BufAlloc(res_entry.length);
    188                  //ASSERT(buf != NULL);
    189                  ASSERT(res_entry.length <= sizeof(buf));
   \   0149  1878              JR      ?0035
   \   014B            ?0024:
    190                  
    191                  //读数据
    192                  SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
   \   014B  2A0200            LD      HL,(res_entry+2)
   \   014E  E5                PUSH    HL
   \   014F  2A0000            LD      HL,(res_entry)
   \   0152  E5                PUSH    HL
   \   0153  CDF700            CALL    LWRD ?0044
   \   0156  E1                POP     HL
   \   0157  E1                POP     HL
    193                  SD_FRead(res_fp, buf, res_entry.length);
   \   0158  210400            LD      HL,res_entry+4
   \   015B  4E                LD      C,(HL)
   \   015C  23                INC     HL
   \   015D  46                LD      B,(HL)
   \   015E  C5                PUSH    BC
   \   015F  210200            LD      HL,2
   \   0162  39                ADD     HL,SP
   \   0163  4D                LD      C,L
   \   0164  44                LD      B,H
   \   0165  ED5B0000          LD      DE,(res_fp)
   \   0169  CD0000            CALL    LWRD SD_FRead
   \   016C  F1                POP     AF
    194          
    195                  //定位到 string_id
    196                  p = buf;
   \   016D  210000            LD      HL,0
   \   0170  39                ADD     HL,SP
   \   0171  E5                PUSH    HL
   \   0172  DDE1              POP     IX
   \   0174            ?0026:
    197                  while( string_id)
   \   0174  216600            LD      HL,102
   \   0177  39                ADD     HL,SP
   \   0178  AF                XOR     A
   \   0179  B6                OR      (HL)
   \   017A  280B              JR      Z,?0025
   \   017C            ?0027:
    198                  {
    199                          if(*p == 0) string_id--;    //找到第string_id 个0
   \   017C  AF                XOR     A
   \   017D  DDB600            OR      (IX+0)
   \   0180  2001              JR      NZ,?0029
   \   0182            ?0028:
   \   0182  35                DEC     (HL)
   \   0183            ?0029:
    200                          p++;
    201                  }
    202                  ASSERT((WORD)(p - buf) <= res_entry.length);
   \   0183  DD23              INC     IX
   \   0185  18ED              JR      ?0026
   \   0187            ?0025:
    203                          
    204                  //复制到 buf, 这里从buf尾部复制到头部, 存在不安全因素
    205                  //strcpy(buf, p);
    206              
    207                  SetAsciiFont(FONT_TYPE_LARGE);
   \   0187  1E04              LD      E,4
   \   0189  CD0000            CALL    LWRD SetAsciiFont
    208                  if(x == 255)    //居中显示
   \   018C  216E00            LD      HL,110
   \   018F  39                ADD     HL,SP
   \   0190  46                LD      B,(HL)
   \   0191  04                INC     B
   \   0192  23                INC     HL
   \   0193  23                INC     HL
   \   0194  4E                LD      C,(HL)
   \   0195  200A              JR      NZ,?0031
   \   0197            ?0030:
    209                  {
    210                          SetTextPos((SCR_WIDTH - (BYTE)get_large_text_width(p)) /2, y);
   \   0197  C5                PUSH    BC
   \   0198  DDE5              PUSH    IX
   \   019A  D1                POP     DE
   \   019B  CD0001            CALL    LWRD ?0045
   \   019E  C1                POP     BC
   \   019F  1803              JR      ?0043
    211                          PutS(p, -1);
    212                  }
    213                  else
   \   01A1            ?0031:
    214                  {
    215                          SetTextPos(x, y);
   \   01A1  2B                DEC     HL
   \   01A2  2B                DEC     HL
   \   01A3  5E                LD      E,(HL)
   \   01A4            ?0043:
   \   01A4  CD0000            CALL    LWRD SetTextPos
    216                          PutS(p, -1);
   \   01A7  0EFF              LD      C,255
   \   01A9  DDE5              PUSH    IX
   \   01AB  D1                POP     DE
   \   01AC  CD0000            CALL    LWRD PutS
   \   01AF            ?0032:
    217                  }
    218                  
    219                  SetAsciiFont(FONT_TYPE_DEFAULT);        
   \   01AF  1E00              LD      E,0
   \   01B1  CD0000            CALL    LWRD SetAsciiFont
    220                  if(ui_auto_update) UpdateScreen(NULL);
   \   01B4  3A0000            LD      A,(ui_auto_update)
   \   01B7  B7                OR      A
   \   01B8  2806              JR      Z,?0034
   \   01BA            ?0033:
   \   01BA  110000            LD      DE,0
   \   01BD  CD0000            CALL    LWRD UpdateScreen
   \   01C0            ?0034:
    221              
    222                  //释放内存
    223                  //if(buf != NULL) BufFree((int *)buf);
    224                  return 1;
   \   01C0  210100            LD      HL,1
    225          }
   \   01C3            ?0035:
   \   01C3  EB                EX      DE,HL
   \   01C4  216800            LD      HL,104
   \   01C7  39                ADD     HL,SP
   \   01C8  F9                LD      SP,HL
   \   01C9  EB                EX      DE,HL
   \   01CA  DDE1              POP     IX
   \   01CC  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
    226          
    227          
   \   0000                    RSEG    CONST
   \   0000            music_ext:
   \   0000  4D5033            DEFB    'MP3'
   \   0003  00                DEFB    0
   \   0004  574D41            DEFB    'WMA'
   \   0007  00                DEFB    0
   \   0008  415346            DEFB    'ASF'
   \   000B  00                DEFB    0
   \   000C  574D56            DEFB    'WMV'
   \   000F  00                DEFB    0
   \   0010  4F4747            DEFB    'OGG'
   \   0013  00                DEFB    0
   \   0014  415045            DEFB    'APE'
   \   0017  00                DEFB    0
   \   0018            voice_ext:
   \   0018  574156            DEFB    'WAV'
   \   001B  00                DEFB    0
   \   001C  414354            DEFB    'ACT'
   \   001F  00                DEFB    0
   \   0020                    END

Errors: none
Warnings: none
Code size: 463
Constant size: 32
Static variable size: Data(0) Iram(0)

⌨️ 快捷键说明

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