亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? checkpat.asm

?? 這個是c版本的是我找了半天才找的
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;
;	--- Version 3.3 92-08-23 12:09 ---
;
;	CHECKPAT.ASM - Utility function to check a given file/path,
;			and to resolve an incomplete path.
;			(Does not use any undocumented DOS functions.)
;
;	Public Domain Software written by
;		Thomas Wagner
;		Ferrari electronic GmbH
;		Beusselstrasse 27
;		D-1000 Berlin 21
;		Germany
;
;>e
; Assemble with
;
; tasm  /DPASCAL checkpat,checkpap  	     - Turbo Pascal (Tasm only), near
; tasm  /DPASCAL /DFARCALL checkpat,checkpap - Turbo Pascal (Tasm only), far
; ?asm  checkpat;		  	     - C, default model (small)
; ?asm  /DMODL=large checkpat  		     - C, large model
;
;	NOTE:	For C, change the 'model' directive below according to your
;		memory model, or define MODL=xxx on the command line.
;
;		For Turbo C Huge model, you must give /DTC_HUGE on the
;		command line, or define it here.
;
;
;   This routine accepts a file name and/or path, checks and resolves the
;   path, and splits the name into its components.
;
;   A relative path, or no path at all, is resolved to a full path
;   specification. An invalid disk drive will not cause the routine 
;   to fail.
;
;   PASCAL:
;	function checkpath (name    : string,
;			    inflags : integer,
;	                    drive   : string,
;	                    dir     : string,
;	                    fname   : string,
;	                    ext     : string,
;	                    fullpath: string)
;			    : integer;
;   C:
;	int checkpath (char *name,     
;		       int  inflags,
;	               char *drive,      
;	               char *dir,        
;	               char *fname,      
;	               char *ext,        
;	               char *fullpath);  
;
;   Parameters:
;
;	name	 - Input:  file name and/or path string
;	inflags  - Input:  parameters for analysis
;			   INF_NODIR: do no interpret name as directory
;	drive	 - Output: drive letter, with trailing colon
;	dir	 - Output: directory, with leading and trailing bakslash
;	fname	 - Output: file name
;	ext	 - Output: file extension, with leading dot
;	fullpath - Output: combined path
;
;	NOTE:	The input 'name' and the output 'fullpath' parameters may
;		both point to the same string. The 'fullpath' pointer will
;		only be used after completion of input parsing.
;
;	NOTE:	For Pascal, reserve one character in addition to the
;		standard maximum length for all strings, including the
;		input parameter. All strings will be zero-terminated
;		during internal processing. DO NOT pass a constant as
;		input parameter string.
;
;   Returns:
;
;	A negative value on error:
;
;		ERR_DRIVE       -1    Invalid drive
;		ERR_PATH        -2    Invalid path
;		ERR_FNAME       -3    Malformed filename
;		ERR_DRIVECHAR   -4    Illegal drive letter
;		ERR_PATHLEN     -5    Path too long
;		ERR_CRITICAL    -6    Critical error (invalid drive, drive not ready)
;
;	On error, all output strings except the drive string will be empty.
;
;	If no error occured, a positive value consisting of the bitwise OR 
;	of the following flags:
;
;		HAS_WILD        1     Filename/ext has wildcard characters
;		HAS_EXT         2     Extension specified
;		HAS_FNAME       4     Filename specified
;		HAS_PATH        8     Path specified
;		HAS_DRIVE       0x10  Drive specified
;
;			Those flags are set only if the corresponding 
;			component was given in the input string. The 
;			'drive' and 'dir' strings will always contain 
;			the resolved drive and path.
;
;		FILE_EXISTS     0x20  File exists, upper byte has attributes
;		IS_DIR        0x1000  Directory, upper byte has attributes
;
;		The file attributes returned if FILE_EXISTS or IS_DIR 
;		is set are
;			0x0100 - Read only
;			0x0200 - Hidden
;			0x0400 - System
;			0x2000 - Archive
;			0x4000 - Device
;
;<
;>d
; Assemblierung mit
;
; tasm  /DPASCAL checkpat,checkpatp	      - Turbo Pascal (nur Tasm), near
; tasm  /DPASCAL /DFARCALL checkpat,checkpatp - Turbo Pascal (nur Tasm), far
; ?asm  checkpat;		  	      - C, default model (small)
; ?asm  /DMODL=large checkpat  		      - C, large model
;
;	HINWEIS: F乺 C k攏nen Sie entweder die folgende 'model'-Direktive
;		Ihrem Speichermodell entsprechend 刵dern, oder beim
;		Assemblieren MODL=xxx in der Kommandozeile definieren.
;
;		F乺 Turbo C Huge model m乻sen Sie /DTC_HUGE beim Assemblieren
;		angeben, oder das Symbol in dieser Quelle definieren.
;
;   Diese Routine erwartet einen Dateinamen und/oder Pfad, pr乫t ihn
;   und l攕t den Pfad auf, und teilt den Namen in seine Komponenten.
;
;   Ein relativer Pfad, oder eine fehlende Pfadangabe, wird in eine
;   absolute Pfadangabe konvertiert. Ein ung乴tiger Laufwerksbuchstabe
;   f乭rt nicht zum Abbruch.
;
;   PASCAL:
;	function checkpath (name    : string,
;			    inflags : integer,
;	                    drive   : string,
;	                    dir     : string,
;	                    fname   : string,
;	                    ext     : string,
;	                    fullpath: string)
;			    : integer;
;   C:
;	int checkpath (char *name,     
;		       int  inflags,
;	               char *drive,      
;	               char *dir,        
;	               char *fname,      
;	               char *ext,        
;	               char *fullpath);  
;
;   Parameter:
;
;	name	 - Input:  Filename und/oder Pfad
;	inflags  - Input:  Analyse-Parameter
;			   INF_NODIR: Name nicht als Directory interpretieren
;	drive	 - Output: Laufwerksbuchstabe, mit abschlie醗ndem Doppelpunkt
;	dir	 - Output: Directory, mit f乭rendem und abschlie醗ndem '\'
;	fname	 - Output: Filename
;	ext	 - Output: File extension, mit f乭rendem Punkt
;	fullpath - Output: Kombinierter Pfad
;
;   Liefert:
;
;	Einen negativen Wert bei Fehler:
;
;		ERR_DRIVE       -1    Ung乴tiges Laufwerk
;		ERR_PATH        -2    Ung乴tiger Pfad
;		ERR_FNAME       -3    Fehlerhafter Dateiname
;		ERR_DRIVECHAR   -4    Illegaler Laufwerksbuchstabe
;		ERR_PATHLEN     -5    Pfad zu lang
;		ERR_CRITICAL    -6    Critical error (Illegales Laufwerk,
;				      Laufwerk nicht bereit)
;
;	Bei Fehler sind alle Ausgabestrings au醗r 'drive' leer.
;
;	Wenn kein Fehler auftrat einen positiven Wert der aus dem
;	bitweisen OR der folgenden Flags besteht:
;
;		HAS_WILD        1     Filename/ext enth刲t Wildcard-Zeichen
;		HAS_EXT         2     Extension angegeben
;		HAS_FNAME       4     Filename angegeben
;		HAS_PATH        8     Pfad angegeben
;		HAS_DRIVE       0x10  Laufwerk angegeben
;
;			Diese Flags sind nur gesetzt wenn die entsprechende 
;			Komponente im Eingabestring enthalten war. Die 
;			'drive' und 'dir' Ausgabestrings enthalten stets 
;			den aufgel攕ten Laufwerks- und Pfadstring.
;
;		FILE_EXISTS     0x20  Datei existiert, Attribute im oberen Byte
;		IS_DIR        0x1000  Directory, Attribute im oberen Byte
;
;		Die Dateiattribute die geliefert werden wenn FILE_EXISTS 
;		oder IS_DIR gesetzt ist sind:
;
;			0x0100 - Read only
;			0x0200 - Hidden
;			0x0400 - System
;			0x2000 - Archive
;			0x4000 - Device
;
;<
;
	IFDEF	PASCAL
	.model	tpascal
	IFDEF	FARCALL
	%out	Pascal, far calls
	ELSE
	%out	Pascal, near calls
	ENDIF
ptrsize	=	1
	ELSE
	IFNDEF	MODL
	.model	small,c
	%out	small model
	ELSE
%	.model	MODL,c
%	%out	MODL model
	ENDIF
ptrsize	=	@DataSize
	ENDIF
;
ldds	macro	reg,var
	IF	ptrsize
	lds	reg,var
	ELSE
	mov	reg,var
	ENDIF
	endm
;
lddsf	macro	reg,var
	IF	ptrsize
	lds	reg,var
	ELSE
	mov	ds,dseg
	mov	reg,var
	ENDIF
	endm
;
ldes	macro	reg,var
	IF	ptrsize
	les	reg,var
	ELSE
	mov	reg,var
	ENDIF
	endm
;
ldesf	macro	reg,var
	IF	ptrsize
	les	reg,var
	ELSE
	mov	es,dseg
	mov	reg,var
	ENDIF
	endm
;
	public	checkpath
	public	exists
;
ERR_DRIVE	=	-1
ERR_PATH	=	-2
ERR_FNAME	=	-3
ERR_DRIVECHAR	=	-4
ERR_PATHLEN	=	-5
ERR_CRITICAL	=	-6
;
HAS_WILD	=	1
HAS_EXT		=	2
HAS_FNAME	=	4
HAS_PATH	=	8
HAS_DRIVE	=	10h
FILE_EXISTS	=	20h
IS_DIR		=	1000h
;
MAXPATH		=	66
;
INF_NODIR	=	1
;
	IFDEF	PASCAL
	.data
	ELSE
	IFDEF	TC_HUGE
	.fardata?	checkpat_data
	ELSE
	.data?
	ENDIF
	ENDIF
;
save24		label	dword
sav24_off	dw	?
sav24_seg	dw	?
fail		dw	?
dfltpath	db	68 dup(?)
;
	.code
;
@strcpy	proc	near
	lodsb
	stosb
	or	al,al
	jnz	@strcpy
	dec	di
	ret
@strcpy	endp
;
	IFDEF	PASCAL
@strlen	proc	near
	push	di
	inc	di
	xor	ax,ax
	mov	cx,-1
	repne scasb
	not	cx
	dec	cx
	pop	di
	mov	es:[di],cl
	ret
@strlen	endp
	ENDIF
;
@int24_handler	proc far
	push	ds
	IFDEF	TC_HUGE
	mov	ax,SEG checkpat_data
	ELSE
	IFDEF	PASCAL
	mov	ax,SEG fail
	ELSE
	mov	ax,SEG DGROUP
	ENDIF
	ENDIF
	mov	ds,ax
	mov	fail,1
	pop	ds
	xor	ax,ax		; ignore (for compatibility with DOS < 3.1)
	iret
@int24_handler	endp
;
;
	IFDEF	PASCAL
	IFDEF	FARCALL
checkpath PROC far uses ds, string: dword, inflags: word, drive: dword, path: dword, fname: dword, ext: dword, fullpath: dword
	ELSE
checkpath PROC near uses ds, string: dword, inflags: word, drive: dword, path: dword, fname: dword, ext: dword, fullpath: dword
	ENDIF
	ELSE
checkpath PROC uses ds si di, string: ptr byte, inflags: word, drive: ptr byte, path: ptr byte, fname: ptr byte, ext: ptr byte, fullpath: ptr byte
	ENDIF
	local	drv: word,flags:word,dseg: word
;
	IFDEF	TC_HUGE
	mov	ax,SEG my_data
	mov	ds,ax
	ENDIF
	mov	dseg,ds
	IFDEF	PASCAL
	cld
	ENDIF
;
;	save old critical error handler, install own
;
	mov	ax,3524h
	int	21h
	mov	sav24_off,bx
	mov	sav24_seg,es
	mov	fail,0
	mov	ax,cs
	mov	ds,ax
	mov	dx,offset @int24_handler
	mov	ax,2524h
	int	21h
	mov	ds,dseg
;
;	Init output strings & flags
;
	xor	ax,ax
	mov	flags,ax
	ldesf	di,path
	IFDEF	PASCAL
	stosw
	ELSE
	stosb
	ENDIF
	ldes	di,fname
	IFDEF	PASCAL
	stosw
	ELSE
	stosb
	ENDIF
	ldes	di,ext
	IFDEF	PASCAL
	stosw
	ELSE
	stosb
	ENDIF
;
;------ Check the drive. If none was given, use current drive.
;
	ldes	di,drive
	IFDEF	PASCAL
	inc	di
	ENDIF
	ldds	si,string
	IFDEF	PASCAL
; for pascal, zero-terminate input string
	lodsb
	mov	bl,al
	xor	ah,ah
	mov	[si+bx],ah
	ENDIF
;
; skip leading whitespace
;
skip_space:
	lodsb
	cmp	al,' '
	je	skip_space
	cmp	al,09h
	je	skip_space
	dec	si
;
	or	al,al
	jz	no_drive
	cmp	byte ptr 1[si],':'
	je	drive_there
;
no_drive:
	mov	ah,19h			; get default drive
	int	21h
	add	al,'A'
	stosb
	mov	bl,al
	mov	al,':'
	stosb
	jmp	short check_drive
;
badchar:
	mov	ax,ERR_DRIVECHAR
	jmp	error_exit
;
drive_there:
	inc	si
	and	al,NOT 20h		; convert to uppercase
	cmp	al,'A'
	jb	badchar
	cmp	al,'A'+1fh		; Novell allows some strange chars
	ja	badchar
	stosb
	or	flags,HAS_DRIVE
	mov	bl,al
	movsb
;
;	Now check the drive for validity by getting the current directory
;	of this drive (we need it anyway later on)
;
check_drive:
	and	bx,1fh
	mov	drv,bx
	xor	al,al
	stosb
;
	push	ds
	push	si
;
	mov	ax,dseg
	mov	ds,ax
	mov	es,ax
	mov	si,offset dfltpath+3
	mov	ah,47h		; get current directory
	mov	dx,drv		; drive number
	int	21h
	jc	cpath_bad
	cmp	fail,0
	je	cpath_good
;
;	Get dir returned an error -> the drive is invalid.
;
cpath_bad:
	add	sp,4
	mov	ax,ERR_DRIVE
	jmp	error_exit	; can't continue with invalid drive
;
;	The drive is valid, edit the current path to include
;	leading drive letter, colon, and backslash.
;	Also, copy the path into the path output string, in case no
;	path is given in the input, and append trailing backslash to it.
;
cpath_good:
	mov	di,offset dfltpath
	mov	ax,drv
	add	al,'A'-1
	stosb
	mov	al,':'
	stosb
	mov	si,di		; point to start of path
	mov	al,'\'
	stosb
	ldes	di,path
	IFDEF	PASCAL
	inc	di
	ENDIF
	call	@strcpy
	mov	al,'\'
	cmp	byte ptr es:[di-1],al	; root dir?
	je	drive_ok		; then no second backslash
	cmp	byte ptr es:[di-1],'/'	; forward slash also legal
	je	drive_ok
	stosb				; else append backslash
;
;
;------ Drive checked, is valid. Now separate path and filename.
;
drive_ok:
	pop	si
	pop	ds
	push	si
	push	di
	push	es
	mov	di,si

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品99国产精品日本| 国产乱码精品1区2区3区| 91网站在线观看视频| 欧美国产精品中文字幕| av在线这里只有精品| 中文字幕亚洲电影| 欧洲精品在线观看| 婷婷开心激情综合| 欧美电影免费观看高清完整版在线观看 | 亚洲精品一区二区三区福利| 久久激情五月激情| 国产午夜精品一区二区三区视频| 成人免费视频免费观看| 亚洲日本一区二区三区| 欧美日韩一级二级三级| 久久精品国产一区二区三区免费看| 欧美sm美女调教| 国产精品亚洲第一区在线暖暖韩国| 国产女人18毛片水真多成人如厕 | 91精品国产91久久久久久一区二区 | 色综合天天综合网国产成人综合天| 日韩制服丝袜av| 国产精品123| 欧洲一区二区av| 欧美一区二区精品在线| 国产不卡在线视频| 欧美日韩一区不卡| 国产精品白丝av| 亚洲精品美国一| 日韩一区二区在线观看视频播放| 懂色av中文字幕一区二区三区 | 亚洲成av人片| 久久久影院官网| 在线视频一区二区三区| 美女任你摸久久| 亚洲精品国产a久久久久久| 亚洲精品一区二区精华| 一本大道综合伊人精品热热| 激情综合网av| 亚洲国产精品久久一线不卡| 欧美激情一区二区在线| 欧美一卡二卡在线观看| thepron国产精品| 久久国产尿小便嘘嘘| 一区二区在线观看视频| 日本一区二区三区国色天香| 91精品国产综合久久久久久| 99免费精品在线| 久久草av在线| 视频一区中文字幕国产| 一区二区三区四区激情| 欧美精品一区二区蜜臀亚洲| 欧美在线观看视频在线| 99精品视频一区| 国产一区91精品张津瑜| 日本亚洲三级在线| 五月婷婷欧美视频| 亚洲国产一二三| 亚洲日本一区二区| 国产精品福利一区| 国产欧美一区二区精品性| 精品三级在线看| 欧美一区日本一区韩国一区| 亚洲第一激情av| 精品欧美一区二区在线观看 | 91精品国产福利| 久久综合综合久久综合| 欧美国产欧美亚州国产日韩mv天天看完整 | 成人国产视频在线观看| 精品国产电影一区二区| 99在线热播精品免费| aa级大片欧美| 亚洲人成电影网站色mp4| 欧美激情综合网| 精品电影一区二区| 精品成人a区在线观看| 日韩一卡二卡三卡国产欧美| 欧美日韩高清一区二区不卡| 91福利视频网站| 在线观看不卡一区| 欧美天堂一区二区三区| 色欧美片视频在线观看| 欧美亚洲高清一区| 欧美日本一区二区在线观看| 欧美老年两性高潮| 日韩亚洲欧美综合| 久久亚洲欧美国产精品乐播 | 不卡av在线网| 成人激情小说网站| 丁香六月综合激情| 国产激情一区二区三区四区| 亚洲国产视频在线| 国内精品写真在线观看| 99re在线视频这里只有精品| 亚洲免费成人av| 国产精品国产成人国产三级| 国产视频不卡一区| 18欧美乱大交hd1984| 欧美日韩国产a| 日韩午夜av一区| 国产网站一区二区三区| 天堂av在线一区| 美女被吸乳得到大胸91| 韩国女主播一区| 成人午夜精品在线| 色av一区二区| 日韩一区二区三区电影在线观看| 久久精品视频一区二区| 亚洲欧洲av另类| 欧美亚洲免费在线一区| 3atv在线一区二区三区| 欧美极品aⅴ影院| 亚洲高清视频的网址| 国产一区在线观看视频| 成人的网站免费观看| 欧美午夜精品一区| 日韩欧美高清一区| 中文字幕色av一区二区三区| 一个色综合av| 国产在线一区观看| 欧美性xxxxx极品少妇| 亚洲一区视频在线观看视频| 欧美国产一区视频在线观看| 亚洲图片自拍偷拍| 一区二区三区在线观看国产| 2023国产精品| 一区二区三区日韩欧美精品| 日韩主播视频在线| 日本乱人伦aⅴ精品| 精品国产乱码久久久久久蜜臀 | 看电影不卡的网站| 国产99久久久国产精品| 东方aⅴ免费观看久久av| 国产91在线观看丝袜| 欧美日韩和欧美的一区二区| 日本一二三四高清不卡| 午夜精品一区二区三区三上悠亚| 国产电影一区在线| 欧美一区二区三级| 亚洲精品成人少妇| 99久久精品久久久久久清纯| 精品三级av在线| 亚洲伊人伊色伊影伊综合网| av综合在线播放| 国产亚洲欧美在线| 奇米精品一区二区三区在线观看| 99久久久久久| 国产日韩欧美精品综合| 九色|91porny| 欧美一区二区三区电影| 亚洲国产aⅴ天堂久久| 色综合久久99| 国产日韩综合av| 久久精品99国产国产精| 91精品在线免费观看| 亚洲影视资源网| 色噜噜狠狠色综合欧洲selulu| 国产精品久久久久久久久图文区 | 日韩福利电影在线| 欧美三级电影精品| 亚洲激情在线播放| 99精品热视频| 亚洲丝袜制服诱惑| 99久久精品国产毛片| 国产精品久久久久aaaa樱花| 国产成人亚洲综合a∨婷婷| 伦理电影国产精品| 中文欧美字幕免费| 欧美一级夜夜爽| 中文字幕在线一区| 欧美性大战xxxxx久久久| 久久国产人妖系列| 亚洲视频一二区| 精品成人私密视频| 欧美日韩国产中文| 成人黄色777网| 久久国产精品99久久久久久老狼 | 国产大片一区二区| 欧美成人精品1314www| 免费一级片91| 欧美大片一区二区三区| 久久精品国产久精国产| 日韩午夜电影在线观看| 国产一区二区免费看| 久久精品视频一区| eeuss鲁一区二区三区| 亚洲精品乱码久久久久久久久| 93久久精品日日躁夜夜躁欧美| 亚洲主播在线观看| 91精品国产日韩91久久久久久| 免费av网站大全久久| 久久精品一区二区三区四区| 成人av在线一区二区三区| 亚洲免费色视频| 51精品视频一区二区三区| 国产老女人精品毛片久久| 亚洲视频一二三区| 91精品国产免费久久综合| 国产精品综合久久| 一区二区三区日韩|