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

📄 ui_menu.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_menu(17)
	RSEG	COM_CTRL(0)
	RSEG	CONST(0)
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	EXTERN	SetPenColor
	EXTERN	SetTextOutMode
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	PUBLIC	menu_bck_pic
	PUBLIC	menu_pos_menu
	PUBLIC	show_active_menu
	EXTERN	ui_auto_select
	PUBLIC	ui_menu
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_DIV_L02
	EXTERN	?SS_MOD_L02
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	RSEG	COM_CTRL
show_active_menu:
; 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_menu.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
; 10.	*******************************************************************************
; 11.	*/
; 12.	#pragma codeseg(COM_CTRL)
; 13.	
; 14.	#include "ap_common.h"
; 15.	#define MENU_NUM_ONE_PAGE   6
; 16.	
; 17.	extern comval_t g_comval;
; 18.	const char menu_pos_menu[MENU_NUM_ONE_PAGE] = { POSITION_MENU6,POSITION_MENU5,
; 19.	        POSITION_MENU4,POSITION_MENU3,POSITION_MENU2,POSITION_MENU1};
; 20.	const WORD menu_bck_pic[MENU_NUM_ONE_PAGE]={ MENUBCK6,MENUBCK5,MENUBCK4,MENUBCK3,MENUBCK2,MENUBCK1 };
; 21.	/*
; 22.	********************************************************************************
; 23.	* Description : 转换索引成字符串
; 24.	*
; 25.	* Arguments   :
; 26.	*    grade,    索引字符串
; 27.	*    str,  转换后的字符串
; 28.	
; 29.	* Returns     :
; 30.	*        字符串的个数
; 31.	* Notes       :
; 32.	*
; 33.	********************************************************************************
; 34.	*/
; 35.	void show_active_menu(function_menu_t *menu,int old_active, int active)
; 36.	{
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	BC
	PUSH	AF
	PUSH	DE
	POP	IY
; 37.	
; 38.	       int tmp;
; 39.	
; 40.	//清除旧的活动菜单项
; 41.	         tmp = old_active%MENU_NUM_ONE_PAGE;
	LD	BC,6
	LD	E,(IX-2)
	LD	D,(IX-1)
	CALL	LWRD ?SS_MOD_L02
; 42.	
; 43.	            ResShowPic(menu_bck_pic[tmp], menu_bck_x_def, menu_pos_menu[tmp]-4);
	LD	HL,menu_pos_menu
	ADD	HL,DE
	LD	A,(HL)
	ADD	A,252
	LD	C,A
	PUSH	BC
	LD	C,9
	EX	DE,HL
	ADD	HL,HL
	LD	DE,menu_bck_pic
	ADD	HL,DE
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	CALL	LWRD ?0063
	POP	AF
; 44.	
; 45.	//显示新的活动菜单
; 46.	       tmp = active%MENU_NUM_ONE_PAGE;
	LD	BC,6
	LD	E,(IX+8)
	LD	D,(IX+9)
	CALL	LWRD ?SS_MOD_L02
	LD	(IX-4),E
	LD	(IX-3),D
; 47.	       ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_menu[tmp]-4);
	LD	HL,menu_pos_menu
	ADD	HL,DE
	LD	A,(HL)
	ADD	A,252
	LD	C,A
	PUSH	BC
	CALL	LWRD ?0064
	POP	AF
; 48.	       ResShowPic(MENURARR, menu_ptr_x_def, menu_pos_menu[tmp]);
	LD	HL,menu_pos_menu
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	LD	E,(HL)
	PUSH	DE
	LD	C,10
	LD	DE,108
	CALL	LWRD ?0063
	POP	AF
; 49.	       //ResShowPic(DHTHK,122, menu_pos_menu[tmp]-2);
; 50.	       ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,45
	CALL	LWRD ?0063
	POP	AF
; 51.	       ResShowPic(DHTHK,194, menu_pos_menu[tmp]+6);
	LD	HL,menu_pos_menu
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,6
	LD	E,A
	PUSH	DE
	LD	C,194
	LD	DE,46
	CALL	LWRD ?0063
	POP	AF
; 52.	
; 53.	       SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0065
; 54.	       ResShowMultiString(menu->title[active], menu->string_id, menu_str_x_def, menu_pos_menu[tmp]-3);
	LD	HL,menu_pos_menu
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,253
	LD	E,A
	PUSH	DE
	LD	E,32
	PUSH	DE
	LD	C,(IY+9)
	LD	L,(IY+4)
	LD	H,(IY+5)
	PUSH	HL
	LD	L,(IX+8)
	LD	H,(IX+9)
	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
; 55.	//重新显示旧的活动菜单
; 56.	       SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0065
; 57.	
; 58.	       tmp = old_active%MENU_NUM_ONE_PAGE;
	LD	BC,6
	LD	E,(IX-2)
	LD	D,(IX-1)
	CALL	LWRD ?SS_MOD_L02
	LD	(IX-4),E
	LD	(IX-3),D
; 59.	       ResShowPic(MENUARR1+tmp, menu_ptr_x_def, menu_pos_menu[tmp]);
	LD	HL,menu_pos_menu
	ADD	HL,DE
	LD	C,(HL)
	PUSH	BC
	LD	C,10
	LD	HL,94
	ADD	HL,DE
	EX	DE,HL
	CALL	LWRD ?0063
	POP	AF
