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

📄 fileio.hhf

📁 High Level assembly language(HLA)软件
💻 HHF
📖 第 1 页 / 共 2 页
字号:
#if( ! @defined( fileio_hhf ))?fileio_hhf := true;#includeOnce( "os.hhf" )#includeOnce( "hla.hhf" )#includeOnce( "stdio.hhf" )/*********************************************************************//*                                                                   *//* 	                                                                 *//* 	fileio namespace                                                 *//* 	                                                                 *//* 	                                                                 *//*********************************************************************/const	_fileio_save_enumSize_ := @enumSize;	namespace fileio; @fast;type	?@enumSize := 4;		accessMode	:enum				{ 					r,		// Open file for reading. 					w, 		// Open file for writing.					rw, 	// Open file for reading and writing.					a 		// Open file for append (write)				};		seekPosns	:enum{ fromBOF, curPosn, fromEOF };		?@enumSize := @global:_fileio_save_enumSize_;		procedure open( FileName: string; Access:accessMode ); 		@returns( "EAX" ); 					@external( "FILEIO_OPEN" );	procedure openNew( FileName: string ); @returns( "EAX" ); 			@external( "FILEIO_OPENNEW" );	procedure close( Handle:dword ); 			@external( "FILEIO_CLOSE" );	procedure flush( Handle:dword ); 			@external( "FILEIO_FLUSH" );	procedure eof( Handle:dword ); @returns( "AL" ); 			@external( "FILEIO_EOF" );	procedure write( Handle:dword; var buffer:var; count:uns32 ); 			@external( "FILEIO_WRITE" );	procedure read( Handle:dword; var buffer:var; count:uns32 );			@returns( "eax" ); 			@external( "FILEIO_READ" );	procedure rewind( Handle:dword ); 		@external( "FILEIO_REWIND" );	procedure append( Handle:dword ); 		@external( "FILEIO_APPEND" );	procedure position( Handle:dword ); 		@returns( "EDX:EAX" ); 		@external( "FILEIO_POSITION" );		#macro seek( parms[] ); 		hla.overload( parms )					hla.signature( @global:fileio.seek2d(dword, dword) )			hla.signature( @global:fileio.seek3d(dword, dword, seekPosns) )			hla.signature( @global:fileio.seek3q(dword, qword, seekPosns) )			hla.signature( @global:fileio.seek4(dword, dword, dword, seekPosns ) )					hla.endoverload			#endmacro		#macro seek2d( h, d );			@global:fileio.seek4( h, 0, d, @global:fileio.fromBOF )			#endmacro		#macro seek3d( h, d, f );			@global:fileio.seek4( h, 0, d, f )			#endmacro		procedure seek3q( Handle:dword; posn:qword; from:seekPosns );		@returns( "EDX:EAX" ); 		@external( "FILEIO_SEEK4" );		 	procedure seek4	( 		Handle	:dword; 		HOposn	:dword; 		LOposn	:dword; 		from	:seekPosns 	);		@returns( "EDX:EAX" ); 		@external( "FILEIO_SEEK4" );									procedure truncate( Handle:dword ); 		@returns( "EAX" ); 		@external( "FILEIO_TRUNCATE" );			/*	** File output routines:	*/	procedure putc( Handle:dword; c:char ); 			@external( "FILEIO_PUTC" );	procedure putcSize	( 		Handle:dword; 		c:char; 		width:int32; 		fill:char 	);				@external( "FILEIO_PUTCSIZE" );	procedure newln( Handle:dword ); 			@external( "FILEIO_NEWLN" );	procedure putbool( Handle:dword; b:boolean ); 				@external( "FILEIO_PUTBOOL" );	procedure putcset( Handle:dword; cs:cset   ); 				@external( "FILEIO_PUTCSET" );	procedure putz( Handle:dword; zs:zstring  ); 			@external( "FILEIO_PUTZ" );	procedure puts( Handle:dword; s:string  ); 			@external( "FILEIO_PUTS" );	procedure putsSize	( 		Handle:dword; 		s:string; 		width:int32; 		fill:char 	);				@external( "FILEIO_PUTSSIZE" );	procedure putzSize	( 		Handle	:dword; 		zs		:zstring; 		width	:int32; 		fill	:char 	);				@external( "FILEIO_PUTZSIZE" );	procedure putb( Handle:dword; h:byte ); 			@external( "FILEIO_PUTB" );	procedure putw( Handle:dword; w:word ); 			@external( "FILEIO_PUTW" );	procedure putd( Handle:dword; dw:dword ); 			@external( "FILEIO_PUTD" );	procedure putq( Handle:dword; qw:qword ); 			@external( "FILEIO_PUTQ" );	procedure puttb( Handle:dword; tb:tbyte ); 			@external( "FILEIO_PUTTB" );	procedure putl( Handle:dword; l:lword ); 			@external( "FILEIO_PUTL" );	procedure puth8( Handle:dword; b:byte ); 			@external( "FILEIO_PUTH8" );	procedure puth16( Handle:dword; w:word ); 			@external( "FILEIO_PUTH16" );	procedure puth32( Handle:dword; d:dword ); 			@external( "FILEIO_PUTH32" );	procedure puth64( Handle:dword; q:qword ); 			@external( "FILEIO_PUTH64" );	procedure puth80( Handle:dword; tb:tbyte ); 			@external( "FILEIO_PUTH80" );	procedure puth128( Handle:dword; l:lword ); 			@external( "FILEIO_PUTH128" );	procedure putbSize( Handle:dword; b:byte; width:dword; fill:char ); 			@external( "FILEIO_PUTH8SIZE" );	procedure putwSize( Handle:dword; w:word; width:dword; fill:char ); 			@external( "FILEIO_PUTH16SIZE" );	procedure putdSize( Handle:dword; d:dword; width:dword; fill:char ); 			@external( "FILEIO_PUTH32SIZE" );	procedure putqSize( Handle:dword; q:qword; width:dword; fill:char ); 			@external( "FILEIO_PUTH64SIZE" );	procedure puttbSize( Handle:dword; tb:tbyte; width:dword; fill:char ); 			@external( "FILEIO_PUTH80SIZE" );	procedure putlSize( Handle:dword; l:lword; width:dword; fill:char ); 			@external( "FILEIO_PUTH128SIZE" );	procedure puth8Size( Handle:dword; b:byte; width:dword; fill:char ); 			@external( "FILEIO_PUTH8SIZE" );	procedure puth16Size( Handle:dword; w:word; width:dword; fill:char ); 			@external( "FILEIO_PUTH16SIZE" );	procedure puth32Size( Handle:dword; d:dword; width:dword; fill:char ); 			@external( "FILEIO_PUTH32SIZE" );	procedure puth64Size( Handle:dword; q:qword; width:dword; fill:char ); 			@external( "FILEIO_PUTH64SIZE" );	procedure puth80Size( Handle:dword; tb:tbyte; width:dword; fill:char ); 			@external( "FILEIO_PUTH80SIZE" );	procedure puth128Size( Handle:dword; l:lword; width:dword; fill:char ); 			@external( "FILEIO_PUTH128SIZE" );	procedure puti8Size ( Handle:dword; b:byte;  width:int32; fill:char ); 			@external( "FILEIO_PUTI8SIZE" );	procedure puti16Size( Handle:dword; w:word;  width:int32; fill:char ); 			@external( "FILEIO_PUTI16SIZE" );	procedure puti32Size( Handle:dword; d:dword; width:int32; fill:char ); 			@external( "FILEIO_PUTI32SIZE" );	procedure puti64Size( Handle:dword; q:qword; width:int32; fill:char ); 			@external( "FILEIO_PUTI64SIZE" );	procedure puti128Size( Handle:dword; l:lword; width:int32; fill:char ); 			@external( "FILEIO_PUTI128SIZE" );		procedure puti8 ( Handle:dword; b:byte  ); 			@external( "FILEIO_PUTI8" );	procedure puti16( Handle:dword; w:word  ); 			@external( "FILEIO_PUTI16" );	procedure puti32( Handle:dword; d:dword ); 			@external( "FILEIO_PUTI32" );	procedure puti64( Handle:dword; q:qword ); 			@external( "FILEIO_PUTI64" );	procedure puti128( Handle:dword; l:lword ); 			@external( "FILEIO_PUTI128" );	procedure putu8Size( Handle:dword; b:byte; width:int32;   fill:char ); 			@external( "FILEIO_PUTU8SIZE" );		procedure putu16Size( Handle:dword; w:word; width:int32;  fill:char ); 			@external( "FILEIO_PUTU16SIZE" );	procedure putu32Size( Handle:dword; d:dword; width:int32; fill:char ); 			@external( "FILEIO_PUTU32SIZE" );	procedure putu64Size( Handle:dword; q:qword; width:int32; fill:char ); 			@external( "FILEIO_PUTU64SIZE" );	procedure putu128Size( Handle:dword; l:lword; width:int32; fill:char ); 			@external( "FILEIO_PUTU128SIZE" );				procedure putu8 ( Handle:dword; b:byte  ); 			@external( "FILEIO_PUTU8" );	procedure putu16( Handle:dword; w:word  ); 			@external( "FILEIO_PUTU16" );	procedure putu32( Handle:dword; d:dword ); 			@external( "FILEIO_PUTU32" );	procedure putu64( Handle:dword; q:qword ); 			@external( "FILEIO_PUTU64" );	procedure putu128( Handle:dword; l:lword ); 			@external( "FILEIO_PUTU128" );	procedure pute80( Handle:dword; e80:real80; width:uns32 ); 			@external( "FILEIO_PUTE80" );	procedure pute64( Handle:dword; e64:real64; width:uns32 ); 			@external( "FILEIO_PUTE64" );	procedure pute32( Handle:dword; e32:real32; width:uns32 ); 			@external( "FILEIO_PUTE32" );	procedure putr80	(		Handle	:dword; 		r		:real80; 		width	:uns32; 		decpts	:uns32; 		pad:char 	); 			@external( "FILEIO_PUTR80" );	procedure putr64	( 		Handle	:dword; 		r		:real64; 		width	:uns32; 		decpts	:uns32; 		pad		:char 	); 			@external( "FILEIO_PUTR64" );	procedure putr32	( 		Handle	:dword; 		r		:real32; 		width	:uns32; 		decpts	:uns32; 		pad		:char 	); 			@external( "FILEIO_PUTR32" );	 				procedure readLn( Handle:dword ); 			@external( "FILEIO_READLN" );	procedure eoln( Handle:dword ); @returns( "al" ); 			@external( "FILEIO_EOLN" );	procedure getc( Handle:dword in eax ); @returns( "AL" ); 			@external( "FILEIO_GETC" );	procedure gets( Handle:dword; s:string ); 			@external( "FILEIO_GETS" );	procedure a_gets( Handle:dword in eax ); 			@external( "FILEIO_A_GETS" );	procedure geti8( Handle:dword in eax ); @returns( "al" ); 			@external( "FILEIO_GETI8" );	procedure geti16( Handle:dword in eax ); @returns( "ax" ); 			@external( "FILEIO_GETI16" );	procedure geti32( Handle:dword in eax ); @returns( "eax" ); 			@external( "FILEIO_GETI32" );	procedure geti64( _Handle:dword in eax ); @returns( "edx:eax" ); 			@external( "FILEIO_GETI64" );	procedure geti128( Handle:dword; var dest:lword ); 			@external( "FILEIO_GETI128" );	procedure getu8( Handle:dword in eax ); @returns( "al" ); 			@external( "FILEIO_GETU8" );	procedure getu16( Handle:dword in eax ); @returns( "ax" ); 			@external( "FILEIO_GETU16" );	procedure getu32( _Handle:dword in eax ); @returns( "eax" ); 			@external( "FILEIO_GETU32" );	procedure getu64( Handle:dword ); @returns( "edx:eax" ); 			@external( "FILEIO_GETU64" );	procedure getu128( Handle:dword; var dest:lword );			@external( "FILEIO_GETU128" );	procedure geth8( Handle:dword in eax ); @returns( "al" ); 			@external( "FILEIO_GETH8" );	procedure geth16( Handle:dword in eax ); @returns( "ax" ); 			@external( "FILEIO_GETH16" );	procedure geth32( Handle:dword in eax ); @returns( "eax" ); 			@external( "FILEIO_GETH32" );	procedure geth64( Handle:dword in eax ); @returns( "edx:eax" ); 			@external( "FILEIO_GETH64" );	procedure geth128( Handle:dword; var dest:lword ); 			@external( "FILEIO_GETH128" );	procedure getf( Handle:dword ); @returns( "st0" ); 			@external( "FILEIO_GETF" );	// The following macros provide the same interface to pute32, pute64,	// and pute80 as the plain (without size/fill char) integer output	// routines:				#macro _pute80( _pute80_h_, _pute80_r_ );			@global:fileio.pute80( _pute80_h_, _pute80_r_, 28 )			#endmacro	#macro _pute64( _pute64_h_, _pute64_r_ );			@global:fileio.pute64( _pute64_h_, _pute64_r_, 22 )			#endmacro	#macro _pute32( _pute32_h_, _pute32_r_ );			@global:fileio.pute32( _pute32_h_, _pute32_r_, 15 )			#endmacro	// The following macros provide the same interface (for the PUT macro)	// as the integerSize functions:		#macro pute80_( _pute80_h_, _pute80_r_, _pute80_w_, f );			@global:fileio.pute80( _pute80_h_, _pute80_r_, _pute80_w_ )			#endmacro	#macro pute64_( _pute64_h_, _pute64_r_, _pute64_w_, _pute64_f_ );			@global:fileio.pute64( _pute64_h_, _pute64_r_, _pute64_w_ )			#endmacro	#macro pute32_( _pute32_h_, _pute32_r_, _pute32_w_, _pute32_f_ );			@global:fileio.pute32( _pute32_h_, _pute32_r_, _pute32_w_ )			#endmacroconst	validPutType :boolean[ @global:hla.sizePTypes ] :=		[			@global:false,		// Undefined			@global:true,		// tBoolean 	//1			@global:false,		// enum			//2			@global:true,		// tUns8,		//3			@global:true,		// tUns16,		//4			@global:true,		// tUns32,		//5			@global:true,		// tUns64,		//6			@global:true,		// tUns128,		//7			@global:true,		// tByte,		//8			@global:true,		// tWord,		//9			@global:true,		// tDWord,		//10			@global:true,		// tQWord,		//11			@global:true,		// tTByte,		//12			@global:true,		// tLWord,		//13			@global:true,		// tInt8,		//14			@global:true,		// tInt16,		//15			@global:true,		// tInt32,		//16			@global:true,		// tInt64,		//17			@global:true,		// tInt128,		//18			@global:true,		// tChar, 		//19			@global:false,		// tWChar,		//20			@global:true,		// tReal32,		//21			@global:true,		// tReal64, 	//22			@global:true,		// tReal80,		//23			@global:false,		// tReal128,	//24			@global:true,		// tString,		//25			@global:false,		// tZString,	//26			@global:false,		// tWString,	//27			@global:true,		// tCset,		//28			@global:false,		// tArray,		//29			@global:false,		// tRecord,		//30			@global:false,		// tUnion,		//31			@global:false,		// tRegEx		//32			@global:true,		// tClass,		//33			@global:false,		// tProcptr,	//34			@global:false,		// tThunk,		//35			@global:true,		// tPointer		//36			@global:false,		// tLabel		//37			@global:false,		// tProc		//38			@global:false,		// tMethod		//39			@global:false,		// tClassProc	//40			@global:false,		// tClassIter	//41			@global:false,		// tIterator	//42			@global:false,		// tProgram		//43			@global:false,		// tMacro		//44			@global:false,		// tText		//45			@global:false,		// tRegExMac	//46			@global:false,		// tNamespace	//47			@global:false,		// tSegment		//48			@global:false,		// tAnonRec		//49			@global:false,		// tAnonUnion	//50			@global:false,		// tVariant		//51			@global:false		// tError		//52		];	validPutSizeType :boolean[ @global:hla.sizePTypes ] :=		[			@global:false,		// Undefined			@global:true,		// tBoolean 	//1			@global:false,		// enum			//2			@global:true,		// tUns8,		//3			@global:true,		// tUns16,		//4			@global:true,		// tUns32,		//5			@global:true,		// tUns64,		//6			@global:true,		// tUns128,		//7			@global:true,		// tByte,		//8			@global:true,		// tWord,		//9			@global:true,		// tDWord,		//10			@global:true,		// tQWord,		//11			@global:true,		// tTByte,		//12			@global:true,		// tLWord,		//13			@global:true,		// tInt8,		//14			@global:true,		// tInt16,		//15			@global:true,		// tInt32,		//16			@global:true,		// tInt64,		//17			@global:true,		// tInt128,		//18			@global:true,		// tChar, 		//19			@global:false,		// tWChar,		//20			@global:true,		// tReal32,		//21			@global:true,		// tReal64, 	//22			@global:true,		// tReal80,		//23			@global:false,		// tReal128,	//24			@global:true,		// tString,		//25			@global:false,		// tZString,	//26			@global:false,		// tWString,	//27			@global:false,		// tCset,		//28			@global:false,		// tArray,		//29			@global:false,		// tRecord,		//30			@global:false,		// tUnion,		//31			@global:false,		// tRegEx		//32			@global:false,		// tClass,		//33			@global:false,		// tProcptr,	//34			@global:false,		// tThunk,		//35			@global:true,		// tPointer		//36			@global:false,		// tLabel		//37			@global:false,		// tProc		//38			@global:false,		// tMethod		//39			@global:false,		// tClassProc	//40			@global:false,		// tClassIter	//41			@global:false,		// tIterator	//42			@global:false,		// tProgram		//43			@global:false,		// tMacro		//44

⌨️ 快捷键说明

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