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

📄 ui_director2.s01

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