📄 ui_slider.lst
字号:
\ 02E7 43 DEFB 67
\ 02E8 44 DEFB 68
\ 02E9 45 DEFB 69
\ 02EA 46 DEFB 70
\ 02EB 9B03 DEFW ?0050
\ 02ED 0303 DEFW ?0034
\ 02EF 4703 DEFW ?0040
\ 02F1 0303 DEFW ?0034
\ 02F3 4703 DEFW ?0040
\ 02F5 A503 DEFW ?0069
\ 02F7 A503 DEFW ?0069
\ 02F9 8F03 DEFW ?0047
\ 02FB 0303 DEFW ?0034
\ 02FD 4703 DEFW ?0040
\ 02FF 0303 DEFW ?0034
\ 0301 4703 DEFW ?0040
\ 0303 ?0034:
157 {
158 case AP_KEY_NEXT:
159 case AP_KEY_VOLADD:
160 case AP_KEY_NEXT | AP_KEY_HOLD:
161 case AP_KEY_VOLADD | AP_KEY_HOLD:
162 if((slider->value + slider->step) <= slider->max)
\ 0303 FD6E06 LD L,(IY+6)
\ 0306 FD6607 LD H,(IY+7)
\ 0309 FD4E04 LD C,(IY+4)
\ 030C FD4605 LD B,(IY+5)
\ 030F 09 ADD HL,BC
\ 0310 4D LD C,L
\ 0311 44 LD B,H
\ 0312 FD6E02 LD L,(IY+2)
\ 0315 FD6603 LD H,(IY+3)
\ 0318 F680 OR 128
\ 031A ED42 SBC HL,BC
\ 031C E22003 JP PO,?0063
\ 031F AC XOR H
\ 0320 ?0063:
\ 0320 FA3D03 JP M,?0036
\ 0323 ?0035:
163 {
164 slider->value += slider->step;
\ 0323 210400 LD HL,4
\ 0326 FDE5 PUSH IY
\ 0328 C1 POP BC
\ 0329 09 ADD HL,BC
\ 032A 7E LD A,(HL)
\ 032B FD8606 ADD A,(IY+6)
\ 032E 77 LD (HL),A
\ 032F 23 INC HL
\ 0330 7E LD A,(HL)
\ 0331 FD8E07 ADC A,(IY+7)
\ 0334 77 LD (HL),A
165 value_changed = TRUE;
166 need_draw = TRUE;
\ 0335 DD36F301 LD (IX-13),1
\ 0339 DD36F401 LD (IX-12),1
\ 033D ?0036:
\ 033D ?0038:
167 }
168 while(ap_get_message() != NULL); /*clear message pool */
\ 033D CD0000 CALL LWRD ap_get_message
\ 0340 B7 OR A
\ 0341 287A JR Z,?0054
\ 0343 ?0039:
169 break;
\ 0343 18F8 JR ?0036
\ 0345 ?0037:
\ 0345 1876 JR ?0054
\ 0347 ?0040:
170
171
172 case AP_KEY_PREV:
173 case AP_KEY_VOLSUB:
174 case AP_KEY_PREV | AP_KEY_HOLD:
175 case AP_KEY_VOLSUB | AP_KEY_HOLD:
176 if((slider->value - slider->step) >= slider->min)
\ 0347 FD4E00 LD C,(IY+0)
\ 034A FD4601 LD B,(IY+1)
\ 034D FD5E06 LD E,(IY+6)
\ 0350 FD5607 LD D,(IY+7)
\ 0353 FD6E04 LD L,(IY+4)
\ 0356 FD6605 LD H,(IY+5)
\ 0359 A7 AND A
\ 035A ED52 SBC HL,DE
\ 035C F680 OR 128
\ 035E ED42 SBC HL,BC
\ 0360 E26403 JP PO,?0064
\ 0363 AC XOR H
\ 0364 ?0064:
\ 0364 FA8103 JP M,?0042
\ 0367 ?0041:
177 {
178 slider->value -= slider->step;
\ 0367 210400 LD HL,4
\ 036A FDE5 PUSH IY
\ 036C C1 POP BC
\ 036D 09 ADD HL,BC
\ 036E 7E LD A,(HL)
\ 036F FD9606 SUB (IY+6)
\ 0372 77 LD (HL),A
\ 0373 23 INC HL
\ 0374 7E LD A,(HL)
\ 0375 FD9E07 SBC A,(IY+7)
\ 0378 77 LD (HL),A
179 value_changed = TRUE;
180 need_draw = TRUE;
\ 0379 DD36F301 LD (IX-13),1
\ 037D DD36F401 LD (IX-12),1
\ 0381 ?0042:
\ 0381 ?0044:
181 }
182 while(ap_get_message() != NULL); /*clear message pool */
\ 0381 CD0000 CALL LWRD ap_get_message
\ 0384 B7 OR A
\ 0385 2836 JR Z,?0054
\ 0387 ?0045:
183 break;
\ 0387 18F8 JR ?0042
\ 0389 ?0043:
\ 0389 1832 JR ?0054
\ 038B ?0046:
184
185 // //hold 用来控制加速开关
186 // case AP_KEY_NEXT | AP_KEY_HOLD:
187 // case AP_KEY_VOLADD | AP_KEY_HOLD:
188 // if(hold_state == 0) hold_state = 1;
189 //
190 // break;
191
192 //
193 // case AP_KEY_PREV | AP_KEY_HOLD:
194 // case AP_KEY_VOLSUB | AP_KEY_HOLD:
195 // if(hold_state == 0) hold_state = 2;
196 //
197 // break;
198 //
199
200 // case AP_KEY_NEXT | AP_KEY_UP:
201 // case AP_KEY_VOLADD | AP_KEY_UP:
202 // case AP_KEY_PREV | AP_KEY_UP:
203 // case AP_KEY_VOLSUB | AP_KEY_UP:
204 // hold_state = 0;
205 //
206 // break;
207
208
209 case AP_KEY_MODE | AP_KEY_UP:
210 case AP_KEY_PLAY | AP_KEY_UP:
211 return 0; //ok and return
\ 038B 1818 JR ?0069
212
213
214 case AP_MSG_WAIT_TIMEOUT:
\ 038D 1824 JR ?0059
\ 038F ?0047:
215 if(ui_auto_select) return 0;
\ 038F 3A0000 LD A,(ui_auto_select)
\ 0392 B7 OR A
\ 0393 2828 JR Z,?0054
\ 0395 ?0048:
\ 0395 180E JR ?0069
216
217 break;
\ 0397 181A JR ?0059
\ 0399 ?0049:
\ 0399 1822 JR ?0054
\ 039B ?0050:
218
219
220 default:
221 key = ap_handle_hotkey(key);
\ 039B CD0000 CALL LWRD ap_handle_hotkey
\ 039E DD77F2 LD (IX-14),A
222 if(key == RESULT_REDRAW) //need_draw = TRUE;
\ 03A1 FE2E CP 46
\ 03A3 2005 JR NZ,?0052
\ 03A5 ?0051:
223 {
224 //直接退出,因为控件不能重画背景
225 return 0;
\ 03A5 ?0069:
\ 03A5 210000 LD HL,0
226 }
\ 03A8 1809 JR ?0059
\ 03AA ?0052:
227 else if(key != 0) return key;
\ 03AA AF XOR A
\ 03AB DDB6F2 OR (IX-14)
\ 03AE 280D JR Z,?0054
\ 03B0 ?0053:
\ 03B0 6F LD L,A
\ 03B1 2600 LD H,0
228 }
\ 03B3 ?0059:
\ 03B3 DDF9 LD SP,IX
\ 03B5 DDE1 POP IX
\ 03B7 FDE1 POP IY
\ 03B9 C1 POP BC
\ 03BA C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 03BD ?0054:
\ 03BD ?0033:
229 //ASSERT(slider->value <= slider->max);
230 //ASSERT(slider->value >= slider->min);
231 //
232 // //check if holding
233 // if(hold_state == 1) //holding up
234 // {
235 // if((slider->value + slider->step) <= slider->max)
236 // {
237 // slider->value += slider->step;
238 // value_changed = TRUE;
239 // need_draw = TRUE;
240 //
241 // while(key != NULL)
242 // {
243 // if((key & AP_KEY_UP) != NULL)
244 // hold_state = 0;
245 // key = ap_get_message();
246 // }
247 // }
248 // else
249 // {
250 // hold_state = 0; //disable holding
251 // slider->value=slider->max;
252 // }
253 // }
254 // else if(hold_state == 2) //holding down
255 // {
256 // if((slider->value - slider->step) >= slider->min)
257 // {
258 // slider->value -= slider->step;
259 // value_changed = TRUE;
260 // need_draw = TRUE;
261 //
262 // while(key != NULL)
263 // {
264 // if((key & AP_KEY_UP) != NULL)
265 // hold_state = 0;
266 // key = ap_get_message();
267 // }
268 // }
269 // else
270 // {
271 // hold_state = 0; //disable holding
272 // slider->value=slider->min;
273 // }
274 // }
275 //handle callback
276 if(callback != NULL && value_changed)
\ 03BD DD7E0A LD A,(IX+10)
\ 03C0 DDB60B OR (IX+11)
\ 03C3 DDB60C OR (IX+12)
\ 03C6 CAD900 JP Z,?0010
\ 03C9 AF XOR A
\ 03CA DDB6F3 OR (IX-13)
\ 03CD CAD900 JP Z,?0010
\ 03D0 ?0058:
\ 03D0 ?0057:
\ 03D0 ?0055:
277 {
278 callback(slider->value);
\ 03D0 FD5E04 LD E,(IY+4)
\ 03D3 FD5605 LD D,(IY+5)
\ 03D6 DD7E0C LD A,(IX+12)
\ 03D9 DD6E0A LD L,(IX+10)
\ 03DC DD660B LD H,(IX+11)
\ 03DF CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
279 value_changed = FALSE;
\ 03E2 DD36F300 LD (IX-13),0
\ 03E6 ?0056:
280 }
281
282 }//while(1)
283 //return 0;
284 }
\ 03E6 C3D900 JP LWRD ?0010
285
286
\ 0000 RSEG CONST
\ 0000 ?0007:
\ 0000 00 DEFB 0
\ 0001 10 DEFB 16
\ 0002 80 DEFB 128
\ 0003 10 DEFB 16
\ 0004 ?0008:
\ 0004 2C DEFB ','
\ 0005 08 DEFB 8
\ 0006 28 DEFB '('
\ 0007 08 DEFB 8
\ 0008 END
Errors: none
Warnings: none
Code size: 1001
Constant size: 8
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -