ui_slider.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,032 行 · 第 1/4 页
LST
1,032 行
\ 0411 DD36F900 LD (IX-7),0
209
210 break;
\ 0415 1837 JR ?0064
\ 0417 ?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
\ 0417 210000 LD HL,0
216
217
218 case AP_MSG_WAIT_TIMEOUT:
\ 041A 1828 JR ?0090
\ 041C ?0057:
219 if(ui_auto_select) return 0;
\ 041C 3A0000 LD A,(ui_auto_select)
\ 041F B7 OR A
\ 0420 282C JR Z,?0064
\ 0422 ?0058:
\ 0422 210000 LD HL,0
220
221 break;
\ 0425 181D JR ?0090
\ 0427 ?0059:
\ 0427 ?0060:
222
223
224 default:
225 key = ap_handle_hotkey(key);
\ 0427 DD5EF8 LD E,(IX-8)
\ 042A CD0000 CALL LWRD ap_handle_hotkey
\ 042D DD77F8 LD (IX-8),A
226 if(key == RESULT_REDRAW) //need_draw = TRUE;
\ 0430 FE32 CP 50
\ 0432 2005 JR NZ,?0062
\ 0434 ?0061:
227 {
228 //直接退出,因为控件不能重画背景
229 return 0;
\ 0434 210000 LD HL,0
230 }
\ 0437 180B JR ?0090
\ 0439 ?0062:
231 else if(key != 0) return key;
\ 0439 AF XOR A
\ 043A DDB6F8 OR (IX-8)
\ 043D 280F JR Z,?0064
\ 043F ?0063:
\ 043F DD6EF8 LD L,(IX-8)
\ 0442 2600 LD H,0
232 }
\ 0444 ?0090:
\ 0444 DDF9 LD SP,IX
\ 0446 DDE1 POP IX
\ 0448 FDE1 POP IY
\ 044A C1 POP BC
\ 044B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 044E ?0064:
\ 044E ?0042:
233
234
235 //check if holding
236 if(hold_state == 1) //holding up
\ 044E DD46F9 LD B,(IX-7)
\ 0451 05 DEC B
\ 0452 2065 JR NZ,?0066
\ 0454 ?0065:
237 {
238 if((slider->value + slider->step) <= slider->max)
\ 0454 FD6E08 LD L,(IY+8)
\ 0457 FD6609 LD H,(IY+9)
\ 045A FD4E06 LD C,(IY+6)
\ 045D FD4607 LD B,(IY+7)
\ 0460 09 ADD HL,BC
\ 0461 4D LD C,L
\ 0462 44 LD B,H
\ 0463 FD6E04 LD L,(IY+4)
\ 0466 FD6605 LD H,(IY+5)
\ 0469 F680 OR 128
\ 046B ED42 SBC HL,BC
\ 046D E27104 JP PO,?0093
\ 0470 AC XOR H
\ 0471 ?0093:
\ 0471 FAA704 JP M,?0068
\ 0474 ?0067:
239 {
240 slider->value += slider->step;
\ 0474 210600 LD HL,6
\ 0477 FDE5 PUSH IY
\ 0479 C1 POP BC
\ 047A 09 ADD HL,BC
\ 047B 7E LD A,(HL)
\ 047C FD8608 ADD A,(IY+8)
\ 047F 77 LD (HL),A
\ 0480 23 INC HL
\ 0481 7E LD A,(HL)
\ 0482 FD8E09 ADC A,(IY+9)
\ 0485 77 LD (HL),A
241 value_changed = TRUE;
\ 0486 DD36FA01 LD (IX-6),1
242 need_draw = TRUE;
\ 048A DD36FB01 LD (IX-5),1
\ 048E ?0070:
243
244 while(key != NULL)
\ 048E AF XOR A
\ 048F DDB6F8 OR (IX-8)
\ 0492 CA2205 JP Z,?0085
\ 0495 ?0071:
245 {
246 if((key & AP_KEY_UP) != NULL)
\ 0495 DDCBF86E BIT 5,(IX-8)
\ 0499 2804 JR Z,?0073
\ 049B ?0072:
247 hold_state = 0;
\ 049B DD36F900 LD (IX-7),0
\ 049F ?0073:
248 key = ap_get_message();
\ 049F CD0000 CALL LWRD ap_get_message
\ 04A2 DD77F8 LD (IX-8),A
249 }
250 }
\ 04A5 18E7 JR ?0070
\ 04A7 ?0069:
251 else
\ 04A7 ?0068:
252 {
253 hold_state = 0; //disable holding
\ 04A7 DD36F900 LD (IX-7),0
254 slider->value=slider->max;
\ 04AB FD6E04 LD L,(IY+4)
\ 04AE FD6605 LD H,(IY+5)
\ 04B1 FD7506 LD (IY+6),L
\ 04B4 FD7407 LD (IY+7),H
\ 04B7 ?0074:
\ 04B7 1869 JR ?0085
\ 04B9 ?0066:
255 }
256 }
257 else if(hold_state == 2) //holding down
\ 04B9 DD46F9 LD B,(IX-7)
\ 04BC 05 DEC B
\ 04BD 05 DEC B
\ 04BE 2062 JR NZ,?0085
\ 04C0 ?0076:
258 {
259 if((slider->value - slider->step) >= slider->min)
\ 04C0 FD4E02 LD C,(IY+2)
\ 04C3 FD4603 LD B,(IY+3)
\ 04C6 FD5E08 LD E,(IY+8)
\ 04C9 FD5609 LD D,(IY+9)
\ 04CC FD6E06 LD L,(IY+6)
\ 04CF FD6607 LD H,(IY+7)
\ 04D2 A7 AND A
\ 04D3 ED52 SBC HL,DE
\ 04D5 F680 OR 128
\ 04D7 ED42 SBC HL,BC
\ 04D9 E2DD04 JP PO,?0094
\ 04DC AC XOR H
\ 04DD ?0094:
\ 04DD FA1205 JP M,?0079
\ 04E0 ?0078:
260 {
261 slider->value -= slider->step;
\ 04E0 210600 LD HL,6
\ 04E3 FDE5 PUSH IY
\ 04E5 C1 POP BC
\ 04E6 09 ADD HL,BC
\ 04E7 7E LD A,(HL)
\ 04E8 FD9608 SUB (IY+8)
\ 04EB 77 LD (HL),A
\ 04EC 23 INC HL
\ 04ED 7E LD A,(HL)
\ 04EE FD9E09 SBC A,(IY+9)
\ 04F1 77 LD (HL),A
262 value_changed = TRUE;
\ 04F2 DD36FA01 LD (IX-6),1
263 need_draw = TRUE;
\ 04F6 DD36FB01 LD (IX-5),1
\ 04FA ?0081:
264
265 while(key != NULL)
\ 04FA AF XOR A
\ 04FB DDB6F8 OR (IX-8)
\ 04FE 2822 JR Z,?0085
\ 0500 ?0082:
266 {
267 if((key & AP_KEY_UP) != NULL)
\ 0500 DDCBF86E BIT 5,(IX-8)
\ 0504 2804 JR Z,?0084
\ 0506 ?0083:
268 hold_state = 0;
\ 0506 DD36F900 LD (IX-7),0
\ 050A ?0084:
269 key = ap_get_message();
\ 050A CD0000 CALL LWRD ap_get_message
\ 050D DD77F8 LD (IX-8),A
270 }
271 }
\ 0510 18E8 JR ?0081
\ 0512 ?0080:
272 else
\ 0512 ?0079:
273 {
274 hold_state = 0; //disable holding
\ 0512 DD36F900 LD (IX-7),0
275 slider->value=slider->min;
\ 0516 FD6E02 LD L,(IY+2)
\ 0519 FD6603 LD H,(IY+3)
\ 051C FD7506 LD (IY+6),L
\ 051F FD7407 LD (IY+7),H
\ 0522 ?0085:
\ 0522 ?0077:
\ 0522 ?0075:
276 }
277 }
278
279 //handle callback
280 if(callback != NULL && value_changed)
\ 0522 DD7E0A LD A,(IX+10)
\ 0525 DDB60B OR (IX+11)
\ 0528 DDB60C OR (IX+12)
\ 052B CA6401 JP Z,?0020
\ 052E AF XOR A
\ 052F DDB6FA OR (IX-6)
\ 0532 CA6401 JP Z,?0020
\ 0535 ?0089:
\ 0535 ?0088:
\ 0535 ?0086:
281 {
282 callback(slider->value);
\ 0535 FD5E06 LD E,(IY+6)
\ 0538 FD5607 LD D,(IY+7)
\ 053B DD7E0C LD A,(IX+12)
\ 053E DD6E0A LD L,(IX+10)
\ 0541 DD660B LD H,(IX+11)
\ 0544 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
283 value_changed = FALSE;
\ 0547 DD36FA00 LD (IX-6),0
\ 054B ?0087:
284 }
285
286 }//while(1)
287 }
\ 054B C36401 JP LWRD ?0020
288
289
\ 054E END
Errors: none
Warnings: none
Code size: 1358
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?