📄 ui_slider.lst
字号:
\ 02DA FD9E09 SBC A,(IY+9)
\ 02DD 77 LD (HL),A
183 value_changed = TRUE;
184 need_draw = TRUE;
\ 02DE DD36FA01 LD (IX-6),1
\ 02E2 DD36FB01 LD (IX-5),1
\ 02E6 ?0048:
185 }
186
187 break;
\ 02E6 1843 JR ?0064
\ 02E8 ?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;
\ 02E8 AF XOR A
\ 02E9 DDB6F9 OR (IX-7)
\ 02EC 203D JR NZ,?0064
\ 02EE ?0050:
\ 02EE DD36F901 LD (IX-7),1
\ 02F2 ?0051:
193
194 break;
\ 02F2 1837 JR ?0064
\ 02F4 ?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;
\ 02F4 AF XOR A
\ 02F5 DDB6F9 OR (IX-7)
\ 02F8 2031 JR NZ,?0064
\ 02FA ?0053:
\ 02FA DD36F902 LD (IX-7),2
\ 02FE ?0054:
200
201 break;
\ 02FE 182B JR ?0064
\ 0300 ?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;
\ 0300 DD36F900 LD (IX-7),0
209
210 break;
\ 0304 1825 JR ?0064
\ 0306 ?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:
\ 0306 ?0057:
219 if(ui_auto_select) return 0;
\ 0306 3A0000 LD A,(ui_auto_select)
\ 0309 B7 OR A
\ 030A 281F JR Z,?0064
\ 030C ?0058:
\ 030C 180A JR ?0100
220
221 break;
\ 030E ?0059:
\ 030E ?0060:
222
223
224 default:
225 key = ap_handle_hotkey(key);
\ 030E CD0000 CALL LWRD ap_handle_hotkey
\ 0311 DD77F8 LD (IX-8),A
226 if(key == RESULT_REDRAW) //need_draw = TRUE;
\ 0314 FE32 CP 50
\ 0316 2005 JR NZ,?0062
\ 0318 ?0061:
227 {
228 //直接退出,因为控件不能重画背景
229 return 0;
\ 0318 ?0100:
\ 0318 210000 LD HL,0
230 }
\ 031B 1809 JR ?0090
\ 031D ?0062:
231 else if(key != 0) return key;
\ 031D AF XOR A
\ 031E DDB6F8 OR (IX-8)
\ 0321 2808 JR Z,?0064
\ 0323 ?0063:
\ 0323 6F LD L,A
\ 0324 2600 LD H,0
232 }
\ 0326 ?0090:
\ 0326 FDE1 POP IY
\ 0328 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 032B ?0064:
\ 032B ?0042:
233
234
235 //check if holding
236 if(hold_state == 1) //holding up
\ 032B DD46F9 LD B,(IX-7)
\ 032E 05 DEC B
\ 032F 2046 JR NZ,?0066
\ 0331 ?0065:
237 {
238 if((slider->value + slider->step) <= slider->max)
\ 0331 CD1704 CALL LWRD ?0109
\ 0334 382F JR C,?0068
\ 0336 ?0067:
239 {
240 slider->value += slider->step;
\ 0336 210600 LD HL,6
\ 0339 FDE5 PUSH IY
\ 033B C1 POP BC
\ 033C 09 ADD HL,BC
\ 033D 7E LD A,(HL)
\ 033E FD8608 ADD A,(IY+8)
\ 0341 77 LD (HL),A
\ 0342 23 INC HL
\ 0343 7E LD A,(HL)
\ 0344 FD8E09 ADC A,(IY+9)
\ 0347 77 LD (HL),A
241 value_changed = TRUE;
242 need_draw = TRUE;
\ 0348 DD36FA01 LD (IX-6),1
\ 034C DD36FB01 LD (IX-5),1
\ 0350 ?0070:
243
244 while(key != NULL)
\ 0350 AF XOR A
\ 0351 DDB6F8 OR (IX-8)
\ 0354 281F JR Z,?0074
\ 0356 ?0071:
245 {
246 if((key & AP_KEY_UP) != NULL)
\ 0356 DDCBF86E BIT 5,(IX-8)
\ 035A 2804 JR Z,?0073
\ 035C ?0072:
247 hold_state = 0;
\ 035C DD36F900 LD (IX-7),0
\ 0360 ?0073:
248 key = ap_get_message();
\ 0360 CD1004 CALL LWRD ?0108
249 }
250 }
\ 0363 18EB JR ?0070
\ 0365 ?0069:
251 else
\ 0365 ?0068:
252 {
253 hold_state = 0; //disable holding
254 slider->value=slider->max;
\ 0365 FD6E04 LD L,(IY+4)
\ 0368 FD6605 LD H,(IY+5)
\ 036B FD7506 LD (IY+6),L
\ 036E FD7407 LD (IY+7),H
\ 0371 DD36F900 LD (IX-7),0
\ 0375 ?0074:
\ 0375 1860 JR ?0085
\ 0377 ?0066:
255 }
256 }
257 else if(hold_state == 2) //holding down
\ 0377 DD46F9 LD B,(IX-7)
\ 037A 05 DEC B
\ 037B 05 DEC B
\ 037C 2059 JR NZ,?0085
\ 037E ?0076:
258 {
259 if((slider->value - slider->step) >= slider->min)
\ 037E FD4E02 LD C,(IY+2)
\ 0381 FD4603 LD B,(IY+3)
\ 0384 FD5E08 LD E,(IY+8)
\ 0387 FD5609 LD D,(IY+9)
\ 038A FD6E06 LD L,(IY+6)
\ 038D FD6607 LD H,(IY+7)
\ 0390 A7 AND A
\ 0391 ED52 SBC HL,DE
\ 0393 CD0000 CALL LWRD ?SS_CMP_L02
\ 0396 382F JR C,?0079
\ 0398 ?0078:
260 {
261 slider->value -= slider->step;
\ 0398 210600 LD HL,6
\ 039B FDE5 PUSH IY
\ 039D C1 POP BC
\ 039E 09 ADD HL,BC
\ 039F 7E LD A,(HL)
\ 03A0 FD9608 SUB (IY+8)
\ 03A3 77 LD (HL),A
\ 03A4 23 INC HL
\ 03A5 7E LD A,(HL)
\ 03A6 FD9E09 SBC A,(IY+9)
\ 03A9 77 LD (HL),A
262 value_changed = TRUE;
263 need_draw = TRUE;
\ 03AA DD36FA01 LD (IX-6),1
\ 03AE DD36FB01 LD (IX-5),1
\ 03B2 ?0081:
264
265 while(key != NULL)
\ 03B2 AF XOR A
\ 03B3 DDB6F8 OR (IX-8)
\ 03B6 281F JR Z,?0085
\ 03B8 ?0082:
266 {
267 if((key & AP_KEY_UP) != NULL)
\ 03B8 DDCBF86E BIT 5,(IX-8)
\ 03BC 2804 JR Z,?0084
\ 03BE ?0083:
268 hold_state = 0;
\ 03BE DD36F900 LD (IX-7),0
\ 03C2 ?0084:
269 key = ap_get_message();
\ 03C2 CD1004 CALL LWRD ?0108
270 }
271 }
\ 03C5 18EB JR ?0081
\ 03C7 ?0080:
272 else
\ 03C7 ?0079:
273 {
274 hold_state = 0; //disable holding
275 slider->value=slider->min;
\ 03C7 FD6E02 LD L,(IY+2)
\ 03CA FD6603 LD H,(IY+3)
\ 03CD FD7506 LD (IY+6),L
\ 03D0 FD7407 LD (IY+7),H
\ 03D3 DD36F900 LD (IX-7),0
\ 03D7 ?0085:
\ 03D7 ?0077:
\ 03D7 ?0075:
276 }
277 }
278
279 //handle callback
280 if(callback != NULL && value_changed)
\ 03D7 DD7E0A LD A,(IX+10)
\ 03DA DDB60B OR (IX+11)
\ 03DD DDB60C OR (IX+12)
\ 03E0 281C JR Z,?0087
\ 03E2 AF XOR A
\ 03E3 DDB6FA OR (IX-6)
\ 03E6 2816 JR Z,?0087
\ 03E8 ?0089:
\ 03E8 ?0088:
\ 03E8 ?0086:
281 {
282 callback(slider->value);
\ 03E8 FD5E06 LD E,(IY+6)
\ 03EB FD5607 LD D,(IY+7)
\ 03EE DD7E0C LD A,(IX+12)
\ 03F1 DD6E0A LD L,(IX+10)
\ 03F4 DD660B LD H,(IX+11)
\ 03F7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
283 value_changed = FALSE;
\ 03FA DD36FA00 LD (IX-6),0
\ 03FE ?0087:
284 }
285
286 }//while(1)
287 }
\ 03FE C31401 JP LWRD ?0020
\ 0401 ?0107:
\ 0401 1600 LD D,0
\ 0403 ?0106:
\ 0403 215A00 LD HL,90
\ 0406 19 ADD HL,DE
\ 0407 EB EX DE,HL
\ 0408 ?0105:
\ 0408 3E00 LD A,BYTE3 main_ResShowPic
\ 040A 210000 LD HL,LWRD main_ResShowPic
\ 040D C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0410 ?0108:
\ 0410 CD0000 CALL LWRD ap_get_message
\ 0413 DD77F8 LD (IX-8),A
\ 0416 C9 RET
\ 0417 ?0109:
\ 0417 FD6E08 LD L,(IY+8)
\ 041A FD6609 LD H,(IY+9)
\ 041D FD4E06 LD C,(IY+6)
\ 0420 FD4607 LD B,(IY+7)
\ 0423 09 ADD HL,BC
\ 0424 4D LD C,L
\ 0425 44 LD B,H
\ 0426 FD6E04 LD L,(IY+4)
\ 0429 FD6605 LD H,(IY+5)
\ 042C C30000 JP LWRD ?SS_CMP_L02
288
289
\ 042F END
Errors: none
Warnings: none
Code size: 1071
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -