📄 ui_pop_up_list.s01
字号:
CALL LWRD ?0067
POP AF
; 112. ResShowPic(MENURARR, menu_ptr_x_def, menu_pos_list[i]);
LD HL,menu_pos_list
LD C,(IX-22)
LD B,(IX-21)
ADD HL,BC
LD E,(HL)
PUSH DE
LD C,10
LD DE,108
CALL LWRD ?0067
POP AF
; 113. }
; 114.
; 115.
; 116. SetPenColor(Color_WHITE_def);
CALL LWRD ?0069
; 117. ResShowMultiString(list->strid[active], list->string_id,
; 118. menu_str_x_def, menu_pos_list[i]-1);
LD HL,menu_pos_list
LD C,(IX-22)
LD B,(IX-21)
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
LD C,32
PUSH BC
LD C,(IY+8)
LD L,(IY+0)
LD H,(IY+1)
PUSH HL
LD L,(IX-24)
LD H,(IX-23)
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
; 119. SetPenColor(Color_WHITE_def);
CALL LWRD ?0069
; 120.
; 121. }
; 122. else
JR ?0021
?0020:
; 123. {
; 124. ResShowPic(MENUARR1+i, menu_ptr_x_def, menu_pos_list[i]);
LD E,(HL)
PUSH DE
LD C,10
LD HL,94
LD E,(IX-22)
LD D,B
ADD HL,DE
EX DE,HL
CALL LWRD ?0067
POP AF
; 125. ResShowMultiString(list->strid[n+i], list->string_id,
; 126. menu_str_x_def, menu_pos_list[i]-3);
LD HL,menu_pos_list
LD C,(IX-22)
LD B,(IX-21)
ADD HL,BC
LD A,(HL)
ADD A,253
LD E,A
PUSH DE
LD E,32
PUSH DE
LD C,(IY+8)
LD L,(IY+0)
LD H,(IY+1)
PUSH HL
LD L,(IX-22)
LD H,B
LD E,(IX-12)
LD D,(IX-11)
ADD HL,DE
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
?0021:
INC (IX-22)
JR NZ,?0061
INC (IX-21)
?0061:
JP LWRD ?0014
?0013:
; 127. }
; 128. }
; 129.
; 130. need_draw = FALSE;
LD (IX-4),0
?0010:
; 131. }//need draw
; 132. if(value_changed)
XOR A
OR (IX-2)
JR Z,?0023
?0022:
; 133. {
; 134. show_active_list1(list,old_active,active);
LD L,(IX-24)
LD H,(IX-23)
PUSH HL
LD C,(IX-8)
LD B,(IX-7)
PUSH IY
POP DE
LD A,BYTE3 show_active_list1
LD HL,LWRD show_active_list1
CALL LWRD ?BANK_CALL_DIRECT_L08
POP HL
; 135. value_changed=FALSE;
LD (IX-2),0
?0023:
; 136. }
; 137. key = ap_get_message();
CALL LWRD ap_get_message
; 138. //handle message
; 139. 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 ?0054
DEFW ?0025
DEFW ?0037
DEFW ?0050
DEFW ?0063
DEFW ?0051
DEFW ?0025
DEFW ?0037
?0025:
; 140. {
; 141. case AP_KEY_NEXT:
; 142. case AP_KEY_NEXT | AP_KEY_HOLD:
; 143. if(active < list->total - 1)
LD C,(IY+2)
LD B,(IY+3)
DEC BC
LD L,(IX-24)
LD H,(IX-23)
CALL LWRD ?SS_CMP_L02
JR NC,?0027
?0026:
; 144. {
; 145. active++;
INC (IX-24)
JR NZ,?0062
INC (IX-23)
?0062:
; 146. if(active/LIST_NUM_ONE_PAGE==cur_group)
LD BC,6
LD E,(IX-24)
LD D,(IX-23)
CALL LWRD ?0071
JR NZ,?0064
?0028:
; 147. {
; 148. old_active=active-1;
LD L,(IX-24)
LD H,(IX-23)
DEC HL
LD (IX-8),L
LD (IX-7),H
; 149. value_changed=TRUE;
LD (IX-2),1
; 150. }
; 151. else
JR ?0031
?0029:
; 152. need_draw = TRUE;
?0030:
; 153. }
; 154. else
?0027:
; 155. {
; 156. active = 0;
; 157. need_draw = TRUE;
XOR A
LD (IX-24),A
LD (IX-23),A
?0064:
LD (IX-4),1
?0031:
; 158. }
; 159. if(callback != NULL)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JR Z,?0033
?0032:
; 160. callback(active);
CALL LWRD ?0073
?0033:
?0035:
; 161. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JR NZ,?0033
?0036:
; 162. break;
?0034:
JP LWRD ?0005
; 163.
; 164. break;
?0037:
; 165.
; 166. case AP_KEY_PREV:
; 167. case AP_KEY_PREV | AP_KEY_HOLD:
; 168. if(active > 0)
LD C,(IX-24)
LD B,(IX-23)
LD HL,0
CALL LWRD ?SS_CMP_L02
JR NC,?0039
?0038:
; 169. {
; 170. active--;
LD L,C
LD H,B
DEC HL
LD (IX-24),L
LD (IX-23),H
; 171. if(active/LIST_NUM_ONE_PAGE==cur_group)
LD BC,6
EX DE,HL
CALL LWRD ?0071
JR NZ,?0065
?0040:
; 172. {
; 173. old_active=active+1;
LD L,(IX-24)
LD H,(IX-23)
INC HL
LD (IX-8),L
LD (IX-7),H
; 174. value_changed=TRUE;
LD (IX-2),1
; 175. }
; 176. else
JR ?0043
?0041:
; 177. need_draw = TRUE;
?0042:
; 178. }
; 179. else
?0039:
; 180. {
; 181. active = list->total - 1;
LD L,(IY+2)
LD H,(IY+3)
DEC HL
LD (IX-24),L
LD (IX-23),H
; 182. need_draw = TRUE;
?0065:
LD (IX-4),1
?0043:
; 183. }
; 184. if(callback != NULL)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JR Z,?0045
?0044:
; 185. callback(active);
CALL LWRD ?0073
?0045:
?0047:
; 186. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JR NZ,?0045
?0048:
; 187. break;
?0046:
JP LWRD ?0005
?0049:
; 188.
; 189.
; 190.
; 191. case AP_KEY_PLAY | AP_KEY_UP: //取消退出
; 192. SetPenColor(oldDC_sav.PenColor);
; 193. SetBackgdColor(oldDC_sav.BackgdColor);
; 194. SetTextOutMode(0); //设字体不透明
; 195. return RESULT_IGNORE;
; 196.
; 197. case AP_KEY_MODE | AP_KEY_UP: //确认退出
?0050:
; 198. list->active = active;
LD L,(IX-24)
LD (IY+4),L
LD H,(IX-23)
LD (IY+5),H
; 199. SetPenColor(oldDC_sav.PenColor);
LD C,(IX-18)
LD B,(IX-17)
LD E,(IX-20)
LD D,(IX-19)
CALL LWRD SetPenColor
; 200. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,10
ADD HL,SP
; 201. SetTextOutMode(0); //设字体不透明
CALL LWRD ?0070
; 202. return 0;
LD HL,0
; 203.
; 204. case AP_MSG_WAIT_TIMEOUT:
JR ?0060
?0051:
; 205. if(ui_auto_select)
LD A,(ui_auto_select)
OR A
JR Z,?0059
?0052:
; 206. {
; 207. SetPenColor(oldDC_sav.PenColor);
?0063:
LD C,(IX-18)
LD B,(IX-17)
LD E,(IX-20)
LD D,(IX-19)
CALL LWRD SetPenColor
; 208. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,10
ADD HL,SP
; 209. SetTextOutMode(0); //设字体不透明
CALL LWRD ?0070
; 210. return RESULT_IGNORE;
LD HL,52
; 211. }
JR ?0060
?0053:
; 212. break;
?0054:
; 213.
; 214. default:
; 215. key = ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD (IX-3),A
; 216. if(key == RESULT_REDRAW) need_drawall = TRUE;
CP 50
JR NZ,?0056
?0055:
LD (IX-1),1
; 217. else
JR ?0059
?0056:
; 218. if(key != 0)
XOR A
OR (IX-3)
JR Z,?0059
?0058:
; 219. {
; 220. SetPenColor(oldDC_sav.PenColor);
LD C,(IX-18)
LD B,(IX-17)
LD E,(IX-20)
LD D,(IX-19)
CALL LWRD SetPenColor
; 221. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,10
ADD HL,SP
; 222. SetTextOutMode(0); //设字体不透明
CALL LWRD ?0070
; 223. return key;
LD L,(IX-3)
LD H,0
; 224. }
JR ?0060
?0059:
?0057:
?0024:
JP LWRD ?0005
; 225. }// switch(key)
; 226.
; 227. }//while(1)
; 228. SetPenColor(oldDC_sav.PenColor);
; 229. SetBackgdColor(oldDC_sav.BackgdColor);
; 230. }
?0060:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0070:
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD SetBackgdColor
LD E,0
JP LWRD SetTextOutMode
?0071:
CALL LWRD ?SS_DIV_L02
LD L,(IX-10)
LD H,(IX-9)
AND A
SBC HL,DE
RET
?0073:
LD E,(IX-24)
LD D,(IX-23)
?0072:
LD A,(IX+12)
LD L,(IX+10)
LD H,(IX+11)
JP LWRD ?BANK_CALL_DIRECT_L08
RSEG CONST
menu_pos_list:
DEFB 'w'
DEFB 'b'
DEFB 'M'
DEFB '8'
DEFB '#'
DEFB 14
menulist_bck_pic:
DEFW 106
DEFW 105
DEFW 104
DEFW 103
DEFW 102
DEFW 101
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -