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

📄 ui_pop_up_list.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_pop_up_list(17)
	RSEG	COM_CTRL(0)
	RSEG	CONST(0)
	EXTERN	GetDCStatus
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	SetTextOutMode
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	PUBLIC	menu_pos_list
	PUBLIC	menulist_bck_pic
	PUBLIC	show_active_list1
	EXTERN	ui_auto_select
	PUBLIC	ui_popup_list
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_DIV_L02
	EXTERN	?SS_MOD_L02
	EXTERN	?SS_CMP_L02
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	COM_CTRL
show_active_list1:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*           ap common lib file
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.
; 7.	*             All Right Reserved
; 8.	*
; 9.	*  $Id: ui_pop_up_list.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
; 10.	*******************************************************************************
; 11.	*/
; 12.	#include "ap_common.h"
; 13.	#include "common.h"
; 14.	
; 15.	#define LIST_NUM_ONE_PAGE    6
; 16.	const char menu_pos_list[LIST_NUM_ONE_PAGE] = { POSITION_MENU6,POSITION_MENU5,
; 17.	        POSITION_MENU4,POSITION_MENU3,POSITION_MENU2,POSITION_MENU1};
; 18.	const WORD menulist_bck_pic[LIST_NUM_ONE_PAGE]={ MENUBCK6,MENUBCK5,MENUBCK4,MENUBCK3,MENUBCK2,MENUBCK1 };
; 19.	#pragma codeseg(COM_CTRL)
; 20.	// 定义背景颜色
; 21.	
; 22.	void show_active_list1(pop_up_list_t *list,int old_active, int active)
; 23.	{
	PUSH	IY
	PUSH	IX
	PUSH	BC
	PUSH	DE
	POP	IY
; 24.	        int tmp;
; 25.	        //清除旧的活动菜单项
; 26.	        tmp = old_active%LIST_NUM_ONE_PAGE;
	LD	BC,6
	LD	L,B
	LD	H,B
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	CALL	LWRD ?SS_MOD_L02
; 27.	
; 28.	            ResShowPic(menulist_bck_pic[tmp], menu_ptr_x_def, menu_pos_list[tmp]-4);
	LD	HL,menu_pos_list
	ADD	HL,DE
	LD	A,(HL)
	ADD	A,252
	LD	C,A
	PUSH	BC
	LD	C,10
	EX	DE,HL
	ADD	HL,HL
	LD	DE,menulist_bck_pic
	ADD	HL,DE
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	CALL	LWRD ?0067
	POP	AF
; 29.	
; 30.	        tmp = active%LIST_NUM_ONE_PAGE;
	LD	BC,6
	LD	HL,10
	ADD	HL,SP
	CALL	LWRD ?0066
; 31.	        ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_list[tmp]-4);
	LD	A,(HL)
	ADD	A,252
	LD	C,A
	PUSH	BC
	CALL	LWRD ?0068
	POP	AF
; 32.	        ResShowPic(MENURARR, menu_ptr_x_def, menu_pos_list[tmp]);
	LD	HL,menu_pos_list
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	E,(HL)
	PUSH	DE
	LD	C,10
	LD	DE,108
	CALL	LWRD ?0067
	POP	AF
; 33.	        ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,45
	CALL	LWRD ?0067
	POP	AF
; 34.	        ResShowPic(DHTHK,194, menu_pos_list[tmp]+6);
	LD	HL,menu_pos_list
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,6
	LD	E,A
	PUSH	DE
	LD	C,194
	LD	DE,46
	CALL	LWRD ?0067
	POP	AF
; 35.	
; 36.	        SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0069
; 37.	        ResShowMultiString(list->strid[active], list->string_id, menu_str_x_def, menu_pos_list[tmp]-3);
	LD	HL,menu_pos_list
	PUSH	IX
	POP	BC
	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	HL,16
	ADD	HL,SP
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	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
; 38.	
; 39.	        //重新显示旧的活动菜单
; 40.	        SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0069
; 41.	
; 42.	        tmp = old_active%LIST_NUM_ONE_PAGE;
	LD	BC,6
	LD	L,B
	LD	H,B
	ADD	HL,SP
	CALL	LWRD ?0066
; 43.	        ResShowPic(MENUARR1+tmp, menu_ptr_x_def, menu_pos_list[tmp]);
	LD	C,(HL)
	PUSH	BC
	LD	C,10
	LD	HL,94
	ADD	HL,DE
	EX	DE,HL
	CALL	LWRD ?0067
	POP	AF
; 44.	        ResShowMultiString(list->strid[old_active], list->string_id, menu_str_x_def, menu_pos_list[tmp]-3);
	LD	HL,menu_pos_list
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,253
	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	HL,6
	ADD	HL,SP
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	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
; 45.	}
	POP	HL
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0066:
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	CALL	LWRD ?SS_MOD_L02
	PUSH	DE
	POP	IX
	LD	HL,menu_pos_list
	ADD	HL,DE
	RET
?0068:
	LD	C,9
	LD	DE,100
?0067:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0069:
	LD	BC,0
	LD	DE,65535
	JP	LWRD SetPenColor
ui_popup_list:
; 46.	
; 47.	/*
; 48.	********************************************************************************
; 49.	* Description : 弹出式列表选择窗体
; 50.	*
; 51.	* Arguments   :
; 52.	*    list,  弹出式列表结构体指针
; 53.	*    list->string, 语言
; 54.	*
; 55.	* Returns     : key
; 56.	*
; 57.	* Notes       :
; 58.	*
; 59.	********************************************************************************
; 60.	*/
; 61.	int ui_popup_list(pop_up_list_t *list, const void (*callback)(int value))
; 62.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65512
	PUSH	IY
	LD	L,(IX+2)
	LD	H,(IX+3)
	PUSH	HL
	POP	IY
