ui_licensinf.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,103 行 · 第 1/4 页
LST
1,103 行
\ 00BE CE00 DEFW ?0018
\ 00C0 E300 DEFW ?0019
\ 00C2 E300 DEFW ?0019
\ 00C4 E300 DEFW ?0019
\ 00C6 8200 DEFW ?0087
\ 00C8 CE00 DEFW ?0018
\ 00CA 8200 DEFW ?0087
\ 00CC CE00 DEFW ?0018
\ 00CE ?0017:
113 {
114 case AP_KEY_NEXT:
115 case AP_KEY_NEXT | AP_KEY_HOLD:
116 case AP_KEY_VOLADD:
117 case AP_KEY_VOLADD | AP_KEY_HOLD:
118 itemcnt = NextItem(&licensinfbuf.drminf, itemcnt, string_id);
119 break;
\ 00CE ?0018:
120
121 case AP_KEY_PREV:
122 case AP_KEY_PREV | AP_KEY_HOLD:
123 case AP_KEY_VOLSUB:
124 case AP_KEY_VOLSUB | AP_KEY_HOLD:
125 itemcnt = PrevItem(&licensinfbuf.drminf, itemcnt, string_id);
\ 00CE FDE5 PUSH IY
\ 00D0 DD4EE2 LD C,(IX-30)
\ 00D3 210800 LD HL,8
\ 00D6 39 ADD HL,SP
\ 00D7 110100 LD DE,1
\ 00DA 19 ADD HL,DE
\ 00DB EB EX DE,HL
\ 00DC 3E00 LD A,BYTE3 PrevItem
\ 00DE 215101 LD HL,LWRD PrevItem
\ 00E1 18B2 JR ?0086
126 break;
\ 00E3 ?0019:
127
128 case AP_KEY_MODE | AP_KEY_UP:
129 case AP_MSG_WAIT_TIMEOUT://8秒退出
130 case AP_KEY_PLAY | AP_KEY_UP:
131 return RESULT_IGNORE;
\ 00E3 213400 LD HL,52
132
133 default:
\ 00E6 1813 JR ?0026
\ 00E8 ?0020:
134 key=ap_handle_hotkey(key);//热键处理
\ 00E8 CD0000 CALL LWRD ap_handle_hotkey
\ 00EB DD77E3 LD (IX-29),A
135 if(key == RESULT_REDRAW)
\ 00EE FE32 CP 50
\ 00F0 28AA JR Z,?0012
\ 00F2 ?0021:
136 {
137 need_draw=TRUE;
\ 00F2 ?0022:
138 }
139 else if(key!=0)
\ 00F2 AF XOR A
\ 00F3 DDB6E3 OR (IX-29)
\ 00F6 28A4 JR Z,?0012
\ 00F8 ?0024:
140 {
141 return key;
\ 00F8 6F LD L,A
\ 00F9 2600 LD H,0
142 }
\ 00FB ?0026:
\ 00FB FDE1 POP IY
\ 00FD C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0100 ?0107:
\ 0100 3E00 LD A,BYTE3 ResShowMultiString
\ 0102 210000 LD HL,LWRD ResShowMultiString
\ 0105 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0108 ?0109:
\ 0108 DD5E02 LD E,(IX+2)
\ 010B DD5603 LD D,(IX+3)
\ 010E ?0108:
\ 010E 3E00 LD A,BYTE3 displaycase
\ 0110 218701 LD HL,LWRD displaycase
\ 0113 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0116 ?0025:
\ 0116 ?0023:
\ 0116 ?0016:
143 }//switch(key)
144 }//while(1)
145 }
\ 0116 NextItem:
146
147 /*
148 output: 输出最后选中的项目的号
149 */
150
151 char NextItem(licensinf_t *infbuf, char cnt, int lan_id)
152 {
\ 0116 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0119 FEFF DEFW 65534
153 bool result;
154 char i;
155
156 if (cnt>=lincensinf_maxitem_def)
\ 011B 79 LD A,C
\ 011C FE06 CP 6
\ 011E 3804 JR C,?0028
\ 0120 ?0027:
157 {
158 return lincensinf_maxitem_def;
\ 0120 2E06 LD L,6
159 }
\ 0122 182A JR ?0034
\ 0124 ?0028:
160
161 i = cnt + 1;
\ 0124 41 LD B,C
\ 0125 04 INC B
\ 0126 DD70FE LD (IX-2),B
\ 0129 ?0030:
162
163 for (; i<=lincensinf_maxitem_def;)
\ 0129 3E06 LD A,6
\ 012B DDBEFE CP (IX-2)
\ 012E 381B JR C,?0029
\ 0130 ?0031:
164 {
165 result = displaycase(infbuf, i, 0,lan_id);
\ 0130 DD6E0A LD L,(IX+10)
\ 0133 DD660B LD H,(IX+11)
\ 0136 E5 PUSH HL
\ 0137 0E00 LD C,0
\ 0139 C5 PUSH BC
\ 013A DD4EFE LD C,(IX-2)
\ 013D CD0801 CALL LWRD ?0109
\ 0140 F1 POP AF
\ 0141 F1 POP AF
166 if (result)
\ 0142 2C INC L
\ 0143 2D DEC L
\ 0144 2005 JR NZ,?0029
\ 0146 ?0032:
167 {
168 return i;
169 }
\ 0146 ?0033:
170 i++;
\ 0146 DD34FE INC (IX-2)
\ 0149 18DE JR ?0030
\ 014B ?0029:
171 }
172 return i;
\ 014B DD6EFE LD L,(IX-2)
173 }
\ 014E ?0034:
\ 014E C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0151 PrevItem:
174
175 char PrevItem(licensinf_t *infbuf, char cnt, int lan_id)
176 {
\ 0151 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0154 FEFF DEFW 65534
177 bool result;
178 char i;
179
180 if (cnt == 0)
\ 0156 0C INC C
\ 0157 0D DEC C
\ 0158 2003 JR NZ,?0036
\ 015A ?0035:
181 {
182 return 0;
\ 015A 69 LD L,C
183 }
\ 015B 1827 JR ?0042
\ 015D ?0036:
184
185 i = cnt - 1;
\ 015D 79 LD A,C
\ 015E C6FF ADD A,255
\ 0160 DD77FE LD (IX-2),A
\ 0163 ?0038:
186
187 for (; i>=0;)
\ 0163 DD7EFE LD A,(IX-2)
\ 0166 ?0039:
188 {
189 result = displaycase(infbuf, i, 0,lan_id);
\ 0166 DD6E0A LD L,(IX+10)
\ 0169 DD660B LD H,(IX+11)
\ 016C E5 PUSH HL
\ 016D 0E00 LD C,0
\ 016F C5 PUSH BC
\ 0170 4F LD C,A
\ 0171 CD0801 CALL LWRD ?0109
\ 0174 F1 POP AF
\ 0175 F1 POP AF
190 if (result)
\ 0176 2C INC L
\ 0177 2D DEC L
\ 0178 2805 JR Z,?0041
\ 017A ?0040:
191 {
192 return i;
\ 017A DD6EFE LD L,(IX-2)
193 }
\ 017D 1805 JR ?0042
\ 017F ?0041:
194 i--;
\ 017F DD35FE DEC (IX-2)
\ 0182 18DF JR ?0038
\ 0184 ?0037:
195 }
196 return i;
197 }
\ 0184 ?0042:
\ 0184 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0187 displaycase:
198
199
200
201
202 //=============================================
203 //显示的项目
204 /*
205 如当前项目不要显示,则跳到下一个项目,
206 如已到最后一个或最前一个,则不动
207
208 input:
209 要显示的项目
210
211 output:
212 返回是否能显示T: 已显示;
213 F: 没有显示
214 */
215
216 //=============================================
217 bool displaycase(licensinf_t *infbuf, char cnt, char subcnt, int lan_id)
218 {
\ 0187 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 018A FAFF DEFW 65530
\ 018C FDE5 PUSH IY
\ 018E DD6E02 LD L,(IX+2)
\ 0191 DD6603 LD H,(IX+3)
\ 0194 E5 PUSH HL
\ 0195 FDE1 POP IY
219 switch(cnt)
\ 0197 59 LD E,C
\ 0198 CD0000 CALL LWRD ?C_S_SWITCH_L06
\ 019B 00 DEFB 0
\ 019C 0700 DEFW 7
\ 019E 1E03 DEFW ?0068
\ 01A0 AE01 DEFW ?0044
\ 01A2 D501 DEFW ?0047
\ 01A4 1902 DEFW ?0050
\ 01A6 3602 DEFW ?0053
\ 01A8 5D02 DEFW ?0056
\ 01AA A102 DEFW ?0059
\ 01AC E402 DEFW ?0062
\ 01AE ?0044:
220 {
221 case RemainPlayCntDisp_def:
222 if ((infbuf->switchflag & on_PLAYCNT_def) == 0)
\ 01AE FDCB006E BIT 5,(IY+0)
\ 01B2 CA1E03 JP Z,?0068
\ 01B5 ?0045:
223 {
224 return FALSE;
225 }
\ 01B5 ?0046:
226 else
227 {
228 char tmpbuf[5];
229 //显示标题
230 ClearScreen(NULL);
\ 01B5 CD2503 CALL LWRD ?0106
231 ResShowMultiString(PLAYCNT, lan_id, 255, 90);
\ 01B8 C5 PUSH BC
\ 01B9 0EFF LD C,255
\ 01BB C5 PUSH BC
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?