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

📄 ui_menu.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 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]={ MENUBCK1,MENUBCK1,MENUBCK1,MENUBCK1,MENUBCK1,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
	PUSH	BC
	PUSH	DE
	POP	IX
; 37.	       int tmp;
; 38.	
; 39.	//清除旧的活动菜单项
; 40.	       tmp = old_active%MENU_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
; 41.	
; 42.	       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
; 43.	
; 44.	//显示新的活动菜单
; 45.	       tmp = active%MENU_NUM_ONE_PAGE;
	LD	BC,6
	LD	HL,10
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	CALL	LWRD ?SS_MOD_L02
	PUSH	DE
	POP	IY
; 46.	       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
; 47.	       ///-ResShowPic(MENURARR, menu_ptr_x_def, menu_pos_menu[tmp]);
; 48.	       //ResShowPic(DHTHK,122, menu_pos_menu[tmp]-2);
; 49.	       ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,39
	CALL	LWRD ?0063
	POP	AF
; 50.	       ResShowPic(DHTHK,194, menu_pos_menu[tmp]+6);
	LD	HL,menu_pos_menu
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,6
	LD	E,A
	PUSH	DE
	LD	C,194
	LD	DE,40
	CALL	LWRD ?0063
	POP	AF
; 51.	
; 52.	       SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0065
; 53.	       ResShowMultiString(menu->title[active], menu->string_id, menu_str_x_def, menu_pos_menu[tmp]-3);
	LD	HL,menu_pos_menu
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,253
	LD	E,A
	PUSH	DE
	LD	E,32
	PUSH	DE
	LD	C,(IX+9)
	LD	L,(IX+4)
	LD	H,(IX+5)
	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
; 54.	//重新显示旧的活动菜单
; 55.	       SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0065
; 56.	
; 57.	       tmp = old_active%MENU_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
; 58.	       ///-ResShowPic(MENUARR1+tmp, menu_ptr_x_def, menu_pos_menu[tmp]);
; 59.	       ResShowMultiString(menu->title[old_active], menu->string_id, menu_str_x_def, menu_pos_menu[tmp]-3);
	LD	HL,menu_pos_menu
	ADD	HL,DE
	LD	A,(HL)
	ADD	A,253
	LD	C,A
	PUSH	BC
	LD	C,32
	PUSH	BC
	LD	C,(IX+9)
	LD	L,(IX+4)
	LD	H,(IX+5)
	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
; 60.	}
	POP	HL
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0064:
	LD	C,9
	LD	DE,181
?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:
; 61.	/*
; 62.	********************************************************************************
; 63.	* Description : 一级菜单
; 64.	*
; 65.	* Arguments   :
; 66.	*    menu,      结构体指针
; 67.	*    string_id,  语言
; 68.	
; 69.	* Returns     :
; 70.	*        0
; 71.	* Notes       :
; 72.	*
; 73.	********************************************************************************
; 74.	*/
; 75.	int ui_menu (function_menu_t *menu , const void (*callback)(int value))
; 76.	{
	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
; 77.	    int i,active,old_active;
; 78.	    char key;
; 79.	    BOOL need_draw=TRUE;
; 80.	    bool value_changed=FALSE;
; 81.	    int cur_group;      //menu->active / MENU_NUM_ONE_PAGE
; 82.	    int n;              //the item to show
; 83.	//    DC  oldDC_sav;
; 84.	
; 85.	    active = menu->active;
	INC	DE
	INC	DE
	LD	A,(DE)
	LD	(IX-14),A
	INC	DE
	LD	A,(DE)
	LD	(IX-13),A
; 86.	//    GetDCStatus(&oldDC_sav);
; 87.	    SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0065
; 88.	    SetTextOutMode(1);       //设字体透明
	LD	E,1
	CALL	LWRD SetTextOutMode
	LD	(IX-4),1
	LD	(IX-2),0
?0003:
; 89.	
; 90.	    while(1)
; 91.	    {
; 92.	        if(need_draw)
	XOR	A
	OR	(IX-4)
	JP	Z,?0006
?0005:
; 93.	        {
; 94.	            output8(0x4e,input8(0x4e)|0x8);            //zxs add
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 95.	            ResShowPic(MENUTWO,0,0);
	LD	C,0
	PUSH	BC
	LD	DE,196
	CALL	LWRD ?0063
	POP	AF
; 96.	            //ResShowPic(DHT,126,0);
; 97.	            ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,39
	CALL	LWRD ?0063
	POP	AF
; 98.	            old_active=active;
; 99.	            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
; 100.	            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
; 101.	            SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0065
; 102.	            //show icons & text
; 103.	            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:
; 104.	            {
; 105.	                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:
; 106.	                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
	LD	A,(HL)
	JR	NZ,?0014
?0013:
; 107.	                {
; 108.	                    {
; 109.	                        ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_menu[i]-4);
	ADD	A,252
	LD	E,A
	PUSH	DE
	CALL	LWRD ?0064
	POP	AF
; 110.	                        //ResShowPic(DHTHK,122, menu_pos_menu[i]-2);
; 111.	                        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

⌨️ 快捷键说明

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