; 60.	       ResShowMultiString(menu->title[old_active], menu->string_id, menu_str_x_def, menu_pos_menu[tmp]-3);
	LD	HL,menu_pos_menu
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,253
	LD	C,A
	PUSH	BC
	LD	C,32
	PUSH	BC
	LD	C,(IY+9)
	LD	L,(IY+4)
	LD	H,(IY+5)
	PUSH	HL
	LD	L,(IX-2)
	LD	H,(IX-1)
	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
; 61.	}
	LD	SP,IX
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0064:
	LD	C,9
	LD	DE,100
?0063:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0065:
	LD	BC,0
	LD	DE,65535
	JP	LWRD SetPenColor
ui_menu:
; 62.	/*
; 63.	********************************************************************************
; 64.	* Description : 一级菜单
; 65.	*
; 66.	* Arguments   :
; 67.	*    menu,      结构体指针
; 68.	*    string_id,  语言
; 69.	
; 70.	* Returns     :
; 71.	*        0
; 72.	* Notes       :
; 73.	*
; 74.	********************************************************************************
; 75.	*/
; 76.	int ui_menu (function_menu_t *menu , const void (*callback)(int value))
; 77.	{
	PUSH	BC
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65522
	ADD	HL,SP
	LD	SP,HL
	PUSH	DE
	POP	IY
; 78.	    int i,active,old_active;
; 79.	    char key;
; 80.	    BOOL need_draw=TRUE;
; 81.	    bool value_changed=FALSE;
; 82.	    int cur_group;      //menu->active / MENU_NUM_ONE_PAGE
; 83.	    int n;              //the item to show
; 84.	//    DC  oldDC_sav;
; 85.	
; 86.	    active = menu->active;
	INC	DE
	INC	DE
	LD	A,(DE)
	LD	(IX-14),A
	INC	DE
	LD	A,(DE)
	LD	(IX-13),A
; 87.	//    GetDCStatus(&oldDC_sav);
; 88.	    SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0065
; 89.	    SetTextOutMode(1);       //设字体透明
	LD	E,1
	CALL	LWRD SetTextOutMode
	LD	(IX-4),1
	LD	(IX-2),0
?0003:
; 90.	
; 91.	    while(1)
; 92.	    {
; 93.	        if(need_draw)
	XOR	A
	OR	(IX-4)
	JP	Z,?0006
?0005:
; 94.	        {
; 95.	            output8(0x4e,input8(0x4e)|0x8);            //zxs add
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 96.	            ResShowPic(MENUTWO,0,0);
	LD	C,0
	PUSH	BC
	LD	DE,109
	CALL	LWRD ?0063
	POP	AF
; 97.	            //ResShowPic(DHT,126,0);
; 98.	            ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,45
	CALL	LWRD ?0063
	POP	AF
; 99.	            old_active=active;
; 100.	            cur_group = active / MENU_NUM_ONE_PAGE;
	LD	BC,6
	LD	E,(IX-14)
	LD	D,(IX-13)
	CALL	LWRD ?SS_DIV_L02
	LD	(IX-8),E
	LD	(IX-7),D
; 101.	            n = cur_group*MENU_NUM_ONE_PAGE;
	EX	DE,HL
	ADD	HL,HL
	LD	C,L
	LD	B,H
	ADD	HL,HL
	ADD	HL,BC
	LD	(IX-10),L
	LD	(IX-9),H
; 102.	            SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0065
; 103.	            //show icons & text
; 104.	            for(i=0; i<MENU_NUM_ONE_PAGE; i++)
	LD	L,(IX-14)
	LD	H,(IX-13)
	LD	(IX-6),L
	LD	(IX-5),H
	XOR	A
	LD	(IX-12),A
	LD	(IX-11),A
?0008:
	LD	BC,32774
	LD	L,(IX-12)
	LD	H,(IX-11)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JP	NC,?0007
?0009:
; 105.	            {
; 106.	                if(n+i >= menu->total) break;    //处理不足MENU_NUM_ONE_PAGE个的情况
	LD	C,(IY+0)
	LD	B,(IY+1)
	LD	L,(IX-12)
	LD	H,(IX-11)
	LD	E,(IX-10)
	LD	D,(IX-9)
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0055
	XOR	H
?0055:
	JP	P,?0007
?0011:
?0012:
; 107.	                if(n+i==active)
	LD	L,(IX-12)
	LD	H,(IX-11)
	LD	C,E
	LD	B,D
	ADD	HL,BC
	LD	C,(IX-14)
	LD	B,(IX-13)
	AND	A
	SBC	HL,BC
	LD	HL,menu_pos_menu
	LD	C,(IX-12)
	LD	B,(IX-11)
	ADD	HL,BC
	JR	NZ,?0014
?0013:
; 108.	                {
; 109.	                    {
; 110.	                        ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_menu[i]-4);
	LD	A,(HL)
	ADD	A,252
	LD	E,A
	PUSH	DE
	CALL	LWRD ?0064
	POP	AF
; 111.	                        //ResShowPic(DHTHK,122, menu_pos_menu[i]-2);
; 112.	                        ResShowPic(DHTHK,194, menu_pos_menu[i]+6);
	LD	HL,menu_pos_menu
	LD	C,(IX-12)
	LD	B,(IX-11)
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,6
	LD	E,A
	PUSH	DE
	LD	C,194
	LD	DE,46
	CALL	LWRD ?0063
	POP	AF
; 113.	                        ResShowPic(MENURARR, menu_ptr_x_def, menu_pos_menu[i]);
	LD	HL,menu_pos_menu
	LD	C,(IX-12)
	LD	B,(IX-11)
	ADD	HL,BC

⌨️ 快捷键说明

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