📄 ui_pop_up_list.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:00:36 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\common\ui_pop_up_list.c #
# List file = d:\case_i_d90f\ap\ap_music\list\ui_pop_up_list.lst #
# Object file = d:\case_i_d90f\ap\ap_music\obj\ui_pop_up_list.r01 #
# ASM file = d:\case_i_d90f\ap\ap_music\list\ui_pop_up_list.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w #
# -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_music\List\ #
# -ND:\case_i_d90f\ap\ap_music\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# D:\CASE_I_D90F\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 SetTextOutMode
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC menu_pos_list
\ 0000 PUBLIC menulist_bck_pic
\ 0000 PUBLIC show_active_list1
\ 0000 EXTERN ui_auto_select
\ 0000 PUBLIC ui_popup_list
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?SS_DIV_L02
\ 0000 EXTERN ?SS_MOD_L02
\ 0000 EXTERN ?SS_CMP_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 RSEG COM_CTRL
\ 0000 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 {
\ 0000 FDE5 PUSH IY
\ 0002 DDE5 PUSH IX
\ 0004 C5 PUSH BC
\ 0005 D5 PUSH DE
\ 0006 FDE1 POP IY
24 int tmp;
25 //清除旧的活动菜单项
26 tmp = old_active%LIST_NUM_ONE_PAGE;
\ 0008 010600 LD BC,6
\ 000B 68 LD L,B
\ 000C 60 LD H,B
\ 000D 39 ADD HL,SP
\ 000E 5E LD E,(HL)
\ 000F 23 INC HL
\ 0010 56 LD D,(HL)
\ 0011 CD0000 CALL LWRD ?SS_MOD_L02
27
28 ResShowPic(menulist_bck_pic[tmp], menu_ptr_x_def, menu_pos_list[tmp]-4);
\ 0014 210000 LD HL,menu_pos_list
\ 0017 19 ADD HL,DE
\ 0018 7E LD A,(HL)
\ 0019 C6FC ADD A,252
\ 001B 4F LD C,A
\ 001C C5 PUSH BC
\ 001D 0E0A LD C,10
\ 001F EB EX DE,HL
\ 0020 29 ADD HL,HL
\ 0021 110600 LD DE,menulist_bck_pic
\ 0024 19 ADD HL,DE
\ 0025 5E LD E,(HL)
\ 0026 23 INC HL
\ 0027 56 LD D,(HL)
\ 0028 CD0D01 CALL LWRD ?0067
\ 002B F1 POP AF
29
30 tmp = active%LIST_NUM_ONE_PAGE;
\ 002C 010600 LD BC,6
\ 002F 210A00 LD HL,10
\ 0032 39 ADD HL,SP
\ 0033 CDFA00 CALL LWRD ?0066
31 ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_list[tmp]-4);
\ 0036 7E LD A,(HL)
\ 0037 C6FC ADD A,252
\ 0039 4F LD C,A
\ 003A C5 PUSH BC
\ 003B CD0801 CALL LWRD ?0068
\ 003E F1 POP AF
32 ResShowPic(MENURARR, menu_ptr_x_def, menu_pos_list[tmp]);
\ 003F 210000 LD HL,menu_pos_list
\ 0042 DDE5 PUSH IX
\ 0044 C1 POP BC
\ 0045 09 ADD HL,BC
\ 0046 5E LD E,(HL)
\ 0047 D5 PUSH DE
\ 0048 0E0A LD C,10
\ 004A 116C00 LD DE,108
\ 004D CD0D01 CALL LWRD ?0067
\ 0050 F1 POP AF
33 ResShowPic(DHT,194,8);
\ 0051 0E08 LD C,8
\ 0053 C5 PUSH BC
\ 0054 0EC2 LD C,194
\ 0056 112D00 LD DE,45
\ 0059 CD0D01 CALL LWRD ?0067
\ 005C F1 POP AF
34 ResShowPic(DHTHK,194, menu_pos_list[tmp]+6);
\ 005D 210000 LD HL,menu_pos_list
\ 0060 DDE5 PUSH IX
\ 0062 C1 POP BC
\ 0063 09 ADD HL,BC
\ 0064 7E LD A,(HL)
\ 0065 C606 ADD A,6
\ 0067 5F LD E,A
\ 0068 D5 PUSH DE
\ 0069 0EC2 LD C,194
\ 006B 112E00 LD DE,46
\ 006E CD0D01 CALL LWRD ?0067
\ 0071 F1 POP AF
35
36 SetPenColor(Color_WHITE_def);
\ 0072 CD1501 CALL LWRD ?0069
37 ResShowMultiString(list->strid[active], list->string_id, menu_str_x_def, menu_pos_list[tmp]-3);
\ 0075 210000 LD HL,menu_pos_list
\ 0078 DDE5 PUSH IX
\ 007A C1 POP BC
\ 007B 09 ADD HL,BC
\ 007C 7E LD A,(HL)
\ 007D C6FD ADD A,253
\ 007F 5F LD E,A
\ 0080 D5 PUSH DE
\ 0081 1E20 LD E,32
\ 0083 D5 PUSH DE
\ 0084 FD4E08 LD C,(IY+8)
\ 0087 FD6E00 LD L,(IY+0)
\ 008A FD6601 LD H,(IY+1)
\ 008D E5 PUSH HL
\ 008E 211000 LD HL,16
\ 0091 39 ADD HL,SP
\ 0092 46 LD B,(HL)
\ 0093 23 INC HL
\ 0094 66 LD H,(HL)
\ 0095 68 LD L,B
\ 0096 29 ADD HL,HL
\ 0097 EB EX DE,HL
\ 0098 E1 POP HL
\ 0099 19 ADD HL,DE
\ 009A 5E LD E,(HL)
\ 009B 23 INC HL
\ 009C 56 LD D,(HL)
\ 009D 3E00 LD A,BYTE3 ResShowMultiString
\ 009F 210000 LD HL,LWRD ResShowMultiString
\ 00A2 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00A5 F1 POP AF
\ 00A6 F1 POP AF
38
39 //重新显示旧的活动菜单
40 SetPenColor(Color_WHITE_def);
\ 00A7 CD1501 CALL LWRD ?0069
41
42 tmp = old_active%LIST_NUM_ONE_PAGE;
\ 00AA 010600 LD BC,6
\ 00AD 68 LD L,B
\ 00AE 60 LD H,B
\ 00AF 39 ADD HL,SP
\ 00B0 CDFA00 CALL LWRD ?0066
43 ResShowPic(MENUARR1+tmp, menu_ptr_x_def, menu_pos_list[tmp]);
\ 00B3 4E LD C,(HL)
\ 00B4 C5 PUSH BC
\ 00B5 0E0A LD C,10
\ 00B7 215E00 LD HL,94
\ 00BA 19 ADD HL,DE
\ 00BB EB EX DE,HL
\ 00BC CD0D01 CALL LWRD ?0067
\ 00BF F1 POP AF
44 ResShowMultiString(list->strid[old_active], list->string_id, menu_str_x_def, menu_pos_list[tmp]-3);
\ 00C0 210000 LD HL,menu_pos_list
\ 00C3 DDE5 PUSH IX
\ 00C5 C1 POP BC
\ 00C6 09 ADD HL,BC
\ 00C7 7E LD A,(HL)
\ 00C8 C6FD ADD A,253
\ 00CA 4F LD C,A
\ 00CB C5 PUSH BC
\ 00CC 0E20 LD C,32
\ 00CE C5 PUSH BC
\ 00CF FD4E08 LD C,(IY+8)
\ 00D2 FD6E00 LD L,(IY+0)
\ 00D5 FD6601 LD H,(IY+1)
\ 00D8 E5 PUSH HL
\ 00D9 210600 LD HL,6
\ 00DC 39 ADD HL,SP
\ 00DD 46 LD B,(HL)
\ 00DE 23 INC HL
\ 00DF 66 LD H,(HL)
\ 00E0 68 LD L,B
\ 00E1 29 ADD HL,HL
\ 00E2 EB EX DE,HL
\ 00E3 E1 POP HL
\ 00E4 19 ADD HL,DE
\ 00E5 5E LD E,(HL)
\ 00E6 23 INC HL
\ 00E7 56 LD D,(HL)
\ 00E8 3E00 LD A,BYTE3 ResShowMultiString
\ 00EA 210000 LD HL,LWRD ResShowMultiString
\ 00ED CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00F0 F1 POP AF
\ 00F1 F1 POP AF
45 }
\ 00F2 E1 POP HL
\ 00F3 DDE1 POP IX
\ 00F5 FDE1 POP IY
\ 00F7 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00FA ?0066:
\ 00FA 5E LD E,(HL)
\ 00FB 23 INC HL
\ 00FC 56 LD D,(HL)
\ 00FD CD0000 CALL LWRD ?SS_MOD_L02
\ 0100 D5 PUSH DE
\ 0101 DDE1 POP IX
\ 0103 210000 LD HL,menu_pos_list
\ 0106 19 ADD HL,DE
\ 0107 C9 RET
\ 0108 ?0068:
\ 0108 0E09 LD C,9
\ 010A 116400 LD DE,100
\ 010D ?0067:
\ 010D 3E00 LD A,BYTE3 ResShowPic
\ 010F 210000 LD HL,LWRD ResShowPic
\ 0112 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0115 ?0069:
\ 0115 010000 LD BC,0
\ 0118 11FFFF LD DE,65535
\ 011B C30000 JP LWRD SetPenColor
\ 011E 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 {
\ 011E CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0121 E8FF DEFW 65512
\ 0123 FDE5 PUSH IY
\ 0125 DD6E02 LD L,(IX+2)
\ 0128 DD6603 LD H,(IX+3)
\ 012B E5 PUSH HL
\ 012C FDE1 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;
\ 012E FD6E04 LD L,(IY+4)
\ 0131 DD75E8 LD (IX-24),L
\ 0134 FD6605 LD H,(IY+5)
\ 0137 DD74E9 LD (IX-23),H
74
75 if((list->total % LIST_NUM_ONE_PAGE) == 0) max_group--;
\ 013A DD36FC00 LD (IX-4),0
\ 013E DD36FF01 LD (IX-1),1
\ 0142 DD36FE00 LD (IX-2),0
\ 0146 FD5E02 LD E,(IY+2)
\ 0149 FD5603 LD D,(IY+3)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -