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

📄 ui_main.lst

📁 5807收音机模块用于炬力平台
💻 LST
📖 第 1 页 / 共 4 页
字号:
    121          *
    122          * Arguments   : i, 数字
    123          *               buf, 输出字符串指针,5 bytes
    124          *
    125          * Returns     : 成功, 输出字符串指针
    126          *
    127          * Notes       : 数字只能是 0000~9999
    128          *
    129          ********************************************************************************
    130          */    
    131          char *itoa_4(WORD i, char *buf)
    132          {
   \   0088  FDE5              PUSH    IY
   \   008A  DDE5              PUSH    IX
   \   008C  C5                PUSH    BC
   \   008D  DDE1              POP     IX
   \   008F  D5                PUSH    DE
   \   0090  FDE1              POP     IY
    133              //ASSERT(buf != NULL);
    134              /*
    135              buf[0] = mychar[(i % 10000) / 1000];
    136              buf[1] = mychar[(i % 1000) / 100];
    137              buf[2] = mychar[(i % 100) / 10];    
    138              buf[3] = mychar[i % 10];
    139              buf[4] = 0;
    140              */
    141              buf[0] = (i % 10000) / 1000 + '0';
   \   0092  011027            LD      BC,10000
   \   0095  CD0000            CALL    LWRD ?US_MOD_L02
   \   0098  01E803            LD      BC,1000
    142              buf[1] = (i % 1000) / 100 + '0';
   \   009B  CD7900            CALL    LWRD ?0117
   \   009E  016400            LD      BC,100
   \   00A1  CD0000            CALL    LWRD ?US_DIV_L02
   \   00A4  7B                LD      A,E
   \   00A5  C630              ADD     A,48
   \   00A7  DD7701            LD      (IX+1),A
    143              buf[2] = (i % 100) / 10 + '0';    
   \   00AA  CD8200            CALL    LWRD ?0118
   \   00AD  0E0A              LD      C,10
   \   00AF  CD0000            CALL    LWRD ?US_DIV_L02
   \   00B2  7B                LD      A,E
   \   00B3  C630              ADD     A,48
   \   00B5  DD7702            LD      (IX+2),A
    144              buf[3] = (i % 10) + '0';
   \   00B8  CD8200            CALL    LWRD ?0118
   \   00BB  7B                LD      A,E
   \   00BC  C630              ADD     A,48
   \   00BE  DD7703            LD      (IX+3),A
    145              buf[4] = 0;
   \   00C1  DD7004            LD      (IX+4),B
    146          
    147              return buf;
   \   00C4  C36F00            JP      LWRD ?0114
    148          }
   \   00C7            main_ResShowPic:
    149              
    150          
    151          //只有这个界面使用,为了提高效率而放在这里
    152          int main_ResShowPic(WORD id, uchar x, uchar y)
    153          {
   \   00C7  C5                PUSH    BC
   \   00C8  D5                PUSH    DE
   \   00C9  F5                PUSH    AF
   \   00CA  F5                PUSH    AF
    154              WORD buf[2];    //buffer for sd read
    155          
    156              ASSERT(id <= UIID_MAX);
    157              
    158              //读entry
    159              SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t));
   \   00CB  6B                LD      L,E
   \   00CC  62                LD      H,D
   \   00CD  010000            LD      BC,0
   \   00D0  3E04              LD      A,4
   \   00D2  CD0000            CALL    LWRD ?L_LSH_L03
   \   00D5  C5                PUSH    BC
   \   00D6  E5                PUSH    HL
   \   00D7  0E00              LD      C,0
   \   00D9  ED5B0000          LD      DE,(res_fp)
   \   00DD  CD0000            CALL    LWRD SD_FSeek
   \   00E0  E1                POP     HL
   \   00E1  E1                POP     HL
    160              SD_FRead(res_fp, &res_entry, sizeof(res_entry_t));
   \   00E2  211000            LD      HL,16
   \   00E5  E5                PUSH    HL
   \   00E6  010000            LD      BC,res_entry
   \   00E9  ED5B0000          LD      DE,(res_fp)
   \   00ED  CD0000            CALL    LWRD SD_FRead
   \   00F0  F1                POP     AF
    161              if(res_entry.type != RES_TYPE_PIC) return 0;
   \   00F1  3A0600            LD      A,(res_entry+6)
   \   00F4  3D                DEC     A
   \   00F5  2805              JR      Z,?0003
   \   00F7            ?0002:
   \   00F7  210000            LD      HL,0
    162              ASSERT(res_entry.length <= 512);
   \   00FA  1869              JR      ?0006
   \   00FC            ?0003:
    163          
    164              //读数据
    165              SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
   \   00FC  2A0200            LD      HL,(res_entry+2)
   \   00FF  E5                PUSH    HL
   \   0100  2A0000            LD      HL,(res_entry)
   \   0103  E5                PUSH    HL
   \   0104  4F                LD      C,A
   \   0105  ED5B0000          LD      DE,(res_fp)
   \   0109  CD0000            CALL    LWRD SD_FSeek
   \   010C  E1                POP     HL
   \   010D  E1                POP     HL
    166              //SD_FRead(res_fp, &(res_region.width), 2);
    167              //SD_FRead(res_fp, &(res_region.height), 2);
    168              SD_FRead(res_fp, buf, sizeof(buf));
   \   010E  210400            LD      HL,4
   \   0111  E5                PUSH    HL
   \   0112  2B                DEC     HL
   \   0113  2B                DEC     HL
   \   0114  39                ADD     HL,SP
   \   0115  4D                LD      C,L
   \   0116  44                LD      B,H
   \   0117  ED5B0000          LD      DE,(res_fp)
   \   011B  CD0000            CALL    LWRD SD_FRead
   \   011E  F1                POP     AF
    169              //ASSERT(buf[0] <= 128);
    170              //ASSERT(buf[1] <= 32);    
    171              res_region.width = (char)buf[0];
   \   011F  210000            LD      HL,0
   \   0122  39                ADD     HL,SP
   \   0123  7E                LD      A,(HL)
   \   0124  320200            LD      (res_region+2),A
    172              res_region.height = (char)buf[1];
   \   0127  23                INC     HL
   \   0128  23                INC     HL
   \   0129  7E                LD      A,(HL)
   \   012A  320300            LD      (res_region+3),A
    173              
    174              //显示
    175              res_region.x = x;
   \   012D  210600            LD      HL,6
   \   0130  39                ADD     HL,SP
   \   0131  7E                LD      A,(HL)
   \   0132  320000            LD      (res_region),A
    176              res_region.y = y;
   \   0135  210C00            LD      HL,12
   \   0138  39                ADD     HL,SP
   \   0139  7E                LD      A,(HL)
   \   013A  320100            LD      (res_region+1),A
    177              PutSDImage(&res_region, res_fp->rwpointer);
   \   013D  211400            LD      HL,20
   \   0140  ED4B0000          LD      BC,(res_fp)
   \   0144  09                ADD     HL,BC
   \   0145  4E                LD      C,(HL)
   \   0146  23                INC     HL
   \   0147  46                LD      B,(HL)
   \   0148  23                INC     HL
   \   0149  5E                LD      E,(HL)
   \   014A  23                INC     HL
   \   014B  56                LD      D,(HL)
   \   014C  D5                PUSH    DE
   \   014D  C5                PUSH    BC
   \   014E  110000            LD      DE,res_region
   \   0151  CD0000            CALL    LWRD PutSDImage
   \   0154  E1                POP     HL
   \   0155  E1                POP     HL
    178              if(ui_auto_update) UpdateScreen(&res_region);
   \   0156  3A0000            LD      A,(ui_auto_update)
   \   0159  B7                OR      A
   \   015A  2806              JR      Z,?0005
   \   015C            ?0004:
   \   015C  110000            LD      DE,res_region
   \   015F  CD0000            CALL    LWRD UpdateScreen
   \   0162            ?0005:
    179              return 1;
   \   0162  210100            LD      HL,1
    180          }
   \   0165            ?0006:
   \   0165  F1                POP     AF
   \   0166  F1                POP     AF
   \   0167  F1                POP     AF
   \   0168  F1                POP     AF
   \   0169  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   016C            ui_show_a:
    181          
    182          void ui_show_a(WORD id)
    183          {
   \   016C  C5                PUSH    BC
   \   016D  D5                PUSH    DE
    184              main_ResShowPic(id, POSITION_A, 0);
   \   016E  0E00              LD      C,0
   \   0170  C5                PUSH    BC
   \   0171            ?0115:
   \   0171  CD7A01            CALL    LWRD ?0119
   \   0174  F1                POP     AF
    185          }
   \   0175  E1                POP     HL
   \   0176  C1                POP     BC
   \   0177  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   017A            ?0119:
   \   017A  3E00              LD      A,BYTE3 main_ResShowPic
   \   017C  21C700            LD      HL,LWRD main_ResShowPic
   \   017F  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   0182            ui_show_b:
    186          
    187          void ui_show_b(WORD id)
    188          {
   \   0182  C5                PUSH    BC
   \   0183  D5                PUSH    DE
    189              main_ResShowPic(id, POSITION_B, 0);
   \   0184  0E00              LD      C,0
   \   0186  C5                PUSH    BC
   \   0187  0E0F              LD      C,15
   \   0189  C37101            JP      LWRD ?0115
    190              //FIXME:显示小数字
    191              
    192              //if(ui_auto_update) UpdateScreen(&region_b);
    193          }
   \   018C            ui_show_c:
    194          //id =0, clear the icon
    195          void ui_show_c(WORD id)
    196          {
   \   018C  C5                PUSH    BC
   \   018D  DDE5              PUSH    IX
    197              if(id == 0)
   \   018F  7B                LD      A,E
   \   0190  B2                OR      D
   \   0191  2014              JR      NZ,?0008
   \   0193            ?0007:
    198              {
    199                  ClearScreen(&region_c);
   \   0193  110000            LD      DE,region_c
   \   0196  CD0000            CALL    LWRD ClearScreen
    200                  if(ui_auto_update) UpdateScreen(&region_c);
   \   0199  3A0000            LD      A,(ui_auto_update)
   \   019C  B7                OR      A
   \   019D  2811              JR      Z,?0011
   \   019F            ?0009:
   \   019F  110000            LD      DE,region_c
   \   01A2  CD0000            CALL    LWRD UpdateScreen
   \   01A5            ?0010:
   \   01A5  1809              JR      ?0011
   \   01A7            ?0008:
    201              }
    202              else main_ResShowPic(id, POSITION_C, 0);    
   \   01A7  0E00              LD      C,0
   \   01A9  C5                PUSH    BC
   \   01AA  0E26              LD      C,38
   \   01AC  CD7A01            CALL    LWRD ?0119
   \   01AF  F1                POP     AF
   \   01B0            ?0011:
    203          }
   \   01B0  DDE1              POP     IX
   \   01B2  C1                POP     BC
   \   01B3  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   01B6            ui_show_d2:
    204          
    205          void ui_show_d2(const char *string, BYTE part)
    206          {
   \   01B6  C5                PUSH    BC
   \   01B7  D5                PUSH    DE
    207              if(part == 0) SetTextPos(POSITION_D - 6, 0);
   \   01B8  AF                XOR     A
   \   01B9  B1                OR      C
   \   01BA  2802              JR      Z,?0074
   \   01BC            ?0012:
   \   01BC            ?0013:
    208              else SetTextPos(POSITION_D - 6, 8);
   \   01BC  0E08              LD      C,8

⌨️ 快捷键说明

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