📄 ui_pop_up_list.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:39:36 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ui_pop_up_list.c #
# List file = d:\case_i_d913f\ap\ap_amv\list\ui_pop_up_list.lst #
# Object file = d:\case_i_d913f\ap\ap_amv\obj\ui_pop_up_list.r01 #
# ASM file = d:\case_i_d913f\ap\ap_amv\list\ui_pop_up_list.s01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_amv\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d913f\ap\ap_amv\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_amv\List\ #
# -ND:\case_i_d913f\ap\ap_amv\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\ap\common\ui_pop_up_list.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_pop_up_list(17)
\ 0000 RSEG COM_CTRL(0)
\ 0000 RSEG CONST(0)
\ 0000 EXTERN GetDCStatus
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN TextOutRect
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC menu_pos_list
\ 0000 PUBLIC menulist_bck_pic
\ 0000 PUBLIC menuptr_height_list
\ 0000 EXTERN ui_auto_select
\ 0000 PUBLIC ui_popup_list
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?C_MUL_L01
\ 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 ui_popup_list:
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] = { 22,22+18,22+18*2,22+18*3,22+18*4,22+18*5};
17 const WORD menulist_bck_pic[LIST_NUM_ONE_PAGE]={ FILEBCK1,FILEBCK1,FILEBCK1,FILEBCK1,FILEBCK1,FILEBCK1 };
18 const char menuptr_height_list[9] = { 8*9,8*8,8*7,8*6,8*5,8*4,8*3,8*2,8*1, };
19 #pragma codeseg(COM_CTRL)
20 // 定义背景颜色
21 /*
22 void show_active_list1(pop_up_list_t *list,int old_active, int active)
23 {
24 int tmp;
25
26 //---------------------//
27 //清除旧的活动菜单项
28 tmp = old_active%6;
29 if(list->total > LIST_NUM_ONE_PAGE)
30 ResShowPic(MENUBCK3, 0, menu_pos_list[tmp]-1);
31 else
32 ResShowPic(MENUBCK1, 0, menu_pos_list[tmp]-1);
33 SetPenColor(Color_BLACK_def);
34 SetBackgdColor(Color_MENU_def);
35 ResShowMultiString(list->strid[old_active],list->string_id, 3, menu_pos_list[tmp]);
36 if(list->total > LIST_NUM_ONE_PAGE)
37 ResShowPic(MENUARR, 153, menu_pos_list[tmp]-1);
38 else
39 ResShowPic(MENUARR, 163, menu_pos_list[tmp]-1);
40
41
42
43 tmp = active%6;
44 if(list->total > LIST_NUM_ONE_PAGE)
45 {
46 ResShowPic(MENUBCK2, 0, menu_pos_list[tmp]-1);
47 ResShowPic(MENUARR1, 153, menu_pos_list[tmp]-1);
48 }
49 else
50 {
51 ResShowPic(MENUBCK, 0, menu_pos_list[tmp]-1);
52 ResShowPic(MENUARR1, 163, menu_pos_list[tmp]-1);
53 }
54
55 SetPenColor(Color_WHITE_def);
56 SetBackgdColor(0x00003358);
57 ResShowMultiString(list->strid[active],list->string_id, 3, menu_pos_list[tmp]);
58 if(list->total > LIST_NUM_ONE_PAGE)
59 {
60 ResShowPic(MENUPTR, 166, 19);
61 tmp = 113-menuptr_height_list[(list->total-1)/LIST_NUM_ONE_PAGE]; //注意,最多九级!!!
62 if(tmp%(list->total-1)>=active)
63 ResShowPic(MENUPTR1, 166, 19+active+(tmp/(list->total-1))*active);
64 else
65 ResShowPic(MENUPTR1, 166, 19+(tmp/(list->total-1))*active);
66 }
67 //---------------------//
68 }
69 */
70 /*
71 ********************************************************************************
72 * Description : 弹出式列表选择窗体
73 *
74 * Arguments :
75 * list, 弹出式列表结构体指针
76 * list->string, 语言
77 *
78 * Returns : key
79 *
80 * Notes :
81 *
82 ********************************************************************************
83 */
84 int ui_popup_list(pop_up_list_t *list, const void (*callback)(int value))
85 {
\ 0000 C5 PUSH BC
\ 0001 FDE5 PUSH IY
\ 0003 DDE5 PUSH IX
\ 0005 DD210000 LD IX,0
\ 0009 DD39 ADD IX,SP
\ 000B 21E0FF LD HL,65504
\ 000E 39 ADD HL,SP
\ 000F F9 LD SP,HL
\ 0010 D5 PUSH DE
\ 0011 FDE1 POP IY
86 int i,active,old_active;
87 char key,constX;
88 WORD resID;
89 bool need_draw=FALSE;
90 bool need_drawall=TRUE;
91 bool value_changed=FALSE;
92 int cur_group; //list->active / LIST_NUM_ONE_PAGE
93 int n; //the item to show
94 int tmp;
95 DC oldDC_sav;
96 region_t tregion; //Jerry Xie Add for test
97
98 active = list->active;
\ 0013 210400 LD HL,4
\ 0016 19 ADD HL,DE
\ 0017 46 LD B,(HL)
\ 0018 DD70E0 LD (IX-32),B
\ 001B 23 INC HL
\ 001C 66 LD H,(HL)
\ 001D DD74E1 LD (IX-31),H
99 GetDCStatus(&oldDC_sav);
\ 0020 210A00 LD HL,10
\ 0023 39 ADD HL,SP
\ 0024 EB EX DE,HL
\ 0025 CD0000 CALL LWRD GetDCStatus
\ 0028 DD36FB00 LD (IX-5),0
\ 002C DD36FE01 LD (IX-2),1
\ 0030 DD36FD00 LD (IX-3),0
\ 0034 ?0003:
100
101 ///-SetTextOutMode(1); //设字体透明
102
103 while(1)
104 {
105 tregion.x = 3;
\ 0034 DD36E403 LD (IX-28),3
106 tregion.y = 19;
\ 0038 DD36E513 LD (IX-27),19
107 ///-tregion.width = 160;
108 tregion.height = 157;
\ 003C DD36E79D LD (IX-25),157
109
110 if(need_drawall)
\ 0040 AF XOR A
\ 0041 DDB6FE OR (IX-2)
\ 0044 2808 JR Z,?0006
\ 0046 ?0005:
111 {
112 need_drawall=FALSE;
113 need_draw=TRUE;
\ 0046 DD36FE00 LD (IX-2),0
\ 004A DD36FB01 LD (IX-5),1
\ 004E ?0006:
114 }
115 if(need_draw)
\ 004E AF XOR A
\ 004F DDB6FB OR (IX-5)
\ 0052 CA8002 JP Z,?0008
\ 0055 ?0007:
116 {
117 old_active=active;
118 cur_group = active / LIST_NUM_ONE_PAGE;
\ 0055 010600 LD BC,6
\ 0058 DD5EE0 LD E,(IX-32)
\ 005B DD56E1 LD D,(IX-31)
\ 005E CD0000 CALL LWRD ?SS_DIV_L02
\ 0061 DD73F6 LD (IX-10),E
\ 0064 DD72F7 LD (IX-9),D
119 n = cur_group*LIST_NUM_ONE_PAGE;
\ 0067 EB EX DE,HL
\ 0068 29 ADD HL,HL
\ 0069 4D LD C,L
\ 006A 44 LD B,H
\ 006B 29 ADD HL,HL
\ 006C 09 ADD HL,BC
\ 006D DD75F4 LD (IX-12),L
\ 0070 DD74F5 LD (IX-11),H
120
121 if(list->total > LIST_NUM_ONE_PAGE)
\ 0073 DD6EE0 LD L,(IX-32)
\ 0076 DD66E1 LD H,(IX-31)
\ 0079 DD75F2 LD (IX-14),L
\ 007C DD74F3 LD (IX-13),H
\ 007F FD4E02 LD C,(IY+2)
\ 0082 FD4603 LD B,(IY+3)
\ 0085 210600 LD HL,6
\ 0088 F680 OR 128
\ 008A ED42 SBC HL,BC
\ 008C E29000 JP PO,?0075
\ 008F AC XOR H
\ 0090 ?0075:
\ 0090 F2AB00 JP P,?0010
\ 0093 ?0009:
122 {
123 tregion.width = 144;
\ 0093 DD36E690 LD (IX-26),144
124 constX = 153;
125 resID = MENUBCK2;
126 ResShowPic(MENUTWO,0,0);
\ 0097 0E00 LD C,0
\ 0099 C5 PUSH BC
\ 009A 11C300 LD DE,195
\ 009D CDB305 CALL LWRD ?0095
\ 00A0 F1 POP AF
\ 00A1 DD36FC99 LD (IX-4),153
\ 00A5 DD36F8B6 LD (IX-8),182
\ 00A9 1816 JR ?0086
127 }
128 else
\ 00AB ?0010:
129 {
130 tregion.width = 160;
\ 00AB DD36E6A0 LD (IX-26),160
131 constX = 163;
132 resID = MENUBCK;
133 ResShowPic(MENUTWO1,0,0);
\ 00AF 0E00 LD C,0
\ 00B1 C5 PUSH BC
\ 00B2 11C400 LD DE,196
\ 00B5 CDB305 CALL LWRD ?0095
\ 00B8 F1 POP AF
\ 00B9 DD36FCA3 LD (IX-4),163
\ 00BD DD36F8B4 LD (IX-8),180
\ 00C1 ?0086:
\ 00C1 DD36F900 LD (IX-7),0
\ 00C5 ?0011:
134 }
135
136 SetPenColor(Color_BLACK_def);
\ 00C5 010000 LD BC,0
\ 00C8 59 LD E,C
\ 00C9 50 LD D,B
\ 00CA CD0000 CALL LWRD SetPenColor
137 SetBackgdColor(0x0000df1c);
\ 00CD 010000 LD BC,0
\ 00D0 111CDF LD DE,57116
\ 00D3 CD0000 CALL LWRD SetBackgdColor
138 ///-SetTextOutMode(1);
139 ResShowMultiString(list->headid, list->string_id,255, 1);
\ 00D6 0E01 LD C,1
\ 00D8 C5 PUSH BC
\ 00D9 0EFF LD C,255
\ 00DB C5 PUSH BC
\ 00DC FD4E08 LD C,(IY+8)
\ 00DF FD5E06 LD E,(IY+6)
\ 00E2 FD5607 LD D,(IY+7)
\ 00E5 3E00 LD A,BYTE3 ResShowMultiString
\ 00E7 210000 LD HL,LWRD ResShowMultiString
\ 00EA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00ED F1 POP AF
\ 00EE F1 POP AF
140 ///-SetTextOutMode(0);
141 SetBackgdColor(Color_MENU_def);
\ 00EF 010000 LD BC,0
\ 00F2 11FFFF LD DE,65535
\ 00F5 CD0000 CALL LWRD SetBackgdColor
142
143 if(callback != NULL)
\ 00F8 DD7E0A LD A,(IX+10)
\ 00FB DDB60B OR (IX+11)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -