📄 ui_directory2_scroll.s01
字号:
LD (HL),0
?0047:
DEC HL
LD C,(HL)
INC HL
LD B,(HL)
LD HL,(dir_total_num)
AND A
SBC HL,BC
JP C,?0046
?0048:
?0051:
; 272. {
; 273. while(1)
; 274. {
; 275. if(tmp == 1)
PUSH IX
POP HL
LD A,1
XOR L
OR H
JR NZ,?0054
?0053:
; 276. FS_Dir(file_name, Ui_IgnoreExt, FS_DIR_DIR);
LD C,129
PUSH BC
LD BC,Ui_IgnoreExt
LD DE,file_name
CALL LWRD FS_Dir
POP HL
?0054:
; 277. if(tmp > 1)
PUSH IX
POP BC
LD HL,1
AND A
SBC HL,BC
JR NC,?0056
?0055:
; 278. FS_Dir(file_name, Ui_IgnoreExt, FS_DIR_DIR_CONT);
LD C,1
PUSH BC
LD BC,Ui_IgnoreExt
LD DE,file_name
CALL LWRD FS_Dir
POP HL
?0056:
; 279. tmp++;
; 280. FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
LD HL,0
PUSH HL
LD C,2
LD L,6
ADD HL,SP
EX DE,HL
CALL LWRD FS_Backup
POP HL
; 281. total = GetFileTotal(file_name, TRUE);
LD C,1
LD DE,file_name
LD A,BYTE3 GetFileTotal
LD HL,LWRD GetFileTotal
CALL LWRD ?BANK_CALL_DIRECT_L08
PUSH HL
POP IY
; 282. FS_CD(file_name);
LD DE,file_name
CALL LWRD FS_CD
; 283. if (ToDirEntry(file_name,1))
LD BC,1
LD DE,file_name
LD A,BYTE3 ToDirEntry
LD HL,LWRD ToDirEntry
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
LD HL,2
ADD HL,SP
INC IX
JR Z,?0058
?0057:
; 284. {
; 285. direxist=1;
LD (HL),1
; 286. }
; 287. else
JR ?0059
?0058:
; 288. {
; 289. direxist=0;
LD (HL),0
?0059:
; 290. }
; 291. output8(0x4e,input8(0x4e)|0x8);
IN A,(78)
SET 3,A
OUT (78),A
; 292. FS_CD("\\");
LD DE,?0060
CALL LWRD FS_CD
; 293.
; 294. FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
LD HL,0
PUSH HL
LD C,2
LD L,6
ADD HL,SP
EX DE,HL
CALL LWRD FS_Restore
POP HL
; 295. output8(0x4e,input8(0x4e)|0x08); //清WATCH DOG
IN A,(78)
SET 3,A
OUT (78),A
; 296. if((total != 0)||(direxist))
PUSH IY
POP HL
LD A,L
OR H
JR NZ,?0063
LD HL,2
ADD HL,SP
OR (HL)
JP Z,?0048
?0063:
?0064:
?0061:
; 297. {
; 298. break;
?0062:
?0050:
; 299. }
; 300. }
; 301. Setdirbuf( tmp - 1 );
LD HL,65535
PUSH IX
POP BC
ADD HL,BC
EX DE,HL
LD A,BYTE3 Setdirbuf
LD HL,LWRD Setdirbuf
CALL LWRD ?BANK_CALL_DIRECT_L08
LD HL,0
ADD HL,SP
INC (HL)
INC HL
JP NZ,?0047
INC (HL)
JP LWRD ?0047
?0046:
; 302. }
; 303. FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
LD HL,0
PUSH HL
LD C,2
LD L,6
ADD HL,SP
EX DE,HL
CALL LWRD FS_Restore
POP HL
; 304. }
LD HL,36
ADD HL,SP
LD SP,HL
POP IX
POP IY
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
get_dir_name:
; 305.
; 306. /********************************************************************************
; 307. * Description : 获取第N个有效的目录
; 308. *
; 309. * Arguments :
; 310. *
; 311. * Returns :
; 312. *
; 313. * Notes :
; 314. *
; 315. ********************************************************************************
; 316. */
; 317. bool get_dir_name(char *file, WORD num)
; 318. {
PUSH IY
PUSH IX
PUSH BC
PUSH AF
PUSH DE
POP IX
; 319.
; 320. WORD m, tmp,total_file;
; 321. if(num>dir_total_num)
LD HL,(dir_total_num)
AND A
SBC HL,BC
JR NC,?0066
?0065:
; 322. return 0;
LD L,0
JP LWRD ?0078
?0066:
; 323. if(num == 0) //根目录或目录首
LD A,C
OR B
JR NZ,?0068
?0067:
; 324. {
; 325. if(fselDirLayer==0)
LD A,(fselDirLayer)
OR A
JR NZ,?0070
?0069:
; 326. {
; 327. file[0] = 'R';
LD (IX+0),82
; 328. file[1] = 'O';
LD (IX+1),79
; 329. file[2] = 'O';
LD (IX+2),79
; 330. file[3] = 'T';
LD (IX+3),84
; 331. file[4] = 0;
LD (IX+4),A
; 332. }
; 333. else
JR ?0071
?0070:
; 334. {
; 335. file[0] = '\\';
LD (IX+0),92
; 336. file[1] = 0;
LD (IX+1),0
?0071:
; 337. }
; 338. fselDirNo[fselDirLayer]=0;
LD BC,(fselDirLayer)
LD B,0
LD HL,fselDirNo
ADD HL,BC
LD (HL),B
; 339. return 1;
JR ?0074
; 340.
; 341. }
?0068:
; 342. else
; 343. {
; 344. tmp=0;
; 345. tmp = Getdirbuf(num);
LD HL,0
ADD HL,SP
PUSH HL
LD E,C
LD D,B
LD A,BYTE3 Getdirbuf
LD HL,LWRD Getdirbuf
CALL LWRD ?BANK_CALL_DIRECT_L08
LD C,L
LD B,H
POP HL
LD (HL),C
INC HL
LD (HL),B
; 346.
; 347. fselDirNo[fselDirLayer]=tmp;
LD BC,(fselDirLayer)
LD B,0
LD HL,fselDirNo
ADD HL,BC
PUSH HL
LD HL,2
ADD HL,SP
LD B,(HL)
POP HL
LD (HL),B
; 348.
; 349. if(tmp > 0)
LD HL,0
ADD HL,SP
LD A,B
INC HL
OR (HL)
JR Z,?0074
?0072:
; 350. {
; 351. FS_Dir(file, Ui_IgnoreExt, FS_DIR_DIR);
LD C,129
PUSH BC
LD BC,Ui_IgnoreExt
PUSH IX
POP DE
CALL LWRD FS_Dir
POP HL
; 352. for(m = 2; m <= tmp; m++)
LD IY,2
?0075:
PUSH IY
POP BC
LD HL,0
ADD HL,SP
LD D,(HL)
INC HL
LD H,(HL)
LD L,D
AND A
SBC HL,BC
JR C,?0074
?0076:
; 353. FS_Dir(file, Ui_IgnoreExt, FS_DIR_DIR_CONT);
LD C,1
PUSH BC
LD BC,Ui_IgnoreExt
PUSH IX
POP DE
CALL LWRD FS_Dir
POP HL
; 354. }
INC IY
JR ?0075
?0074:
?0073:
; 355. return 1;
LD L,1
; 356. }
?0078:
POP AF
POP AF
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
; 357. }
DecodeOnePage:
; 358.
; 359. /********************************************************************************
; 360. * Description : decode onepage file record .
; 361. *
; 362. * Arguments :
; 363. * top:first record
; 364. * bottom:last record
; 365. * type : show file kind
; 366. * string_id: language type
; 367. * Returns :
; 368. *
; 369. **type= DIRECTORY_MUSIC/DIRECTORY_VOICE/...
; 370. *
; 371. ********************************************************************************/
; 372. void DecodeOnePage(WORD top,WORD bottom,BYTE type, BYTE string_id)
; 373. {
PUSH IY
PUSH IX
PUSH BC
LD HL,65484
ADD HL,SP
LD SP,HL
PUSH DE
POP IY
; 374. WORD i,NameNum,temp;
; 375. char Longnamebuf[50];
; 376. temp=fselTotal;
LD BC,(fselTotal)
LD (HL),C
INC HL
LD (HL),B
; 377. fselTotal=GetFileTotalCur(FALSE);
LD E,0
LD A,BYTE3 GetFileTotalCur
LD HL,LWRD GetFileTotalCur
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (fselTotal),HL
; 378. for(i = top; i <= bottom; i++)
PUSH IY
POP IX
?0080:
PUSH IX
POP BC
LD HL,52
ADD HL,SP
LD D,(HL)
INC HL
LD H,(HL)
LD L,D
AND A
SBC HL,BC
JR C,?0079
?0081:
; 379. {
; 380. if(i>dir_total_num) //文件
LD HL,(dir_total_num)
SBC HL,BC
JR NC,?0084
?0083:
; 381. {
; 382. fselGetByNO(file_name, (i - dir_total_num ));
LD BC,(dir_total_num)
PUSH IX
POP HL
AND A
SBC HL,BC
LD C,L
LD B,H
LD DE,file_name
LD A,BYTE3 fselGetByNO
LD HL,LWRD fselGetByNO
CALL LWRD ?BANK_CALL_DIRECT_L08
; 383. temp_record.filetype= TYPE_FILE;
LD A,1
JR ?0104
; 384. }
; 385. else //目录
?0084:
; 386. {
; 387. get_dir_name(file_name, i );
LD DE,file_name
LD A,BYTE3 get_dir_name
LD HL,LWRD get_dir_name
CALL LWRD ?BANK_CALL_DIRECT_L08
; 388. temp_record.filetype= TYPE_DIR;
XOR A
?0104:
LD (temp_record),A
?0085:
; 389. }
; 390. GetLongNameAndSave(file_name,Longnamebuf,string_id); //保存长,短名字到 temp_record
LD HL,64
ADD HL,SP
LD C,(HL)
PUSH BC
LD HL,4
ADD HL,SP
LD C,L
LD B,H
LD DE,file_name
LD A,BYTE3 GetLongNameAndSave
LD HL,LWRD GetLongNameAndSave
CALL LWRD ?BANK_CALL_DIRECT_L08
POP HL
; 391. SaveOtherPara(); //保存其他目录结构相关参数到 temp_record
LD A,BYTE3 SaveOtherPara
LD HL,LWRD SaveOtherPara
CALL LWRD ?BANK_CALL_DIRECT_L08
; 392.
; 393. TransOneRecord(OnePageRecord+i-top,&temp_record); //将temp_record的记录数据保存到idm中
PUSH IY
POP DE
PUSH IX
POP HL
AND A
SBC HL,DE
EX DE,HL
LD BC,75
CALL LWRD ?S_MUL_L02
LD HL,OnePageRecord
ADD HL,DE
EX DE,HL
LD A,BYTE3 TransOneRecord
LD HL,LWRD TransOneRecord
LD BC,temp_record
CALL LWRD ?BANK_CALL_DIRECT_L08
INC IX
JP LWRD ?0080
?0079:
; 394. }
; 395. fselTotal=temp;
LD HL,0
ADD HL,SP
LD B,(HL)
INC HL
LD H,(HL)
LD L,B
LD (fselTotal),HL
; 396. }
LD HL,54
ADD HL,SP
LD SP,HL
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
RSEG CSTR
?0060:
DEFB 92,0
RSEG DEC_COM_FSL_D
temp_record:
DEFS 75
dir_total_num:
DEFS 2
file_total_num:
DEFS 2
list_total_num:
DEFS 2
list_active:
DEFS 2
cur_group:
DEFS 2
RSEG IDM_COM_FSL_D
OnePageRecord:
DEFS 450
dirbuf:
DEFS 125
RSEG DEC_COM_FSL_R
Ui_IgnoreExt:
DEFB '* '
DEFB 0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -