📄 ui_slider.lst
字号:
164 value_changed = TRUE;
165 need_draw = TRUE;
\ 02F2 DD36F601 LD (IX-10),1
\ 02F6 DD36F701 LD (IX-9),1
\ 02FA ?0040:
166 }
167
168 break;
\ 02FA 184B JR ?0056
\ 02FC ?0041:
169
170 //hold 用来控制加速开关
171 case AP_KEY_NEXT | AP_KEY_HOLD:
172 case AP_KEY_VOLADD | AP_KEY_HOLD:
173 if(hold_state == 0) hold_state = 1;
\ 02FC AF XOR A
\ 02FD DDB6F5 OR (IX-11)
\ 0300 2045 JR NZ,?0056
\ 0302 ?0042:
\ 0302 DD36F501 LD (IX-11),1
\ 0306 ?0043:
174
175 break;
\ 0306 183F JR ?0056
\ 0308 ?0044:
176
177
178 case AP_KEY_PREV | AP_KEY_HOLD:
179 case AP_KEY_VOLSUB | AP_KEY_HOLD:
180 if(hold_state == 0) hold_state = 2;
\ 0308 AF XOR A
\ 0309 DDB6F5 OR (IX-11)
\ 030C 2039 JR NZ,?0056
\ 030E ?0045:
\ 030E DD36F502 LD (IX-11),2
\ 0312 ?0046:
181
182 break;
\ 0312 1833 JR ?0056
\ 0314 ?0047:
183
184
185 case AP_KEY_NEXT | AP_KEY_UP:
186 case AP_KEY_VOLADD | AP_KEY_UP:
187 case AP_KEY_PREV | AP_KEY_UP:
188 case AP_KEY_VOLSUB | AP_KEY_UP:
189 hold_state = 0;
\ 0314 DD36F500 LD (IX-11),0
190
191 break;
\ 0318 182D JR ?0056
\ 031A ?0048:
192
193
194 case AP_KEY_MODE | AP_KEY_UP:
195 case AP_KEY_PLAY | AP_KEY_UP:
196 return 0; //ok and return
\ 031A 1818 JR ?0089
197
198
199 case AP_MSG_WAIT_TIMEOUT:
\ 031C 1824 JR ?0082
\ 031E ?0049:
200 if(ui_auto_select) return 0;
\ 031E 3A0000 LD A,(ui_auto_select)
\ 0321 B7 OR A
\ 0322 2823 JR Z,?0056
\ 0324 ?0050:
\ 0324 180E JR ?0089
201
202 break;
\ 0326 181A JR ?0082
\ 0328 ?0051:
\ 0328 181D JR ?0056
\ 032A ?0052:
203
204
205 default:
206 key = ap_handle_hotkey(key);
\ 032A CD0000 CALL LWRD ap_handle_hotkey
\ 032D DD77F4 LD (IX-12),A
207 if(key == RESULT_REDRAW) //need_draw = TRUE;
\ 0330 FE32 CP 50
\ 0332 2005 JR NZ,?0054
\ 0334 ?0053:
208 {
209 //直接退出,因为控件不能重画背景
210 return 0;
\ 0334 ?0089:
\ 0334 210000 LD HL,0
211 }
\ 0337 1809 JR ?0082
\ 0339 ?0054:
212 else if(key != 0) return key;
\ 0339 AF XOR A
\ 033A DDB6F4 OR (IX-12)
\ 033D 2808 JR Z,?0056
\ 033F ?0055:
\ 033F 6F LD L,A
\ 0340 2600 LD H,0
213 }
\ 0342 ?0082:
\ 0342 FDE1 POP IY
\ 0344 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0347 ?0056:
\ 0347 ?0034:
214
215
216 //check if holding
217 if(hold_state == 1) //holding up
\ 0347 DD46F5 LD B,(IX-11)
\ 034A 05 DEC B
\ 034B 203A JR NZ,?0058
\ 034D ?0057:
218 {
219 if((slider->value + slider->step) <= slider->max)
\ 034D CD1D04 CALL LWRD ?0108
\ 0350 3831 JR C,?0060
\ 0352 ?0059:
220 {
221 slider->value += slider->step;
\ 0352 210600 LD HL,6
\ 0355 FDE5 PUSH IY
\ 0357 C1 POP BC
\ 0358 09 ADD HL,BC
\ 0359 7E LD A,(HL)
\ 035A FD8608 ADD A,(IY+8)
\ 035D 77 LD (HL),A
\ 035E 23 INC HL
\ 035F 7E LD A,(HL)
\ 0360 FD8E09 ADC A,(IY+9)
\ 0363 77 LD (HL),A
222 value_changed = TRUE;
223 need_draw = TRUE;
\ 0364 DD36F601 LD (IX-10),1
\ 0368 DD36F701 LD (IX-9),1
\ 036C ?0062:
224
225 while(key != NULL)
\ 036C AF XOR A
\ 036D DDB6F4 OR (IX-12)
\ 0370 286B JR Z,?0077
\ 0372 ?0063:
226 {
227 if((key & AP_KEY_UP) != NULL)
\ 0372 DDCBF46E BIT 5,(IX-12)
\ 0376 2804 JR Z,?0065
\ 0378 ?0064:
228 hold_state = 0;
\ 0378 DD36F500 LD (IX-11),0
\ 037C ?0065:
229 key = ap_get_message();
\ 037C CD1604 CALL LWRD ?0107
230 }
231 }
\ 037F 18EB JR ?0062
\ 0381 ?0061:
\ 0381 185A JR ?0077
\ 0383 ?0060:
232 else hold_state = 0; //disable holding
\ 0383 1854 JR ?0071
\ 0385 ?0066:
\ 0385 1856 JR ?0077
\ 0387 ?0058:
233 }
234 else if(hold_state == 2) //holding down
\ 0387 DD46F5 LD B,(IX-11)
\ 038A 05 DEC B
\ 038B 05 DEC B
\ 038C 204F JR NZ,?0077
\ 038E ?0068:
235 {
236 if((slider->value - slider->step) >= slider->min)
\ 038E FD4E02 LD C,(IY+2)
\ 0391 FD4603 LD B,(IY+3)
\ 0394 FD5E08 LD E,(IY+8)
\ 0397 FD5609 LD D,(IY+9)
\ 039A FD6E06 LD L,(IY+6)
\ 039D FD6607 LD H,(IY+7)
\ 03A0 A7 AND A
\ 03A1 ED52 SBC HL,DE
\ 03A3 CD0000 CALL LWRD ?SS_CMP_L02
\ 03A6 3831 JR C,?0071
\ 03A8 ?0070:
237 {
238 slider->value -= slider->step;
\ 03A8 210600 LD HL,6
\ 03AB FDE5 PUSH IY
\ 03AD C1 POP BC
\ 03AE 09 ADD HL,BC
\ 03AF 7E LD A,(HL)
\ 03B0 FD9608 SUB (IY+8)
\ 03B3 77 LD (HL),A
\ 03B4 23 INC HL
\ 03B5 7E LD A,(HL)
\ 03B6 FD9E09 SBC A,(IY+9)
\ 03B9 77 LD (HL),A
239 value_changed = TRUE;
240 need_draw = TRUE;
\ 03BA DD36F601 LD (IX-10),1
\ 03BE DD36F701 LD (IX-9),1
\ 03C2 ?0073:
241
242 while(key != NULL)
\ 03C2 AF XOR A
\ 03C3 DDB6F4 OR (IX-12)
\ 03C6 2815 JR Z,?0077
\ 03C8 ?0074:
243 {
244 if((key & AP_KEY_UP) != NULL)
\ 03C8 DDCBF46E BIT 5,(IX-12)
\ 03CC 2804 JR Z,?0076
\ 03CE ?0075:
245 hold_state = 0;
\ 03CE DD36F500 LD (IX-11),0
\ 03D2 ?0076:
246 key = ap_get_message();
\ 03D2 CD1604 CALL LWRD ?0107
247 }
248 }
\ 03D5 18EB JR ?0073
\ 03D7 ?0072:
\ 03D7 1804 JR ?0077
\ 03D9 ?0071:
249 else hold_state = 0; //disable holding
\ 03D9 DD36F500 LD (IX-11),0
\ 03DD ?0077:
\ 03DD ?0069:
\ 03DD ?0067:
250 }
251
252 //handle callback
253 if(callback != NULL && value_changed)
\ 03DD DD7E0A LD A,(IX+10)
\ 03E0 DDB60B OR (IX+11)
\ 03E3 DDB60C OR (IX+12)
\ 03E6 281C JR Z,?0079
\ 03E8 AF XOR A
\ 03E9 DDB6F6 OR (IX-10)
\ 03EC 2816 JR Z,?0079
\ 03EE ?0081:
\ 03EE ?0080:
\ 03EE ?0078:
254 {
255 callback(slider->value);
\ 03EE FD5E06 LD E,(IY+6)
\ 03F1 FD5607 LD D,(IY+7)
\ 03F4 DD7E0C LD A,(IX+12)
\ 03F7 DD6E0A LD L,(IX+10)
\ 03FA DD660B LD H,(IX+11)
\ 03FD CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
256 value_changed = FALSE;
\ 0400 DD36F600 LD (IX-10),0
\ 0404 ?0079:
257 }
258
259 }//while(1)
260 }
\ 0404 C32401 JP LWRD ?0021
\ 0407 ?0106:
\ 0407 1600 LD D,0
\ 0409 ?0105:
\ 0409 210900 LD HL,9
\ 040C 19 ADD HL,DE
\ 040D EB EX DE,HL
\ 040E ?0104:
\ 040E 3E00 LD A,BYTE3 main_ResShowPic
\ 0410 210000 LD HL,LWRD main_ResShowPic
\ 0413 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0416 ?0107:
\ 0416 CD0000 CALL LWRD ap_get_message
\ 0419 DD77F4 LD (IX-12),A
\ 041C C9 RET
\ 041D ?0108:
\ 041D FD6E08 LD L,(IY+8)
\ 0420 FD6609 LD H,(IY+9)
\ 0423 FD4E06 LD C,(IY+6)
\ 0426 FD4607 LD B,(IY+7)
\ 0429 09 ADD HL,BC
\ 042A 4D LD C,L
\ 042B 44 LD B,H
\ 042C FD6E04 LD L,(IY+4)
\ 042F FD6605 LD H,(IY+5)
\ 0432 C30000 JP LWRD ?SS_CMP_L02
261
262
\ 0000 RSEG CONST
\ 0000 ?0019:
\ 0000 2C DEFB ','
\ 0001 10 DEFB 16
\ 0002 28 DEFB '('
\ 0003 10 DEFB 16
\ 0004 END
Errors: none
Warnings: none
Code size: 1077
Constant size: 4
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -