ui_directory.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,139 行 · 第 1/4 页
LST
1,139 行
\ 0252 220000 LD (list_active),HL
172 cur_group=(list_total_num - 1)/GroupDefine;
\ 0255 010600 LD BC,6
\ 0258 CDD104 CALL LWRD ?0121
173 top=(list_active/GroupDefine)*GroupDefine; //顶的序号
174 bottom=top+GroupDefine-1; //底的序号
175 if(bottom>(list_total_num-1))
\ 025B 4D LD C,L
\ 025C 44 LD B,H
\ 025D 2A0000 LD HL,(list_active)
\ 0260 A7 AND A
\ 0261 ED42 SBC HL,BC
\ 0263 300B JR NC,?0052
\ 0265 ?0051:
176 bottom=list_total_num-1;
\ 0265 21FFFF LD HL,65535
\ 0268 ED4B0000 LD BC,(list_total_num)
\ 026C 09 ADD HL,BC
\ 026D E5 PUSH HL
\ 026E FDE1 POP IY
\ 0270 ?0052:
177 DecodeOnePage(top,bottom,type,string_id);
\ 0270 DD6E0A LD L,(IX+10)
\ 0273 E5 PUSH HL
\ 0274 DD6E04 LD L,(IX+4)
\ 0277 E5 PUSH HL
\ 0278 CD8C04 CALL LWRD ?0119
\ 027B E1 POP HL
\ 027C E1 POP HL
178 ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);
\ 027D DD6EEE LD L,(IX-18)
\ 0280 E5 PUSH HL
\ 0281 DD6E0A LD L,(IX+10)
\ 0284 E5 PUSH HL
\ 0285 2A0000 LD HL,(list_active)
\ 0288 E5 PUSH HL
\ 0289 ?0112:
\ 0289 E5 PUSH HL
\ 028A FDE5 PUSH IY
\ 028C C1 POP BC
\ 028D DD5EEC LD E,(IX-20)
\ 0290 DD56ED LD D,(IX-19)
\ 0293 3E00 LD A,BYTE3 ShowDirectory
\ 0295 210000 LD HL,LWRD ShowDirectory
\ 0298 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 029B E1 POP HL
\ 029C E1 POP HL
\ 029D E1 POP HL
\ 029E E1 POP HL
\ 029F ?0050:
\ 029F ?0054:
179 }
180 while(ap_get_message() != 0);
\ 029F CD0000 CALL LWRD ap_get_message
\ 02A2 B7 OR A
\ 02A3 20FA JR NZ,?0050
\ 02A5 ?0055:
181 break;
\ 02A5 ?0053:
\ 02A5 C3F800 JP LWRD ?0025
\ 02A8 ?0056:
182
183
184
185 case AP_KEY_PLAY | AP_KEY_UP:
186 fselSetLocationC(location);
187 return RESULT_IGNORE;
188 break;
\ 02A8 ?0057:
189
190 case AP_KEY_MODE | AP_KEY_LONG:
191 key = RESULT_NULL;
\ 02A8 DD36EF00 LD (IX-17),0
\ 02AC ?0058:
192 LongTime:
193 output8(0x4e,input8(0x4e) | 0x08);
194 TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine));
\ 02AC CDED04 CALL LWRD ?0122
195 fselDirLayer=temp_record.dirlayer; //目录层次 0--根目录
196 fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer]; //目录序号
\ 02AF C5 PUSH BC
\ 02B0 0600 LD B,0
\ 02B2 210000 LD HL,fselDirNo
\ 02B5 09 ADD HL,BC
\ 02B6 C1 POP BC
\ 02B7 70 LD (HL),B
197 fselFileNo=temp_record.fileno; //文件序号
\ 02B8 2A0900 LD HL,(temp_record+9)
\ 02BB 220000 LD (fselFileNo),HL
198 fselExtNo=temp_record.fselExtNo;
\ 02BE 3A0C00 LD A,(temp_record+12)
\ 02C1 320000 LD (fselExtNo),A
199
200 if(temp_record.name[0] == '\\') //当前所处子目录首,需要返回父目录
\ 02C4 3A0D00 LD A,(temp_record+13)
\ 02C7 FE5C CP 92
\ 02C9 2008 JR NZ,?0060
\ 02CB ?0059:
201 {
202 if(fselDirLayer==0)
\ 02CB 3A0000 LD A,(fselDirLayer)
\ 02CE B7 OR A
\ 02CF 202E JR NZ,?0073
\ 02D1 ?0061:
203 fselDirNo[fselDirLayer] = 0;
\ 02D1 1823 JR ?0115
204 else
\ 02D3 ?0062:
205 fselDirLayer--;
\ 02D3 ?0063:
206 // key=RESULT_NULL;
207 }
208 else //当前所处可能是子目录或文件,需要分别处理
\ 02D3 ?0060:
209 {
210 if(temp_record.filetype==TYPE_DIR)
\ 02D3 3A0000 LD A,(temp_record)
\ 02D6 B7 OR A
\ 02D7 3A0000 LD A,(fselDirLayer)
\ 02DA 2017 JR NZ,?0066
\ 02DC ?0065:
211 {
212 if (fselDirLayer <= 7)
\ 02DC 47 LD B,A
\ 02DD 3E07 LD A,7
\ 02DF B8 CP B
\ 02E0 3821 JR C,?0074
\ 02E2 ?0067:
213 {
214 if(fselEntCurrentDir(temp_record.name))
\ 02E2 110D00 LD DE,temp_record+13
\ 02E5 3E00 LD A,BYTE3 fselEntCurrentDir
\ 02E7 210000 LD HL,LWRD fselEntCurrentDir
\ 02EA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02ED 2C INC L
\ 02EE 2D DEC L
\ 02EF 2812 JR Z,?0074
\ 02F1 ?0069:
215 fselDirLayer--;
\ 02F1 180C JR ?0073
\ 02F3 ?0070:
\ 02F3 ?0068:
216 }
217 }
218 else
\ 02F3 ?0066:
219 {
220 if(fselDirLayer==0)
\ 02F3 B7 OR A
\ 02F4 2009 JR NZ,?0073
\ 02F6 ?0072:
221 fselDirNo[fselDirLayer] = 0;
\ 02F6 ?0115:
\ 02F6 4F LD C,A
\ 02F7 41 LD B,C
\ 02F8 210000 LD HL,fselDirNo
\ 02FB 09 ADD HL,BC
\ 02FC 70 LD (HL),B
222 else
\ 02FD 1804 JR ?0074
\ 02FF ?0073:
223 fselDirLayer--;
\ 02FF 210000 LD HL,fselDirLayer
\ 0302 35 DEC (HL)
\ 0303 ?0074:
\ 0303 ?0071:
\ 0303 ?0064:
224 // key=RESULT_NULL;
225 }
226 }
227 fselGetLocation(location); //更新location
\ 0303 DD5E02 LD E,(IX+2)
\ 0306 DD5603 LD D,(IX+3)
\ 0309 3E00 LD A,BYTE3 fselGetLocation
\ 030B 210000 LD HL,LWRD fselGetLocation
\ 030E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
228 return key;
\ 0311 DD6EEF LD L,(IX-17)
\ 0314 2600 LD H,0
229 case AP_KEY_MODE | AP_KEY_UP:
\ 0316 C36704 JP LWRD ?0106
\ 0319 ?0075:
230 output8(0x4e,input8(0x4e) | 0x08);
231 TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine));
\ 0319 CDED04 CALL LWRD ?0122
232 fselDirLayer=temp_record.dirlayer; //目录层次 0--根目录
233 fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer]; //目录序号
\ 031C C5 PUSH BC
\ 031D 0600 LD B,0
\ 031F 210000 LD HL,fselDirNo
\ 0322 09 ADD HL,BC
\ 0323 C1 POP BC
\ 0324 70 LD (HL),B
234 fselFileNo=temp_record.fileno; //文件序号
\ 0325 2A0900 LD HL,(temp_record+9)
\ 0328 220000 LD (fselFileNo),HL
235 fselExtNo=temp_record.fselExtNo;
\ 032B 3A0C00 LD A,(temp_record+12)
\ 032E 320000 LD (fselExtNo),A
236
237 if(temp_record.name[0] == '\\') //当前所处子目录首,需要返回父目录
\ 0331 3A0D00 LD A,(temp_record+13)
\ 0334 FE5C CP 92
\ 0336 2059 JR NZ,?0077
\ 0338 ?0076:
238 {
239 if (fselRetParentDir(Strname))
\ 0338 210A00 LD HL,10
\ 033B 39 ADD HL,SP
\ 033C EB EX DE,HL
\ 033D 3E00 LD A,BYTE3 fselRetParentDir
\ 033F 210000 LD HL,LWRD fselRetParentDir
\ 0342 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0345 2C INC L
\ 0346 2D DEC L
\ 0347 2846 JR Z,?0081
\ 0349 ?0078:
240 {
241 memcpy(temp_record.name,Strname, 11);
\ 0349 010B00 LD BC,11
\ 034C 110D00 LD DE,temp_record+13
\ 034F 210A00 LD HL,10
\ 0352 39 ADD HL,SP
\ 0353 EDB0 LDIR
242
243 init_dir_buf();
\ 0355 CD8404 CALL LWRD ?0117
244 list_active=GetActiveDirFrom(temp_record.dirno[fselDirLayer]);
\ 0358 210100 LD HL,temp_record+1
\ 035B ED4B0000 LD BC,(fselDirLayer)
\ 035F 0600 LD B,0
\ 0361 09 ADD HL,BC
\ 0362 5E LD E,(HL)
\ 0363 50 LD D,B
\ 0364 3E00 LD A,BYTE3 GetActiveDirFrom
\ 0366 210000 LD HL,LWRD GetActiveDirFrom
\ 0369 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 036C 220000 LD (list_active),HL
245 cur_group=list_active/GroupDefine;
\ 036F 0E06 LD C,6
\ 0371 CDD104 CALL LWRD ?0121
246 top=(list_active/GroupDefine)*GroupDefine; ; //顶的序号
247 bottom=top+GroupDefine-1; //底的序号
248 if(bottom>(list_total_num-1))
\ 0374 21FFFF LD HL,65535
\ 0377 ED4B0000 LD BC,(list_total_num)
\ 037B 09 ADD HL,BC
\ 037C FDE5 PUSH IY
\ 037E C1 POP BC
\ 037F A7 AND A
\ 0380 ED42 SBC HL,BC
\ 0382 300B JR NC,?0081
\ 0384 ?0080:
249 bottom=list_total_num-1;
\ 0384 21FFFF LD HL,65535
\ 0387 ED4B0000 LD BC,(list_total_num)
\ 038B 09 ADD HL,BC
\ 038C E5 PUSH HL
\ 038D FDE1 POP IY
\ 038F ?0081:
250
251 }
252 else
\ 038F ?0079:
\ 038F ?0082:
253 {
254 }
255 }
256 else //当前所处可能是子目录或文件,需要分别处理
\ 038F 1875 JR ?0092
\ 0391 ?0077:
257 {
258 if(temp_record.filetype==TYPE_DIR)
\ 0391 3A0000 LD A,(temp_record)
\ 0394 B7 OR A
\ 0395 3A0000 LD A,(fselDirLayer)
\ 0398 204C JR NZ,?0085
\ 039A ?0084:
259 {
260 if (fselDirLayer >= 7) //需实验看看是7还是8?
\ 039A FE07 CP 7
\ 039C D2F800 JP NC,?0025
\ 039F ?0086:
261 {
262 break;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?