📄 ui_slider.lst
字号:
\ 0301 77 LD (HL),A
\ 0302 23 INC HL
\ 0303 7E LD A,(HL)
\ 0304 FD9E09 SBC A,(IY+9)
\ 0307 ?0107:
\ 0307 77 LD (HL),A
183 value_changed = TRUE;
184 need_draw = TRUE;
\ 0308 DD36FA01 LD (IX-6),1
\ 030C DD36FB01 LD (IX-5),1
\ 0310 ?0048:
185 }
186
187 break;
\ 0310 1848 JR ?0064
\ 0312 ?0049:
188
189 //hold 用来控制加速开关
190 case AP_KEY_NEXT | AP_KEY_HOLD:
191 case AP_KEY_VOLADD | AP_KEY_HOLD:
192 if(hold_state == 0) hold_state = 1;
\ 0312 AF XOR A
\ 0313 DDB6F9 OR (IX-7)
\ 0316 2042 JR NZ,?0064
\ 0318 ?0050:
\ 0318 DD36F901 LD (IX-7),1
\ 031C ?0051:
193
194 break;
\ 031C 183C JR ?0064
\ 031E ?0052:
195
196
197 case AP_KEY_PREV | AP_KEY_HOLD:
198 case AP_KEY_VOLSUB | AP_KEY_HOLD:
199 if(hold_state == 0) hold_state = 2;
\ 031E AF XOR A
\ 031F DDB6F9 OR (IX-7)
\ 0322 2036 JR NZ,?0064
\ 0324 ?0053:
\ 0324 DD36F902 LD (IX-7),2
\ 0328 ?0054:
200
201 break;
\ 0328 1830 JR ?0064
\ 032A ?0055:
202
203
204 case AP_KEY_NEXT | AP_KEY_UP:
205 case AP_KEY_VOLADD | AP_KEY_UP:
206 case AP_KEY_PREV | AP_KEY_UP:
207 case AP_KEY_VOLSUB | AP_KEY_UP:
208 hold_state = 0;
\ 032A DD36F900 LD (IX-7),0
209
210 break;
\ 032E 182A JR ?0064
\ 0330 ?0056:
211
212
213 case AP_KEY_MODE | AP_KEY_UP:
214 case AP_KEY_PLAY | AP_KEY_UP:
215 return 0; //ok and return
216
217
218 case AP_MSG_WAIT_TIMEOUT:
\ 0330 ?0057:
219 if(ui_auto_select) return 0;
\ 0330 3A0000 LD A,(ui_auto_select)
\ 0333 B7 OR A
\ 0334 2824 JR Z,?0064
\ 0336 ?0058:
\ 0336 180A JR ?0104
220
221 break;
\ 0338 ?0059:
\ 0338 ?0060:
222
223
224 default:
225 key = ap_handle_hotkey(key);
\ 0338 CD0000 CALL LWRD ap_handle_hotkey
\ 033B DD77F8 LD (IX-8),A
226 if(key == RESULT_REDRAW) //need_draw = TRUE;
\ 033E FE32 CP 50
\ 0340 2005 JR NZ,?0062
\ 0342 ?0061:
227 {
228 //直接退出,因为控件不能重画背景
229 return 0;
\ 0342 ?0104:
\ 0342 210000 LD HL,0
230 }
\ 0345 1809 JR ?0090
\ 0347 ?0062:
231 else if(key != 0) return key;
\ 0347 AF XOR A
\ 0348 DDB6F8 OR (IX-8)
\ 034B 280D JR Z,?0064
\ 034D ?0063:
\ 034D 6F LD L,A
\ 034E 2600 LD H,0
232 }
\ 0350 ?0090:
\ 0350 DDF9 LD SP,IX
\ 0352 DDE1 POP IX
\ 0354 FDE1 POP IY
\ 0356 C1 POP BC
\ 0357 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 035A ?0064:
\ 035A ?0042:
233
234
235 //check if holding
236 if(hold_state == 1) //holding up
\ 035A DD46F9 LD B,(IX-7)
\ 035D 05 DEC B
\ 035E 205B JR NZ,?0066
\ 0360 ?0065:
237 {
238 if((slider->value + slider->step) <= slider->max)
\ 0360 FD6E08 LD L,(IY+8)
\ 0363 FD6609 LD H,(IY+9)
\ 0366 FD4E06 LD C,(IY+6)
\ 0369 FD4607 LD B,(IY+7)
\ 036C 09 ADD HL,BC
\ 036D 4D LD C,L
\ 036E 44 LD B,H
\ 036F FD6E04 LD L,(IY+4)
\ 0372 FD6605 LD H,(IY+5)
\ 0375 F680 OR 128
\ 0377 ED42 SBC HL,BC
\ 0379 E27D03 JP PO,?0096
\ 037C AC XOR H
\ 037D ?0096:
\ 037D FAB303 JP M,?0068
\ 0380 ?0067:
239 {
240 slider->value += slider->step;
\ 0380 210600 LD HL,6
\ 0383 FDE5 PUSH IY
\ 0385 C1 POP BC
\ 0386 09 ADD HL,BC
\ 0387 7E LD A,(HL)
\ 0388 FD8608 ADD A,(IY+8)
\ 038B 77 LD (HL),A
\ 038C 23 INC HL
\ 038D 7E LD A,(HL)
\ 038E FD8E09 ADC A,(IY+9)
\ 0391 77 LD (HL),A
241 value_changed = TRUE;
242 need_draw = TRUE;
\ 0392 DD36FA01 LD (IX-6),1
\ 0396 DD36FB01 LD (IX-5),1
\ 039A ?0070:
243
244 while(key != NULL)
\ 039A AF XOR A
\ 039B DDB6F8 OR (IX-8)
\ 039E CA2404 JP Z,?0085
\ 03A1 ?0071:
245 {
246 if((key & AP_KEY_UP) != NULL)
\ 03A1 DDCBF86E BIT 5,(IX-8)
\ 03A5 2804 JR Z,?0073
\ 03A7 ?0072:
247 hold_state = 0;
\ 03A7 DD36F900 LD (IX-7),0
\ 03AB ?0073:
248 key = ap_get_message();
\ 03AB CD0000 CALL LWRD ap_get_message
\ 03AE DD77F8 LD (IX-8),A
249 }
250 }
\ 03B1 18E7 JR ?0070
\ 03B3 ?0069:
251 else
\ 03B3 ?0068:
252 {
253 hold_state = 0; //disable holding
254 slider->value=slider->max;
\ 03B3 FD6E04 LD L,(IY+4)
\ 03B6 FD6605 LD H,(IY+5)
\ 03B9 185F JR ?0108
\ 03BB ?0074:
\ 03BB ?0066:
255 }
256 }
257 else if(hold_state == 2) //holding down
\ 03BB DD46F9 LD B,(IX-7)
\ 03BE 05 DEC B
\ 03BF 05 DEC B
\ 03C0 2062 JR NZ,?0085
\ 03C2 ?0076:
258 {
259 if((slider->value - slider->step) >= slider->min)
\ 03C2 FD4E02 LD C,(IY+2)
\ 03C5 FD4603 LD B,(IY+3)
\ 03C8 FD5E08 LD E,(IY+8)
\ 03CB FD5609 LD D,(IY+9)
\ 03CE FD6E06 LD L,(IY+6)
\ 03D1 FD6607 LD H,(IY+7)
\ 03D4 A7 AND A
\ 03D5 ED52 SBC HL,DE
\ 03D7 F680 OR 128
\ 03D9 ED42 SBC HL,BC
\ 03DB E2DF03 JP PO,?0097
\ 03DE AC XOR H
\ 03DF ?0097:
\ 03DF FA1404 JP M,?0079
\ 03E2 ?0078:
260 {
261 slider->value -= slider->step;
\ 03E2 210600 LD HL,6
\ 03E5 FDE5 PUSH IY
\ 03E7 C1 POP BC
\ 03E8 09 ADD HL,BC
\ 03E9 7E LD A,(HL)
\ 03EA FD9608 SUB (IY+8)
\ 03ED 77 LD (HL),A
\ 03EE 23 INC HL
\ 03EF 7E LD A,(HL)
\ 03F0 FD9E09 SBC A,(IY+9)
\ 03F3 77 LD (HL),A
262 value_changed = TRUE;
263 need_draw = TRUE;
\ 03F4 DD36FA01 LD (IX-6),1
\ 03F8 DD36FB01 LD (IX-5),1
\ 03FC ?0081:
264
265 while(key != NULL)
\ 03FC AF XOR A
\ 03FD DDB6F8 OR (IX-8)
\ 0400 2822 JR Z,?0085
\ 0402 ?0082:
266 {
267 if((key & AP_KEY_UP) != NULL)
\ 0402 DDCBF86E BIT 5,(IX-8)
\ 0406 2804 JR Z,?0084
\ 0408 ?0083:
268 hold_state = 0;
\ 0408 DD36F900 LD (IX-7),0
\ 040C ?0084:
269 key = ap_get_message();
\ 040C CD0000 CALL LWRD ap_get_message
\ 040F DD77F8 LD (IX-8),A
270 }
271 }
\ 0412 18E8 JR ?0081
\ 0414 ?0080:
272 else
\ 0414 ?0079:
273 {
274 hold_state = 0; //disable holding
275 slider->value=slider->min;
\ 0414 FD6E02 LD L,(IY+2)
\ 0417 FD6603 LD H,(IY+3)
\ 041A ?0108:
\ 041A FD7506 LD (IY+6),L
\ 041D FD7407 LD (IY+7),H
\ 0420 DD36F900 LD (IX-7),0
\ 0424 ?0085:
\ 0424 ?0077:
\ 0424 ?0075:
276 }
277 }
278
279 //handle callback
280 if(callback != NULL && value_changed)
\ 0424 DD7E0A LD A,(IX+10)
\ 0427 DDB60B OR (IX+11)
\ 042A DDB60C OR (IX+12)
\ 042D CA2301 JP Z,?0020
\ 0430 AF XOR A
\ 0431 DDB6FA OR (IX-6)
\ 0434 CA2301 JP Z,?0020
\ 0437 ?0089:
\ 0437 ?0088:
\ 0437 ?0086:
281 {
282 callback(slider->value);
\ 0437 FD5E06 LD E,(IY+6)
\ 043A FD5607 LD D,(IY+7)
\ 043D DD7E0C LD A,(IX+12)
\ 0440 DD6E0A LD L,(IX+10)
\ 0443 DD660B LD H,(IX+11)
\ 0446 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
283 value_changed = FALSE;
\ 0449 DD36FA00 LD (IX-6),0
\ 044D ?0087:
284 }
285
286 }//while(1)
287 }
\ 044D C32301 JP LWRD ?0020
\ 0450 ?0112:
\ 0450 1600 LD D,0
\ 0452 ?0111:
\ 0452 215A00 LD HL,90
\ 0455 19 ADD HL,DE
\ 0456 EB EX DE,HL
\ 0457 ?0110:
\ 0457 3E00 LD A,BYTE3 main_ResShowPic
\ 0459 210000 LD HL,LWRD main_ResShowPic
\ 045C C30000 JP LWRD ?BANK_CALL_DIRECT_L08
288
289
\ 045F END
Errors: none
Warnings: none
Code size: 1119
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -