⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_pop_up_list.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
	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 + -