; 63.	    int i,active,old_active;
; 64.	    char key;
; 65.	    bool need_draw=FALSE;
; 66.	    bool need_drawall=TRUE;
; 67.	    bool value_changed=FALSE;
; 68.	    int max_group;    // list->total / 7
; 69.	    int cur_group;        //list->active / LIST_NUM_ONE_PAGE
; 70.	    int n;            //the item to show
; 71.	    DC  oldDC_sav;
; 72.	
; 73.	    active = list->active;
	LD	L,(IY+4)
	LD	(IX-24),L
	LD	H,(IY+5)
	LD	(IX-23),H
; 74.	
; 75.	    if((list->total % LIST_NUM_ONE_PAGE) == 0) max_group--;
	LD	(IX-4),0
	LD	(IX-1),1
	LD	(IX-2),0
	LD	E,(IY+2)
	LD	D,(IY+3)
	LD	BC,6
	CALL	LWRD ?SS_MOD_L02
?0002:
?0003:
; 76.	    GetDCStatus(&oldDC_sav);
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD GetDCStatus
; 77.	
; 78.	        SetTextOutMode(1);       //设字体透明
	LD	E,1
	CALL	LWRD SetTextOutMode
?0005:
; 79.	
; 80.	    while(1)
; 81.	    {
; 82.	        if(need_drawall)
	XOR	A
	OR	(IX-1)
	JR	Z,?0008
?0007:
; 83.	        {
; 84.	
; 85.	            need_drawall=FALSE;
; 86.	            need_draw=TRUE;
	LD	(IX-1),0
	LD	(IX-4),1
?0008:
; 87.	        }
; 88.	
; 89.	        if(need_draw)
	XOR	A
	OR	(IX-4)
	JP	Z,?0010
?0009:
; 90.	        {
; 91.	            old_active=active;
; 92.	            cur_group = active / LIST_NUM_ONE_PAGE;
	LD	BC,6
	LD	E,(IX-24)
	LD	D,(IX-23)
	CALL	LWRD ?SS_DIV_L02
	LD	(IX-10),E
	LD	(IX-9),D
; 93.	            n = cur_group*LIST_NUM_ONE_PAGE;
	EX	DE,HL
	ADD	HL,HL
	LD	C,L
	LD	B,H
	ADD	HL,HL
	ADD	HL,BC
	LD	(IX-12),L
	LD	(IX-11),H
; 94.	            ResShowPic(MENUTWO,0,0);
	LD	C,0
	PUSH	BC
	LD	DE,109
	CALL	LWRD ?0067
	POP	AF
; 95.	            ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,45
	CALL	LWRD ?0067
	POP	AF
; 96.	            SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0069
; 97.	            ResShowMultiString(list->headid, list->string_id,
; 98.	            list_str_x_def, list_str_y_def);
	LD	C,148
	PUSH	BC
	LD	C,22
	PUSH	BC
	LD	C,(IY+8)
	LD	E,(IY+6)
	LD	D,(IY+7)
	LD	A,BYTE3 ResShowMultiString
	LD	HL,LWRD ResShowMultiString
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 99.	
; 100.	            SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0069
; 101.	            if(callback != NULL)
	LD	L,(IX-24)
	LD	H,(IX-23)
	LD	(IX-8),L
	LD	(IX-7),H
	LD	A,(IX+10)
	OR	(IX+11)
	OR	(IX+12)
	JR	Z,?0012
?0011:
; 102.	            callback(active);         
	EX	DE,HL
	CALL	LWRD ?0072
?0012:
; 103.	             
; 104.	            for(i=0; i<LIST_NUM_ONE_PAGE; i++)
	XOR	A
	LD	(IX-22),A
	LD	(IX-21),A
?0014:
	LD	BC,32774
	LD	L,(IX-22)
	LD	H,(IX-21)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JP	NC,?0013
?0015:
; 105.	            {
; 106.	                if(n+i >= list->total) break;    //处理不足LIST_NUM_ONE_PAGE个的情况
	LD	C,(IY+2)
	LD	B,(IY+3)
	LD	L,(IX-22)
	LD	H,(IX-21)
	LD	E,(IX-12)
	LD	D,(IX-11)
	ADD	HL,DE
	CALL	LWRD ?SS_CMP_L02
	JP	NC,?0013
?0017:
?0018:
; 107.	                if(n+i==active)
	LD	L,(IX-22)
	LD	H,(IX-21)
	LD	C,E
	LD	B,D
	ADD	HL,BC
	LD	C,(IX-24)
	LD	B,(IX-23)
	AND	A
	SBC	HL,BC
	LD	HL,menu_pos_list
	LD	C,(IX-22)
	LD	B,(IX-21)
	ADD	HL,BC
	JR	NZ,?0020
?0019:
; 108.	                {
; 109.	                    {
; 110.	                        ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_list[i]-4);
	LD	A,(HL)
	ADD	A,252
	LD	E,A
	PUSH	DE
	CALL	LWRD ?0068
	POP	AF
; 111.	                        ResShowPic(DHTHK,194, menu_pos_list[i]+6);
	LD	HL,menu_pos_list
	LD	C,(IX-22)
	LD	B,(IX-21)
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,6
	LD	E,A
	PUSH	DE
	LD	C,194
	LD	DE,46

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -