⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_director2.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
?0028:
; 219.	            
; 220.	                ResShowPic(MFILE,13,file_pos[i-top]-1);
	LD	C,(IX+2)
	LD	B,A
	LD	H,B
	LD	L,(IX-9)
	AND	A
	SBC	HL,BC
	LD	BC,file_pos
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,255
	LD	C,A
	PUSH	BC
	LD	C,13
	LD	DE,121
	JR	?0079
?0029:
; 221.	 
; 222.	            else if(temp_record.filetype==TYPE_DIR)
	LD	A,(temp_record)
	OR	A
	JR	NZ,?0032
?0031:
; 223.	            {
; 224.	                {
; 225.	                    ResShowPic(MDIR,10,file_pos[i-top]-4); 
	LD	C,(IX+2)
	LD	B,A
	LD	H,B
	LD	L,(IX-9)
	SBC	HL,BC
	LD	BC,file_pos
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,252
	LD	C,A
	PUSH	BC
	LD	C,10
	LD	DE,91
?0079:
	CALL	LWRD ?0090
	POP	AF
?0032:
?0030:
; 226.	                }         
; 227.	            }
; 228.	            SetTextPos(explorer_str_x_def, file_pos[i-top]-2);
	LD	C,(IX+2)
	LD	B,0
	LD	H,B
	LD	L,(IX-9)
	AND	A
	SBC	HL,BC
	LD	BC,file_pos
	CALL	LWRD ?0092
; 229.	            PutS(temp_record.longname,-1); 
	INC	(IX-9)
; 230.	        }
; 231.	    }
	JP	LWRD ?0022
?0021:
?0017:
; 232.	    SetPenColor(oldDC_sav.PenColor);
	LD	C,(IX-6)
	LD	B,(IX-5)
	LD	E,(IX-8)
	LD	D,(IX-7)
	CALL	LWRD SetPenColor
; 233.	    SetBackgdColor(oldDC_sav.BackgdColor);
	LD	HL,6
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	CALL	LWRD SetBackgdColor
; 234.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0088:
	LD	BC,0
	LD	DE,65535
	JP	LWRD SetPenColor
?0089:
	CALL	LWRD ?UC_MOD_L01
	LD	(IX-10),A
	LD	C,A
	LD	B,0
	LD	DE,75
	CALL	LWRD ?S_MUL_L02
	LD	HL,OnePageRecord
	ADD	HL,DE
	LD	C,L
	LD	B,H
	LD	DE,temp_record
	LD	A,BYTE3 TransOneRecord
	LD	HL,LWRD TransOneRecord
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,(temp_record)
	DEC	A
	RET
?0091:
	LD	C,31
	LD	DE,50
?0090:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0092:
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,254
	LD	C,A
	LD	E,32
	CALL	LWRD SetTextPos
	LD	C,255
	LD	DE,temp_record+25
	CALL	LWRD PutS
	RET
?0093:
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	DE,75
	JP	LWRD ?S_MUL_L02
init_dir_buf:
; 235.	
; 236.	
; 237.	//********************************************************************************
; 238.	//* Description :建立快速查询表,目录更新时需要重新调用此函数
; 239.	//*
; 240.	//** Arguments  :
; 241.	//*
; 242.	//* Returns     :
; 243.	//*
; 244.	//* Notes       :
; 245.	//*
; 246.	//********************************************************************************
; 247.	void init_dir_buf(void)
; 248.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-38
	PUSH	IY
; 249.	    WORD i, tmp, total;
; 250.	    char Backbuf[32];
; 251.	    BOOL direxist;
; 252.	
; 253.	    Initdirbuf();    //清除目录检索表
	LD	A,BYTE3 Initdirbuf
	LD	HL,LWRD Initdirbuf
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 254.	    tmp = 1;
; 255.	
; 256.	    FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
	LD	HL,0
	PUSH	HL
	LD	C,2
	LD	L,10
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Backup
	POP	HL
; 257.	    dir_total_num=count_dir_num();
	LD	A,BYTE3 count_dir_num
	LD	HL,LWRD count_dir_num
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(dir_total_num),HL
; 258.	    file_total_num=GetFileTotalCur(FALSE);
	LD	E,0
	LD	A,BYTE3 GetFileTotalCur
	LD	HL,LWRD GetFileTotalCur
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(file_total_num),HL
; 259.	    list_total_num=dir_total_num+file_total_num+1;
	LD	BC,(dir_total_num)
	ADD	HL,BC
	INC	HL
	LD	(list_total_num),HL
; 260.	    fselTotal=file_total_num;
	LD	HL,(file_total_num)
	LD	(fselTotal),HL
; 261.	
; 262.	    for(i = 1; i <= dir_total_num; i++)
	LD	IY,1
	LD	(IX-38),1
	LD	(IX-37),0
?0034:
	LD	C,(IX-38)
	LD	B,(IX-37)
	LD	HL,(dir_total_num)
	AND	A
	SBC	HL,BC
	JP	C,?0033
?0035:
?0038:
; 263.	    {
; 264.	        while(1)
; 265.	        {
; 266.	            if(tmp == 1)
	PUSH	IY
	POP	HL
	LD	A,1
	XOR	L
	OR	H
	JR	NZ,?0041
?0040:
; 267.	                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
?0041:
; 268.	            if(tmp > 1)
	PUSH	IY
	POP	BC
	LD	HL,1
	AND	A
	SBC	HL,BC
	JR	NC,?0043
?0042:
; 269.	                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
?0043:
; 270.	            tmp++;
; 271.	            FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
	LD	HL,0
	PUSH	HL
	LD	C,2
	LD	L,10
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Backup
	POP	HL
; 272.	            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
	LD	(IX-36),L
	LD	(IX-35),H
; 273.	            FS_CD(file_name);
	LD	DE,file_name
	CALL	LWRD FS_CD
; 274.	            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
	INC	IY
	JR	Z,?0045
?0044:
; 275.	            {
; 276.	                direxist=1;
	LD	(IX-34),1
; 277.	            }
; 278.	            else
	JR	?0046
?0045:
; 279.	            {
; 280.	                direxist=0;
	LD	(IX-34),L
?0046:
; 281.	            }
; 282.	            output8(0x4e,input8(0x4e)|0x8);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 283.	            FS_CD("\\");
	LD	DE,?0047
	CALL	LWRD FS_CD
; 284.	
; 285.	            FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
	LD	HL,0
	PUSH	HL
	LD	C,2
	LD	L,10
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Restore
	POP	HL
; 286.	            output8(0x4e,input8(0x4e)|0x08);        //清WATCH DOG
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 287.	            if((total != 0)||(direxist))
	LD	A,(IX-36)
	OR	(IX-35)
	JR	NZ,?0037
	OR	(IX-34)
	JP	Z,?0035
?0050:
?0051:
?0048:
; 288.	            {
; 289.	                    break;
?0049:
?0037:
; 290.	            }
; 291.	        }
; 292.	        Setdirbuf( tmp - 1 );
	LD	HL,65535
	PUSH	IY
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	A,BYTE3 Setdirbuf
	LD	HL,LWRD Setdirbuf
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	(IX-38)
	JR	NZ,?0080
	INC	(IX-37)
?0080:
	JP	LWRD ?0034
?0033:
; 293.	    }
; 294.	    FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
	LD	HL,0
	PUSH	HL
	LD	C,2
	LD	L,10
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Restore
	POP	HL
; 295.	}
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
get_dir_name:
; 296.	
; 297.	/********************************************************************************
; 298.	* Description : 获取第N个有效的目录
; 299.	*
; 300.	* Arguments   :
; 301.	*
; 302.	* Returns     :
; 303.	*
; 304.	* Notes       :
; 305.	*
; 306.	********************************************************************************
; 307.	*/
; 308.	bool get_dir_name(char *file, WORD num)
; 309.	{
	PUSH	IY
	PUSH	IX
	PUSH	BC
	PUSH	AF
	PUSH	DE
	POP	IX
; 310.	
; 311.	    WORD m, tmp,total_file;
; 312.	    if(num>dir_total_num)
	LD	HL,(dir_total_num)
	AND	A
	SBC	HL,BC
	JR	NC,?0053
?0052:
; 313.	        return 0;
	LD	L,0
	JP	LWRD ?0065
?0053:
; 314.	    if(num == 0)    //根目录或目录首
	LD	A,C
	OR	B
	JR	NZ,?0055
?0054:
; 315.	    {
; 316.	        if(fselDirLayer==0)
	LD	A,(fselDirLayer)
	OR	A
	JR	NZ,?0057
?0056:
; 317.	        {
; 318.	            file[0] = 'R';
	LD	(IX+0),82
; 319.	            file[1] = 'O';
	LD	(IX+1),79
; 320.	            file[2] = 'O';
	LD	(IX+2),79
; 321.	            file[3] = 'T';
	LD	(IX+3),84
; 322.	            file[4] = 0;
	LD	(IX+4),A
; 323.	        }
; 324.	        else
	JR	?0058
?0057:
; 325.	        {
; 326.	            file[0] = '\\';
	LD	(IX+0),92
; 327.	            file[1] = 0;
	LD	(IX+1),0
?0058:
; 328.	        }
; 329.	        fselDirNo[fselDirLayer]=0;
	LD	BC,(fselDirLayer)
	LD	B,0
	LD	HL,fselDirNo
	ADD	HL,BC
	LD	(HL),B
; 330.	        return 1;
	JR	?0061
; 331.	
; 332.	   }
?0055:
; 333.	   else
; 334.	   {
; 335.	        tmp=0;
; 336.	        tmp = Getdirbuf(num);
	LD	E,C
	LD	D,B
	LD	A,BYTE3 Getdirbuf
	LD	HL,LWRD Getdirbuf
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IY
; 337.	
; 338.	    fselDirNo[fselDirLayer]=tmp;
	LD	BC,(fselDirLayer)
	LD	B,0
	LD	HL,fselDirNo
	ADD	HL,BC
	PUSH	IY
	POP	BC
	LD	(HL),C
; 339.	
; 340.	        if(tmp > 0)
	PUSH	IY
	POP	HL
	LD	A,L
	OR	H
	JR	Z,?0061
?0059:
; 341.	        {
; 342.	            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
; 343.	            for(m = 2; m <= tmp; m++)
	LD	HL,0
	ADD	HL,SP
	LD	(HL),2
	INC	HL
	LD	(HL),0
?0062:
	DEC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	PUSH	IY
	POP	HL
	AND	A
	SBC	HL,BC
	JR	C,?0061
?0063:
; 344.	              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
	LD	HL,0
	ADD	HL,SP
	INC	(HL)
	INC	HL
	JR	NZ,?0062
	INC	(HL)
; 345.	        }
	JR	?0062
?0061:
?0060:
; 346.	        return 1;
	LD	L,1
; 347.	    }
?0065:
	POP	AF
	POP	AF
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
; 348.	}
DecodeOnePage:
; 349.	
; 350.	/********************************************************************************
; 351.	* Description : decode onepage file record .
; 352.	*
; 353.	* Arguments  :
; 354.	*            top:first record
; 355.	*         bottom:last record
; 356.	*            type : show file kind
; 357.	*            string_id: language type
; 358.	* Returns     :
; 359.	*
; 360.	**type=  DIRECTORY_MUSIC/DIRECTORY_VOICE/...
; 361.	*
; 362.	********************************************************************************/
; 363.	void DecodeOnePage(WORD top,WORD bottom,BYTE type, BYTE string_id)
; 364.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-50
	PUSH	IY
; 365.	    WORD i,NameNum,temp;
; 366.	    char Longnamebuf[50];
; 367.	    temp=fselTotal;
	LD	IY,(fselTotal)
; 368.	    fselTotal=GetFileTotalCur(FALSE);
	LD	E,0
	LD	A,BYTE3 GetFileTotalCur
	LD	HL,LWRD GetFileTotalCur
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(fselTotal),HL
; 369.	    for(i = top; i <= bottom; i++)
	LD	E,(IX+2)
	LD	D,(IX+3)
?0067:
	LD	L,(IX+4)
	LD	H,(IX+5)
	AND	A
	SBC	HL,DE
	JR	C,?0066
?0068:
; 370.	    {
; 371.	         if(i>dir_total_num)    //文件
	LD	HL,(dir_total_num)
	SBC	HL,DE
	PUSH	DE
	JR	NC,?0071
?0070:
; 372.	         {
; 373.	            fselGetByNO(file_name, (i - dir_total_num ));
	LD	BC,(dir_total_num)
	EX	DE,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
	POP	DE
; 374.	            temp_record.filetype= TYPE_FILE;
	LD	A,1
	JR	?0085
; 375.	         }
; 376.	         else            //目录
?0071:
; 377.	         {
; 378.	            get_dir_name(file_name, i );
	LD	C,E
	LD	B,D
	LD	DE,file_name
	LD	A,BYTE3 get_dir_name
	LD	HL,LWRD get_dir_name
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	DE
; 379.	            temp_record.filetype= TYPE_DIR;
	XOR	A
?0085:
	LD	(temp_record),A
?0072:
; 380.	         }
; 381.	        GetLongNameAndSave(file_name,Longnamebuf,string_id);    //保存长,短名字到 temp_record
	PUSH	DE
	LD	L,(IX+12)
	PUSH	HL
	LD	HL,6
	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
	POP	DE
; 382.	        SaveOtherPara();                //保存其他目录结构相关参数到 temp_record
	LD	A,BYTE3 SaveOtherPara
	LD	HL,LWRD SaveOtherPara
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 383.	
; 384.	        TransOneRecord(OnePageRecord+i-top,&temp_record);    //将temp_record的记录数据保存到idm中
	PUSH	DE
	LD	C,(IX+2)
	LD	B,(IX+3)
	EX	DE,HL
	CALL	LWRD ?0093
	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
	POP	DE
	INC	DE
	JR	?0067
?0066:
; 385.	     }
; 386.	     fselTotal=temp;
	LD	(fselTotal),IY
; 387.	}
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
	RSEG	CSTR
?0047:
	DEFB	92,0
	RSEG	CONST
file_pos:
	DEFB	'w'
	DEFB	'b'
	DEFB	'M'
	DEFB	'8'
	DEFB	'#'
	DEFB	14
file_bck_pic:
	DEFW	106
	DEFW	105
	DEFW	104
	DEFW	103
	DEFW	102
	DEFW	101
	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 + -