📄 ui_pop_up_list.s01
字号:
ADD HL,BC
LD E,(HL)
PUSH DE
LD E,3
PUSH DE
LD C,(IY+8)
LD L,(IY+0)
LD H,(IY+1)
PUSH HL
LD L,(IX-14)
LD H,(IX-13)
ADD HL,HL
EX DE,HL
POP HL
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 202. TextOutRect(&tregion ,0);
LD C,0
LD HL,4
ADD HL,SP
EX DE,HL
CALL LWRD TextOutRect
; 203.
; 204. ResShowPic(MENUARR, constX, menu_pos_list[tmp]-1);
LD HL,menu_pos_list
LD C,(IX-30)
LD B,(IX-29)
ADD HL,BC
LD A,(HL)
ADD A,255
LD E,A
PUSH DE
LD C,(IX-4)
LD DE,178
CALL LWRD ?0095
POP AF
; 205.
; 206. tmp = active%6;
LD BC,6
LD E,(IX-32)
LD D,(IX-31)
CALL LWRD ?SS_MOD_L02
LD (IX-30),E
LD (IX-29),D
; 207. ResShowPic(resID, 0, menu_pos_list[tmp]-1);
LD HL,menu_pos_list
ADD HL,DE
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
LD C,B
CALL LWRD ?0096
POP AF
; 208. ResShowPic(MENUARR1, constX, menu_pos_list[tmp]-1);
LD HL,menu_pos_list
LD C,(IX-30)
LD B,(IX-29)
ADD HL,BC
LD A,(HL)
ADD A,255
LD E,A
PUSH DE
LD C,(IX-4)
LD DE,179
CALL LWRD ?0095
POP AF
; 209.
; 210. SetPenColor(Color_WHITE_def);
CALL LWRD ?0097
; 211. SetBackgdColor(0x00003358);
; 212.
; 213. TextOutRect(&tregion ,1);
ADD HL,SP
EX DE,HL
CALL LWRD TextOutRect
; 214. ResShowMultiString(list->strid[active],list->string_id, 3, menu_pos_list[tmp]);
LD HL,menu_pos_list
LD C,(IX-30)
LD B,(IX-29)
ADD HL,BC
LD C,(HL)
PUSH BC
LD C,3
PUSH BC
LD C,(IY+8)
LD L,(IY+0)
LD H,(IY+1)
PUSH HL
LD L,(IX-32)
LD H,(IX-31)
ADD HL,HL
EX DE,HL
POP HL
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 215. TextOutRect(&tregion ,0);
LD C,0
LD HL,4
ADD HL,SP
EX DE,HL
CALL LWRD TextOutRect
; 216.
; 217. if(list->total > LIST_NUM_ONE_PAGE)
LD C,(IY+2)
LD B,(IY+3)
LD HL,6
OR 128
SBC HL,BC
JP PO,?0081
XOR H
?0081:
JP P,?0037
?0033:
; 218. {
; 219. ResShowPic(MENUPTR, 166, 19);
LD C,19
PUSH BC
LD C,166
LD DE,185
CALL LWRD ?0095
POP AF
; 220. key = (list->total-LIST_NUM_ONE_PAGE-1)/LIST_NUM_ONE_PAGE;
CALL LWRD ?0094
; 221. tmp = 113-menuptr_height_list[key]; //注意,最多九级!!!
; 222. if(tmp%(list->total-1)>=active)
JP PO,?0082
XOR H
?0082:
LD C,(IY+2)
LD B,(IY+3)
DEC BC
LD E,(IX-30)
LD D,(IX-29)
CALL LWRD ?SS_DIV_L02
LD B,E
LD A,(IX-32)
JP M,?0036
?0035:
; 223. ResShowPic(MENUPTR1+key, 166, 19+active+(tmp/(list->total-1))*active);
CALL LWRD ?C_MUL_L01
ADD A,(IX-32)
JR ?0089
; 224. else
?0036:
; 225. ResShowPic(MENUPTR1+key, 166, 19+tmp%(list->total-1)+(tmp/(list->total-1))*active);
CALL LWRD ?0101
?0089:
ADD A,19
LD C,A
PUSH BC
LD C,166
LD E,(IX-6)
LD D,0
LD HL,186
ADD HL,DE
EX DE,HL
CALL LWRD ?0095
POP AF
?0037:
?0034:
; 226. }
; 227. //---------------------//
; 228.
; 229. value_changed=FALSE;
LD (IX-3),0
?0029:
; 230. }
; 231. key = ap_get_message();
CALL LWRD ap_get_message
; 232. //handle message
; 233. switch( key)
LD E,A
CALL LWRD ?C_V_SWITCH_L06
DEFW 7
DEFB 5
DEFB 6
DEFB 30
DEFB 33
DEFB 48
DEFB 69
DEFB 70
DEFW ?0068
DEFW ?0039
DEFW ?0051
DEFW ?0064
DEFW ?0090
DEFW ?0065
DEFW ?0039
DEFW ?0051
?0039:
; 234. {
; 235. case AP_KEY_NEXT:
; 236. case AP_KEY_NEXT | AP_KEY_HOLD:
; 237. if(active < list->total - 1)
LD C,(IY+2)
LD B,(IY+3)
DEC BC
LD L,(IX-32)
LD H,(IX-31)
OR 128
SBC HL,BC
JP PO,?0083
XOR H
?0083:
JP P,?0041
?0040:
; 238. {
; 239. active++;
INC (IX-32)
JR NZ,?0084
INC (IX-31)
?0084:
; 240. if(active/LIST_NUM_ONE_PAGE==cur_group)
LD BC,6
LD E,(IX-32)
LD D,(IX-31)
CALL LWRD ?SS_DIV_L02
LD L,(IX-10)
LD H,(IX-9)
AND A
SBC HL,DE
JR NZ,?0092
?0042:
; 241. {
; 242. old_active=active-1;
LD L,(IX-32)
LD H,(IX-31)
DEC HL
LD (IX-14),L
LD (IX-13),H
; 243. value_changed=TRUE;
LD (IX-3),1
; 244. }
; 245. else
JR ?0045
?0043:
; 246. need_draw = TRUE;
?0044:
; 247. }
; 248. else
?0041:
; 249. {
; 250. active = 0;
; 251. need_draw = TRUE;
XOR A
LD (IX-32),A
LD (IX-31),A
?0092:
LD (IX-5),1
?0045:
; 252. }
; 253. if(callback != NULL)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JR Z,?0047
?0046:
; 254. callback(active);
CALL LWRD ?0100
?0047:
?0049:
; 255. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JP Z,?0003
?0050:
; 256. break;
JR ?0047
?0048:
?0051:
; 257.
; 258.
; 259. case AP_KEY_PREV:
; 260. case AP_KEY_PREV | AP_KEY_HOLD:
; 261. if(active > 0)
LD C,(IX-32)
LD B,(IX-31)
LD HL,0
OR 128
SBC HL,BC
JP PO,?0085
XOR H
?0085:
JP P,?0053
?0052:
; 262. {
; 263. active--;
LD L,C
LD H,B
DEC HL
LD (IX-32),L
LD (IX-31),H
; 264. if(active/LIST_NUM_ONE_PAGE==cur_group)
LD BC,6
EX DE,HL
CALL LWRD ?SS_DIV_L02
LD L,(IX-10)
LD H,(IX-9)
AND A
SBC HL,DE
JR NZ,?0093
?0054:
; 265. {
; 266. old_active=active+1;
LD L,(IX-32)
LD H,(IX-31)
INC HL
LD (IX-14),L
LD (IX-13),H
; 267. value_changed=TRUE;
LD (IX-3),1
; 268. }
; 269. else
JR ?0057
?0055:
; 270. need_draw = TRUE;
?0056:
; 271. }
; 272. else
?0053:
; 273. {
; 274. active = list->total - 1;
LD L,(IY+2)
LD H,(IY+3)
DEC HL
LD (IX-32),L
LD (IX-31),H
; 275. need_draw = TRUE;
?0093:
LD (IX-5),1
?0057:
; 276. }
; 277. if(callback != NULL)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JR Z,?0059
?0058:
; 278. callback(active);
CALL LWRD ?0100
?0059:
?0061:
; 279. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JP Z,?0003
?0062:
; 280. break;
JR ?0059
?0060:
?0063:
; 281.
; 282.
; 283.
; 284. case AP_KEY_PLAY | AP_KEY_UP: //取消退出
; 285. SetPenColor(oldDC_sav.PenColor);
; 286. SetBackgdColor(oldDC_sav.BackgdColor);
; 287. ///-SetTextOutMode(0); //设字体不透明
; 288. return RESULT_IGNORE;
; 289.
; 290. case AP_KEY_MODE | AP_KEY_UP: //确认退出
?0064:
; 291. list->active = active;
LD L,(IX-32)
LD (IY+4),L
LD H,(IX-31)
LD (IY+5),H
; 292. SetPenColor(oldDC_sav.PenColor);
CALL LWRD ?0099
; 293. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,14
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD SetBackgdColor
; 294. ///-SetTextOutMode(0); //设字体不透明
; 295. return 0;
LD HL,0
; 296.
; 297. case AP_MSG_WAIT_TIMEOUT:
JR ?0074
?0065:
; 298. if(ui_auto_select)
LD A,(ui_auto_select)
OR A
JP Z,?0003
?0066:
; 299. {
; 300. SetPenColor(oldDC_sav.PenColor);
?0090:
CALL LWRD ?0099
; 301. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,14
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD SetBackgdColor
; 302. ///-SetTextOutMode(0); //设字体不透明
; 303. return RESULT_IGNORE;
LD HL,52
; 304. }
JR ?0074
?0067:
; 305. break;
?0068:
; 306.
; 307. default:
; 308. key = ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD (IX-6),A
; 309. if(key == RESULT_REDRAW) need_drawall = TRUE;
CP 50
JR NZ,?0070
?0069:
LD (IX-2),1
; 310. else
JP LWRD ?0003
?0070:
; 311. if(key != 0)
XOR A
OR (IX-6)
JP Z,?0003
?0072:
; 312. {
; 313. SetPenColor(oldDC_sav.PenColor);
CALL LWRD ?0099
; 314. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,14
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD SetBackgdColor
; 315. ///-SetTextOutMode(0); //设字体不透明
; 316. return key;
LD L,(IX-6)
LD H,0
; 317. }
?0073:
?0071:
?0038:
; 318. }// switch(key)
; 319.
; 320. }//while(1)
; 321. SetPenColor(oldDC_sav.PenColor);
; 322. SetBackgdColor(oldDC_sav.BackgdColor);
; 323. }
?0074:
LD SP,IX
POP IX
POP IY
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0094:
LD L,(IY+2)
LD H,(IY+3)
LD BC,65529
ADD HL,BC
EX DE,HL
LD BC,6
CALL LWRD ?SS_DIV_L02
LD (IX-6),E
LD D,B
LD HL,menuptr_height_list
ADD HL,DE
LD C,(HL)
LD HL,113
AND A
SBC HL,BC
LD (IX-30),L
LD (IX-29),H
LD C,(IY+2)
LD B,(IY+3)
DEC BC
EX DE,HL
CALL LWRD ?SS_MOD_L02
EX DE,HL
LD C,(IX-32)
LD B,(IX-31)
OR 128
SBC HL,BC
RET
?0096:
LD E,(IX-8)
LD D,(IX-7)
?0095:
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0097:
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
LD BC,0
LD DE,13144
CALL LWRD SetBackgdColor
LD C,1
LD HL,4
RET
?0098:
LD BC,0
LD E,C
LD D,B
CALL LWRD SetPenColor
LD BC,0
LD DE,65535
CALL LWRD SetBackgdColor
LD C,1
LD HL,4
RET
?0099:
LD C,(IX-20)
LD B,(IX-19)
LD E,(IX-22)
LD D,(IX-21)
JP LWRD SetPenColor
?0100:
LD E,(IX-32)
LD D,(IX-31)
LD A,(IX+12)
LD L,(IX+10)
LD H,(IX+11)
JP LWRD ?BANK_CALL_DIRECT_L08
?0101:
CALL LWRD ?C_MUL_L01
LD C,(IY+2)
LD B,(IY+3)
DEC BC
LD E,(IX-30)
LD D,(IX-29)
CALL LWRD ?SS_MOD_L02
ADD A,E
RET
RSEG CONST
menu_pos_list:
DEFB 22
DEFB '('
DEFB ':'
DEFB 'L'
DEFB '^'
DEFB 'p'
menulist_bck_pic:
DEFW 45
DEFW 45
DEFW 45
DEFW 45
DEFW 45
DEFW 45
menuptr_height_list:
DEFB 'H'
DEFB '@'
DEFB '8'
DEFB '0'
DEFB '('
DEFB ' '
DEFB 24
DEFB 16
DEFB 8
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -