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

📄 ui_directory2_scroll.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 3 页
字号:
	NAME	ui_directory2_scroll(17)
	RSEG	DEC_COM_FSL_C(0)
	RSEG	CSTR(0)
	RSEG	DEC_COM_FSL_D(0)
	RSEG	IDM_COM_FSL_D(0)
	RSEG	DEC_COM_FSL_R(0)
	EXTERN	Count_Byte
	PUBLIC	DecodeOnePage
	EXTERN	FS_Backup
	EXTERN	FS_CD
	EXTERN	FS_Dir
	EXTERN	FS_GetName
	EXTERN	FS_Restore
	EXTERN	GetFileTotal
	EXTERN	GetFileTotalCur
	PUBLIC	GetLongNameAndSave
	EXTERN	Getdirbuf
	EXTERN	Initdirbuf
	PUBLIC	OnePageRecord
	EXTERN	PutS
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	PUBLIC	SaveOtherPara
	EXTERN	ScrollFlag
	EXTERN	ScrollString
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	SetTextOutMode
	EXTERN	SetTextPos
	EXTERN	Setdirbuf
	PUBLIC	ShowDirectory
	EXTERN	ToDirEntry
	PUBLIC	TransOneRecord
	PUBLIC	Ui_IgnoreExt
	EXTERN	count_dir_num
	PUBLIC	cur_group
	PUBLIC	dir_total_num
	PUBLIC	dirbuf
	EXTERN	file_name
	PUBLIC	file_total_num
	EXTERN	fselDirLayer
	EXTERN	fselDirNo
	EXTERN	fselExtNo
	EXTERN	fselFileNo
	EXTERN	fselGetByNO
	EXTERN	fselTotal
	PUBLIC	get_dir_name
	PUBLIC	init_dir_buf
	PUBLIC	list_active
	PUBLIC	list_total_num
	EXTERN	menu_pos_list
	EXTERN	menulist_bck_pic
	EXTERN	region_scroll
	EXTERN	scroll_buf
	PUBLIC	temp_record
	EXTERN	unitochar
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?US_MOD_L02
	EXTERN	?S_MUL_L02
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?STRLEN_L11
	RSEG	DEC_COM_FSL_C
GetLongNameAndSave:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        ap common lib, directory control file
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.
; 7.	*             All Right Reserved
; 8.	*
; 9.	* File: ui_director2.c
; 10.	* By  : jmzhang
; 11.	* Version: v1.00     first version     2005-9-22 19:35
; 12.	*******************************************************************************
; 13.	*/
; 14.	#pragma codeseg(DEC_COM_FSL_C)
; 15.	
; 16.	#include "ap_common.h"
; 17.	#include "enhanced.h"
; 18.	#include "actos.h"
; 19.	#include "filesys.h"
; 20.	#include "directory.h"
; 21.	
; 22.	#define Color_BULE_Scroll_def  0x0000001f//深蓝 
; 23.	
; 24.	extern const char menu_pos_list[];
; 25.	extern const WORD menulist_bck_pic[];
; 26.	void GetLongNameAndSave(char *Namebuf,char *LongNamebuf,BYTE string_id);
; 27.	void SaveOtherPara(void);
; 28.	void TransOneRecord(file_record *target,file_record *source_record);
; 29.	void ShowDirectory(WORD top,WORD bottom,WORD Old_active,WORD active,BYTE string_id,BYTE Disk);
; 30.	
; 31.	extern WORD count_dir_num(void);
; 32.	extern void Initdirbuf(void);
; 33.	extern void Setdirbuf(WORD n);
; 34.	extern WORD Getdirbuf(WORD n);
; 35.	
; 36.	#pragma memory=dataseg(DEC_COM_FSL_D)   
; 37.	file_record temp_record;
; 38.	WORD dir_total_num,file_total_num,list_total_num,list_active,cur_group;    //目录总数,文件总数和浏览项数,浏览活动项
; 39.	
; 40.	#pragma memory=dataseg(IDM_COM_FSL_D)
; 41.	file_record OnePageRecord[row_count_def];
; 42.	char dirbuf[125];
; 43.	
; 44.	#pragma memory=constseg(DEC_COM_FSL_R)
; 45.	const char Ui_IgnoreExt[4] = {"*  "};
; 46.	#pragma memory=default
; 47.	
; 48.	extern  char     ScrollFlag;   //滚动标志位   
; 49.	extern char      scroll_buf[];     //滚屏buffer区 
; 50.	extern region_t region_scroll;  //滚屏区域 
; 51.	
; 52.	/********************************************************************************
; 53.	* Description :GetLongNameAndSave和SaveOtherPara用于保存
; 54.	*        读取记录的参数到全局的temp_record中
; 55.	*
; 56.	** Arguments  :
; 57.	*
; 58.	* Returns     :
; 59.	*
; 60.	* Notes       :
; 61.	*
; 62.	********************************************************************************/
; 63.	void GetLongNameAndSave(char *Namebuf,char *LongNamebuf,BYTE string_id)
; 64.	{
	PUSH	IY
	PUSH	IX
	PUSH	AF
	PUSH	BC
	POP	IX
	PUSH	DE
	POP	IY
; 65.	        BYTE NameNum;
; 66.	        memcpy(LongNamebuf,Namebuf,11);
	LD	BC,11
	PUSH	IX
	POP	DE
	PUSH	IY
	POP	HL
	LDIR
; 67.	        memcpy(temp_record.name,Namebuf,12);
	LD	C,12
	LD	DE,temp_record+13
	PUSH	IY
	POP	HL
	LDIR
; 68.	        NameNum=FS_GetName(LongNamebuf,24);
	LD	C,24
	PUSH	IX
	POP	DE
	CALL	LWRD FS_GetName
	LD	HL,0
	ADD	HL,SP
	LD	(HL),A
; 69.	        if(NameNum!=0)
	XOR	A
	OR	(HL)
	JR	Z,?0003
?0002:
; 70.	        {
; 71.	            unitochar(LongNamebuf,NameNum*2+2,string_id);
	LD	HL,10
	ADD	HL,SP
	LD	C,(HL)
	PUSH	BC
	LD	L,A
	LD	H,0
	ADD	HL,HL
	LD	C,L
	LD	B,H
	INC	BC
	INC	BC
	PUSH	IX
	POP	DE
	LD	A,BYTE3 unitochar
	LD	HL,LWRD unitochar
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 72.	            memcpy(temp_record.longname,LongNamebuf,50);    //get one usful record
	LD	BC,50
	LD	DE,temp_record+25
	PUSH	IX
	POP	HL
	JR	?0087
; 73.	        }
; 74.	        else
?0003:
; 75.	            memcpy(temp_record.longname,Namebuf,12);    //get one usful record
	LD	BC,12
	LD	DE,temp_record+25
	PUSH	IY
	POP	HL
?0087:
	LDIR
?0004:
; 76.	}
?0105:
	POP	HL
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
SaveOtherPara:
; 77.	
; 78.	/********************************************************************************
; 79.	* Description :保存目录结构有关参数到全局结构temp_record中
; 80.	*
; 81.	** Arguments  :
; 82.	*
; 83.	* Returns     :
; 84.	*
; 85.	* Notes       :
; 86.	*
; 87.	********************************************************************************/
; 88.	void SaveOtherPara(void)
; 89.	{
	PUSH	BC
	PUSH	DE
; 90.	    memcpy(temp_record.dirno,fselDirNo,8);    //目录序号
	LD	BC,8
	LD	DE,temp_record+1
	LD	HL,fselDirNo
	LDIR
; 91.	    temp_record.fileno=fselFileNo;        //文件序号
	LD	HL,(fselFileNo)
	LD	(temp_record+9),HL
; 92.	    temp_record.fselExtNo=fselExtNo;    //当前后缀名
	LD	A,(fselExtNo)
	LD	(temp_record+12),A
; 93.	    temp_record.dirlayer=fselDirLayer;        //目录层次 0--根目录
	LD	A,(fselDirLayer)
	LD	(temp_record+11),A
; 94.	}
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
TransOneRecord:
; 95.	
; 96.	/********************************************************************************
; 97.	* Description :用于从idm读记录或写入记录到idm
; 98.	*
; 99.	** Arguments  :
; 100.	*
; 101.	* Returns     :
; 102.	*
; 103.	* Notes       :
; 104.	*
; 105.	********************************************************************************/
; 106.	void TransOneRecord(file_record *target,file_record *source_record)
; 107.	{
	PUSH	IY
	PUSH	IX
	PUSH	AF
	PUSH	BC
	POP	IX
	PUSH	DE
	POP	IY
; 108.	    byte status;
; 109.	    status = input8(0x05);
	IN	A,(5)
	LD	HL,0
	ADD	HL,SP
	LD	(HL),A
; 110.	    output8(0x05, 0xf6);
	LD	A,246
	OUT	(5),A
; 111.	
; 112.	    target->filetype=source_record->filetype;           //文件类型 0-- 目录  1  文件
	LD	A,(BC)
	EX	DE,HL
	LD	(HL),A
; 113.	    memcpy(target->dirno,source_record->dirno,8);    //目录序号
	LD	BC,8
	PUSH	IY
	POP	DE
	INC	DE
	PUSH	IX
	POP	HL
	INC	HL
	LDIR
; 114.	    target->fileno=source_record->fileno;        //文件序号
	LD	L,(IX+9)
	LD	(IY+9),L
	LD	H,(IX+10)
	LD	(IY+10),H
; 115.	    target->fselExtNo=source_record->fselExtNo;    //当前后缀名
	LD	B,(IX+12)
	LD	(IY+12),B
; 116.	    target->dirlayer=source_record->dirlayer;        //目录层次 0--根目录
	LD	B,(IX+11)
	LD	(IY+11),B
; 117.	    memcpy(target->name,source_record->name,12);
	LD	HL,13
	PUSH	IY
	POP	DE
	ADD	HL,DE
	EX	DE,HL
	LD	HL,13
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	BC,12
	LDIR
; 118.	    memcpy(target->longname,source_record->longname,50);
	LD	HL,25
	PUSH	IY
	POP	DE
	ADD	HL,DE
	EX	DE,HL
	LD	HL,25
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	BC,50
	LDIR
; 119.	
; 120.	    output8(0x05, status);
	LD	L,C
	LD	H,B
	ADD	HL,SP
	LD	A,(HL)
	OUT	(5),A
; 121.	}
	JP	LWRD ?0105
ShowDirectory:
; 122.	
; 123.	
; 124.	/********************************************************************************
; 125.	* Description : show the directory.
; 126.	*
; 127.	* Arguments  :
; 128.	*            location: get thedisk type
; 129.	*            Invpath: the "\" or name
; 130.	*            Namebuf:the string you will display
; 131.	*            type : show file kind
; 132.	*            string_id: language type
; 133.	* Returns     :
; 134.	*            other:    Successful
; 135.	*            0:    Fail, detail information in fselError
; 136.	* Notes       :  only display the valid directory or file
; 137.	*
; 138.	********************************************************************************/
; 139.	
; 140.	 void ShowDirectory(WORD top,WORD bottom,WORD Old_active,WORD active,BYTE string_id,BYTE Disk)
; 141.	{
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	BC
	PUSH	DE
	PUSH	AF
	PUSH	AF
; 142.	    WORD i,tmp;
; 143.	    BYTE DisplayBytes;    
; 144.	    region_scroll.x=explorer_str_x_def;
	LD	A,32
	LD	(region_scroll),A
; 145.	    region_scroll.width=160;
	LD	A,160
	LD	(region_scroll+2),A
; 146.	    region_scroll.height=16; 
	LD	A,16
	LD	(region_scroll+3),A
; 147.	    if(ScrollFlag)   
	LD	A,(ScrollFlag)
	OR	A
	JR	Z,?0006
?0005:
; 148.	    {
; 149.	        SetTextOutMode(0);
	LD	E,0
	CALL	LWRD SetTextOutMode
; 150.	        SetBackgdColor(Color_BULE_Scroll_def);        
	LD	BC,0
	LD	DE,31
	CALL	LWRD SetBackgdColor
; 151.	        ScrollString(scroll_buf, FALSE,string_id,&region_scroll);
	LD	HL,region_scroll
	PUSH	HL
	LD	L,(IX+12)
	PUSH	HL
	LD	C,0
	CALL	LWRD ?0106
	POP	HL
	POP	HL
; 152.	        SetTextOutMode(1);  
	LD	E,1
	CALL	LWRD SetTextOutMode
; 153.	    } 
; 154.	    else
	JP	LWRD ?0045
?0006:
; 155.	    {   
; 156.	     SetTextOutMode(1);
	LD	E,1
	CALL	LWRD SetTextOutMode
; 157.	     SetPenColor(Color_WHITE_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetPenColor
; 158.	     if(Old_active!=active)
	LD	L,(IX+10)
	LD	H,(IX+11)
	LD	C,(IX+8)
	LD	B,(IX+9)
	AND	A
	SBC	HL,BC
	JP	Z,?0009
?0008:
; 159.	     {
; 160.	
; 161.	//清除旧的活动菜单项
; 162.	       tmp = Old_active%row_count_def;
	LD	BC,6
	LD	E,(IX+8)
	LD	D,(IX+9)
	CALL	LWRD ?US_MOD_L02
	LD	(IX-8),E
	LD	(IX-7),D
; 163.	        ResShowPic(menulist_bck_pic[tmp], menu_bck_x_def, menu_pos_list[tmp]-4);
	LD	HL,menu_pos_list
	ADD	HL,DE
	LD	A,(HL)
	ADD	A,252
	LD	C,A
	PUSH	BC
	LD	C,9
	EX	DE,HL
	ADD	HL,HL
	LD	DE,menulist_bck_pic
	ADD	HL,DE
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	CALL	LWRD ?0108
	POP	AF
; 164.	        ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	CALL	LWRD ?0109
	POP	AF
; 165.	 //重新显示旧的活动菜单
; 166.	      TransOneRecord(&temp_record,&OnePageRecord[tmp]);    //将idm中记录数据读取到temp_record中
	LD	BC,75
	LD	E,(IX-8)
	LD	D,(IX-7)
	CALL	LWRD ?0110
; 167.	      if(temp_record.filetype==TYPE_FILE)
	LD	A,(temp_record)
	DEC	A
	JR	NZ,?0011
?0010:
; 168.	      ResShowPic(MFILE,13,menu_pos_list[tmp]-1);
	LD	HL,menu_pos_list
	LD	C,(IX-8)
	LD	B,(IX-7)
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,255
	LD	C,A
	PUSH	BC
	LD	C,13
	LD	DE,198
	JR	?0088
?0011:
; 169.	      else if(temp_record.filetype==TYPE_DIR)
	LD	A,(temp_record)
	OR	A
	JR	NZ,?0014
?0013:
; 170.	      {
; 171.	            ResShowPic(MDIR,10,menu_pos_list[tmp]-4);
	LD	HL,menu_pos_list
	LD	C,(IX-8)
	LD	B,(IX-7)
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,252
	LD	C,A
	PUSH	BC
	LD	C,10
	LD	DE,175
?0088:
	CALL	LWRD ?0108
	POP	AF
?0014:
?0012:
; 172.	      }
; 173.	      //SetPenColor(Color_WHITE_def);
; 174.	      SetTextPos(explorer_str_x_def, menu_pos_list[tmp]-2);
	LD	HL,menu_pos_list
	LD	C,(IX-8)
	LD	B,(IX-7)
	CALL	LWRD ?0111
; 175.	      DisplayBytes =Count_Byte(temp_record.longname,string_id);                  
; 176.	      PutS(temp_record.longname,DisplayBytes);      
; 177.	       
; 178.	//显示新的活动菜单
; 179.	       tmp = active%row_count_def;
	LD	BC,6
	LD	E,(IX+10)
	LD	D,(IX+11)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -