📄 ui_directory_scroll.lst
字号:
\ 022C E5 PUSH HL
\ 022D FDE1 POP IY
\ 022F ?0052:
184 DecodeOnePage(top,bottom,type,string_id);
\ 022F DD6E08 LD L,(IX+8)
\ 0232 E5 PUSH HL
\ 0233 DD6EFE LD L,(IX-2)
\ 0236 E5 PUSH HL
\ 0237 CD4904 CALL LWRD ?0128
\ 023A E1 POP HL
\ 023B E1 POP HL
185 ScrollFlag = 0;
\ 023C AF XOR A
\ 023D 320000 LD (ScrollFlag),A
186 ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);
\ 0240 DD6EEA LD L,(IX-22)
\ 0243 E5 PUSH HL
\ 0244 DD6E08 LD L,(IX+8)
\ 0247 E5 PUSH HL
\ 0248 2A0000 LD HL,(list_active)
\ 024B E5 PUSH HL
\ 024C ?0116:
\ 024C E5 PUSH HL
\ 024D CD3804 CALL LWRD ?0126
\ 0250 E1 POP HL
\ 0251 E1 POP HL
\ 0252 E1 POP HL
\ 0253 E1 POP HL
\ 0254 ?0050:
\ 0254 ?0054:
187 }
188 while(ap_get_message() != 0);
\ 0254 CD0000 CALL LWRD ap_get_message
\ 0257 B7 OR A
\ 0258 CA0601 JP Z,?0025
\ 025B ?0055:
189 break;
\ 025B 18F7 JR ?0050
\ 025D ?0053:
\ 025D ?0056:
190
191 case AP_KEY_PLAY | AP_KEY_UP:
192 fselSetLocationC(location);
193 return RESULT_IGNORE;
194 break;
\ 025D ?0057:
195
196 case AP_KEY_MODE | AP_KEY_LONG:
197 key = RESULT_NULL;
\ 025D DD36EB00 LD (IX-21),0
\ 0261 ?0058:
198 LongTime:
199 output8(0x4e,input8(0x4e) | 0x08);
200 TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine));
\ 0261 CDAA04 CALL LWRD ?0131
201 fselDirLayer=temp_record.dirlayer; //目录层次 0--根目录
202 fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer]; //目录序号
\ 0264 C5 PUSH BC
\ 0265 0600 LD B,0
\ 0267 210000 LD HL,fselDirNo
\ 026A 09 ADD HL,BC
\ 026B C1 POP BC
\ 026C 70 LD (HL),B
203 fselFileNo=temp_record.fileno; //文件序号
\ 026D 2A0900 LD HL,(temp_record+9)
\ 0270 220000 LD (fselFileNo),HL
204 fselExtNo=temp_record.fselExtNo;
\ 0273 3A0C00 LD A,(temp_record+12)
\ 0276 320000 LD (fselExtNo),A
205
206 if(temp_record.name[0] == '\\') //当前所处子目录首,需要返回父目录
\ 0279 3A0D00 LD A,(temp_record+13)
\ 027C FE5C CP 92
\ 027E 2008 JR NZ,?0060
\ 0280 ?0059:
207 {
208 if(fselDirLayer==0)
\ 0280 3A0000 LD A,(fselDirLayer)
\ 0283 B7 OR A
\ 0284 202E JR NZ,?0073
\ 0286 ?0061:
209 fselDirNo[fselDirLayer] = 0;
\ 0286 1823 JR ?0119
210 else
\ 0288 ?0062:
211 fselDirLayer--;
\ 0288 ?0063:
212 }
213 else //当前所处可能是子目录或文件,需要分别处理
\ 0288 ?0060:
214 {
215 if(temp_record.filetype==TYPE_DIR)
\ 0288 3A0000 LD A,(temp_record)
\ 028B B7 OR A
\ 028C 3A0000 LD A,(fselDirLayer)
\ 028F 2017 JR NZ,?0066
\ 0291 ?0065:
216 {
217 if (fselDirLayer <= 7)
\ 0291 47 LD B,A
\ 0292 3E07 LD A,7
\ 0294 B8 CP B
\ 0295 3821 JR C,?0074
\ 0297 ?0067:
218 {
219 if(fselEntCurrentDir(temp_record.name))
\ 0297 110D00 LD DE,temp_record+13
\ 029A 3E00 LD A,BYTE3 fselEntCurrentDir
\ 029C 210000 LD HL,LWRD fselEntCurrentDir
\ 029F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02A2 2C INC L
\ 02A3 2D DEC L
\ 02A4 2812 JR Z,?0074
\ 02A6 ?0069:
220 fselDirLayer--;
\ 02A6 180C JR ?0073
\ 02A8 ?0070:
\ 02A8 ?0068:
221 }
222 }
223 else
\ 02A8 ?0066:
224 {
225 if(fselDirLayer==0)
\ 02A8 B7 OR A
\ 02A9 2009 JR NZ,?0073
\ 02AB ?0072:
226 fselDirNo[fselDirLayer] = 0;
\ 02AB ?0119:
\ 02AB 4F LD C,A
\ 02AC 41 LD B,C
\ 02AD 210000 LD HL,fselDirNo
\ 02B0 09 ADD HL,BC
\ 02B1 70 LD (HL),B
227 else
\ 02B2 1804 JR ?0074
\ 02B4 ?0073:
228 fselDirLayer--;
\ 02B4 210000 LD HL,fselDirLayer
\ 02B7 35 DEC (HL)
\ 02B8 ?0074:
\ 02B8 ?0071:
\ 02B8 ?0064:
229 }
230 }
231 fselGetLocation(location); //更新location
\ 02B8 DD5EFC LD E,(IX-4)
\ 02BB DD56FD LD D,(IX-3)
\ 02BE 3E00 LD A,BYTE3 fselGetLocation
\ 02C0 210000 LD HL,LWRD fselGetLocation
\ 02C3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
232 return key;
\ 02C6 DD6EEB LD L,(IX-21)
\ 02C9 2600 LD H,0
233 case AP_KEY_MODE | AP_KEY_UP:
\ 02CB C30A04 JP LWRD ?0110
\ 02CE ?0075:
234 output8(0x4e,input8(0x4e) | 0x08);
235 TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine));
\ 02CE CDAA04 CALL LWRD ?0131
236 fselDirLayer=temp_record.dirlayer; //目录层次 0--根目录
237 fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer]; //目录序号
\ 02D1 C5 PUSH BC
\ 02D2 0600 LD B,0
\ 02D4 210000 LD HL,fselDirNo
\ 02D7 09 ADD HL,BC
\ 02D8 C1 POP BC
\ 02D9 70 LD (HL),B
238 fselFileNo=temp_record.fileno; //文件序号
\ 02DA 2A0900 LD HL,(temp_record+9)
\ 02DD 220000 LD (fselFileNo),HL
239 fselExtNo=temp_record.fselExtNo;
\ 02E0 3A0C00 LD A,(temp_record+12)
\ 02E3 320000 LD (fselExtNo),A
240
241 if(temp_record.name[0] == '\\') //当前所处子目录首,需要返回父目录
\ 02E6 3A0D00 LD A,(temp_record+13)
\ 02E9 FE5C CP 92
\ 02EB 2054 JR NZ,?0077
\ 02ED ?0076:
242 {
243 if (fselRetParentDir(Strname))
\ 02ED 210800 LD HL,8
\ 02F0 39 ADD HL,SP
\ 02F1 EB EX DE,HL
\ 02F2 3E00 LD A,BYTE3 fselRetParentDir
\ 02F4 210000 LD HL,LWRD fselRetParentDir
\ 02F7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02FA 2C INC L
\ 02FB 2D DEC L
\ 02FC CABB03 JP Z,?0092
\ 02FF ?0078:
244 {
245 memcpy(temp_record.name,Strname, 11);
\ 02FF 010B00 LD BC,11
\ 0302 110D00 LD DE,temp_record+13
\ 0305 210800 LD HL,8
\ 0308 39 ADD HL,SP
\ 0309 EDB0 LDIR
246
247 init_dir_buf();
\ 030B 3E00 LD A,BYTE3 init_dir_buf
\ 030D 210000 LD HL,LWRD init_dir_buf
\ 0310 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
248 list_active=GetActiveDirFrom(temp_record.dirno[fselDirLayer]);
\ 0313 210100 LD HL,temp_record+1
\ 0316 ED4B0000 LD BC,(fselDirLayer)
\ 031A 0600 LD B,0
\ 031C 09 ADD HL,BC
\ 031D 5E LD E,(HL)
\ 031E 50 LD D,B
\ 031F 3E00 LD A,BYTE3 GetActiveDirFrom
\ 0321 210000 LD HL,LWRD GetActiveDirFrom
\ 0324 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0327 220000 LD (list_active),HL
249 cur_group=list_active/GroupDefine;
\ 032A 0E06 LD C,6
\ 032C CD8E04 CALL LWRD ?0130
250 top=(list_active/GroupDefine)*GroupDefine; ; //顶的序号
251 bottom=top+GroupDefine-1; //底的序号
252 if(bottom>(list_total_num-1))
\ 032F 21FFFF LD HL,65535
\ 0332 ED4B0000 LD BC,(list_total_num)
\ 0336 09 ADD HL,BC
\ 0337 FDE5 PUSH IY
\ 0339 C1 POP BC
\ 033A A7 AND A
\ 033B ED42 SBC HL,BC
\ 033D 307C JR NC,?0092
\ 033F ?0080:
253 bottom=list_total_num-1;
\ 033F 184D JR ?0123
\ 0341 ?0081:
254
255 }
256 else
\ 0341 ?0079:
\ 0341 ?0082:
257 {
258 }
259 }
260 else //当前所处可能是子目录或文件,需要分别处理
\ 0341 ?0077:
261 {
262 if(temp_record.filetype==TYPE_DIR)
\ 0341 3A0000 LD A,(temp_record)
\ 0344 B7 OR A
\ 0345 3A0000 LD A,(fselDirLayer)
\ 0348 2051 JR NZ,?0085
\ 034A ?0084:
263 {
264 if (fselDirLayer >= 7) //需实验看看是7还是8?
\ 034A FE07 CP 7
\ 034C D20601 JP NC,?0025
\ 034F ?0086:
265 {
266 break;
\ 034F ?0087:
267 }
268 if (fselDirNo[fselDirLayer] > 0)
\ 034F 4F LD C,A
\ 0350 0600 LD B,0
\ 0352 210000 LD HL,fselDirNo
\ 0355 09 ADD HL,BC
\ 0356 7E LD A,(HL)
\ 0357 B7 OR A
\ 0358 2861 JR Z,?0092
\ 035A ?0088:
269 {
270 fselEntCurrentDir(temp_record.name);
\ 035A 110D00 LD DE,temp_record+13
\ 035D 3E00 LD A,BYTE3 fselEntCurrentDir
\ 035F 210000 LD HL,LWRD fselEntCurrentDir
\ 0362 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
271
272 init_dir_buf();
\ 0365 3E00 LD A,BYTE3 init_dir_buf
\ 0367 210000 LD HL,LWRD init_dir_buf
\ 036A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
273 list_active=0;
\ 036D 68 LD L,B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -