📄 ui_menu.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 21/Sep/107 12:45:35 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ui_menu.c #
# List file = d:\case_i_d913f\ap\ap_setting\list\ui_menu.lst #
# Object file = d:\case_i_d913f\ap\ap_setting\release\obj\ui_menu.r01#
# Command line = -v0 -mb #
# -OD:\case_i_d913f\ap\ap_setting\release\Obj\ -e -K #
# -w -gA -s7 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_setting\List\ -q -t8 #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\COMMON\ui_menu.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_menu(17)
\ 0000 RSEG COM_CTRL(0)
\ 0000 RSEG CONST(0)
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN SetTextOutMode
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC menu_bck_pic
\ 0000 PUBLIC menu_pos_menu
\ 0000 PUBLIC show_active_menu
\ 0000 EXTERN ui_auto_select
\ 0000 PUBLIC ui_menu
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?SS_DIV_L02
\ 0000 EXTERN ?SS_MOD_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG COM_CTRL
\ 0000 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 {
\ 0000 FDE5 PUSH IY
\ 0002 DDE5 PUSH IX
\ 0004 DD210000 LD IX,0
\ 0008 DD39 ADD IX,SP
\ 000A C5 PUSH BC
\ 000B F5 PUSH AF
\ 000C D5 PUSH DE
\ 000D FDE1 POP IY
37 int tmp;
38
39 //清除旧的活动菜单项
40 tmp = old_active%MENU_NUM_ONE_PAGE;
\ 000F 010600 LD BC,6
\ 0012 DD5EFE LD E,(IX-2)
\ 0015 DD56FF LD D,(IX-1)
\ 0018 CD0000 CALL LWRD ?SS_MOD_L02
\ 001B DD73FC LD (IX-4),E
\ 001E DD72FD LD (IX-3),D
41
42 ResShowPic(menu_bck_pic[tmp], menu_bck_x_def, menu_pos_menu[tmp]-4);
\ 0021 210000 LD HL,menu_pos_menu
\ 0024 19 ADD HL,DE
\ 0025 7E LD A,(HL)
\ 0026 C6FC ADD A,252
\ 0028 4F LD C,A
\ 0029 C5 PUSH BC
\ 002A 0E09 LD C,9
\ 002C EB EX DE,HL
\ 002D 29 ADD HL,HL
\ 002E 110600 LD DE,menu_bck_pic
\ 0031 19 ADD HL,DE
\ 0032 5E LD E,(HL)
\ 0033 23 INC HL
\ 0034 56 LD D,(HL)
\ 0035 3E00 LD A,BYTE3 ResShowPic
\ 0037 210000 LD HL,LWRD ResShowPic
\ 003A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 003D F1 POP AF
43
44 //显示新的活动菜单
45 tmp = active%MENU_NUM_ONE_PAGE;
\ 003E 010600 LD BC,6
\ 0041 DD5E08 LD E,(IX+8)
\ 0044 DD5609 LD D,(IX+9)
\ 0047 CD0000 CALL LWRD ?SS_MOD_L02
\ 004A DD73FC LD (IX-4),E
\ 004D DD72FD LD (IX-3),D
46 ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_menu[tmp]-4);
\ 0050 210000 LD HL,menu_pos_menu
\ 0053 19 ADD HL,DE
\ 0054 7E LD A,(HL)
\ 0055 C6FC ADD A,252
\ 0057 4F LD C,A
\ 0058 C5 PUSH BC
\ 0059 0E09 LD C,9
\ 005B 11B500 LD DE,181
\ 005E 3E00 LD A,BYTE3 ResShowPic
\ 0060 210000 LD HL,LWRD ResShowPic
\ 0063 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0066 F1 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);
\ 0067 0E08 LD C,8
\ 0069 C5 PUSH BC
\ 006A 0EC2 LD C,194
\ 006C 112700 LD DE,39
\ 006F 3E00 LD A,BYTE3 ResShowPic
\ 0071 210000 LD HL,LWRD ResShowPic
\ 0074 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0077 F1 POP AF
50 ResShowPic(DHTHK,194, menu_pos_menu[tmp]+6);
\ 0078 210000 LD HL,menu_pos_menu
\ 007B DD4EFC LD C,(IX-4)
\ 007E DD46FD LD B,(IX-3)
\ 0081 09 ADD HL,BC
\ 0082 7E LD A,(HL)
\ 0083 C606 ADD A,6
\ 0085 5F LD E,A
\ 0086 D5 PUSH DE
\ 0087 0EC2 LD C,194
\ 0089 112800 LD DE,40
\ 008C 3E00 LD A,BYTE3 ResShowPic
\ 008E 210000 LD HL,LWRD ResShowPic
\ 0091 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0094 F1 POP AF
51
52 SetPenColor(Color_WHITE_def);
\ 0095 010000 LD BC,0
\ 0098 11FFFF LD DE,65535
\ 009B CD0000 CALL LWRD SetPenColor
53 ResShowMultiString(menu->title[active], menu->string_id, menu_str_x_def, menu_pos_menu[tmp]-3);
\ 009E 210000 LD HL,menu_pos_menu
\ 00A1 DD4EFC LD C,(IX-4)
\ 00A4 DD46FD LD B,(IX-3)
\ 00A7 09 ADD HL,BC
\ 00A8 7E LD A,(HL)
\ 00A9 C6FD ADD A,253
\ 00AB 5F LD E,A
\ 00AC D5 PUSH DE
\ 00AD 1E20 LD E,32
\ 00AF D5 PUSH DE
\ 00B0 FD4E09 LD C,(IY+9)
\ 00B3 FD6E04 LD L,(IY+4)
\ 00B6 FD6605 LD H,(IY+5)
\ 00B9 E5 PUSH HL
\ 00BA DD6E08 LD L,(IX+8)
\ 00BD DD6609 LD H,(IX+9)
\ 00C0 29 ADD HL,HL
\ 00C1 EB EX DE,HL
\ 00C2 E1 POP HL
\ 00C3 19 ADD HL,DE
\ 00C4 5E LD E,(HL)
\ 00C5 23 INC HL
\ 00C6 56 LD D,(HL)
\ 00C7 3E00 LD A,BYTE3 ResShowMultiString
\ 00C9 210000 LD HL,LWRD ResShowMultiString
\ 00CC CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00CF F1 POP AF
\ 00D0 F1 POP AF
54 //重新显示旧的活动菜单
55 SetPenColor(Color_WHITE_def);
\ 00D1 010000 LD BC,0
\ 00D4 11FFFF LD DE,65535
\ 00D7 CD0000 CALL LWRD SetPenColor
56
57 tmp = old_active%MENU_NUM_ONE_PAGE;
\ 00DA 010600 LD BC,6
\ 00DD DD5EFE LD E,(IX-2)
\ 00E0 DD56FF LD D,(IX-1)
\ 00E3 CD0000 CALL LWRD ?SS_MOD_L02
\ 00E6 DD73FC LD (IX-4),E
\ 00E9 DD72FD LD (IX-3),D
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);
\ 00EC 210000 LD HL,menu_pos_menu
\ 00EF 19 ADD HL,DE
\ 00F0 7E LD A,(HL)
\ 00F1 C6FD ADD A,253
\ 00F3 4F LD C,A
\ 00F4 C5 PUSH BC
\ 00F5 0E20 LD C,32
\ 00F7 C5 PUSH BC
\ 00F8 FD4E09 LD C,(IY+9)
\ 00FB FD6E04 LD L,(IY+4)
\ 00FE FD6605 LD H,(IY+5)
\ 0101 E5 PUSH HL
\ 0102 DD6EFE LD L,(IX-2)
\ 0105 DD66FF LD H,(IX-1)
\ 0108 29 ADD HL,HL
\ 0109 EB EX DE,HL
\ 010A E1 POP HL
\ 010B 19 ADD HL,DE
\ 010C 5E LD E,(HL)
\ 010D 23 INC HL
\ 010E 56 LD D,(HL)
\ 010F 3E00 LD A,BYTE3 ResShowMultiString
\ 0111 210000 LD HL,LWRD ResShowMultiString
\ 0114 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0117 F1 POP AF
\ 0118 F1 POP AF
60 }
\ 0119 DDF9 LD SP,IX
\ 011B DDE1 POP IX
\ 011D FDE1 POP IY
\ 011F C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0122 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 {
\ 0122 C5 PUSH BC
\ 0123 FDE5 PUSH IY
\ 0125 DDE5 PUSH IX
\ 0127 DD210000 LD IX,0
\ 012B DD39 ADD IX,SP
\ 012D 21F2FF LD HL,65522
\ 0130 39 ADD HL,SP
\ 0131 F9 LD SP,HL
\ 0132 D5 PUSH DE
\ 0133 FDE1 POP IY
77 int i,active,old_active;
78 char key;
79 BOOL need_draw=TRUE;
\ 0135 DD36FC01 LD (IX-4),1
80 bool value_changed=FALSE;
\ 0139 DD36FE00 LD (IX-2),0
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;
\ 013D 13 INC DE
\ 013E 13 INC DE
\ 013F 1A LD A,(DE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -