📄 ui_main.lst
字号:
127 * Notes : 数字只能是 0000~9999
128 *
129 ********************************************************************************
130 */
131 char *itoa4(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 ?0124
\ 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 ?0125
\ 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 ?0125
\ 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 ?0121
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 ?0122:
\ 0171 3E00 LD A,BYTE3 main_ResShowPic
\ 0173 21C700 LD HL,LWRD main_ResShowPic
\ 0176 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0179 F1 POP AF
185 }
\ 017A E1 POP HL
\ 017B C1 POP BC
\ 017C C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 017F ui_show_b:
186
187 void ui_show_b(WORD id)
188 {
\ 017F C5 PUSH BC
\ 0180 D5 PUSH DE
189 main_ResShowPic(id, POSITION_B, 0);
\ 0181 0E00 LD C,0
\ 0183 C5 PUSH BC
\ 0184 0E0F LD C,15
\ 0186 C37101 JP LWRD ?0122
190 //FIXME:显示小数字
191
192 //if(ui_auto_update) UpdateScreen(®ion_b);
193 }
\ 0189 ui_show_c:
194 //id =0, clear the icon
195 void ui_show_c(WORD id)
196 {
\ 0189 C5 PUSH BC
\ 018A DDE5 PUSH IX
197 if(id == 0)
\ 018C 7B LD A,E
\ 018D B2 OR D
\ 018E 2014 JR NZ,?0008
\ 0190 ?0007:
198 {
199 ClearScreen(®ion_c);
\ 0190 110800 LD DE,region_c
\ 0193 CD0000 CALL LWRD ClearScreen
200 if(ui_auto_update) UpdateScreen(®ion_c);
\ 0196 3A0000 LD A,(ui_auto_update)
\ 0199 B7 OR A
\ 019A 2816 JR Z,?0011
\ 019C ?0009:
\ 019C 110800 LD DE,region_c
\ 019F CD0000 CALL LWRD UpdateScreen
\ 01A2 ?0010:
\ 01A2 180E JR ?0011
\ 01A4 ?0008:
201 }
202 else main_ResShowPic(id, POSITION_C, 0);
\ 01A4 0E00 LD C,0
\ 01A6 C5 PUSH BC
\ 01A7 0E26 LD C,38
\ 01A9 3E00 LD A,BYTE3 main_ResShowPic
\ 01AB 21C700 LD HL,LWRD main_ResShowPic
\ 01AE CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01B1 F1 POP AF
\ 01B2 ?0011:
203 }
\ 01B2 DDE1 POP IX
\ 01B4 C1 POP BC
\ 01B5 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01B8 ui_show_d2:
204
205 void ui_show_d2(const char *string, BYTE part)
206 {
\ 01B8 C5 PUSH BC
\ 01B9 D5 PUSH DE
207 if(part == 0) SetTextPos(POSITION_D - 6, 0);
\ 01BA AF XOR A
\ 01BB B1 OR C
\ 01BC 2802 JR Z,?0079
\ 01BE ?0012:
\ 01BE ?0013:
208 else SetTextPos(POSITION_D - 6, 8);
\ 01BE 0E08 LD C,8
\ 01C0 ?0079:
\ 01C0 1E2C LD E,44
\ 01C2 CDD601 CALL LWRD ?0126
\ 01C5 ?0014:
209
210 PutS(string, -1);
\ 01C5 39 ADD HL,SP
\ 01C6 CDDF01 CALL LWRD ?0127
211 if(ui_auto_update) UpdateScreen(®ion_d2);
\ 01C9 2806 JR Z,?0016
\ 01CB ?0015:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -