📄 bookmark_list.lst
字号:
\ 0125 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0128 ?0064:
\ 0128 010000 LD BC,0
\ 012B 11FFFF LD DE,65535
\ 012E C30000 JP LWRD SetPenColor
\ 0131 ui_bookmark_list:
95 /*
96 ********************************************************************************
97 * Description : 弹出式列表选择窗体
98 *
99 * Arguments :
100 * list, 弹出式列表结构体指针
101 * list->string, 语言
102 *
103 * Returns : key
104 *
105 * Notes :
106 *
107 ********************************************************************************
108 */
109 int ui_bookmark_list(pop_up_list_t *list, const void (*callback)(int value))
110 {
\ 0131 C5 PUSH BC
\ 0132 FDE5 PUSH IY
\ 0134 DDE5 PUSH IX
\ 0136 DD210000 LD IX,0
\ 013A DD39 ADD IX,SP
\ 013C 21E8FF LD HL,65512
\ 013F 39 ADD HL,SP
\ 0140 F9 LD SP,HL
\ 0141 D5 PUSH DE
\ 0142 FDE1 POP IY
111 int i,active,old_active;
112 char key;
113 bool need_draw=FALSE;
114 bool need_drawall=TRUE;
115 bool value_changed=FALSE;
116 int max_group; // list->total / 7
117 int cur_group; // list->active / LIST_NUM_ONE_PAGE
118 int n; // the item to show
119 DC oldDC_sav;
120
121 active = list->active;
\ 0144 210400 LD HL,4
\ 0147 19 ADD HL,DE
\ 0148 46 LD B,(HL)
\ 0149 DD70E8 LD (IX-24),B
\ 014C 23 INC HL
\ 014D 66 LD H,(HL)
\ 014E DD74E9 LD (IX-23),H
122
123 if((list->total % LIST_NUM_ONE_PAGE) == 0) max_group--;
\ 0151 DD36FC00 LD (IX-4),0
\ 0155 DD36FF01 LD (IX-1),1
\ 0159 DD36FE00 LD (IX-2),0
\ 015D 13 INC DE
\ 015E 13 INC DE
\ 015F EB EX DE,HL
\ 0160 5E LD E,(HL)
\ 0161 23 INC HL
\ 0162 56 LD D,(HL)
\ 0163 010600 LD BC,6
\ 0166 CD0000 CALL LWRD ?SS_MOD_L02
\ 0169 ?0002:
\ 0169 ?0003:
124 GetDCStatus(&oldDC_sav);
\ 0169 210400 LD HL,4
\ 016C 39 ADD HL,SP
\ 016D EB EX DE,HL
\ 016E CD0000 CALL LWRD GetDCStatus
125
126 SetTextOutMode(1); //设字体透明
\ 0171 1E01 LD E,1
\ 0173 CD0000 CALL LWRD SetTextOutMode
\ 0176 ?0005:
127
128 while(1)
129 {
130 if(need_drawall)
\ 0176 AF XOR A
\ 0177 DDB6FF OR (IX-1)
\ 017A 2808 JR Z,?0008
\ 017C ?0007:
131 {
132
133 need_drawall=FALSE;
134 need_draw=TRUE;
\ 017C DD36FF00 LD (IX-1),0
\ 0180 DD36FC01 LD (IX-4),1
\ 0184 ?0008:
135 }
136
137 if(need_draw)
\ 0184 AF XOR A
\ 0185 DDB6FC OR (IX-4)
\ 0188 CAD802 JP Z,?0010
\ 018B ?0009:
138 {
139 old_active=active;
140 cur_group = active / LIST_NUM_ONE_PAGE;
\ 018B 010600 LD BC,6
\ 018E DD5EE8 LD E,(IX-24)
\ 0191 DD56E9 LD D,(IX-23)
\ 0194 CD0000 CALL LWRD ?SS_DIV_L02
\ 0197 DD73F6 LD (IX-10),E
\ 019A DD72F7 LD (IX-9),D
141 n = cur_group*LIST_NUM_ONE_PAGE;
\ 019D EB EX DE,HL
\ 019E 29 ADD HL,HL
\ 019F 4D LD C,L
\ 01A0 44 LD B,H
\ 01A1 29 ADD HL,HL
\ 01A2 09 ADD HL,BC
\ 01A3 DD75F4 LD (IX-12),L
\ 01A6 DD74F5 LD (IX-11),H
142 ResShowPic(MENUTWO,0,0);
\ 01A9 0E00 LD C,0
\ 01AB C5 PUSH BC
\ 01AC 11C300 LD DE,195
\ 01AF CD2001 CALL LWRD ?0062
\ 01B2 F1 POP AF
143 ResShowPic(DHT,194,8);
\ 01B3 0E08 LD C,8
\ 01B5 C5 PUSH BC
\ 01B6 0EC2 LD C,194
\ 01B8 112600 LD DE,38
\ 01BB CD2001 CALL LWRD ?0062
\ 01BE F1 POP AF
144 SetPenColor(Color_WHITE_def);
\ 01BF CD2801 CALL LWRD ?0064
145 ResShowMultiString(list->headid, list->string_id,
146 list_str_x_def, list_str_y_def);
\ 01C2 0E94 LD C,148
\ 01C4 C5 PUSH BC
\ 01C5 0E16 LD C,22
\ 01C7 C5 PUSH BC
\ 01C8 FD4E08 LD C,(IY+8)
\ 01CB FD5E06 LD E,(IY+6)
\ 01CE FD5607 LD D,(IY+7)
\ 01D1 3E00 LD A,BYTE3 ResShowMultiString
\ 01D3 210000 LD HL,LWRD ResShowMultiString
\ 01D6 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01D9 F1 POP AF
\ 01DA F1 POP AF
147
148 SetPenColor(Color_WHITE_def);
\ 01DB CD2801 CALL LWRD ?0064
149 for(i=0; i<LIST_NUM_ONE_PAGE; i++)
\ 01DE DD6EE8 LD L,(IX-24)
\ 01E1 DD66E9 LD H,(IX-23)
\ 01E4 DD75F8 LD (IX-8),L
\ 01E7 DD74F9 LD (IX-7),H
\ 01EA AF XOR A
\ 01EB DD77EA LD (IX-22),A
\ 01EE DD77EB LD (IX-21),A
\ 01F1 ?0012:
\ 01F1 010680 LD BC,32774
\ 01F4 DD6EEA LD L,(IX-22)
\ 01F7 DD66EB LD H,(IX-21)
\ 01FA 78 LD A,B
\ 01FB AC XOR H
\ 01FC 67 LD H,A
\ 01FD ED42 SBC HL,BC
\ 01FF D2D402 JP NC,?0011
\ 0202 ?0013:
150 {
151 if(n+i >= list->total) break; //处理不足LIST_NUM_ONE_PAGE个的情况
\ 0202 FD4E02 LD C,(IY+2)
\ 0205 FD4603 LD B,(IY+3)
\ 0208 DD6EEA LD L,(IX-22)
\ 020B DD66EB LD H,(IX-21)
\ 020E DD5EF4 LD E,(IX-12)
\ 0211 DD56F5 LD D,(IX-11)
\ 0214 19 ADD HL,DE
\ 0215 F680 OR 128
\ 0217 ED42 SBC HL,BC
\ 0219 E21D02 JP PO,?0053
\ 021C AC XOR H
\ 021D ?0053:
\ 021D F2D402 JP P,?0011
\ 0220 ?0015:
\ 0220 ?0016:
152 if(n+i==active)
\ 0220 DD6EEA LD L,(IX-22)
\ 0223 DD66EB LD H,(IX-21)
\ 0226 4B LD C,E
\ 0227 42 LD B,D
\ 0228 09 ADD HL,BC
\ 0229 DD4EE8 LD C,(IX-24)
\ 022C DD46E9 LD B,(IX-23)
\ 022F A7 AND A
\ 0230 ED42 SBC HL,BC
\ 0232 210000 LD HL,menu_pos_list
\ 0235 DD4EEA LD C,(IX-22)
\ 0238 DD46EB LD B,(IX-21)
\ 023B 09 ADD HL,BC
\ 023C 204E JR NZ,?0018
\ 023E ?0017:
153 {
154 { ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_list[i]-4);
\ 023E 7E LD A,(HL)
\ 023F C6FC ADD A,252
\ 0241 5F LD E,A
\ 0242 D5 PUSH DE
\ 0243 CD1B01 CALL LWRD ?0063
\ 0246 F1 POP AF
155 ResShowPic(DHTHK,194, menu_pos_list[i]+6);
\ 0247 210000 LD HL,menu_pos_list
\ 024A DD4EEA LD C,(IX-22)
\ 024D DD46EB LD B,(IX-21)
\ 0250 09 ADD HL,BC
\ 0251 7E LD A,(HL)
\ 0252 C606 ADD A,6
\ 0254 5F LD E,A
\ 0255 D5 PUSH DE
\ 0256 0EC2 LD C,194
\ 0258 112700 LD DE,39
\ 025B CD2001 CALL LWRD ?0062
\ 025E F1 POP AF
156 ///-ResShowPic(MENURARR, menu_ptr_x_def, menu_pos_list[i]);
157 }
158
159
160 SetPenColor(Color_WHITE_def);
\ 025F CD2801 CALL LWRD ?0064
161 showString(active, list->string_id, menu_str_x_def, menu_pos_list[i]-1);
\ 0262 210000 LD HL,menu_pos_list
\ 0265 DD4EEA LD C,(IX-22)
\ 0268 DD46EB LD B,(IX-21)
\ 026B 09 ADD HL,BC
\ 026C 7E LD A,(HL)
\ 026D C6FF ADD A,255
\ 026F 4F LD C,A
\ 0270 C5 PUSH BC
\ 0271 0E20 LD C,32
\ 0273 C5 PUSH BC
\ 0274 FD4E08 LD C,(IY+8)
\ 0277 DD5EE8 LD E,(IX-24)
\ 027A DD56E9 LD D,(IX-23)
\ 027D 3E00 LD A,BYTE3 showString
\ 027F 210000 LD HL,LWRD showString
\ 0282 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0285 F1 POP AF
\ 0286 F1 POP AF
162 SetPenColor(Color_WHITE_def);
\ 0287 CD2801 CALL LWRD ?0064
163
164 }
165 else
\ 028A 183C JR ?0019
\ 028C ?0018:
166 {
167 ResShowPic(MENUARR1+i, menu_ptr_x_def, menu_pos_list[i]);
\ 028C 5E LD E,(HL)
\ 028D D5 PUSH DE
\ 028E 0E0A LD C,10
\ 0290 21B300 LD HL,179
\ 0293 DD5EEA LD E,(IX-22)
\ 0296 50 LD D,B
\ 0297 19 ADD HL,DE
\ 0298 EB EX DE,HL
\ 0299 CD2001 CALL LWRD ?0062
\ 029C F1 POP AF
168 showString(n+i, list->string_id, menu_str_x_def, menu_pos_list[i]-3);
\ 029D 210000 LD HL,menu_pos_list
\ 02A0 DD4EEA LD C,(IX-22)
\ 02A3 DD46EB LD B,(IX-21)
\ 02A6 09 ADD HL,BC
\ 02A7 7E LD A,(HL)
\ 02A8 C6FD ADD A,253
\ 02AA 5F LD E,A
\ 02AB D5 PUSH DE
\ 02AC 1E20 LD E,32
\ 02AE D5 PUSH DE
\ 02AF FD4E08 LD C,(IY+8)
\ 02B2 DD6EEA LD L,(IX-22)
\ 02B5 60 LD H,B
\ 02B6 DD5EF4 LD E,(IX-12)
\ 02B9 DD56F5 LD D,(IX-11)
\ 02BC 19 ADD HL,DE
\ 02BD EB EX DE,HL
\ 02BE 3E00 LD A,BYTE3 showString
\ 02C0 210000 LD HL,LWRD showString
\ 02C3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02C6 F1 POP AF
\ 02C7 F1 POP AF
\ 02C8 ?0019:
\ 02C8 DD34EA INC (IX-22)
\ 02CB C2F101 JP NZ,?0012
\ 02CE DD34EB INC (IX-21)
\ 02D1 C3F101 JP LWRD ?0012
\ 02D4 ?0011:
169 }
170 }
171
172 need_draw = FALSE;
\ 02D4 DD36FC00 LD (IX-4),0
\ 02D8 ?0010:
173 }//need draw
174 if(value_changed)
\ 02D8 AF XOR A
\ 02D9 DDB6FE OR (IX-2)
\ 02DC 281D JR Z,?0021
\ 02DE ?0020:
175 {
176 show_active_bklist(list,old_active,active);
\ 02DE DD6EE8 LD L,(IX-24)
\ 02E1 DD66E9 LD H,(IX-23)
\ 02E4 E5 PUSH HL
\ 02E5 DD4EF8 LD C,(IX-8)
\ 02E8 DD46F9 LD B,(IX-7)
\ 02EB FDE5 PUSH IY
\ 02ED D1 POP DE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -