📄 ui_slider.s01
字号:
POP AF
; 137. main_ResShowPic(FMNUM0+file_name[1]-0x30,98,80);
LD C,80
PUSH BC
LD C,98
LD DE,(file_name+1)
CALL LWRD ?0112
POP AF
; 138. main_ResShowPic(FMNUM0+file_name[2]-0x30,121,80);
LD C,80
PUSH BC
LD C,121
LD DE,(file_name+2)
?0091:
LD D,0
?0102:
LD HL,9
?0094:
ADD HL,DE
EX DE,HL
?0108:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
?0104:
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0033:
?0027:
; 139. }
; 140. need_draw = FALSE;
LD (IX-9),0
?0024:
; 141. }
; 142.
; 143. //handle message
; 144. key = ap_get_message();
CALL LWRD ap_get_message
LD (IX-12),A
; 145. switch( key)
LD E,A
CALL LWRD ?C_V_SWITCH_L06
DEFW 15
DEFB 3
DEFB 4
DEFB 5
DEFB 6
DEFB 30
DEFB 33
DEFB 35
DEFB 36
DEFB 37
DEFB 38
DEFB 48
DEFB 67
DEFB 68
DEFB 69
DEFB 70
DEFW ?0052
DEFW ?0041
DEFW ?0044
DEFW ?0041
DEFW ?0044
DEFW ?0093
DEFW ?0047
DEFW ?0047
DEFW ?0047
DEFW ?0047
DEFW ?0093
DEFW ?0049
DEFW ?0035
DEFW ?0038
DEFW ?0035
DEFW ?0038
?0035:
; 146. {
; 147. case AP_KEY_NEXT:
; 148. case AP_KEY_VOLADD:
; 149. if((slider->value + slider->step) <= slider->max)
LD L,(IY+8)
LD H,(IY+9)
LD C,(IY+6)
LD B,(IY+7)
ADD HL,BC
LD C,L
LD B,H
LD L,(IY+4)
LD H,(IY+5)
OR 128
SBC HL,BC
JP PO,?0086
XOR H
?0086:
JP M,?0056
?0036:
; 150. {
; 151. slider->value += slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,(IY+8)
LD (HL),A
INC HL
LD A,(HL)
ADC A,(IY+9)
JR ?0100
; 152. value_changed = TRUE;
; 153. need_draw = TRUE;
LD (IX-10),1
JR ?0105
?0037:
; 154. }
; 155.
; 156. break;
JP LWRD ?0056
?0038:
; 157.
; 158.
; 159. case AP_KEY_PREV:
; 160. case AP_KEY_VOLSUB:
; 161. if((slider->value - slider->step) >= slider->min)
LD C,(IY+2)
LD B,(IY+3)
LD E,(IY+8)
LD D,(IY+9)
LD L,(IY+6)
LD H,(IY+7)
AND A
SBC HL,DE
OR 128
SBC HL,BC
JP PO,?0087
XOR H
?0087:
JP M,?0056
?0039:
; 162. {
; 163. slider->value -= slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
SUB (IY+8)
LD (HL),A
INC HL
LD A,(HL)
SBC A,(IY+9)
?0100:
LD (HL),A
; 164. value_changed = TRUE;
; 165. need_draw = TRUE;
LD (IX-10),1
?0105:
LD (IX-9),1
?0040:
; 166. }
; 167.
; 168. break;
JR ?0056
?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;
XOR A
OR (IX-11)
JR NZ,?0056
?0042:
LD (IX-11),1
?0043:
; 174.
; 175. break;
JR ?0056
?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;
XOR A
OR (IX-11)
JR NZ,?0056
?0045:
LD (IX-11),2
?0046:
; 181.
; 182. break;
JR ?0056
?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;
LD (IX-11),0
; 190.
; 191. break;
JR ?0056
?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
JR ?0093
; 197.
; 198.
; 199. case AP_MSG_WAIT_TIMEOUT:
JR ?0082
?0049:
; 200. if(ui_auto_select) return 0;
LD A,(ui_auto_select)
OR A
JR Z,?0056
?0050:
JR ?0093
; 201.
; 202. break;
JR ?0082
?0051:
JR ?0056
?0052:
; 203.
; 204.
; 205. default:
; 206. key = ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD (IX-12),A
; 207. if(key == RESULT_REDRAW) //need_draw = TRUE;
CP 50
JR NZ,?0054
?0053:
; 208. {
; 209. //直接退出,因为控件不能重画背景
; 210. return 0;
?0093:
LD HL,0
; 211. }
JR ?0082
?0054:
; 212. else if(key != 0) return key;
XOR A
OR (IX-12)
JR Z,?0056
?0055:
LD L,A
LD H,0
; 213. }
?0082:
LD SP,IX
POP IX
POP IY
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0056:
?0034:
; 214.
; 215.
; 216. //check if holding
; 217. if(hold_state == 1) //holding up
LD B,(IX-11)
DEC B
JR NZ,?0058
?0057:
; 218. {
; 219. if((slider->value + slider->step) <= slider->max)
LD L,(IY+8)
LD H,(IY+9)
LD C,(IY+6)
LD B,(IY+7)
ADD HL,BC
LD C,L
LD B,H
LD L,(IY+4)
LD H,(IY+5)
OR 128
SBC HL,BC
JP PO,?0088
XOR H
?0088:
JP M,?0071
?0059:
; 220. {
; 221. slider->value += slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,(IY+8)
LD (HL),A
INC HL
LD A,(HL)
ADC A,(IY+9)
LD (HL),A
; 222. value_changed = TRUE;
; 223. need_draw = TRUE;
LD (IX-10),1
LD (IX-9),1
?0062:
; 224.
; 225. while(key != NULL)
XOR A
OR (IX-12)
JR Z,?0077
?0063:
; 226. {
; 227. if((key & AP_KEY_UP) != NULL)
BIT 5,(IX-12)
JR Z,?0065
?0064:
; 228. hold_state = 0;
LD (IX-11),0
?0065:
; 229. key = ap_get_message();
CALL LWRD ap_get_message
LD (IX-12),A
; 230. }
; 231. }
JR ?0062
?0061:
JR ?0077
?0060:
; 232. else hold_state = 0; //disable holding
JR ?0071
?0066:
JR ?0077
?0058:
; 233. }
; 234. else if(hold_state == 2) //holding down
LD B,(IX-11)
DEC B
DEC B
JR NZ,?0077
?0068:
; 235. {
; 236. if((slider->value - slider->step) >= slider->min)
LD C,(IY+2)
LD B,(IY+3)
LD E,(IY+8)
LD D,(IY+9)
LD L,(IY+6)
LD H,(IY+7)
AND A
SBC HL,DE
OR 128
SBC HL,BC
JP PO,?0089
XOR H
?0089:
JP M,?0071
?0070:
; 237. {
; 238. slider->value -= slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
SUB (IY+8)
LD (HL),A
INC HL
LD A,(HL)
SBC A,(IY+9)
LD (HL),A
; 239. value_changed = TRUE;
; 240. need_draw = TRUE;
LD (IX-10),1
LD (IX-9),1
?0073:
; 241.
; 242. while(key != NULL)
XOR A
OR (IX-12)
JR Z,?0077
?0074:
; 243. {
; 244. if((key & AP_KEY_UP) != NULL)
BIT 5,(IX-12)
JR Z,?0076
?0075:
; 245. hold_state = 0;
LD (IX-11),0
?0076:
; 246. key = ap_get_message();
CALL LWRD ap_get_message
LD (IX-12),A
; 247. }
; 248. }
JR ?0073
?0072:
JR ?0077
?0071:
; 249. else hold_state = 0; //disable holding
LD (IX-11),0
?0077:
?0069:
?0067:
; 250. }
; 251.
; 252. //handle callback
; 253. if(callback != NULL && value_changed)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JP Z,?0021
XOR A
OR (IX-10)
JP Z,?0021
?0081:
?0080:
?0078:
; 254. {
; 255. callback(slider->value);
LD E,(IY+6)
LD D,(IY+7)
LD A,(IX+12)
LD L,(IX+10)
LD H,(IX+11)
CALL LWRD ?BANK_CALL_DIRECT_L08
; 256. value_changed = FALSE;
LD (IX-10),0
?0079:
; 257. }
; 258.
; 259. }//while(1)
; 260. }
JP LWRD ?0021
?0112:
LD D,0
?0111:
LD HL,9
ADD HL,DE
EX DE,HL
?0110:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
; 261.
; 262.
RSEG CONST
?0019:
DEFB ','
DEFB 16
DEFB '('
DEFB 16
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -