Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-1


					PAGE	,132				; 					 ;AN000;
				;	SCCSID = @(#)ifssess.asm	1.0 87/05/11					 ;AN000;
				TITLE	IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000;
				NAME	IFSSESS 									 ;AN000;
				;************************************************************************************
				;
				; IFSSESS
				;
				; Session related IFS calls    (Session = attachment)
				;
				;   IFS_ASSOPER
				;   RETURN_ASSIGN_MODE
				;   SET_ASSIGN_MODE
				;   GET_IFSFUNC_ITEM
				;   ATTACH_START
				;   ATTACH_END
				;   IFS_RESET_ENVIRONMENT
				;   IFS_ABORT
				;   GET_IFS_DRIVER_NAME
				;   FIND_IFS_DRIVER
				;   AssignOn/AssignOff
				;   PrintOn/PrintOff
				;   GET_UNC_ITEM_INFO
				;
				; REVISION HISTORY:
				;	A000	Original version  4.00		  May 1987
				;	A001	DCR 158 - merge unc info in attach start/status requests  8/87 RGAZZIA
				;	A002	DCR 187 - ctrl req renumber, make attach type byte	  8/87 RGAZZIA
				;	A003	DCR 188 - design correction of Get IFSFUNC Item 	  8/87 RGAZZIA
				;	A004	PTM 764 - Printer attach problems			  8/87 RGAZZIA
				;	A005	DCR 213 - SFT Serial Number				  9/87 RGazzia
				;	A006	PTM 849 - Printer open problems 			  9/87 RGazzia
				;	A007	P242 - IFSFUNC hangs on 2nd install.	  8/87 rg
				;	A008	P1244- Net Print problems		  8/87 rg
				;	A009	P1411- Net Use erroneous pause		 10/87 rg
				;	A010	P2270- Filesys network drive problems	 11/87 RG
				;	A011	P2312- Allow Net Use status to show FILESYSed network devices	11/87 RG
				;		       Do this via user word: 0001 without password
				;					      8001 with password
				;	A012	P2307- Critical error problems		 11/87 RG
				;	A013	P2379- Filesys status fails without network installed  11/87 RGazzia
				;	A014	P2952- dfl problem			 1/88 RG
				;	A015	P3251- net trans problem (library.exe)	 1/88 RG
				;	A016	P3334- new abort subfunc - reset environment   2/88 RMG
				;	A017	P3673- Filesys problems again. A010 not fixed right....3/14/88 RMG
				;	A018	Austin deviceless attach problems		       3/29/88 RMG
				;	A019	P4188- names=0 problems 			       4/08/88 RMG
				;	A020	Austin garbage attach problem			       4/11/88 RMG
				;	A021	P4140  dos ext err msgs enhancement		       4/19/88 RMG
				;	A022	P4249  filesys problems related to gii bx ret on user stack 4/21/88 RMG
				;	A023	P4540  fAssign,fPrint out of swappable area	       4/28/88 RMG
				;	A024	P4731  find ifs driver must check for none	       5/4/88  RMG
				;	A025	P4839  ctrl ptrsc problems			       5/13/88 RMG
				;	A026	P4789  message problems w/no ifs drivers loaded        5/18/88 RMG
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-2


				;	A027	P4791  Don't overwrite ax on error                     5/19/88 RMG
				;	A028	       Error code problems w/no ifs drivers	       5/20/88 RMG
				;	A029	       GII error path fixup			       5/24/88 RMG
				;	A030	P5005  Print stream problems			       6/1/88  RMG
				;
				;   LOC - 871
				;   LOD -  63
				;
				;************************************************************************************
															 ;AN000;
				.list											 ;AN000;
															 ;AN000;
				AsmVars <IBM, Installed, DEBUG> 							 ;AN000;
															 ;AN000;
				; define the base code segment of the network support first				 ;AN000;
															 ;AN000;
 0000				IFSSEG	SEGMENT BYTE PUBLIC 'IFSSEG'                                                     ;AN000;
 0000				IFSSEG	ENDS										 ;AN000;
															 ;AN000;
				;											 ;AN000;
				; NOTE: We cannot include DOSSEG here because the START seg is not declared		 ;AN000;
				;	as PARA aligned in DOSSEG.							 ;AN000;
				;											 ;AN000;
															 ;AN000;
 0000				START		SEGMENT PARA PUBLIC 'START'                                              ;AN000;
 0000				START		ENDS									 ;AN000;
															 ;AN000;
 0000				CONSTANTS	SEGMENT WORD PUBLIC 'CONST'                                              ;AN000;
 0000				CONSTANTS	ENDS									 ;AN000;
															 ;AN000;
 0000				DATA		SEGMENT WORD PUBLIC 'DATA'                                               ;AN000;
 0000				DATA		ENDS									 ;AN000;
															 ;AN000;
 0000				TABLE		SEGMENT BYTE PUBLIC 'TABLE'                                              ;AN000;
 0000				TABLE		ENDS									 ;AN000;
															 ;AN000;
 0000				CODE		SEGMENT BYTE PUBLIC 'CODE'                                               ;AN000;
 0000				CODE		ENDS									 ;AN000;
															 ;AN000;
 0000				LAST		SEGMENT PARA PUBLIC 'LAST'                                               ;AN000;
 0000				LAST		ENDS									 ;AN000;
															 ;AN000;
				DOSGROUP    GROUP   START,CONSTANTS,DATA,TABLE,CODE,LAST				 ;AN000;
															 ;AN000;
															 ;AN000;
 0000				DATA		SEGMENT WORD PUBLIC 'DATA'                                               ;AN000;
					;DOSGROUP Data									 ;AN000;
					Extrn	CurrentPDB:WORD 							 ;AN000;
					Extrn	THISCDS:DWORD								 ;AN000;
					Extrn	CDSAddr:DWORD								 ;AN000;
					Extrn	CDSCount:BYTE								 ;AN000;
					Extrn	MYNAME:BYTE								 ;AN000;
					Extrn	DummyCDS:BYTE								 ;AN000;
					Extrn	sftFCB:DWORD								 ;AN000;
					Extrn	THISSFT:DWORD								 ;AN000;
					Extrn	SysInitTable:BYTE							 ;AN000;
					Extrn	EXIT_TYPE:BYTE								 ;AN000;
					Extrn	IFS_HEADER:DWORD							 ;AN000;
 0000				DATA		ENDS									 ;AN000;
															 ;AN000;
															 ;AN000;
				; define our own code segment								 ;AN000;
															 ;AN000;
 0000				IFSSEG	SEGMENT BYTE PUBLIC 'IFSSEG'                                                     ;AN000;
					ASSUME	SS:DOSGROUP,CS:IFSSEG							 ;AN000;
															 ;AN000;
					;IFS Data - external								 ;AN000;
					Extrn	TEMPBUF:BYTE								 ;AN000;
															 ;AN000;
					;IFS Data - public - *** IFSFUNC SWAPPABLE DATA AREA ***			 ;AN000;
															 ;AN000;
				PUBLIC	IFSF_SWAP_START 								 ;AN000;
 0000				IFSF_SWAP_START      LABEL BYTE 							 ;AN000;
															 ;AN000;
					PUBLIC	THISIFS 								 ;AN000;
 0000  FFFFFFFF			THISIFS 	DD	-1								 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-3
                                                            

				
					PUBLIC	THISDFL 								 ;AN000;
 0004  FFFFFFFF			THISDFL 	DD	-1								 ;AN000;
				
					PUBLIC	IFSR									 ;AN000;
 0008  0048[			IFSR		DB	72 DUP (0)							 ;AN000;
	   00			
			 ]	
				
				
					PUBLIC	SFF1									 ;AN000;
 0050  003E[			SFF1		DB	62 DUP (0)							 ;AN000;
	   00			
			 ]	
				
				
					PUBLIC	CD1									 ;AN000;
 008E  0054[			CD1		DW	84 DUP (0)							 ;AN000;
	   0000			
			 ]	
				
				
					PUBLIC	DF1									 ;AN000;
 0136  0012[			DF1		DW	18 DUP (0)							 ;AN000;
	   0000			
			 ]	
				
				
					PUBLIC	IFSPROC_FLAGS								 ;AN000;
 015A  0000			IFSPROC_FLAGS	DW	0								 ;AN000;
				
				; Number of net drive (0=A) for use on net I 24 					 ;AN000;
					PUBLIC	IFSDRV									 ;AN000;
 015C  FF			IFSDRV		DB	-1								 ;AN000;
				
					PUBLIC	DEVICE_CB@_OFFSET							 ;AN000;
				; This used to set offset of ifsr_device_cb@ in common routine cds_to_cd		 ;AN000;
				; in ifsutil.  If not used, offset always 1EH since that's what it is at                 ;AN000;
				; ifsutil assembly time.  This not good for control fcns (attstart,attstat).		 ;AN000;
 015D  0000			DEVICE_CB@_OFFSET DW	0			; offset in ifsrh of device cb@ 	 ;AN000;
				
					PUBLIC	SAVE_CB@								 ;AN000;
				; This used by SFT_TO_SFF and SFF_TO_SFT routines in IFSUTIL to save cds ptr.		 ;AN000;
 015F  FFFFFFFF			SAVE_CB@	DD	-1								 ;AN000;
				
					PUBLIC	IFSSEM									 ;AN021;
				; This used as byte of semaphores.							 ;AN021;
 0163  00			IFSSEM		DB	0								 ;AN021;
				
 0164				IFSF_SWAP_END	 LABEL	 BYTE								 ;AN000;
				PUBLIC	IFSF_SWAP_END									 ;AN000;
															 ;AN000;
					;IFS Data - public								 ;AN000;
															 ;AN000;
					PUBLIC	DFLAddr 								 ;AN000;
 0164  FFFFFFFF			DFLAddr 	DD	-1								 ;AN000;
				
					PUBLIC	DFLCount								 ;AN000;
 0168  00			DFLCount	DB	0								 ;AN000;
				
				;;;aliasPUBLIC	NLAddr									 ;AN000;
				;;;aliasNLAddr		DD	-1							 ;AN000;
				
				;;;aliasPUBLIC	NLSIZE									 ;AN000;
				;;;aliasNLSIZE		DW	0							 ;AN000;
				
					PUBLIC	CDSAlt									 ;AN000;
 0169  FFFFFFFF			CDSAlt		DD	-1								 ;AN000;
				
					PUBLIC	UNC_FS_HDR								 ;AN000;
 016D  FFFFFFFF			UNC_FS_HDR	DD	-1								 ;AN000;
				
					PUBLIC	IFSFUNC_FLAGS								 ;AN000;
 0171  0000			IFSFUNC_FLAGS	DW	0								 ;AN000;
				
					PUBLIC	IFS_ATTRS								 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-4
                                                            

 0173  0000			IFS_ATTRS	DW	0			; all ifs_attribute words from ifs	 ;AN000;
										; headers or'ed together (ifsinit)       ;AN000;
					PUBLIC	DOSCALL@								 ;AN000;
 0175  00000000			DOSCALL@	DD	0			; IFS_DOSCALL@ set by ibmbio		 ;AN000;
				
					PUBLIC	SFT_SERIAL_NUMBER							 ;AN005;
 0179  0000			SFT_SERIAL_NUMBER DW	0			; to get sfts unique for fcb reasons	 ;AN005;
				
					PUBLIC	fAssign 								 ;AC023;
 017B  FF			fAssign 	DB	-1								 ;AC023;
				
					PUBLIC	fPrint									 ;AC023;
 017C  FF			fPrint		DB	-1								 ;AC023;
				
					PUBLIC	TRUNCATE_FLAG								 ;AC030;move
				d out of swap
 017D  00			TRUNCATE_FLAG	DB	0								 ;AC030;    
				"   "
				
				
					;IFS Data - local								 ;AN000;
															 ;AN000;
				;SetBP		DB	0			; flag indicates whether to return	 ;AD003;
										; LSN on getuncitem call (GII)		 ;AN000;
				;ERROR_STATUS	DW	1			; Status returned on error return	 ;AD029;
 017E  45 52 52 4F 52 00	ERROR_STATUS	DB	"ERROR",0               ; from fs (GII)                          ;AC029;
															 ;AN000;
															 ;AN000;
				BREAK <IFS_ASSOPER -- Do the $Assignoper call>						 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-5
IFS_ASSOPER -- Do the $Assignoper call                      

															 ;AN000;
 0184  20 49 46 53 46 55	copyright	db	" IFSFUNC.EXE                  "                                 ;AN000;
       4E 43 2E 45 58 45	
       20 20 20 20 20 20	
       20 20 20 20 20 20	
       20 20 20 20 20 20	
				INCLUDE copyrigh.inc
 01A2  4D 53 20 44 4F 53     C		DB	"MS DOS Version 4.00 (C)Copyright 1988 Microsoft Corp"
       20 56 65 72 73 69     C	
       6F 6E 20 34 2E 30     C	
       30 20 28 43 29 43     C	
       6F 70 79 72 69 67     C	
       68 74 20 31 39 38     C	
       38 20 4D 69 63 72     C	
       6F 73 6F 66 74 20     C	
       43 6F 72 70           C	
 01D6  4C 69 63 65 6E 73     C		DB	"Licensed Material - Property of Microsoft  "
       65 64 20 4D 61 74     C	
       65 72 69 61 6C 20     C	
       2D 20 50 72 6F 70     C	
       65 72 74 79 20 6F     C	
       66 20 4D 69 63 72     C	
       6F 73 6F 66 74 20     C	
       20                    C	
				
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; IFS_ASSOPER										 ;AN000;
				;											 ;AN000;
				; Called by: IFSFUNC dispatcher 							 ;AN000;
				;											 ;AN000;
				; Routines called:									 ;AN000;
				;	      RETURN_ASSIGN_MODE							 ;AN000;
				;	      SET_ASSIGN_MODE								 ;AN000;
				;	      GET_IFSFUNC_ITEM								 ;AN000;
				;	      ATTACH_START								 ;AN000;
				;	      ATTACH_END								 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;	AL = 00 get / 01 set - redir assign mode    (Return/Set Mode)			 ;AN000;
				;	AL = 02 get attach list entry		    (Get ifsfunc item)			 ;AN000;
				;	AL = 03 Define Macro  (attach start)						 ;AN000;
				;	AL = 04 Cancel Attach (attach end)						 ;AN000;
				;	AL = 05 Revised get assign list entry	    (Getifsfuncitem2)			 ;AN000;
				;	AL = 06 Get IFSFUNC Item		    (Getifsfuncitem3)			 ;AN003;
				; Function:										 ;AN000;
				;	IF	AL=0 call RETURN_ASSIGN_MODE						 ;AN000;
				;	ELSE IF AL=1 call SET_ASSIGN_MODE						 ;AN000;
				;	ELSE IF AL=2 call GET_IFSFUNC_ITEM						 ;AN000;
				;	ELSE IF AL=3 call ATTACH_START							 ;AN000;
				;	ELSE IF AL=4 call ATTACH_END							 ;AN000;
				;											 ;AN000;
				; Outputs:										 ;AN000;
				;	see subroutines 								 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
															 ;AN000;
 0201				AO_TABLE LABEL	WORD									 ;AN000;
 0201  0242 R				DW	RETURN_ASSIGN_MODE							 ;AN000;
 0203  026B R				DW	SET_ASSIGN_MODE 							 ;AN000;
 0205  02A6 R				DW	GET_IFSFUNC_ITEM							 ;AN000;
 0207  0548 R				DW	ATTACH_START								 ;AN000;
 0209  0712 R				DW	ATTACH_END								 ;AN000;
 020B  02AF R				DW	GET_IFSFUNC_ITEM2							 ;AN000;
 020D  02B8 R				DW	GET_IFSFUNC_ITEM3							 ;AN003;
															 ;AN000;
					Procedure   IFS_ASSOPER,NEAR							 ;AN000;
 020F                        1	IFS_ASSOPER    PROC    NEAR 
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AN000;
															 ;AN000;
 020F  2E: F7 06 0171 R 0040		TEST	CS:IFSFUNC_FLAGS,no_ifs_drivers
 0216  74 06				JZ	AO_20
 0218				AO_10:
 0218  B8 0032				MOV	AX,error_not_supported
					transfer ifs_980
 021B  E9 0000 E             2	??0000:      JMP ifs_980                         ; 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-6
IFS_ASSOPER -- Do the $Assignoper call                      

 021E				AO_20:
 021E  3C 00				CMP	AL,0
 0220  75 0D				JNE	AO_40
 0222  3C 01				CMP	AL,1
 0224  75 09				JNE	AO_40
 0226  2E: F7 06 0171 R 0080		TEST	CS:IFSFUNC_FLAGS,unc_installed
 022D  74 E9				JZ	AO_10
 022F				AO_40:
 022F  2E: C7 06 015A R 0000		MOV	CS:IFSPROC_FLAGS,ZERO							 ;AN000;
 0236  53				PUSH	BX				; save macro type			 ;AN000;
 0237  32 E4				XOR	AH,AH									 ;AN000;
 0239  D0 E0				SHL	AL,1				; AL x 2				 ;AN000;
 023B  8B D8				MOV	BX,AX									 ;AN000;
 023D  2E: FF A7 0201 R			JMP	CS:AO_TABLE[BX] 							 ;AN000;
															 ;AN000;
				EndProc IFS_ASSOPER									 ;AN000;
 0242                        1	IFS_ASSOPER    ENDP 
															 ;AN000;
				BREAK <RETURN_ASSIGN_MODE -- Return Assign Mode>					 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-7
RETURN_ASSIGN_MODE -- Return Assign Mode                    

															 ;AN000;
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; RETURN_ASSIGN_MODE									 ;AN000;
				;											 ;AN000;
				; Called by:  IFS_ASSOPER								 ;AN000;
				;											 ;AN000;
				; Routines called:	DOS: Get_User_Stack						 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;	    BL = macro type								 ;AN000;
				; Function:										 ;AN000;
				;	If macro type = 3 (network printer) THEN					 ;AN000;
				;	   BX = fPrint .AND. 1								 ;AN000;
				;	Elseif macro type = 4 (network disk) THEN					 ;AN000;
				;	   BX = fAssign .AND. 1 							 ;AN000;
				;	Else set error_invalid_function 						 ;AN000;
				;											 ;AN000;
				; Output:										 ;AN000;
				;	IF AL==0 BX value on user stack 						 ;AN000;
				;											 ;AN000;
				; Notes:  This routine is used only for UNC file system.  This is the			 ;AN000;
				;	  only FS that supports pause.							 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
															 ;AN000;
					Procedure   RETURN_ASSIGN_MODE,NEAR						 ;AN000;
 0242                        1	RETURN_ASSIGN_MODE    PROC    NEAR 
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AN000;
															 ;AN000;
 0242  5B				POP	BX			; macro type					 ;AN000;
 0243  80 FB 03				CMP	BL,3			; if (type == drive)				 ;AN000;
 0246  74 0C				JZ	GAM_20									 ;AN000;
 0248  80 FB 04				CMP	BL,4									 ;AN000;
 024B  75 1A				JNZ	GAM_60									 ;AN000;
 024D  2E: 8A 3E 017B R			MOV	BH,fAssign		;    t = fAssign;				 ;AN000;
 0252  EB 05				JMP	Short GAM_40		; else						 ;AN000;
															 ;AN000;
 0254				GAM_20: 				; if (type == print)				 ;AN000;
 0254  2E: 8A 3E 017C R			MOV	BH,fPrint		;    t = fPrint;				 ;AN000;
 0259				GAM_40: 										 ;AN000;
 0259  80 E7 01				AND	BH,1			;   return t&1; 				 ;AN000;
					CallInstall Get_User_Stack,multDOS,24						 ;AN000;
 025C  B8 1218               1		MOV     AX,(multDOS SHL 8) + 24 
 025F  CD 2F                 1		INT     2Fh 
 0261  89 5C 02				MOV	[SI].User_BX,BX 							 ;AN000;
					transfer ifs_990		; go to general good ret in util		 ;AN000;
 0264  E9 0000 E             2	??0001:      JMP ifs_990                         ; 
															 ;AN000;
 0267				GAM_60: 										 ;AN000;
 0267  B0 01				MOV	AL,error_invalid_function						 ;AN000;
					transfer ifs_980		; go to general bad ret in util 		 ;AN000;
 0269  EB B0                 2	??0002:      JMP ifs_980_J                      ; 
															 ;AN000;
															 ;AN000;
				EndProc RETURN_ASSIGN_MODE								 ;AN000;
 026B                        1	RETURN_ASSIGN_MODE    ENDP 
															 ;AN000;
				BREAK <SET_ASSIGN_MODE -- set assign mode>						 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-8
SET_ASSIGN_MODE -- set assign mode                          

															 ;AN000;
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; SET_ASSIGN_MODE									 ;AN000;
				;											 ;AN000;
				; Called by: IFS_ASSOPER								 ;AN000;
				;											 ;AN000;
				; Routines called:									 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;	    BL = macro type								 ;AN000;
				;	    BH = assign mode   (0 = off - pause, 1 = on - no pause)			 ;AN000;
				;											 ;AN000;
				; Function:										 ;AN000;
				;											 ;AN000;
				; Output:										 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
															 ;AN000;
					Procedure   SET_ASSIGN_MODE,NEAR						 ;AN000;
 026B                        1	SET_ASSIGN_MODE    PROC    NEAR 
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AN000;
															 ;AN000;
 026B  5B				POP	BX			; restore macro type (3 or 4)			 ;AN000;
															 ;AN000;
 026C  80 FB 03				CMP	BL,3			; check if printer or drive			 ;AN000;
 026F  75 13				JNZ	SAM_40			;						 ;AN000;
 0271  0A FF				OR	BH,BH			; printer - check mode				 ;AN000;
 0273  74 0A				JZ	SAM_20			; off - go pause				 ;AN000;
 0275  80 FF 01				CMP	BH,1									 ;AN000;
 0278  75 22				JNZ	SAM_80			; jump on parm error				 ;AN000;
 027A  E8 09CF R			CALL	PrintOn 		; turn print on 				 ;AN000;
					transfer ifs_990		; go to general good ret in util		 ;AN000;
 027D  EB E5                 2	??0003:      JMP ifs_990_J                      ; 
															 ;AN000;
 027F				SAM_20: 				; print off - pause				 ;AN000;
 027F  E8 09ED R			CALL	PrintOff								 ;AN000;
					transfer ifs_990		; go to general good ret in util		 ;AN000;
 0282  EB F9                 2	??0004:      JMP ifs_990_J                      ; 
															 ;AN000;
 0284				SAM_40: 				; Drive 					 ;AN000;
 0284  80 FB 04				CMP	BL,4									 ;AN000;
 0287  75 13				JNZ	SAM_80			; jump on parm error				 ;AN000;
 0289  0A FF				OR	BH,BH									 ;AN000;
 028B  74 0A				JZ	SAM_60									 ;AN000;
 028D  80 FF 01				CMP	BH,1									 ;AN000;
 0290  75 0A				JNZ	SAM_80			; jump on parm error				 ;AN000;
 0292  E8 0945 R			CALL	AssignOn		; drive on					 ;AN000;
					transfer ifs_990		; go to general good ret in util		 ;AN000;
 0295  EB EB                 2	??0005:      JMP ifs_990_J                      ; 
															 ;AN000;
 0297				SAM_60: 				; drive off					 ;AN000;
					invoke	AssignOff		; turn drives off (pause)			 ;AN000;
 0297  E8 0980 R             1		CALL    AssignOff 
					transfer ifs_990		; go to general good ret in util		 ;AN000;
 029A  EB F9                 2	??0006:      JMP ifs_990_J                      ; 
															 ;AN000;
															 ;AN000;
 029C				SAM_80: 										 ;AN000;
 029C  B8 0057				MOV	AX,error_invalid_parameter						 ;AN000;
					invoke	SET_EXTERR_INFO 							 ;AN000;
 029F  E8 0000 E             1		CALL    SET_EXTERR_INFO 
					transfer ifs_980		; go to general bad ret in util 		 ;AN000;
 02A2  EB C5                 2	??0007:      JMP ifs_980_J                      ; 
															 ;AN000;
															 ;AN000;
				EndProc SET_ASSIGN_MODE 								 ;AN000;
 02A4                        1	SET_ASSIGN_MODE    ENDP 
															 ;AN000;
				BREAK <GET_IFSFUNC_ITEM -- for get attach list >					 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-9
GET_IFSFUNC_ITEM -- for get attach list                     

															 ;AN000;
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; GET_IFSFUNC_ITEM									 ;AN000;
				;											 ;AN000;
				; Called by: IFS_ASSOPER								 ;AN000;
				;											 ;AN000;
				; Routines called:									 ;AN000;
				;	     GET_IFS_DRIVER_NAME	DOS: STRCPY					 ;AN000;
				;	     CDS_TO_CD			     GET_USER_STACK				 ;AN000;
				;	     DFL_TO_DF									 ;AN000;
				;	     CALL_IFS									 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;	    BL = redirection index							 ;AN000;
				;	    DS:SI -> Device name buffer 						 ;AN000;
				;	    ES:DI -> Target buffer:  old - net path string			   ;AN000;
				;				     new - dw file system driver name
				;					   dw # parms
				;					   db parms
				; Function:										 ;AN000;
				;	     STRUCTURE = 1st CDS							 ;AN000;
				;	     INDEX = 0									 ;AN000;
				;	     WHILE CDS structures							 ;AN000;
				;	       DO									 ;AN000;
				;		 IF curdir_isIFS TRUE THEN						 ;AN000;
				;		    DO									 ;AN000;
				;		      IF INDEX = BL THEN						 ;AN000;
				;			DO								 ;AN000;
				;			  DS:SI   = Letter version of Index (0=A:, 1=B:, ...)		 ;AN000;
				;			  IF IFS .NOT. UNC THEN 					 ;AN000;
				;			    DO								 ;AN000;
				;			      ES:[DI] = IFS name  (retrieved from CURDIR_IFSR_HDR)	 ;AN000;
				;			      Send ATTACH_STAT request to IFS for parms 		 ;AN000;
				;			      ES:DI+2 = IFS parms					 ;AN000;
				;			      FOUND = true						 ;AN000;
				;			      TYPE = 2							 ;AN000;
				;			      LEAVE WHILE						 ;AN000;
				;			    ENDDO							 ;AN000;
				;			  ELSE DO							 ;AN000;
				;				 Send ATTACH_STAT request to REDIR.SYS for parms	 ;AN000;
				;				 Move parms into one buffer and point with ES:DI	 ;AN000;
				;				 FOUND = true						 ;AN000;
				;				 TYPE = 4						 ;AN000;
				;				 LEAVE WHILE						 ;AN000;
				;			       ENDDO							 ;AN000;
				;		      ELSE DO								 ;AN000;
				;			     IF IFS UNC THEN						 ;AN000;
				;			       DO							 ;AN000;
				;				 INDEX=INDEX+1						 ;AN000;
				;				 IF INDEX = BL THEN					 ;AN000;
				;				    DO							 ;AN000;
				;				      DS:SI   = Letter version of Index (0=A:, 1=B:,	 ;AN000;
				;				      ES:DI = "REDIR"                                    ;AN000;
				;				      FOUND = true					 ;AN000;
				;				      TYPE  = 2 					 ;AN000;
				;				      LEAVE WHILE					 ;AN000;
				;				    ENDDO						 ;AN000;
				;				 ENDIF							 ;AN000;
				;			       ENDDO							 ;AN000;
				;			     ENDIF							 ;AN000;
				;			   ENDDO							 ;AN000;
				;		      ENDIF								 ;AN000;
				;		    ENDDO								 ;AN000;
				;		 ENDIF									 ;AN000;
				;		 Get next CDS structure 						 ;AN000;
				;	       ENDDO									 ;AN000;
				;	     ENDWHILE									 ;AN000;
				;	     IF FOUND = false THEN							 ;AN000;
				;		DO									 ;AN000;
				;		  STRUCTURE = 1st DFL							 ;AN000;
				;		  WHILE DFL structures							 ;AN000;
				;		    DO									 ;AN000;
				;		      IF INDEX = BL THEN						 ;AN000;
				;			 DO								 ;AN000;
				;			   DS:SI = name pointed to by DFLL_NAME_PTR			 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-10
GET_IFSFUNC_ITEM -- for get attach list                     

				;			   IF IFS .NOT. UNC THEN					 ;AN000;
				;			     DO 							 ;AN000;
				;			       ES:[DI] = IFS name  (retrieved from DFLL_IFSR_HDR)	 ;AN000;
				;			       Send ATTACH_STAT request to IFS for parms		 ;AN000;
				;			       ES:DI+2 = IFS parms					 ;AN000;
				;			       FOUND = true						 ;AN000;
				;			       TYPE = 1 						 ;AN000;
				;			       LEAVE WHILE						 ;AN000;
				;			     ENDDO							 ;AN000;
				;			   ELSE DO							 ;AN000;
				;				  Send ATTACH_STAT request to REDIR.SYS for parms	 ;AN000;
				;				  Move parms into one buffer and point with ES:DI	 ;AN000;
				;				  FOUND = true						 ;AN000;
				;				  TYPE = 3						 ;AN000;
				;				  LEAVE WHILE						 ;AN000;
				;				ENDDO							 ;AN000;
				;		      ELSE DO								 ;AN000;
				;			     IF IFS UNC THEN						 ;AN000;
				;				DO							 ;AN000;
				;				  INDEX=INDEX+1 					 ;AN000;
				;				  IF INDEX = BL THEN					 ;AN000;
				;				     DO 						 ;AN000;
				;				       ES:DI = "REDIR"                                   ;AN000;
				;				       FOUND = true					 ;AN000;
				;				       TYPE  = 3					 ;AN000;
				;				       LEAVE WHILE					 ;AN000;
				;				     ENDDO						 ;AN000;
				;				  ENDIF 						 ;AN000;
				;				ENDDO							 ;AN000;
				;			     ENDIF							 ;AN000;
				;			   ENDDO							 ;AN000;
				;		      ENDIF								 ;AN000;
				;		      Get next DFL structure						 ;AN000;
				;		    ENDWHILE								 ;AN000;
				;		ENDDO									 ;AN000;
				;	     ENDIF									 ;AN000;
				;	     IF FOUND = FALSE THEN							 ;AN000;
				;		DO									 ;AN000;
				;		  Set carry								 ;AN000;
				;		  AX = 18								 ;AN000;
				;		ENDDO									 ;AN000;
				;	     ELSE Clear carry								 ;AN000;
				;	     ENDIF									 ;AN000;
				;
				;	     IFSRH for Attach Start:
				;	       *  IFSR_LENGTH	   DW	  32	   ; Request length
				;	       *  IFSR_FUNCTION    DB	   3	   ; Attach Start
				;		+ IFSR_RETCODE	   DW	   0
				;		+ IFSR_RETCLASS    DB	   ?
				;		  IFSR_RESV1	   DB	  16 DUP(0)
				;		+ IFSR_TYPE	   DB	   ?	   ; BL (1,2,3,or 4)
				;		  IFSR_RESV2	   DB	   ?
				;	       *+ IFSR_PARMS@	   DD	   PARMS   ; See below
				;	       *+ IFSR_DEVICE_CB@  DD	   ?	   ; CD or DF (See below)
				;		+ IFSR_USER_WORD   DW	   ?
				;		+ IFSR_MAX_XMITT_SIZE DW   ?
				;		+ IFSR_NET_NAME_ID DW	   ?
				;		+ IFSR_LSN	   DW	   ?
				;		+ IFSR_DEVICE_STATUS  DB   ?
				;		  IFSR_RESV3	   DB	   ?
				;
				;
				;
				;	       *+ PARMS 	  LABEL   WORD
				;				  DW	  PARMCOUNT ; Number of parms. (only for new style)
				;				  DB	  ASCIIZ,...; Parms
				;
				;											 ;AN000;
				; Outputs:										 ;AN000;
				;	 No Carry - BH = device status flag						 ;AN000;
				;			 bit 0=0 is device valid					 ;AN000;
				;			       1 if device invalid					 ;AN000;
				;		    BL = device type							 ;AN000;
				;		    DS:SI = ASCIIZ local device name					 ;AN000;
				;		    ES:DI = ASCIIZ network name 					 ;AN000;
				;		For old style call:
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-11
GET_IFSFUNC_ITEM -- for get attach list                     

				;		    CX = user word							 ;AN000;
				;		    DX = max xmitt size
				;		    BP = Low 8 bits has LSN from NCB_LIST if input AL ^=0
				;		    AX = Net name ID
				;
				;	 Carry	  - AX = Error code							 ;AN000;
				;			 18 - end of list						 ;AN000;
				; Regs: 										 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
 02A4  0000				USER_WORD	DW	0		; i give in - temp storage
															 ;AN000;
					Procedure   GET_IFSFUNC_ITEM							 ;AC003;
 02A6                        1	GET_IFSFUNC_ITEM    PROC     
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AC003;
										; get_ifsfunc_item and get_ifsfunc_item2 ;AC003;
 02A6  2E: C7 06 015A R 0000		MOV	CS:IFSPROC_FLAGS,ZERO		; are old style - types 3,4 only	 ;AC003;
 02AD  EB 10				JMP	SHORT GII_20								 ;AC003;
															 ;AC003;
					entry	GET_IFSFUNC_ITEM2							 ;AC003;
 02AF                        1	GET_IFSFUNC_ITEM2: 
 02AF  2E: C7 06 015A R 0800		MOV	CS:IFSPROC_FLAGS,SetBP		; set this to get lsn			 ;AC003;
 02B6  EB 07				JMP	SHORT GII_20								 ;AC003;
															 ;AC003;
					entry	GET_IFSFUNC_ITEM3		; new style get ifsfunc item		 ;AC003;
 02B8                        1	GET_IFSFUNC_ITEM3: 
 02B8  2E: C7 06 015A R 1000		MOV	CS:IFSPROC_FLAGS,Filesys_Status ; gets types 1,2,3,4			 ;AC003;
															 ;AC003;
				;----------------------------------------------------------------------------------------;AC003;
				;   drive  loop 									 ;AC003;
				;----------------------------------------------------------------------------------------;AC003;
															 ;AC003;
 02BF				GII_20: 										 ;AC003;
					ifsr_fcn_def  ATTSTAT			; define ifsr for attach status 	 ;AC003;
 02BF  2E: C7 06 015D R 001C		MOV	CS:DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@					 ;AN006;
															 ;AC003;
 02C6  5B				POP	BX				; index 				 ;AC003;
 02C7  33 C0				XOR	AX,AX				; ax will be counter through CDSs	 ;AC003;
					SaveReg <DS,SI> 			; save device/drive name buffer 	 ;AC003;
 02C9  1E                    2		PUSH    DS 
 02CA  56                    2		PUSH    SI 
 02CB				GII_40: 										 ;AC003;
 02CB  36: 3A 06 0000 E			CMP	AL,SS:[CDSCount]		; if run out of CDSs,			 ;AC003;
 02D0  72 05				JB	GII_60				;    go to devices			 ;AC003;
 02D2  32 C0				XOR	AL,AL				; reset for dfl count			 ;AC003;
 02D4  E9 03D5 R			JMP	GII_400 								 ;AC003;
 02D7				GII_60: 										 ;AC003;
					SaveReg <BX,AX> 			; save ax-cds count, bx-index		 ;AC003;
 02D7  53                    2		PUSH    BX 
 02D8  50                    2		PUSH    AX 
															 ;AC003;
 02D9  36: C5 36 0000 E			LDS	SI,[CDSAddr]			; Point ds:si to correct CDS entry	 ;AC003;
 02DE  2E: 80 3E 017B R 00		CMP	[fAssign],ZERO			; if pause in effect, must use		 ;AC003;
 02E4  75 05				JNZ	GII_80				; alternate cds list			 ;AC003;
 02E6  2E: C5 36 0169 R			LDS	SI,[CDSAlt]								 ;AC003;
															 ;AC003;
 02EB				GII_80: 										 ;AC003;
 02EB  B3 58				MOV	BL,SIZE CurDir_list		; size in convenient spot		 ;AC003;
 02ED  F6 E3				MUL	BL				; get net offset			 ;AC003;
 02EF  03 F0				ADD	SI,AX				; convert to true pointer		 ;AC003;
					RestoreReg  <AX,BX>								 ;AC003;
 02F1  58                    2		POP     AX 
 02F2  5B                    2		POP     BX 
 02F3  F7 44 43 8000			TEST	[SI].curdir_flags,curdir_isnet	; make sure ifs drive			 ;AC003;
 02F8  75 03				JNZ	GII_100 								 ;AC003;
 02FA  E9 03D1 R			JMP	GII_280 			; next drive				 ;AC003;
 02FD				GII_100:										 ;AC003;
 02FD  83 EB 01				SUB	BX,1				; jae jumps if CF=0, CF=1 when		 ;AC003;
										; index hit				 ;AC003;
 0300  72 03				JB	GII_120 								 ;AC003;
 0302  E9 03D1 R			JMP	GII_280 			; next drive				 ;AC003;
 0305				GII_120:										 ;AC003;
 0305  2E: F7 06 015A R 1000		TEST	CS:IFSPROC_FLAGS,Filesys_Status ; check old vs. new style		 ;AC003;
 030C  75 09				JNZ	GII_140 								 ;AC003;
 030E  80 7C 51 04			CMP	[SI.CURDIR_TYPE],TYPE_NET_DRIVE ; old style: check for type 4		 ;AC003;
 0312  74 03				JE	GII_140 								 ;AC003;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-12
GET_IFSFUNC_ITEM -- for get attach list                     

 0314  E9 03D1 R			JMP	GII_280 			; not type 4, go get next one		 ;AC003;
 0317				GII_140:										 ;AC003;
					RestoreReg  <DX,CX>			; get devname ptr into es:di,		 ;AC003;
 0317  5A                    2		POP     DX 
 0318  59                    2		POP     CX 
					SaveReg <CX,DX> 			; (push back for end ds:si setup)	 ;AC003;
 0319  51                    2		PUSH    CX 
 031A  52                    2		PUSH    DX 
					SaveReg <ES,DI> 			;   while preserving es:di - target	 ;AC003;
 031B  06                    2		PUSH    ES 
 031C  57                    2		PUSH    DI 
 031D  8E C1				MOV	ES,CX									 ;AC003;
 031F  8B FA				MOV	DI,DX									 ;AC003;
 0321  04 41				ADD	AL,'A'                          ; storing d:0 in devname buffer          ;AC003;
 0323  AA				STOSB										 ;AC003;
 0324  B8 003A				MOV	AX,(0 SHL 8) + ':'                                                       ;AC003;
 0327  AB				STOSW										 ;AC003;
					RestoreReg <DI,ES>			; restore target ptr			 ;AC003;
 0328  5F                    2		POP     DI 
 0329  07                    2		POP     ES 
															 ;AC003;
 032A  8A 5C 51				MOV	BL,[SI.CURDIR_TYPE]		; set bx=type (1,2,3,4) 		 ;AC003;
 032D  32 FF				XOR	BH,BH									 ;AC003;
 032F  2E: F7 06 015A R 1000		TEST	CS:IFSPROC_FLAGS,Filesys_status ; target different for new style	 ;AC003;
 0336  75 0B				JNZ	GII_150 								 ;AC003;
 0338  FF 74 4D				PUSH	[SI.CURDIR_USER_WORD]							 ;AC003;
 033B  2E: 8F 06 02A4 R			POP	CS:[USER_WORD]								 ;AC003;
 0340  EB 13 90				JMP	GII_160 								 ;AC003;
 0343				GII_150:										 ;AC003;
 0343  57				PUSH	DI				; ifs drive; save target offset 	 ;AC003;
 0344  26: 8B 3D			MOV	DI,ES:[DI]			; es:di -> FS name buffer		 ;AC003;
 0347  2E: 81 0E 015A R 0080		OR	IFSPROC_FLAGS,ISCDS		; get ifs driver name into target	 ;AC003;
 034E  E8 08C5 R			CALL	GET_IFS_DRIVER_NAME							 ;AC003;
															 ;AC003;
 0351  5F				POP	DI				; retrieve target offset from stack	 ;AC003;
 0352  57				PUSH	DI									 ;AC003;
 0353  47				INC	DI				; es:di -> parm buffer			 ;AC003;
 0354  47				INC	DI									 ;AC003;
															 ;AC003;
 0355				GII_160:										 ;AC003;
					SaveReg <ES,BX> 			; save target segment, type		 ;AC003;
 0355  06                    2		PUSH    ES 
 0356  53                    2		PUSH    BX 
										; go to IFS to fill in rest of tgt	 ;AC003;
					invoke	PREP_IFSR			; init ifsr				 ;AC003;
 0357  E8 0000 E             1		CALL    PREP_IFSR 
															 ;AC003;
 035A  2E: C7 06 015D R 001C		MOV	DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@					 ;AC003;
					invoke	CDS_TO_CD			; CDS: sets [THISIFS]			 ;AC003;
 0361  E8 0000 E             1		CALL    CDS_TO_CD 
										;	    ES:BX -> IFSRH		 ;AC003;
										;	    IFSR_DEVICE_CB@		 ;AC003;
										;	    ds - IFSSEG 		 ;AC003;
 0364  26: C7 07 002A			MOV	ES:[BX.IFSR_LENGTH],LENGTH_ATTSTAT					 ;AC003;
 0369  26: C6 47 02 03			MOV	ES:[BX.IFSR_FUNCTION],IFSATTSTAT					 ;AC003;
 036E  58				POP	AX				; type (BX)				 ;AC003;
 036F  26: 88 47 16			MOV	ES:[BX.IFSR_TYPE],AL							 ;AC003;
 0373  5A				POP	DX				; target segment (ES)			 ;AC003;
															 ;AC003;
 0374  2E: F7 06 015A R 1000		TEST	IFSPROC_FLAGS,Filesys_status						 ;AC003;
 037B  75 11				JNZ	GII_180 								 ;AC003;
 037D  0E				PUSH	CS									 ;AC003;
 037E  1F				POP	DS									 ;AC003;
				ASSUME	DS:IFSSEG									 ;AC003;
 037F  BE 0000 E			MOV	SI,OFFSET TEMPBUF							 ;AC003;
 0382  26: 89 77 18			MOV	WORD PTR ES:[BX.IFSR_PARMS@],SI 					 ;AC003;
 0386  26: 8C 5F 1A			MOV	WORD PTR ES:[BX.IFSR_PARMS@+2],DS					 ;AC003;
 038A  57				PUSH	DI				; push tgt offset here for later pop	 ;AC003;
 038B  EB 09 90				JMP	GII_200 								 ;AC003;
 038E				GII_180:										 ;AC003;
 038E  26: 89 7F 18			MOV	WORD PTR ES:[BX.IFSR_PARMS@],DI 					 ;AC003;
 0392  26: 89 57 1A			MOV	WORD PTR ES:[BX.IFSR_PARMS@+2],DX					 ;AC003;
 0396				GII_200:										 ;AC003;
 0396  50				PUSH	AX				; push type back (BX)			 ;AC003;
															 ;AC003;
				;***********************************************************************************************
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-13
GET_IFSFUNC_ITEM -- for get attach list                     

					invoke	CALL_IFS			; call fs with attach status request	 ;AC003;
 0397  E8 0000 E             1		CALL    CALL_IFS 
				;***********************************************************************************************
															 ;AC003;
 039A  73 25				JNC	GII_220 								 ;AC003;
										; attach status error:			 ;AC003;
					RestoreReg <BX,DI>			; type,target offset			 ;AC003;
 039C  5B                    2		POP     BX 
 039D  5F                    2		POP     DI 
 039E  8E C2				MOV	ES,DX									 ;AC003;
					SaveReg <DI>				; put "ERROR" in parms display           ;AC003;
 03A0  57                    2		PUSH    DI 
 03A1  2E: F7 06 015A R 1000		TEST	CS:IFSPROC_FLAGS,Filesys_status ; don't add  if net use                  ;AN029;
 03A8  74 07				JZ	GII_210 								 ;AN029;
 03AA  83 C7 02				ADD	DI,2									 ;AC003;
 03AD  B8 0001				MOV	AX,1									 ;AC003;
 03B0  AB				STOSW										 ;AC003;
 03B1				GII_210:										 ;AN029;
 03B1  0E				PUSH	CS									 ;AC003;
 03B2  1F				POP	DS									 ;AC003;
				ASSUME	DS:IFSSEG									 ;AC003;
 03B3  BE 017E R			MOV	SI,OFFSET ERROR_STATUS							 ;AC003;
 03B6  B9 0004				MOV	CX,4									 ;AC003;
 03B9  F3/ A5				REP	MOVSW									 ;AC003;
					RestoreReg <DI,SI,DS>								 ;AC003;;AC0
				29;
 03BB  5F                    2		POP     DI 
 03BC  5E                    2		POP     SI 
 03BD  1F                    2		POP     DS 
					transfer ifs_1000			; go to general ret in util		 ;AC003;
 03BE  E9 0000 E             2	??0008:      JMP ifs_1000                         ; 
															 ;AC003;
 03C1				GII_220:										 ;AC003;
					RestoreReg <AX,DI>			; device type, target offset		 ;AC003;
 03C1  58                    2		POP     AX 
 03C2  5F                    2		POP     DI 
 03C3  F7 06 015A R 1000		TEST	IFSPROC_FLAGS,Filesys_status						 ;AC003;
 03C9  74 03				JZ	GII_240 								 ;AC003;
				;;;;;;;;RestoreReg <SI,DS>			; IFS drive - devname ptr		 ;AC003;;AD0
				22;
				;	MOV	ES,DX				; target				 ;AC003;;AD0
				22;
				;	MOV	BX,AX									 ;AC003;;AD0
				22;
				;;;;;;;;transfer ifs_1000								 ;AC003;;AD0
				22;
 03CB  E9 04CC R			JMP	GII_630 			; want user bx set			 ;AN022;
															 ;AC003;
 03CE				GII_240:					; NET drive:				 ;AC003;
 03CE  E9 04E0 R			JMP	GII_640 			; go down to net device processing-	 ;AC003;
										; does the same thing			 ;AC003;
 03D1				GII_280:										 ;AC003;
 03D1  40				INC	AX				; next drive				 ;AC003;
 03D2  E9 02CB R			JMP	GII_40									 ;AC003;
															 ;AC003;
				;----------------------------------------------------------------------------------------;AC003;
				;   device loop 									 ;AC003;
				;----------------------------------------------------------------------------------------;AC003;
															 ;AC003;
 03D5				GII_400:					; Device loop				 ;AC003;
 03D5  2E: 3A 06 0168 R			CMP	AL,CS:[DFLCount]		; if run out of devices 		 ;AC003;
 03DA  72 03				JB	GII_460 								 ;AC003;
 03DC  E9 0536 R			JMP	GII_800 			;    go set no_more error		 ;AC003;
 03DF				GII_460:										 ;AC003;
					SaveReg <BX,AX> 			; save ax-dfl count, bx-index		 ;AC003;
 03DF  53                    2		PUSH    BX 
 03E0  50                    2		PUSH    AX 
 03E1  2E: C5 36 0164 R			LDS	SI,CS:[DFLAddr] 		; Point ds:si to correct DFL entry	 ;AC003;
 03E6  B3 1E				MOV	BL,SIZE DFLL_list		; size in convenient spot		 ;AC003;
 03E8  F6 E3				MUL	BL				; get net offset			 ;AC003;
 03EA  03 F0				ADD	SI,AX				; convert to true pointer		 ;AC003;
					RestoreReg  <AX,BX>								 ;AC003;
 03EC  58                    2		POP     AX 
 03ED  5B                    2		POP     BX 
 03EE  F6 04 40				TEST	[SI.DFLL_FLAGS],DFL_INUSE	; is dfl active???			 ;AC003;
 03F1  75 03				JNZ	GII_480 								 ;AC003;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-14
GET_IFSFUNC_ITEM -- for get attach list                     

 03F3  E9 0532 R			JMP	GII_680 								 ;AC003;
 03F6				GII_480:										 ;AC003;
 03F6  2E: F7 06 015A R 1000		TEST	CS:IFSPROC_FLAGS,Filesys_Status ; check old vs. new style		 ;AC003;
 03FD  75 09				JNZ	GII_520 								 ;AC003;
 03FF  80 7C 01 03			CMP	[SI.DFLL_TYPE],TYPE_NET_DEVICE	; old style: check for type 3		 ;AC003;
 0403  74 03				JE	GII_520 								 ;AC003;
 0405  E9 0532 R			JMP	GII_680 			; not type 4, go get next one		 ;AC003;
 0408				GII_520:										 ;AC003;
 0408  83 EB 01				SUB	BX,1									 ;AC003;
 040B  72 03				JB	GII_540 								 ;AC003;
 040D  E9 0532 R			JMP	GII_680 			; next device				 ;AC003;
 0410				GII_540:										 ;AC003;
 0410  2E: 89 36 0004 R			MOV	WORD PTR CS:[THISDFL],SI	; set thisdfl = dssi			 ;AN014;
 0415  1E				PUSH	DS									 ;AN014;
 0416  2E: 8F 06 0006 R			POP	WORD PTR CS:[THISDFL+2] 						 ;AN014;
					RestoreReg  <DX,CX>			; get devname ptr into es:di,		 ;AC003;
 041B  5A                    2		POP     DX 
 041C  59                    2		POP     CX 
					SaveReg <CX,DX> 			; (push back for end ds:si setup)	 ;AC003;
 041D  51                    2		PUSH    CX 
 041E  52                    2		PUSH    DX 
					SaveReg <ES,DI> 			;   while preserving es:di - target	 ;AC003;
 041F  06                    2		PUSH    ES 
 0420  57                    2		PUSH    DI 
 0421  8E C1				MOV	ES,CX									 ;AC003;
 0423  8B FA				MOV	DI,DX									 ;AC003;
 0425  56				PUSH	SI				; save DFL offset			 ;AC003;
 0426  83 C6 02				ADD	SI,DFLL_DEV_NAME 							 ;AC003;
 0429  B9 0008				MOV	CX,8									 ;AC003;
 042C				GII_545:					; store device name in asciiz format	 ;AC003;
 042C  AC				LODSB										 ;AC003;
 042D  3C 20				CMP	AL," "                                                                   ;AC003;
 042F  74 03				JE	GII_550 								 ;AC003;
 0431  AA				STOSB										 ;AC003;
 0432  E2 F8				LOOP	GII_545 								 ;AC003;
 0434				GII_550:										 ;AC003;
 0434  32 C0				XOR	AL,AL									 ;AC003;
 0436  AA				STOSB										 ;AC003;
					RestoreReg <SI,DI,ES>			; restore target ptr & DFL offset	 ;AC003;
 0437  5E                    2		POP     SI 
 0438  5F                    2		POP     DI 
 0439  07                    2		POP     ES 
															 ;AC003;
 043A  8A 5C 01				MOV	BL,[SI.DFLL_TYPE]							 ;AC003;
 043D  32 FF				XOR	BH,BH									 ;AC003;
 043F  2E: F7 06 015A R 1000		TEST	CS:IFSPROC_FLAGS,Filesys_Status 					 ;AC003;
 0446  75 0A				JNZ	GII_555 								 ;AC003;
 0448  FF 74 0A				PUSH	[SI.DFLL_USER_WORD]							 ;AC003;
 044B  8F 06 02A4 R			POP	[USER_WORD]								 ;AC003;
 044F  EB 0C 90				JMP	GII_560 								 ;AC003;
 0452				GII_555:										 ;AC003;
 0452  57				PUSH	DI				; ifs device; save target offset	 ;AC003;
 0453  26: 8B 3D			MOV	DI,ES:[DI]			; es:di -> FS name buffer		 ;AC003;
					invoke	GET_IFS_DRIVER_NAME							 ;AC003;
 0456  E8 08C5 R             1		CALL    GET_IFS_DRIVER_NAME 
															 ;AC003;
 0459  5F				POP	DI				; retrieve target offset from stack	 ;AC003;
 045A  57				PUSH	DI									 ;AC003;
 045B  47				INC	DI				; es:di -> parm buffer			 ;AC003;
 045C  47				INC	DI									 ;AC003;
															 ;AC003;
 045D				GII_560:										 ;AC003;
					SaveReg <ES,BX> 			; save target segment, type		 ;AC003;
 045D  06                    2		PUSH    ES 
 045E  53                    2		PUSH    BX 
										; now go to IFS to fill in rest of target;AC003;
					invoke	PREP_IFSR			; init ifsr				 ;AC003;
 045F  E8 0000 E             1		CALL    PREP_IFSR 
					invoke	DFL_TO_DF			; DFL: sets [THISIFS]			 ;AC003;
 0462  E8 0000 E             1		CALL    DFL_TO_DF 
										;	    ES:BX -> IFSRH		 ;AC003;
										;	    IFSR_DEVICE_CB@		 ;AC003;
										;	    ds - IFSSEG 		 ;AC003;
 0465  26: C7 07 002A			MOV	ES:[BX.IFSR_LENGTH],LENGTH_ATTSTAT					 ;AC003;
 046A  26: C6 47 02 03			MOV	ES:[BX.IFSR_FUNCTION],IFSATTSTAT					 ;AC003;
 046F  58				POP	AX				; type (BX)				 ;AC003;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-15
GET_IFSFUNC_ITEM -- for get attach list                     

 0470  26: 88 47 16			MOV	ES:[BX.IFSR_TYPE],AL							 ;AC003;
 0474  5A				POP	DX				; target segment (ES)			 ;AC003;
															 ;AC003;
 0475  2E: F7 06 015A R 1000		TEST	CS:IFSPROC_FLAGS,Filesys_Status 					 ;AC003;
 047C  75 11				JNZ	GII_580 								 ;AC003;
 047E  0E				PUSH	CS									 ;AC003;
 047F  1F				POP	DS									 ;AC003;
				ASSUME	DS:IFSSEG									 ;AC003;
 0480  BE 0000 E			MOV	SI,OFFSET TEMPBUF							 ;AC003;
 0483  26: 89 77 18			MOV	WORD PTR ES:[BX.IFSR_PARMS@],SI 					 ;AC003;
 0487  26: 8C 5F 1A			MOV	WORD PTR ES:[BX.IFSR_PARMS@+2],DS					 ;AC003;
 048B  57				PUSH	DI				; push tgt offset here for later pop	 ;AC003;
 048C  EB 09 90				JMP	GII_600 								 ;AC003;
 048F				GII_580:										 ;AC003;
 048F  26: 89 7F 18			MOV	WORD PTR ES:[BX.IFSR_PARMS@],DI 					 ;AC003;
 0493  26: 89 57 1A			MOV	WORD PTR ES:[BX.IFSR_PARMS@+2],DX					 ;AC003;
 0497				GII_600:										 ;AC003;
 0497  50				PUSH	AX				; push type back (BX)			 ;AC003;
															 ;AC003;
				;***********************************************************************************************
					invoke	CALL_IFS			; call fs with attach status request	 ;AC003;
 0498  E8 0000 E             1		CALL    CALL_IFS 
				;***********************************************************************************************
															 ;AC003;
 049B  73 25				JNC	GII_620 								 ;AC003;
					RestoreReg <BX,DI>			; type,target offset,devname ptr	 ;AC003;
 049D  5B                    2		POP     BX 
 049E  5F                    2		POP     DI 
 049F  8E C2				MOV	ES,DX				; target				 ;AC003;
					SaveReg <DI>				; put "ERROR" in parms display           ;AC003;
 04A1  57                    2		PUSH    DI 
 04A2  2E: F7 06 015A R 1000		TEST	CS:IFSPROC_FLAGS,Filesys_status ; don't add  if net use                  ;AN029;
 04A9  74 07				JZ	GII_610 								 ;AN029;
 04AB  83 C7 02				ADD	DI,2									 ;AC003;
 04AE  B8 0001				MOV	AX,1									 ;AC003;
 04B1  AB				STOSW										 ;AC003;
 04B2				GII_610:										 ;AN029;
 04B2  0E				PUSH	CS									 ;AC003;
 04B3  1F				POP	DS									 ;AC003;
				ASSUME	DS:IFSSEG									 ;AC003;
 04B4  BE 017E R			MOV	SI,OFFSET ERROR_STATUS							 ;AC003;
 04B7  B9 0004				MOV	CX,4									 ;AC003;
 04BA  F3/ A5				REP	MOVSW									 ;AC003;
					RestoreReg <DI,SI,DS>								 ;AC003;;AC0
				27;
 04BC  5F                    2		POP     DI 
 04BD  5E                    2		POP     SI 
 04BE  1F                    2		POP     DS 
					transfer ifs_1000			; go to general ret in util		 ;AC003;
 04BF  E9 0000 E             2	??0009:      JMP ifs_1000                         ; 
															 ;AC003;
 04C2				GII_620:										 ;AC003;
					RestoreReg <AX,DI>			; device type, target offset		 ;AC003;
 04C2  58                    2		POP     AX 
 04C3  5F                    2		POP     DI 
 04C4  F7 06 015A R 1000		TEST	IFSPROC_FLAGS,Filesys_Status						 ;AC003;
 04CA  74 14				JZ	GII_640 			; IFS device:				 ;AC003;
 04CC				GII_630:										 ;AN022;
					CallInstall Get_User_Stack,MULTdos,24,<AX>,<AX> 				 ;AN022;
 04CC  50                    3		PUSH    AX 
 04CD  B8 1218               1		MOV     AX,(MULTdos SHL 8) + 24 
 04D0  CD 2F                 1		INT     2Fh 
 04D2  58                    3		POP     AX 
 04D3  26: 8A 67 28			MOV	AH,ES:[BX.IFSR_DEVICE_STATUS]						 ;AN022;
 04D7  89 44 02				MOV	[SI].USER_BX,AX 							 ;AN022;
					RestoreReg <SI,DS>			; target offset,devname ptr		 ;AC003;
 04DA  5E                    2		POP     SI 
 04DB  1F                    2		POP     DS 
 04DC  8E C2				MOV	ES,DX				; target				 ;AC003;
				;;;;;;;;MOV	BX,AX									 ;AC003;;AD0
				22;
					transfer ifs_1000								 ;AC003;
 04DE  EB DF                 2	??000A:      JMP ifs_1000_J                      ; 
															 ;AC003;
 04E0				GII_640:					; NET device:				 ;AC003;
					CallInstall Get_User_Stack,multDOS,24,<AX>,<AX> 				 ;AC003;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-16
GET_IFSFUNC_ITEM -- for get attach list                     

 04E0  50                    3		PUSH    AX 
 04E1  B8 1218               1		MOV     AX,(multDOS SHL 8) + 24 
 04E4  CD 2F                 1		INT     2Fh 
 04E6  58                    3		POP     AX 
 04E7  2E: FF 36 02A4 R			PUSH	CS:[USER_WORD]							 ;AC003;
 04EC  8F 44 04				POP	[SI].User_CX		; User Word					 ;AC003;
 04EF  26: FF 77 22			PUSH	ES:[BX.IFSR_MAX_XMITT_SIZE]						 ;AC003;
 04F3  8F 44 06				POP	[SI].User_DX		; Max Xmitt size				 ;AC003;
 04F6  26: FF 77 24			PUSH	ES:[BX.IFSR_NET_NAME_ID]					      ;AC003/AC008/A
				C009
 04FA  26: FF 77 24			PUSH	ES:[BX.IFSR_NET_NAME_ID] ; leave this on stack for later pop into ax	 ;AC009;
 04FE  8F 04				POP	[SI].User_AX		; Net name ID					 ;AC003/AC00
				8;
				;;;;;;;;PUSH	AX									 ;AN008/AD00
				9;
				
 0500  26: 8A 6F 28			MOV	CH,ES:[BX.IFSR_DEVICE_STATUS]						 ;AC003;
 0504  8A C8				MOV	CL,AL									 ;AC003;
 0506  89 4C 02				MOV	[SI].User_BX,CX 	; Bits and macro type				 ;AC003;
 0509  2E: F7 06 015A R 0800		TEST	CS:IFSPROC_FLAGS,SetBP							 ;AC003;
 0510  74 07				JZ	GII_660 								 ;AC003;
 0512  26: FF 77 26			PUSH	ES:[BX.IFSR_LSN]							 ;AC003;
 0516  8F 44 0C				POP	[SI].User_BP		; LSN						 ;AC003;
 0519				GII_660:										 ;AC003;
 0519  26: 8B 77 18			MOV	SI,ES:WORD PTR [BX.IFSR_PARMS@] 					 ;AC003;
 051D  26: 8E 5F 1A			MOV	DS,ES:WORD PTR [BX.IFSR_PARMS@+2]					 ;AC003;
 0521  46				INC	SI				; ds:si -> parms returned by redir	 ;AC003;
 0522  46				INC	SI									 ;AC003;
 0523  8E C2				MOV	ES,DX				; es:di -> input target buffer		 ;AC003;
					SaveReg <DI>				; save offset				 ;AC003;
 0525  57                    2		PUSH    DI 
					CallInstall StrCpy,MultDOS,17							 ;AC003;
 0526  B8 1211               1		MOV     AX,(MultDOS SHL 8) + 17 
 0529  CD 2F                 1		INT     2Fh 
					RestoreReg <DI,AX,SI,DS>		; tgt offset,netpath id,devname ptr	 ;AC003/AC00
				8;
 052B  5F                    2		POP     DI 
 052C  58                    2		POP     AX 
 052D  5E                    2		POP     SI 
 052E  1F                    2		POP     DS 
					transfer ifs_990								 ;AC003;
 052F  E9 0000 E             2	??000B:      JMP ifs_990                         ; 
															 ;AC003;
 0532				GII_680:										 ;AC003;
 0532  40				INC	AX				; next drive				 ;AC003;
 0533  E9 03D5 R			JMP	GII_400 								 ;AC003;
															 ;AC003;
															 ;AC003;
 0536				GII_800:					; end of CDSs & devices 		 ;AC003;
										; now check deviceless attaches 	 ;AC003;
				;----------------------------------------------------------------------------------------;AC003;
				;   deviceless loop									 ;AC003;
				;----------------------------------------------------------------------------------------;AC003;
															 ;AC003;
 0536  E8 0A6C R			CALL	GET_UNC_ITEM_INFO							 ;AC003;
 0539  72 07				JC	GII_820 								 ;AC003;
					RestoreReg <SI,DS>			; set dev ptr null			     ;AC003;
 053B  5E                    2		POP     SI 
 053C  1F                    2		POP     DS 
 053D  C6 04 00				MOV	BYTE PTR DS:[SI],ZERO							 ;AC003;
					transfer ifs_990								 ;AC003;
 0540  EB ED                 2	??000C:      JMP ifs_990_J                      ; 
 0542				GII_820:										 ;AC003;
 0542  B8 0012				MOV	AX,error_no_more_files							 ;AC003;
					RestoreReg <SI,DI>			; restore regs				 ;AC003;
 0545  5E                    2		POP     SI 
 0546  5F                    2		POP     DI 
															 ;AC003;
					return										 ;AC003;
 0547                        1	??000D: 
 0547  C3                    1		RET 
															 ;AC003;
				EndProc GET_IFSFUNC_ITEM								 ;AC003;
 0548                        1	GET_IFSFUNC_ITEM    ENDP 
															 ;AN000;
															 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-17
GET_IFSFUNC_ITEM -- for get attach list                     

				BREAK <ATTACH_START -- Attach drive/device to IFS>					 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-18
ATTACH_START -- Attach drive/device to IFS                  

															 ;AN000;
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; ATTACH_START										 ;AN000;
				;											 ;AN000;
				; Called by: IFS_ASSOPER								 ;AN000;
				;											 ;AN000;
				; Routines called:  CALL_IFS		DOS: GetCDSFromDrv				 ;AN000;
				;		    CDS_TO_CD								 ;AN000;
				;		    CD_TO_CDS								 ;AN000;
				;		    CREATE_DFL_ENTRY							 ;AN000;
				;		    DELETE_DFL_ENTRY							 ;AN000;
				;		    DFL_MATCH								 ;AN000;
				;		    DFL_TO_DF								 ;AN000;
				;		    DF_TO_DFL								 ;AN000;
				;		    CALL_IFS								 ;AN000;
				;		    FIND_IFS_DRIVER							 ;AN000;
				;;; alias	    PROCESS_ALIAS							 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;	    BL = Macro type								 ;AN000;
				;;; alias      = 0 alias								 ;AN000;
				;	       = 1 device/file								 ;AN000;
				;	       = 2 drive								 ;AN000;
				;	       = 3 Char device -> network						 ;AN000;
				;	       = 4 File device -> network						 ;AN000;
				;	    DS:SI -> ASCIIZ source name 						 ;AN000;
				;	    ES:DI -> Target driver to attach to and parms.				 ;AN000;
				;			    DW ASCIIZ  -  asciiz name of driver 			 ;AN000;
				;			    DW n       -  number of parms				 ;AN000;
				;			    DW ASCIIZ,... parms 					 ;AN000;
				;											 ;AN000;
				;	    CX is reserved (user word for REDIR)					 ;AN000;
				;											 ;AN000;
				; Function:										 ;AN000;
				;	     IF BL > 0 THEN								 ;AN000;
				;		DO									 ;AN000;
				;		  Check that IFS driver exists						 ;AN000;
				;		  IF found, set IFS header to that found				 ;AN000;
				;		  ELSE set error_file_system_not_found					 ;AN000;
				;		ENDDO									 ;AN000;
				;	     IF (BL=2 .OR. BL=4) & no error THEN					 ;AN000;
				;		DO									 ;AN000;
				;		  Find CDS for this drive						 ;AN000;
				;		  IF none exists, then set error_invalid_parameter			 ;AN000;
				;		  ELSE Call CDS_TO_CD							 ;AN000;
				;		END									 ;AN000;
				;	     ELSE DO									 ;AN000;
				;		    IF source name not in DFL THEN					 ;AN000;
				;			 Call CREATE_DFL_ENTRY						 ;AN000;
				;		    ELSE  Set error_device_already_attached				 ;AN000;
				;		    ENDIF								 ;AN000;
				;		  ENDDO 								 ;AN000;
				;	     IF no error THEN								 ;AN000;
				;		DO									 ;AN000;
				;		  Prep IFSRH for Attach Start:						 ;AN000;
				;		    *  IFSR_LENGTH	DW     34	; Request length		 ;AN000;
				;		    *  IFSR_FUNCTION	DB	2	; Attach Start			 ;AN000;
				;		       IFSR_RETCODE	DW	0					 ;AN000;
				;		       IFSR_RETCLASS	DB	?					 ;AN000;
				;		       IFSR_RESV1	DB     16 DUP(0)				 ;AN000;
				;		    *  IFSR_TYPE	DB	?	; BL (0,1,2,3,or 4)		 ;AN000;
				;		       IFSR_RESV2	DB	?	;
				;		    *  IFSR_PARMS@	DD	PARMS	; See below			 ;AN000;
				;		    *  IFSR_DEVICE_CB@	DD	?	; CD or DF (See below)		 ;AN000;
				;		    *  IFSR_USER_WORD	DW	?	; for deviceless attach 	 ;AN000;
				;											 ;AN000;
				;		    *  PARMS	       LABEL   WORD					 ;AN000;
				;				       DW      PARMCOUNT ; Number of parms. May be 0.	 ;AN000;
				;				       DB      ASCIIZ,...; Parms			 ;AN000;
				;		ENDDO									 ;AN000;
				;	       IF no error THEN 							 ;AN000;
				;		  DO									 ;AN000;
				;		    CALL routine, CALL_IFS, with pointer to IFS header			 ;AN000;
				;		    IF IFSR_RETCODE = 0 THEN						 ;AN000;
				;		       DO								 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-19
ATTACH_START -- Attach drive/device to IFS                  

				;			 IF DFL flag set THEN						 ;AN000;
				;			    DO								 ;AN000;
				;			      Call DF_TO_DFL						 ;AN000;
				;			      Set DFLL_PTR to IFS header 				 ;AN000;
				;			    ENDDO							 ;AN000;
				;			 ELSE DO							 ;AN000;
				;				Call CD_TO_CDS						 ;AN000;
				;				Set CDS_IFSR_PTR to IFS header				 ;AN000;
				;			      ENDDO							 ;AN000;
				;			 ENDIF								 ;AN000;
				;			 Clear carry							 ;AN000;
				;		       ENDDO								 ;AN000;
				;		    ELSE DO								 ;AN000;
				;			   IF DFL flag set THEN 					 ;AN000;
				;			      Call DELETE_DFL_ENTRY					 ;AN000;
				;			   Set carry							 ;AN000;
				;			 ENDDO								 ;AN000;
				;		    ENDIF								 ;AN000;
				;		  ENDDO 								 ;AN000;
				;	       ELSE  Set carry								 ;AN000;
				;	       ENDIF									 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
															 ;AN000;
					Procedure   ATTACH_START,NEAR							 ;AN000;
 0548                        1	ATTACH_START    PROC    NEAR 
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AN000;
															 ;AN000;
					ifsr_fcn_def  ATTSTART								 ;AN000;
 0548  2E: C7 06 015D R 001C		MOV	CS:DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@					 ;AN000;
															 ;AN000;
 054F  5B				POP	BX									 ;AN000;
 0550  32 FF				XOR	BH,BH				; not interested in bh, but should	 ;AN000;
										; be 0 since later move type as word	 ;AN000;
 0552				AS_10:											 ;AN000;
 0552  80 FB 02				CMP	BL,TYPE_DRIVE			; check ifs vs. network 		 ;AN000;
 0555  7E 0B				JLE	AS_20									 ;AN000;
 0557  80 FB 04				CMP	BL,TYPE_NET_DRIVE							 ;AN000;
 055A  7E 37				JLE	AS_30									 ;AN000;
															 ;AN000;
 055C				AS_15:											 ;AN000;
 055C  B8 0001				MOV	AX,error_invalid_function	; invalid fcn type			 ;AN000;
					transfer ifs_980			; go ret w/carry			 ;AN000;
 055F  E9 0000 E             2	??000E:      JMP ifs_980                         ; 
															 ;AN000;
 0562				AS_20:						; IFS device/drive			 ;AN000;
					SaveReg <ES,DI> 			; save target ptr for parms@		 ;AN000;
 0562  06                    2		PUSH    ES 
 0563  57                    2		PUSH    DI 
 0564  26: 8B 3D			MOV	DI,ES:[DI]			; set ES:DI -> driver name		 ;AN000;
					invoke	FIND_IFS_DRIVER 		; sets [THISIFS]			 ;AN000;
 0567  E8 08E3 R             1		CALL    FIND_IFS_DRIVER 
 056A  72 22				JC	AS_25									 ;AN000;
					SaveReg <CX>				; save cx since next destroys		 ;AN000;
 056C  51                    2		PUSH    CX 
					invoke	SET_CATEGORY			; do this to determine unc or not	 ;AN000;
 056D  E8 0000 E             1		CALL    SET_CATEGORY 
 0570  0A C9				OR	CL,CL				; cl=1 unc  else ifs			 ;AN000;
					RestoreReg <CX> 			; restore before branch - zf preserved	 ;AN000;
 0572  59                    2		POP     CX 
 0573  74 5C				JZ	AS_50				; jmp if not unc			 ;AN000;
 0575  80 C3 02				ADD	BL,2				; change type from 1/2 to 3/4		 ;AN000;
					RestoreReg <DI,ES>			; retrieve orig target ptr		 ;AN010;
 0578  5F                    2		POP     DI 
 0579  07                    2		POP     ES 
				;;;;;;;;OR	CS:IFSPROC_FLAGS,Filesys_Network_Attach 				 ;AN010;;AD0
				17;
 057A  26: 83 7D 02 02			CMP	WORD PTR ES:[DI+2],2		; if # parms=2 then have password	 ;AN011;
 057F  74 05				JE	AS_22									 ;AN011;
 0581  B9 0001				MOV	CX,0001H			; User word without password		 ;AN011;
 0584  EB 03				JMP	SHORT AS_23			; go process as unc			 ;AN011;;AC0
				17;
 0586				AS_22:											 ;AN011;
 0586  B9 8001				MOV	CX,8001H			; User word with password		 ;AN011;
 0589				AS_23:											 ;AN017;
 0589  83 C7 04				ADD	DI,4				; skip over ifs name offset & #parms	 ;AN017;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-20
ATTACH_START -- Attach drive/device to IFS                  

 058C  EB 0E				JMP	SHORT AS_33			; go process as unc			 ;AN000;
				
 058E				AS_25:						; ifs driver not found			 ;AN000;
 058E  5F				POP	DI				; error, restore stack and return	 ;AN000;
 058F  07				POP	ES									 ;AN000;
					transfer ifs_1000								 ;AN000;
 0590  E9 0000 E             2	??000F:      JMP ifs_1000                         ; 
															 ;AN000;
 0593				AS_30:						; NETWORK device/drive			 ;AN000;
 0593  2E: F7 06 0171 R 0080		TEST	CS:IFSFUNC_FLAGS,UNC_INSTALLED	; check that unc installed		 ;AN000;
 059A  74 C0				JZ	AS_15									 ;AN000;
 059C				AS_33:						; this label for unc already checked	 ;AN000;
 059C  2E: 81 0E 015A R 0400		OR	IFSPROC_FLAGS,IsNetwork 	; set network bit			 ;AN000;
 05A3  80 FB 04				CMP	BL,TYPE_NET_DRIVE		; check pause status			 ;AN000;
 05A6  75 08				JNE	AS_35									 ;AN000;
 05A8  2E: 80 3E 017B R FF		CMP	CS:fAssign,-1								 ;AN000;
 05AE  EB 06				JMP	SHORT AS_37								 ;AN000;
 05B0				AS_35:											 ;AN000;
 05B0  2E: 80 3E 017C R FF		CMP	CS:fPrint,-1								 ;AN000;
 05B6				AS_37:											 ;AN000;
 05B6  74 0A				JE	AS_40				; bad pause status			 ;AN000;
 05B8  B8 0048				MOV	AX,72				; set error and ret w/carry		 ;AN000;
 05BB				AS_38:											 ;AN020;
 05BB  0E				PUSH	CS									 ;AN000;
 05BC  1F				POP	DS									 ;AN000;
				ASSUME	DS:IFSSEG									 ;AN000;
					invoke	SET_EXTERR_INFO 							 ;AN000;
 05BD  E8 0000 E             1		CALL    SET_EXTERR_INFO 
					transfer ifs_980								 ;AN000;
 05C0  EB 9D                 2	??0010:      JMP ifs_980_J                      ; 
															 ;AN000;
 05C2				AS_40:											 ;AN000;
					invoke	SET_THISIFS_UNC 							 ;AN000;
 05C2  E8 0000 E             1		CALL    SET_THISIFS_UNC 
					SaveReg <CX>									 ;AN004;;AC0
				15;
 05C5  51                    2		PUSH    CX 
					invoke	NET_TRANS								 ;AN000;
 05C6  E8 0000 E             1		CALL    NET_TRANS 
					RestoreReg <CX> 								 ;AN004;;AC0
				15;
 05C9  59                    2		POP     CX 
 05CA  73 07				JNC	SHORT AS_55								 ;AC020;
 05CC  B8 0003				MOV	AX,error_path_not_found 	; net trans failure = path not found	 ;AN020;
 05CF  EB EA				JMP	AS_38									 ;AN020;
															 ;AN000;
 05D1				AS_50:											 ;AN000;
					RestoreReg <DI,ES>			; restore target parm ptr		 ;AN000;
 05D1  5F                    2		POP     DI 
 05D2  07                    2		POP     ES 
 05D3				AS_55:											 ;AN000;
 05D3  2E: 83 0E 015A R 02		OR	CS:IFSPROC_FLAGS,THISIFS_SET	; do this so wont do in CDS_TO_CD	 ;AN000;
										; or DFL_TO_DF				 ;AN000;
 05D9  80 FB 01				CMP	BL,TYPE_DEVICE								 ;AN000;
 05DC  75 03				JNE	AS_55_0 								 ;AN000;
 05DE  E9 068E R			JMP	AS_200									 ;AN000;
 05E1				AS_55_0:										 ;AN000;
 05E1  80 FB 03				CMP	BL,TYPE_NET_DEVICE							 ;AN000;
 05E4  75 03				JNE	AS_55_1 								 ;AN000;
 05E6  E9 068E R			JMP	AS_200									 ;AN000;
 05E9				AS_55_1:										 ;AN000;
 05E9  80 FB 04				CMP	BL,TYPE_NET_DRIVE		; deviceless attach check		 ;AN000;
 05EC  75 1B				JNE	AS_56				; jmp if no				 ;AN000;
 05EE  80 3C 00				CMP	BYTE PTR [SI],0 		; DEVICELESS ATTACH			 ;AN000;
 05F1  75 16				JNZ	AS_56				;   Set dummy CDS and flag		 ;AN000;
					Context DS									 ;AN000;
 05F3  16                    1		PUSH    SS 
 05F4  1F                    1		POP     DS 
 05F5  BE 0000 E			MOV	SI,OFFSET DOSGROUP:DummyCDS						 ;AN000;
 05F8  8C 1E 0002 E			MOV	WORD PTR [THISCDS+2],DS 						 ;AN000;
 05FC  89 36 0000 E			MOV	WORD PTR [THISCDS],SI							 ;AN000;
 0600  2E: 81 0E 015A R 0200		OR	IFSPROC_FLAGS,ISDUMMYCDS						 ;AN000;
 0607  EB 2E				JMP	SHORT AS_100								 ;AN000;
															 ;AN000;
 0609				AS_56:						; DRIVE ATTACH				 ;AN000;
 0609  83 7C 01 3A			CMP	WORD PTR [SI+1],ICOLON		;   if 2nd char not ":" - error          ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-21
ATTACH_START -- Attach drive/device to IFS                  

 060D  74 05				JE	AS_60				;   else - find CDS			 ;AN000;
 060F				AS_57:											 ;AN000;
 060F  B8 000F				MOV	AX,error_invalid_drive							 ;AN000;
					transfer ifs_980								 ;AN000;
 0612  EB AC                 2	??0011:      JMP ifs_980_J                      ; 
															 ;AN000;
 0614				AS_60:											 ;AN000;
 0614  AC				LODSB										 ;AN000;
					Context DS				; get addressability to DOSGROUP	 ;AN000;
 0615  16                    1		PUSH    SS 
 0616  1F                    1		POP     DS 
 0617  0C 20				OR	AL,20H									 ;AN000;
 0619  2C 61				SUB	AL,"a"                          ;   0=A,1=B,...                          ;AN000;
					CallInstall GetCDSFromDrv,multDOS,23,AX,AX					 ;AN000;
 061B  50                    3		PUSH    AX 
 061C  B8 1217               1		MOV     AX,(multDOS SHL 8) + 23 
 061F  CD 2F                 1		INT     2Fh 
 0621  58                    3		POP     AX 
				ASSUME	DS:NOTHING									 ;AN000;
 0622  72 EB				JC	AS_57				; no cds - error			 ;AN000;
 0624  F7 44 43 4000			TEST	[SI.curdir_flags],curdir_inuse	; DS:SI -> CDS				 ;AN000;
 0629  74 0C				JZ	AS_100									 ;AN000;
 062B  F7 44 43 B000			TEST	[SI.curdir_flags],curdir_isnet + curdir_splice + curdir_local		 ;AN000;
 0630  74 05				JZ	AS_100									 ;AN000;
 0632  B8 0055				MOV	AX,error_already_assigned	; error - CDS already assigned		 ;AN000;
					transfer ifs_980			; go return with carry			 ;AN000;
 0635  EB DB                 2	??0012:      JMP ifs_980_J                      ; 
															 ;AN000;
 0637				AS_100: 										 ;AN000;
					SaveReg <DS,SI,ES,DI>	; save real cds and target parm ptr			 ;AN000;
 0637  1E                    2		PUSH    DS 
 0638  56                    2		PUSH    SI 
 0639  06                    2		PUSH    ES 
 063A  57                    2		PUSH    DI 
								; If all goes OK this will be the "REAL" CDS             ;AN000;
					Context ES									 ;AN000;
 063B  16                    1		PUSH    SS 
 063C  07                    1		POP     ES 
 063D  BF 0000 E			MOV	DI,OFFSET DOSGROUP:DummyCDS						 ;AN000;
					SaveReg <DI,CX> 		; dummy cds offset, input user word		 ;AC001;
 0640  57                    2		PUSH    DI 
 0641  51                    2		PUSH    CX 
 0642  B9 0058				MOV	CX,SIZE curdir_list							 ;AN000;
 0645  F3/ A4				REP	MOVSB									 ;AN000;
					RestoreReg <CX> 		; input user word				 ;AN001;
 0647  59                    2		POP     CX 
 0648  06				PUSH	ES									 ;AN000;
 0649  1F				POP	DS									 ;AN000;
 064A  5E				POP	SI		; DS:SI -> dummy CDS					 ;AN000;
 064B  C7 44 43 C000			MOV	[SI.curdir_flags],curdir_isnet + curdir_inuse				 ;AN000;
															 ;AN000;
 0650  2E: A1 0000 R			MOV	AX,WORD PTR [THISIFS]		; set ifs ptr in cds			 ;AN000;
 0654  89 44 52				MOV	DS:WORD PTR [SI.CURDIR_IFS_HDR],AX					 ;AN000;
 0657  2E: A1 0002 R			MOV	AX,WORD PTR [THISIFS+2] 						 ;AN000;
 065B  89 44 54				MOV	DS:WORD PTR [SI.CURDIR_IFS_HDR+2],AX					 ;AN000;
															 ;AN000;
 065E  88 5C 51				MOV	DS:[SI.CURDIR_TYPE],BL		; set CDS type				 ;AN000;
 0661  89 4C 4D				MOV	DS:[SI.CURDIR_USER_WORD],CX	; set CDS user word			 ;AN001;
 0664  8B C1				MOV	AX,CX
															 ;AN000;
					RestoreReg <DX,CX>			; get target parm ptr off stack 	 ;AN000;
 0666  5A                    2		POP     DX 
 0667  59                    2		POP     CX 
					SaveReg <DS,SI,BX>			; save type and dummy cds ptr		 ;AN000;
 0668  1E                    2		PUSH    DS 
 0669  56                    2		PUSH    SI 
 066A  53                    2		PUSH    BX 
					invoke	PREP_IFSR			; clear ifsrh				 ;AN000;
 066B  E8 0000 E             1		CALL    PREP_IFSR 
					invoke	CDS_TO_CD			; CDS: sets ES:BX -> IFSRH		 ;AN000;
 066E  E8 0000 E             1		CALL    CDS_TO_CD 
										;	    IFSR_DEVICE_CB@		 ;AN000;
										;	    ds - IFSSEG 		 ;AN000;
 0671  2E: 81 0E 015A R 0080		OR	IFSPROC_FLAGS,ISCDS							 ;AN000;
 0678  2E: F7 06 015A R 0200		TEST	IFSPROC_FLAGS,ISDUMMYCDS
 067F  74 04				JZ	AS_120
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-22
ATTACH_START -- Attach drive/device to IFS                  

 0681  26: 89 47 20			MOV	ES:[BX.IFSR_USER_WORD],AX
 0685				AS_120:
 0685  58				POP	AX				; restore type in AL			 ;AN000;
 0686  26: 88 47 16			MOV	ES:[BX.IFSR_TYPE],AL							 ;AC002;
					SaveReg <CX,DX> 			; put target parm ptr back on stack	 ;AN000;
 068A  51                    2		PUSH    CX 
 068B  52                    2		PUSH    DX 
 068C  EB 1F				JMP	SHORT AS_400			; go prep IFSRH 			 ;AN000;
															 ;AN000;
 068E				AS_200: 					; DEVICE ATTACH:			 ;AN000;
					invoke	DFL_MATCH			; check if device already assigned	 ;AN000;
 068E  E8 0000 E             1		CALL    DFL_MATCH 
 0691  72 05				JC	AS_220				; cf-0 match, cf-set no match		 ;AN000;
 0693  B8 0055				MOV	AX,error_already_assigned						 ;AN000;
					transfer ifs_980			; go return with carry			 ;AN000;
 0696  EB 9D                 2	??0013:      JMP ifs_980_J                      ; 
															 ;AN000;
 0698				AS_220: 										 ;AN000;
					SaveReg <ES,DI,BX>			; save target parm ptr & type		 ;AN000;
 0698  06                    2		PUSH    ES 
 0699  57                    2		PUSH    DI 
 069A  53                    2		PUSH    BX 
					invoke	CREATE_DFL_ENTRY		; DFL: sets ES:BX -> IFSRH		 ;AN000;
 069B  E8 0000 E             1		CALL    CREATE_DFL_ENTRY 
										;	    IFSR_DEVICE_CB@		 ;AN000;
										;	    ds - IFSSEG 		 ;AN000;
 069E  73 08				JNC	AS_240									 ;AN000;
					RestoreReg <BX,DI,ES>			; restore stack 			 ;AC019;
 06A0  5B                    2		POP     BX 
 06A1  5F                    2		POP     DI 
 06A2  07                    2		POP     ES 
					invoke	CONSIST_SFT								 ;AN000;
 06A3  E8 0000 E             1		CALL    CONSIST_SFT 
					transfer ifs_980			;  error ret				 ;AC019;
 06A6  EB EE                 2	??0014:      JMP ifs_980_J                      ; 
 06A8				AS_240: 										 ;AN000;
 06A8  58				POP	AX				; restore type in AL			 ;AN000;move
				d ;AM019;
 06A9  26: 88 47 16			MOV	ES:[BX.IFSR_TYPE],AL							 ;AC002;
															 ;AN000;
															 ;AN000;
 06AD				AS_400: 						; prep IFSRH			 ;AN000;
 06AD  26: C7 07 0022			MOV	ES:[BX.IFSR_LENGTH],LENGTH_ATTSTART					 ;AN000;
 06B2  26: C6 47 02 02			MOV	ES:[BX.IFSR_FUNCTION],IFSATTSTART					 ;AN000;
 06B7  58				POP	AX					; old target DI 		 ;AN000;
				;;;;;;;;TEST	IFSPROC_FLAGS,Filesys_Network_Attach					 ;AN010;;AD0
				17;
				;	JZ	AS_405									 ;AN010;;AD0
				17;
				;	ADD	AX,4					; filesys-net  skip name offset  ;AN010;;AD0
				17;
				;;;;;;;;JMP	SHORT AS_410				; and # parms - just want net path;AN010;;AD
				017;
				;AS_405:										 ;AN010;;AD0
				17;
 06B8  2E: F7 06 015A R 0400		TEST	IFSPROC_FLAGS,IsNetwork 						 ;AN000;
 06BF  75 02				JNZ	AS_410									 ;AN000;
 06C1  40				INC	AX									 ;AN000;
 06C2  40				INC	AX									 ;AN000;
 06C3				AS_410:
 06C3  26: 89 47 18			MOV	ES:WORD PTR [BX.IFSR_PARMS@],AX 					 ;AN000;
 06C7  58				POP	AX					; old target ES 		 ;AN000;
 06C8  26: 89 47 1A			MOV	ES:WORD PTR [BX.IFSR_PARMS@+2],AX					 ;AN000;
				
				;***********************************************************************************************
					invoke	CALL_IFS								 ;AN000;
 06CC  E8 0000 E             1		CALL    CALL_IFS 
				;***********************************************************************************************
				
 06CF  73 19				JNC	AS_440									 ;AN000;
															 ;AN000;
															 ;AN000;
 06D1  2E: F7 06 015A R 0080		TEST	IFSPROC_FLAGS,ISCDS			; ifs error:			 ;AN000;
 06D8  74 06				JZ	AS_420									 ;AN000;
					RestoreReg <DS,SI,DS,SI>			; pop dummy & real cds		 ;AN000;
 06DA  1F                    2		POP     DS 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-23
ATTACH_START -- Attach drive/device to IFS                  

 06DB  5E                    2		POP     SI 
 06DC  1F                    2		POP     DS 
 06DD  5E                    2		POP     SI 
					transfer ifs_980								 ;AN000;
 06DE  EB C6                 2	??0015:      JMP ifs_980_J                      ; 
 06E0				AS_420: 										 ;AN000;
					SaveReg <AX>					; preserve error code		 ;AN027;
 06E0  50                    2		PUSH    AX 
					invoke	DELETE_DFL_ENTRY							 ;AN000;
 06E1  E8 0000 E             1		CALL    DELETE_DFL_ENTRY 
					invoke	CONSIST_SFT								 ;AN025;
 06E4  E8 0000 E             1		CALL    CONSIST_SFT 
					RestoreReg <AX> 								 ;AN027;
 06E7  58                    2		POP     AX 
					transfer ifs_980								 ;AN000;
 06E8  EB F4                 2	??0016:      JMP ifs_980_J                      ; 
															 ;AN000;
 06EA				AS_440: 						; successful attach		 ;AN000;
 06EA  2E: F7 06 015A R 0080		TEST	IFSPROC_FLAGS,ISCDS							 ;AN000;
 06F1  74 17				JZ	AS_460									 ;AN000;
					RestoreReg <DI,ES>				; restore ES:DI -> dummy cds	 ;AN000;
 06F3  5F                    2		POP     DI 
 06F4  07                    2		POP     ES 
					invoke	CD_TO_CDS								 ;AN000;
 06F5  E8 0000 E             1		CALL    CD_TO_CDS 
					RestoreReg <SI,DS>				; ds:si - real cds		 ;AN000;
 06F8  5E                    2		POP     SI 
 06F9  1F                    2		POP     DS 
					invoke	XCHGP									 ;AN000;
 06FA  E8 0000 E             1		CALL    XCHGP 
 06FD  B9 0058				MOV	CX,SIZE CURDIR_LIST							 ;AN000;
 0700  81 4C 43 8000			OR	DS:[SI.CURDIR_FLAGS],CURDIR_ISIFS	; make sure this flag set	 ;AN000;
 0705  F3/ A4				REP	MOVSB									 ;AN000;
					transfer ifs_990								 ;AN000;
 0707  E9 0000 E             2	??0017:      JMP ifs_990                         ; 
															 ;AN000;
 070A				AS_460: 										 ;AN000;
					invoke	DF_TO_DFL								 ;AN000;
 070A  E8 0000 E             1		CALL    DF_TO_DFL 
					invoke	CONSIST_SFT								 ;AN025;
 070D  E8 0000 E             1		CALL    CONSIST_SFT 
					transfer ifs_990								 ;AN000;
 0710  EB F5                 2	??0018:      JMP ifs_990_J                      ; 
															 ;AN000;
															 ;AN000;
				EndProc ATTACH_START									 ;AN000;
 0712                        1	ATTACH_START    ENDP 
															 ;AN000;
															 ;AN000;
				BREAK <ATTACH_END -- break attachment>							 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-24
ATTACH_END -- break attachment                              

															 ;AN000;
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; ATTACH_END										 ;AN000;
				;											 ;AN000;
				; Called by: IFS_ASSOPER								 ;AN000;
				;											 ;AN000;
				; Routines called:  DFL_MATCH	      DOS: StrCpy					 ;AN000;
				;		    DFL_TO_DF		   DriveFromText				 ;AN000;
				;		    DF_TO_DFL		   GetThisDrv					 ;AN000;
				;		    CDS_TO_CD		   InitCDS					 ;AN000;
				;		    CD_TO_CDS								 ;AN000;
				;		    SET_EXTERR_INFO							 ;AN000;
				;		    CALL_IFS								 ;AN000;
				;		    DELETE_DFL_ENTRY							 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;	    DS:SI -> ASCIZ source name							 ;AN000;
				; Function:										 ;AN000;
				;	     Prep IFSRH:								 ;AN000;
				;	     *	IFSR_LENGTH	 DW	30	 ; Request length			 ;AN000;
				;	     *	IFSR_FUNCTION	 DB	 4	 ; End Attach				 ;AN000;
				;		IFSR_RETCODE	 DW	 ?						 ;AN000;
				;		IFSR_RETCLASS	 DB	 ?						 ;AN000;
				;		IFSR_RESV1	 DB	16 DUP(0)					 ;AN000;
				;	     *	IFSR_DEVICE_CB@  DD	 ?	 ; CD or DF				 ;AN000;
				;	     *	IFSR_NAME@	 DD	 ?	 ; for deviceless detach (unc)		 ;AN000;
				;											 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
															 ;AN000;
					Procedure   ATTACH_END,NEAR							 ;AN000;
 0712                        1	ATTACH_END    PROC    NEAR 
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AN000;
															 ;AN000;
					ifsr_fcn_def  ATTEND								 ;AN000;
															 ;AN000;
 0712  5B				POP	BX									 ;AN000;
															 ;AN000;
 0713  2E: C7 06 015D R 0016		MOV	CS:DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@					 ;AN000;
 071A  2E: C7 06 015A R 0000		MOV	CS:IFSPROC_FLAGS,0							 ;AN000;
					invoke	PREP_IFSR								 ;AN000;
 0721  E8 0000 E             1		CALL    PREP_IFSR 
															 ;AN000;
 0724  1E				PUSH	DS									 ;AN000;
 0725  07				POP	ES									 ;AN000;
 0726  8B FE				MOV	DI,SI				; ES:DI=DS:SI=source name		 ;AN000;
 0728  56				PUSH	SI				; Save SI				 ;AN000;
					CallInstall StrCpy,multDOS,17		; "Beautify" input string                ;AN000;
 0729  B8 1211               1		MOV     AX,(multDOS SHL 8) + 17 
 072C  CD 2F                 1		INT     2Fh 
										;   (converts to uppercase &		 ;AN000;
										;     / to \)				 ;AN000;
 072E  5E				POP	SI				; Recover string pointer		 ;AN000;
 072F  81 3C 5C5C			CMP	WORD PTR [SI],"\\"              ; Special Case -                         ;AN000;
 0733  74 76				JZ	AE_300				;	   deviceless detach		 ;AN000;
 0735  83 7C 01 3A			CMP	WORD PTR [SI+1],":"             ; check for drive                        ;AN000;
 0739  75 4A				JNZ	AE_200				; no, go to device check		 ;AN000;
 073B  2E: 80 3E 017B R FF		CMP	fAssign,-1			; BREAK DRIVE ATTACH			 ;AN000;
 0741  74 0A				JZ	AE_20									 ;AN000;
 0743				AE_10:											 ;AN000;
 0743  B8 0048				MOV	AX,72				; pause error				 ;AN000;
 0746  0E				PUSH	CS									 ;AN000;
 0747  1F				POP	DS									 ;AN000;
				ASSUME	DS:IFSSEG									 ;AN000;
					invoke	SET_EXTERR_INFO 							 ;AN000;
 0748  E8 0000 E             1		CALL    SET_EXTERR_INFO 
					transfer ifs_980								 ;AN000;
 074B  EB 9B                 2	??0019:      JMP ifs_980_J                      ; 
 074D				AE_20:											 ;AN000;
					CallInstall DriveFromText,multDOS,26	; AL = drive # (0-not drive		 ;AN000;
 074D  B8 121A               1		MOV     AX,(multDOS SHL 8) + 26 
 0750  CD 2F                 1		INT     2Fh 
					context DS				;      -1=a,1=b,2=c,...)		 ;AN000;
 0752  16                    1		PUSH    SS 
 0753  1F                    1		POP     DS 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-25
ATTACH_END -- break attachment                              

					CallInstall GetThisDrv,multDOS,25,AX,BX ; ES:DI->CDS				 ;AN000;
 0754  50                    3		PUSH    AX 
 0755  B8 1219               1		MOV     AX,(multDOS SHL 8) + 25 
 0758  CD 2F                 1		INT     2Fh 
 075A  5B                    3		POP     BX 
 075B  73 06				JNC	AE_40									 ;AN000;
 075D  B8 000F				MOV	AX,error_invalid_drive							 ;AN000;
					transfer ifs_1000								 ;AN000;
 0760  E9 0000 E             2	??001A:      JMP ifs_1000                         ; 
 0763				AE_40:											 ;AN000;
 0763  C4 3E 0000 E			LES	DI,[THISCDS]								 ;AN000;
 0767  26: F7 45 43 8000		TEST	ES:[DI.curdir_flags],curdir_isnet					 ;AN000;
 076D  75 05				JNZ	AE_60									 ;AN000;
 076F  B8 000F				MOV	AX,error_invalid_drive		; not redirected			 ;AN000;
					transfer ifs_980								 ;AN000;
 0772  EB D7                 2	??001B:      JMP ifs_980_J                      ; 
 0774				AE_60:											 ;AN000;
 0774  50				PUSH	AX				; drive #				 ;AN000;
 0775  06				PUSH	ES									 ;AN000;
 0776  1F				POP	DS									 ;AN000;
 0777  8B F7				MOV	SI,DI				; move cds ptr to ds:si 		 ;AN000;
					invoke	CDS_TO_CD								 ;AN000;
 0779  E8 0000 E             1		CALL    CDS_TO_CD 
 077C  2E: 81 0E 015A R 0080		OR	IFSPROC_FLAGS,ISCDS							 ;AN000;
 0783  EB 51				JMP	SHORT AE_400								 ;AN000;
															 ;AN000;
 0785				AE_200: 					; BREAK DEVICE ATTACH			 ;AN000;
 0785  2E: 80 3E 017C R FF		CMP	fPrint,-1			; check for pause error 		 ;AN000;
 078B  74 02				JZ	AE_210									 ;AN000;
 078D  EB B4				JMP	AE_10									 ;AN000;
 078F				AE_210: 										 ;AN000;
 078F  E8 0000 E			CALL	DFL_MATCH								 ;AN000;
 0792  73 05				JNC	AE_220									 ;AN000;
 0794  B8 000F				MOV	AX,device_not_attached							 ;AN000;
					transfer ifs_1000								 ;AN000;
 0797  EB C7                 2	??001C:      JMP ifs_1000_J                      ; 
 0799				AE_220: 										 ;AN000;
 0799  2E: 8B 36 0004 R			MOV	SI,WORD PTR [THISDFL]							 ;AN000;
 079E  2E: 8E 1E 0006 R			MOV	DS,WORD PTR [THISDFL+2] 						 ;AN000;
															 ;AN000;
 07A3  F6 04 10				TEST	DS:[SI.DFLL_FLAGS],DFL_DEV_REAL						 ;AN000;
				;	???????????? check with baf on what reverting to ...				 ;AN000;
															 ;AN000;
					invoke	DFL_TO_DF			; DFL: sets [THISIFS]			 ;AN000;
 07A6  E8 0000 E             1		CALL    DFL_TO_DF 
										;	    ES:BX -> IFSRH		 ;AN000;
										;	    IFSR_DEVICE_CB@		 ;AN000;
										;	    ds - IFSSEG 		 ;AN000;
 07A9  EB 2B				JMP	SHORT AE_400								 ;AN000;
															 ;AN000;
 07AB				AE_300: 					; deviceless detach			 ;AN000;
					SaveReg <CS>				;  restore es to ifsr & set seq flag	 ;AN018;
 07AB  0E                    2		PUSH    CS 
					RestoreReg <ES> 								 ;AN018;
 07AC  07                    2		POP     ES 
 07AD  2E: 83 0E 015A R 20		OR	CS:IFSPROC_FLAGS,IsSeq							 ;AN018;
 07B3  2E: 80 3E 017B R FF		CMP	fAssign,-1								 ;AN000;
 07B9  74 02				JZ	AE_320									 ;AN000;
 07BB  EB 86				JMP	AE_10				; jump to pause error			 ;AN000;
 07BD				AE_320: 										 ;AN000;
					SaveReg <ES,BX,DS>			; ifsr ptr				 ;AC004;
 07BD  06                    2		PUSH    ES 
 07BE  53                    2		PUSH    BX 
 07BF  1E                    2		PUSH    DS 
					RestoreReg <ES> 			; set esdi = dssi = net path		 ;AC004;
 07C0  07                    2		POP     ES 
				ASSUME	ES:NOTHING									 ;AC004;
 07C1  8B FE				MOV	DI,SI									 ;AC004;
					invoke	NET_TRANS								 ;AC004;
 07C3  E8 0000 E             1		CALL    NET_TRANS 
					SaveReg <ES>									 ;AC004;
 07C6  06                    2		PUSH    ES 
					RestoreReg <AX> 			; name string segment			 ;AC004;
 07C7  58                    2		POP     AX 
 07C8  8B F7				MOV	SI,DI				; name string offset			 ;AC004;
					RestoreReg <BX,ES>			; ifsr pointer				 ;AC004;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-26
ATTACH_END -- break attachment                              

 07CA  5B                    2		POP     BX 
 07CB  07                    2		POP     ES 
				ASSUME	ES:IFSSEG									 ;AC004;
 07CC  26: 89 7F 1A			MOV	WORD PTR ES:[BX.IFSR_NAME@],DI						 ;AC004;
 07D0  26: 89 47 1C			MOV	WORD PTR ES:[BX.IFSR_NAME@+2],AX					 ;AC004;
					SaveReg <CS>									 ;AC004;
 07D4  0E                    2		PUSH    CS 
					RestoreReg <DS> 								 ;AN000;
 07D5  1F                    2		POP     DS 
				ASSUME	DS:IFSSEG									 ;AN000;
															 ;AN000;
 07D6				AE_400: 					; call ifs				 ;AN000;
 07D6  26: C7 07 001E			MOV	ES:[BX.IFSR_LENGTH],LENGTH_ATTEND					 ;AN000;
 07DB  26: C6 47 02 04			MOV	ES:[BX.IFSR_FUNCTION],IFSATTEND 					 ;AN000;
															 ;AN000;
				;***********************************************************************************************
					invoke	CALL_IFS								 ;AN000;
 07E0  E8 0000 E             1		CALL    CALL_IFS 
				;***********************************************************************************************
															 ;AN000;
 07E3  73 0D				JNC	AE_410									 ;AN000;
 07E5  F7 06 015A R 0080		TEST	IFSPROC_FLAGS,ISCDS		; att end error:			 ;AN000;
 07EB  74 03				JZ	AE_405									 ;AN000;
 07ED  83 C4 02				ADD	SP,2				; clear ax (drive #) off stack		 ;AN000;
 07F0				AE_405: 										 ;AN000;
					transfer ifs_980								 ;AN000;
 07F0  EB 80                 2	??001D:      JMP ifs_980_J                      ; 
 07F2				AE_410: 										 ;AN000;
 07F2  2E: F7 06 015A R 0080		TEST	CS:IFSPROC_FLAGS,ISCDS							 ;AN000;
 07F9  74 0D				JZ	AE_420									 ;AN000;
															 ;AN000;
 07FB  58				POP	AX				; drive 				 ;AN000;
 07FC  04 41				ADD	AL,'A'                                                                   ;AN000;
					CallInstall InitCDS,multDOS,31,AX,AX						 ;AN000;
 07FE  50                    3		PUSH    AX 
 07FF  B8 121F               1		MOV     AX,(multDOS SHL 8) + 31 
 0802  CD 2F                 1		INT     2Fh 
 0804  58                    3		POP     AX 
					transfer ifs_990								 ;AN000;
 0805  E9 0000 E             2	??001E:      JMP ifs_990                         ; 
 0808				AE_420: 										 ;AN000;
 0808  2E: F7 06 015A R 0020		TEST	CS:IFSPROC_FLAGS,IsSeq							 ;AN018;
 080F  75 03				JNZ	AE_440									 ;AN018;
 0811  E8 0000 E			CALL	DELETE_DFL_ENTRY							 ;AN000;
 0814				AE_440: 										 ;AN018;
					transfer ifs_990								 ;AN000;
 0814  EB EF                 2	??001F:      JMP ifs_990_J                      ; 
															 ;AN000;
															 ;AN000;
				EndProc ATTACH_END									 ;AN000;
 0816                        1	ATTACH_END    ENDP 
															 ;AN000;
				
				BREAK <IFS_RESET_ENVIRONMENT -- reset IFS environment>					 ;AN016;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-27
IFS_RESET_ENVIRONMENT -- reset IFS environment              

				
				;***********************************************************************************
				;
				; IFS_RESET_ENVIRONMENT
				;
				; Called by:	   IFSFUNC Dispatcher
				;
				; Routines called:
				;	jumps into ifs_abort
				;
				; Inputs:
				;	[CurrentPDB] set to PID of process aborting
				;
				; Function:
				;	Get address of IFS driver chain.
				;	FOR I = 1 to last IFS driver
				;	    Send request below to IFS driver
				;
				;	IFSRH:
				;	*  IFSR_LENGTH	    DW	   42	    ; Request length
				;	*  IFSR_FUNCTION    DB	    4	    ; Execute API function
				;	   IFSR_RETCODE     DW	    ?
				;	   IFSR_RETCLASS    DB	    ?
				;	   IFSR_RESV1	    DB	   16 DUP(0)
				;	*  IFSR_APIFUNC     DB	   18	    ; End of Process
				;	   IFSR_ERROR_CLASS DB	    ?
				;	   IFSR_ERROR_ACTION DB     ?
				;	   IFSR_ERROR_LOCUS DB	    ?
				;	   IFSR_ALLOWED     DB	    ?
				;	   IFSR_I24_RETRY   DB	    ?
				;	   IFSR_I24_RESP    DB	    ?
				;	   IFSR_RESV2	    DB	    ?
				;	   IFSR_DEVICE_CB@  DD	    ?	    ; CD
				;	   IFSR_OPEN_CB@    DD	    ?
				;	*  IFSR_PID	    DW	    ?	    ; process ID
				;	*  IFSR_SUBFUNC     DB	    2	    ; 0=normal exit  1=abort exit
				;					    ; 2=reset environment
				;	   IFSR_RESV3	    DB	    ?
				;
				;	Call all IFSs with this info.
				;	Scan through SFTFCB
				;	IF (ref_count ^= 0 .AND. ^busy .AND. isifs .AND. SF_PID = currentPDB) THEN
				;	   Call SF_IFS_HDR with close request
				;	ENDIF
				;
				; Outputs: None
				; DS Preserved, All others destroyed
				;
				;************************************************************************************
				
					procedure   IFS_RESET_ENVIRONMENT,NEAR							    
				 ;AN016;
 0816                        1	IFS_RESET_ENVIRONMENT    PROC    NEAR 
				ASSUME	DS:DOSGROUP,ES:NOTHING								 ;AN016;
				
					ifsr_fcn_def EXECAPI								 ;AN016;
					ifsr_api_def EOP								 ;AN016;
				
 0816  2E: C7 06 015A R 4000		MOV	CS:IFSPROC_FLAGS,IsResetEnvirn						 ;AN016;
					Context DS				; make sure ds=ss=dosgroup		 ;AN016;
 081D  16                    1		PUSH    SS 
 081E  1F                    1		POP     DS 
 081F  EB 4A 90				JMP	IA_70									 ;AN016;
				
				EndProc IFS_RESET_ENVIRONMENT								 ;AN016;
 0822                        1	IFS_RESET_ENVIRONMENT    ENDP 
				
				
				BREAK <IFS_ABORT -- Send CLOSE all files for process>					 ;AN016;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-28
IFS_ABORT -- Send CLOSE all files for process               

															 ;AN016;
				;************************************************************************************
				;
				; IFS_ABORT
				;
				; Called by:	   IFSFUNC Dispatcher
				;
				; Routines called:
				;	CALL_IFS
				;	IFS_CLOSE
				;
				; Inputs:
				;	[CurrentPDB] set to PID of process aborting
				;
				; Function:
				;	Get address of IFS driver chain.
				;	FOR I = 1 to last IFS driver
				;	    Send request below to IFS driver
				;
				;	IFSRH:
				;	*  IFSR_LENGTH	    DW	   42	    ; Request length
				;	*  IFSR_FUNCTION    DB	    4	    ; Execute API function
				;	   IFSR_RETCODE     DW	    ?
				;	   IFSR_RETCLASS    DB	    ?
				;	   IFSR_RESV1	    DB	   16 DUP(0)
				;	*  IFSR_APIFUNC     DB	   18	    ; End of Process
				;	   IFSR_ERROR_CLASS DB	    ?
				;	   IFSR_ERROR_ACTION DB     ?
				;	   IFSR_ERROR_LOCUS DB	    ?
				;	   IFSR_ALLOWED     DB	    ?
				;	   IFSR_I24_RETRY   DB	    ?
				;	   IFSR_I24_RESP    DB	    ?
				;	   IFSR_RESV2	    DB	    ?
				;	   IFSR_DEVICE_CB@  DD	    ?	    ; CD
				;	   IFSR_OPEN_CB@    DD	    ?
				;	*  IFSR_PID	    DW	    ?	    ; process ID
				;	*  IFSR_SUBFUNC     DB	    ?	    ; 0=normal exit  1=abort exit
				;					    ; 2=reset environment
				;	   IFSR_RESV3	    DB	    ?
				;
				;	Call all IFSs with this info.
				;	Scan through SFTFCB
				;	IF (ref_count ^= 0 .AND. ^busy .AND. isifs .AND. SF_PID = currentPDB) THEN
				;	   Call SF_IFS_HDR with close request
				;	ENDIF
				;
				; Outputs: None
				; DS Preserved, All others destroyed
				;
				;************************************************************************************
				
					procedure   IFS_ABORT,NEAR							 ;AN000;
 0822                        1	IFS_ABORT    PROC    NEAR 
				ASSUME	DS:DOSGROUP,ES:NOTHING								 ;AN000;
															 ;AN000;
					ifsr_fcn_def EXECAPI								 ;AN000;
					ifsr_api_def EOP								 ;AN000;
				
 0822  2E: C7 06 015A R 0000		MOV	CS:IFSPROC_FLAGS,ZERO
															 ;AN000;
				;   Scan the FCB Cache and close any NET FCBs						 ;AN000;
				;   belonging to this process. The reason we must do this is that			 ;AN000;
				;   NET FCBs are well behaved and must be closed on EXIT.				 ;AN000;
															 ;AN000;
 0829  C4 3E 0000 E			LES	DI,[SFTFCB]								 ;AN000;
 082D  26: 8B 4D 04			MOV	CX,ES:[DI].sfCount							 ;AN000;
 0831  8D 7D 06				LEA	DI,[DI].sfTable 							 ;AN000;
 0834  E3 35				JCXZ	IA_70									 ;AN000;
 0836				IA_20:					; Loop through sftfcb's                          ;AN000;
 0836  26: 83 3D 00			CMP	ES:[DI].sf_ref_count,0							 ;AN000;
 083A  74 2A				JZ	IA_60			; Ignore Free ones				 ;AN000;
 083C  26: 83 3D FF			CMP	ES:[DI].sf_ref_count,sf_busy						 ;AN000;
 0840  74 24				JZ	IA_60			; Ignore busy ones				 ;AN000;
 0842  26: F7 45 05 8000		TEST	ES:[DI].sf_flags,sf_isnet						 ;AN000;
 0848  74 1C				JZ	IA_60			; Ignore non NET ones				 ;AN000;
 084A  A1 0000 E			MOV	AX,[CurrentPDB] 							 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-29
IFS_ABORT -- Send CLOSE all files for process               

 084D  26: 3B 45 31			CMP	AX,ES:[DI].sf_PID							 ;AN000;
 0851  75 13				JNZ	IA_60			; Ignore FCBs not for this proc 		 ;AN000;
 0853  89 3E 0000 E			MOV	WORD PTR [THISSFT],DI							 ;AN000;
 0857  8C 06 0002 E			MOV	WORD PTR [THISSFT+2],ES 						 ;AN000;
 085B  51				PUSH	CX									 ;AN000;
 085C				IA_40:					; CLOSE 					 ;AN000;
					invoke	IFS_CLOSE		; IGNORE ANY ERRORS ON THIS.			 ;AN000;
 085C  E8 0000 E             1		CALL    IFS_CLOSE 
 085F  26: 83 3D 00			CMP	ES:[DI].sf_ref_count,0	; Make sure it gets closed			 ;AN000;
 0863  75 F7				JNE	IA_40			; Loop until closed				 ;AN000;
 0865  59				POP	CX									 ;AN000;
 0866				IA_60:											 ;AN000;
 0866  83 C7 3B				ADD	DI,size sf_entry							 ;AN000;
 0869  E2 CB				LOOP	IA_20									 ;AN000;
				;											 ;AN000;
				; Now loop through all ifs drivers with end of process request				 ;AN000;
				;											 ;AN000;
 086B				IA_70:											 ;AN000;
 086B  C5 36 0000 E			LDS	SI,IFS_HEADER								 ;AN000;
				ASSUME	DS:NOTHING									 ;AN000;
 086F  EB 45				JMP	SHORT IA_100		; go check if null				 ;AN007;
															 ;AN000;
 0871				IA_80:											 ;AN000;
 0871  2E: 89 36 0000 R			MOV	CS:WORD PTR [THISIFS],SI	; Send end of process request		 ;AN000;
 0876  2E: 8C 1E 0002 R			MOV	CS:WORD PTR [THISIFS+2],DS	; to all fs drivers.			 ;AN000;
					invoke	PREP_IFSR			; sets esbx -> ifsrh			 ;AN000;
 087B  E8 0000 E             1		CALL    PREP_IFSR 
 087E  26: C7 07 002A			MOV	ES:[BX.IFSR_LENGTH],LENGTH_EOP						 ;AN000;
 0883  26: C6 47 02 05			MOV	ES:[BX.IFSR_FUNCTION],IFSEXECAPI					 ;AN000;
 0888  26: C6 47 16 12			MOV	ES:[BX.IFSR_APIFUNC],IFSEOP						 ;AN000;
 088D  36: A1 0000 E			MOV	AX,[CurrentPDB] 							 ;AN000;
 0891  26: 89 47 26			MOV	ES:[BX.IFSR_PID],AX		 ; ?????				 ;AN000;
 0895  36: A0 0000 E			MOV	AL,[EXIT_TYPE]								 ;AN000;
 0899  26: 88 47 28			MOV	ES:[BX.IFSR_SUBFUNC],AL 						 ;AN000;
 089D  2E: F7 06 015A R 4000		TEST	CS:IFSPROC_FLAGS,IsResetEnvirn						 ;AN016;
 08A4  74 05				JZ	IA_90									 ;AN016;
 08A6  26: C6 47 28 02			MOV	ES:[BX.IFSR_SUBFUNC],RESET_ENVIRONMENT					 ;AN016;
 08AB				IA_90:											 ;AN016;
					SaveReg <DS,SI,CS>			; dssi - ifs driver			 ;AC012;
 08AB  1E                    2		PUSH    DS 
 08AC  56                    2		PUSH    SI 
 08AD  0E                    2		PUSH    CS 
					RestoreReg <DS> 			; ds - ifsseg				 ;AN000;
 08AE  1F                    2		POP     DS 
															 ;AN000;
				;***********************************************************************************************
					invoke	CALL_IFS								 ;AN000;
 08AF  E8 0000 E             1		CALL    CALL_IFS 
				;***********************************************************************************************
															 ;AN000;
					RestoreReg <SI,DS>			; dssi - ifs driver			 ;AC012;
 08B2  5E                    2		POP     SI 
 08B3  1F                    2		POP     DS 
 08B4  C5 34				LDS	SI,[SI.IFS_NEXT]		; check next fs driver			 ;AN000;
 08B6				IA_100: 										 ;AN007;
 08B6  83 FE FF				CMP	SI,NULL_PTR			; if ptr null, no more			 ;AN000;
 08B9  75 B6				JNE	IA_80									 ;AN000;
 08BB  1E				PUSH	DS									 ;AN000;
 08BC  58				POP	AX									 ;AN000;
 08BD  3D FFFF				CMP	AX,NULL_PTR								 ;AN000;
 08C0  75 AF				JNE	IA_80									 ;AN000;
															 ;AN000;
															 ;AN000;
 08C2				IA_1000:										 ;AN000;
					SaveReg <SS>				; dosgroup				 ;AN000;
 08C2  16                    2		PUSH    SS 
					RestoreReg <DS> 								 ;AN000;
 08C3  1F                    2		POP     DS 
					return				;????????? may need redir ioctl to		 ;AN000;
 08C4                        1	??0020: 
 08C4  C3                    1		RET 
									; consist_refs					 ;AN000;
															 ;AN000;
				EndProc IFS_ABORT									 ;AN000;
 08C5                        1	IFS_ABORT    ENDP 
															 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-30
IFS_ABORT -- Send CLOSE all files for process               

															 ;AN000;
				BREAK <GET_IFS_DRIVER_NAME -- get IFS driver name>					 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-31
GET_IFS_DRIVER_NAME -- get IFS driver name                  

															 ;AN000;
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; GET_IFS_DRIVER_NAME									 ;AN000;
				;											 ;AN000;
				; Called by: GET_IFSFUNC_ITEM								 ;AN000;
				;											 ;AN000;
				; Routines called:									 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;	    DS:SI -> CDS/DFL								 ;AN000;
				;	    ES:DI =  buffer to place name						 ;AN000;
				; Function:										 ;AN000;
				;	Find FS name in IFS header pointed to by CDS or DFL				 ;AN000;
				;	Place name in buffer pointed to by ES:DI					 ;AN000;
				; Output:										 ;AN000;
				;	buffer filled, hopefully with ifs name						 ;AN000;
				;	pointer not checked for valid ifs driver hdr ptr				 ;AN000;
				; Regs: all preserved									 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
															 ;AN000;
					Procedure   GET_IFS_DRIVER_NAME,NEAR						 ;AN000;
 08C5                        1	GET_IFS_DRIVER_NAME    PROC    NEAR 
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AN000;
															 ;AN000;
					SaveReg <DS,SI,CX,DI>			; preserve cds/dfl ptr, cx, buffer	 ;AN000;
 08C5  1E                    2		PUSH    DS 
 08C6  56                    2		PUSH    SI 
 08C7  51                    2		PUSH    CX 
 08C8  57                    2		PUSH    DI 
										; offset				 ;AN000;
 08C9  2E: F7 06 015A R 0080		TEST	CS:IFSPROC_FLAGS,ISCDS		; get ifs hdr ptr from			 ;AN000;
 08D0  74 06				JZ	GIDN_20 								 ;AN000;
 08D2  C5 74 52				LDS	SI,[SI.CURDIR_IFS_HDR]		; cds					 ;AN000;
 08D5  EB 04 90				JMP	GIDN_40 								 ;AN000;
 08D8				GIDN_20:										 ;AN000;
 08D8  C5 74 0E				LDS	SI,[SI.DFLL_IFS_HDR]		; dfl					 ;AN000;
 08DB				GIDN_40:										 ;AN000;
					invoke	MOVE_DRIVER_NAME		; move ifs driver name into buffer	 ;AN000;
 08DB  E8 0000 E             1		CALL    MOVE_DRIVER_NAME 
															 ;AN000;
					RestoreReg <DI,CX,SI,DS>		; restore cds/dfl ptr, cx, buffer	 ;AN000;
 08DE  5F                    2		POP     DI 
 08DF  59                    2		POP     CX 
 08E0  5E                    2		POP     SI 
 08E1  1F                    2		POP     DS 
										; offset				 ;AN000;
					return										 ;AN000;
 08E2                        1	??0021: 
 08E2  C3                    1		RET 
															 ;AN000;
				EndProc GET_IFS_DRIVER_NAME								 ;AN000;
 08E3                        1	GET_IFS_DRIVER_NAME    ENDP 
															 ;AN000;
				BREAK <FIND_IFS_DRIVER -- get IFS driver>						 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-32
FIND_IFS_DRIVER -- get IFS driver                           

															 ;AN000;
				;************************************************************************************
				;
				; FIND_IFS_DRIVER
				;
				; Called by:		ATTACH_START
				;
				; Routines called:	CHECK_END_SPACE
				;
				; Inputs:
				;	    ES:DI -> IFS driver name
				; Function:
				;	Loop through IFS driver chain until name match.
				;	If match found - set [THISIFS] and clear carry
				;	Else set carry.
				; Output:
				;	carry clear - match found,[THISIFS] set
				;	carry set   - no match found
				;
				; Regs: all but ax preserved
				;
				;************************************************************************************
															 ;AN000;
					Procedure   FIND_IFS_DRIVER							 ;AN000;
 08E3                        1	FIND_IFS_DRIVER    PROC     
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AN000;
															 ;AN000;
					SaveReg <DS,SI,BX,ES,DI>		; save registers  (except ax for error)  ;AC026;
 08E3  1E                    2		PUSH    DS 
 08E4  56                    2		PUSH    SI 
 08E5  53                    2		PUSH    BX 
 08E6  06                    2		PUSH    ES 
 08E7  57                    2		PUSH    DI 
															 ;AN000;
 08E8  2E: F7 06 0171 R 0040		TEST	CS:IFSFUNC_FLAGS,NO_IFS_DRIVERS ; check for no drivers first		 ;AN024;
 08EF  74 03				JZ	FID_10									 ;AN024;
 08F1  EB 36 90				JMP	FID_30									 ;AN024;
 08F4				FID_10: 										 ;AN024;
				
					SaveReg <SS>				; get addressability to dosgroup	 ;AN000;
 08F4  16                    2		PUSH    SS 
					RestoreReg <DS> 			;  to get ifs driver chain		 ;AN000;
 08F5  1F                    2		POP     DS 
 08F6  36: C5 36 0000 E			LDS	SI,IFS_HEADER								 ;AN000;
				ASSUME	DS:NOTHING				; ds:si -> 1st ifs driver		 ;AN000;
															 ;AN000;
 08FB				FID_20: 										 ;AN000;
					SaveReg <DS,SI,ES,DI,CS>		; save ds,si,es,di			 ;AN000;
 08FB  1E                    2		PUSH    DS 
 08FC  56                    2		PUSH    SI 
 08FD  06                    2		PUSH    ES 
 08FE  57                    2		PUSH    DI 
 08FF  0E                    2		PUSH    CS 
					RestoreReg <ES> 			; set es=cs				 ;AN000;
 0900  07                    2		POP     ES 
				ASSUME	ES:IFSSEG									 ;AN000;
 0901  BF 0000 E			MOV	DI,OFFSET TEMPBUF		; move ifs driver name into tempbuf	 ;AN000;
					SaveReg <SI,DI> 			; so that can be asciiz form before	 ;AN000;
 0904  56                    2		PUSH    SI 
 0905  57                    2		PUSH    DI 
					invoke	MOVE_DRIVER_NAME		; strcmp				 ;AN000;
 0906  E8 0000 E             1		CALL    MOVE_DRIVER_NAME 
					RestoreReg <SI,DI>			; dssi -> tempbuf (ifs driver asciiz	 ;AN000;
 0909  5E                    2		POP     SI 
 090A  5F                    2		POP     DI 
					SaveReg <ES>				; name) 				 ;AN000;
 090B  06                    2		PUSH    ES 
					RestoreReg <DS,DI,ES>			; esdi -> ifs driver name (input)	 ;AN000;
 090C  1F                    2		POP     DS 
 090D  5F                    2		POP     DI 
 090E  07                    2		POP     ES 
 090F  E8 0B17 R			CALL	CHECK_END_SPACE 		; make sure ^ has no blanks		;AN000;
				
					CallInstall StrCmp,multDOS,30		; check for match (regs preserved)	 ;AN000;
 0912  B8 121E               1		MOV     AX,(multDOS SHL 8) + 30 
 0915  CD 2F                 1		INT     2Fh 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-33
FIND_IFS_DRIVER -- get IFS driver                           

					RestoreReg <SI,DS>			; (ifs driver)				 ;AN000;
 0917  5E                    2		POP     SI 
 0918  1F                    2		POP     DS 
 0919  74 13				JZ	FID_40				; if match, go set thisifs & return	 ;AN000;
 091B  C5 34				LDS	SI,[SI.IFS_NEXT]		; else check next fs driver		 ;AN000;
 091D  83 FE FF				CMP	SI,MINUS_ONE			; if ptr null, no more = error		 ;AN000;
 0920  75 D9				JNE	FID_20									 ;AN000;
 0922  1E				PUSH	DS									 ;AN000;
 0923  58				POP	AX									 ;AN000;
 0924  3D FFFF				CMP	AX,MINUS_ONE								 ;AN000;
 0927  75 D2				JNE	FID_20									 ;AN000;
 0929				FID_30: 										 ;AN024;
 0929  B8 0043				MOV	AX,fs_driver_not_found							 ;AN000;
 092C  EB 0D				JMP	SHORT FID_980								 ;AN000;
 092E				FID_40: 										 ;AN000;
 092E  2E: 89 36 0000 R			MOV	WORD PTR CS:[THISIFS],SI	    ; match.  Set [THISIFS] to this	 ;AN000;
 0933  2E: 8C 1E 0002 R			MOV	WORD PTR CS:[THISIFS+2],DS	    ; driver				 ;AN000;
 0938  EB 04 90				JMP	FID_990 								 ;AN000;
															 ;AN000;
															 ;AN000;
 093B				FID_980:					; Return area				 ;AN000;
 093B  F9				STC										 ;AN000;
 093C  EB 01				JMP	SHORT FID_1000								 ;AN000;
 093E				FID_990:										 ;AN000;
 093E  F8				CLC										 ;AN000;
 093F				FID_1000:										 ;AN000;
					RestoreReg <DI,ES,BX,SI,DS>		; restore registers			 ;AC026;
 093F  5F                    2		POP     DI 
 0940  07                    2		POP     ES 
 0941  5B                    2		POP     BX 
 0942  5E                    2		POP     SI 
 0943  1F                    2		POP     DS 
					return										 ;AN000;
 0944                        1	??0022: 
 0944  C3                    1		RET 
															 ;AN000;
				EndProc FIND_IFS_DRIVER 								 ;AN000;
 0945                        1	FIND_IFS_DRIVER    ENDP 
															 ;AN000;
															 ;AN000;
				BREAK <ASSIGN_MODE_FUNCTIONS -- drive/print on/off>					 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-34
ASSIGN_MODE_FUNCTIONS -- drive/print on/off                 

															 ;AN000;
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; AssignOn/AssignOff									 ;AN000;
				;											 ;AN000;
				; Called by: SET_ASSIGN_MODE								 ;AN000;
				;											 ;AN000;
				; AssignOn and AssignOFF copied from Network Redirector code				 ;AN000;
				; PrintOn and PrintOff IFSFUNC new code 						 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;											 ;AN000;
				; Function:										 ;AN000;
				;											 ;AN000;
				; Output:										 ;AN000;
				;											 ;AN000;
				; Regs: none preserved									 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
															 ;AN000;
				Procedure AssignOn,Near 								 ;AN000;
 0945                        1	AssignOn    PROC    Near 
				ASSUME ES:NOTHING, DS:NOTHING								 ;AN000;
					EnterCrit CritNet								 ;AN000;
 0945  E8 0000 E             2		CALL    ECritNet 
 0948  2E: 80 3E 017B R FF		CMP	fAssign,-1		;   if (fAssign)				 ;AN000;
 094E  74 26				JZ	CrLvA			;	return; 				 ;AN000;
 0950  2E: C6 06 017B R FF		MOV	fAssign,-1		;   fAssign = TRUE;				 ;AN000;
 0956  2E: C5 36 0169 R			LDS	SI,CDSAlt		;   s = CDSAlt; 				 ;AN000;
 095B  36: C4 3E 0000 E			LES	DI,CDSAddr		;   d = CDSAddr;				 ;AN000;
 0960  36: A0 0000 E			MOV	AL,CDSCount								 ;AN000;
 0964  BA 0058				MOV	DX,SIZE curdir_list							 ;AN000;
 0967				OnLoop: 										 ;AN000;
 0967  F7 44 43 8000			TEST	[SI].curdir_flags,curdir_isnet						 ;AN000;
 096C  75 0C				JNZ	RestCDS 		; Restore this NET guy				 ;AN000;
 096E  03 F2				ADD	SI,DX			; Skip to next CDS				 ;AN000;
 0970  03 FA				ADD	DI,DX									 ;AN000;
 0972				NextCDS:										 ;AN000;
 0972  FE C8				DEC	AL									 ;AN000;
 0974  75 F1				JNZ	OnLoop									 ;AN000;
 0976				CrLvA:											 ;AN000;
					LeaveCrit CritNet								 ;AN000;
 0976  E8 0000 E             2		CALL    LCritNet 
					return										 ;AN000;
 0979                        1	??0023: 
 0979  C3                    1		RET 
															 ;AN000;
 097A				RestCDS:										 ;AN000;
 097A  8B CA				MOV	CX,DX									 ;AN000;
 097C  F3/ A4				REP	MOVSB			;   strcpy (d, s);				 ;AN000;
 097E  EB F2				JMP	NextCDS 								 ;AN000;
				EndProc AssignOn									 ;AN000;
 0980                        1	AssignOn    ENDP 
															 ;AN000;
				Procedure AssignOff,Near								 ;AN000;
 0980                        1	AssignOff    PROC    Near 
					ASSUME	ES:NOTHING, DS:NOTHING							 ;AN000;
					EnterCrit CritNet								 ;AN000;
 0980  E8 0000 E             2		CALL    ECritNet 
 0983  2E: 80 3E 017B R 00		CMP	fAssign,0		;   if (!fAssign)				 ;AN000;
 0989  74 40				JZ	CrLvB			;	return; 				 ;AN000;
 098B  2E: C4 3E 0169 R			LES	DI,CDSAlt		;   d = CDSAlt; 				 ;AN000;
 0990  36: C5 36 0000 E			LDS	SI,CDSAddr		;   s = CDSAddr;				 ;AN000;
 0995  36: A0 0000 E			MOV	AL,CDSCount								 ;AN000;
 0999  98				CBW				; always less or = 26				 ;AN000;
 099A  B9 0058				MOV	CX,SIZE curdir_list							 ;AN000;
 099D  F7 E1				MUL	CX									 ;AN000;
 099F  8B C8				MOV	CX,AX									 ;AN000;
 09A1  F3/ A4				REP	MOVSB			;   Save current CDS state			 ;AN000;
 09A3  32 C0				XOR	AL,AL									 ;AN000;
 09A5				OffLoop:				;   for (i=0; p1=getcds(i); i++)		 ;AN000;
					CallInstall GetCDSFromDrv,multDOS,23,AX,AX  ; Set THISCDS for possible		 ;AN000;
 09A5  50                    3		PUSH    AX 
 09A6  B8 1217               1		MOV     AX,(multDOS SHL 8) + 23 
 09A9  CD 2F                 1		INT     2Fh 
 09AB  58                    3		POP     AX 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-35
ASSIGN_MODE_FUNCTIONS -- drive/print on/off                 

									;	call to InitCDS 			 ;AN000;
 09AC  72 17				JC	OffDone 		;						 ;AN000;
 09AE  F7 44 43 8000			TEST	[SI].curdir_flags,curdir_isnet						 ;AN000;
 09B3  74 0C				JZ	OffInc									 ;AN000;
					SaveReg <AX>									 ;AN000;
 09B5  50                    2		PUSH    AX 
 09B6  05 0041				ADD	AX,'A'                                                                   ;AN000;
					CallInstall InitCDS,multDOS,31,AX,AX ;	     initcds (p1);			 ;AN000;
 09B9  50                    3		PUSH    AX 
 09BA  B8 121F               1		MOV     AX,(multDOS SHL 8) + 31 
 09BD  CD 2F                 1		INT     2Fh 
 09BF  58                    3		POP     AX 
					RestoreReg  <AX>								 ;AN000;
 09C0  58                    2		POP     AX 
 09C1  FE C0			OffInc: INC	AL									 ;AN000;
 09C3  EB E0				JMP	OffLoop 								 ;AN000;
															 ;AN000;
 09C5				OffDone:										 ;AN000;
 09C5  2E: C6 06 017B R 00		MOV	fAssign,0		;   fAssign = FALSE;				 ;AN000;
 09CB				CrLvB:											 ;AN000;
					LeaveCrit CritNet								 ;AN000;
 09CB  E8 0000 E             2		CALL    LCritNet 
					return										 ;AN000;
 09CE                        1	??0024: 
 09CE  C3                    1		RET 
				EndProc AssignOff									 ;AN000;
 09CF                        1	AssignOff    ENDP 
															 ;AN000;
				;****************************************************************************** 	 ;AN000;
				;											 ;AN000;
				; PrintOn/PrintOff									 ;AN000;
				;											 ;AN000;
				; Called by: SET_ASSIGN_MODE								 ;AN000;
				;											 ;AN000;
				; Routines called:  CALL_IFS								 ;AN000;
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;											 ;AN000;
				; Function:										 ;AN000;
				;	Print on - loop through dfl entries resetting pause flag to zero		 ;AN000;
				;	Print off- loop through dfl entries, set pause flag if unc			 ;AN000;
				;											 ;AN000;
				;	Prep IFSRH:									 ;AN000;
				;	*  IFSR_LENGTH	    DW	   48	    ; Request length				 ;AN000;
				;	*  IFSR_FUNCTION    DB	    4	    ; Execute API function			 ;AN000;
				;	   IFSR_RETCODE     DB	    ?							 ;AN000;
				;	   IFSR_RETCLASS    DB	    ?							 ;AN000;
				;	   IFSR_RESV1	    DB	   17 DUP(0)						 ;AN000;
				;	*  IFSR_APIFUNC     DB	   16	    ; IFS dependent IOCTL			 ;AN000;
				;	   IFSR_ERROR_CLASS DB	    ?							 ;AN000;
				;	   IFSR_ERROR_ACTION DB     ?							 ;AN000;
				;	   IFSR_ERROR_LOCUS DB	    ?							 ;AN000;
				;	   IFSR_ALLOWED     DB	    ?							 ;AN000;
				;	   IFSR_I24_RETRY   DB	    ?							 ;AN000;
				;	   IFSR_I24_RESP    DB	    ?							 ;AN000;
				;	   IFSR_RESV2	    DB	    ?							 ;AN000;
				;	   IFSR_DEVICE_CB@  DD	    ?							 ;AN000;
				;	   IFSR_OPEN_CB@    DD	    ?							 ;AN000;
				;	*  IFSR_FUNC	    DB	    0	    ; 0 generic ioctl				 ;AN000;
				;	   IFSR_RESV2	    DB	    0							 ;AN000;
				;	*  IFSR_BUFFER@     DD	    ?	    ; al-2 es:di, else ds:dx			 ;AN000;
				;	*  IFSR_BUFSIZE     DW	    ?	    ; al-2 cx, else ??? 			 ;AN000;
				;	*  IFSR_CATEGORY    DB	    1	    ; 1 for UNC 				 ;AN000;
				;	*  IFSR_CTLFUNC     DB	    ?	    ; x - print on, y - print off		 ;AN000;
				;											 ;AN000;
				;											 ;AN000;
				;	CALL routine, CALL_IFS, with pointer to IFS header				 ;AN000;
				;											 ;AN000;
				;   Outputs: none									 ;AN000;
				;											 ;AN000;
				;   Regs: nothing preserved								 ;AN000;
				;											 ;AN000;
				;****************************************************************************** 	 ;AN000;
															 ;AN000;
				Procedure PrintOn,Near									 ;AN000;
 09CF                        1	PrintOn    PROC    Near 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-36
ASSIGN_MODE_FUNCTIONS -- drive/print on/off                 

					ASSUME DS:NOTHING, ES:NOTHING							 ;AN000;
															 ;AN000;
					EnterCrit CritNet								 ;AN000;
 09CF  E8 0000 E             2		CALL    ECritNet 
 09D2  2E: 80 3E 017C R FF		CMP	fPrint,-1			;   if (fPrint) 			 ;AN000;
 09D8  75 03				JNE	PON_20									 ;AN000;
 09DA  E9 0A68 R			JMP	POF_1000			;	return; 			 ;AN000;
 09DD				PON_20: 										 ;AN000;
 09DD  2E: C6 06 017C R FF		MOV	fPrint,-1			;   fPrint = TRUE;			 ;AN000;
 09E3  2E: C7 06 015A R 0080		MOV	CS:IFSPROC_FLAGS,PRINT_ON						 ;AN000;
 09EA  EB 19 90				JMP	POF_20				; finish in printoff routine		 ;AN000;
															 ;AN000;
															 ;AN000;
				EndProc PrintOn 									 ;AN000;
 09ED                        1	PrintOn    ENDP 
															 ;AN000;
				Procedure   PrintOff,NEAR								 ;AN000;
 09ED                        1	PrintOff    PROC    NEAR 
					ASSUME DS:NOTHING, ES:NOTHING							 ;AN000;
															 ;AN000;
					EnterCrit CritNet								 ;AN000;
 09ED  E8 0000 E             2		CALL    ECritNet 
 09F0  2E: 80 3E 017C R 00		CMP	fPrint,0			; quit if already off			 ;AN000;
 09F6  74 70				JZ	POF_1000			;	return				 ;AN000;
 09F8  2E: C6 06 017C R 00		MOV	fPrint,0			; set off				 ;AN000;
 09FE  2E: C7 06 015A R 0000		MOV	CS:IFSPROC_FLAGS,ZERO		; init processing flags 		 ;AN000;
															 ;AN000;
 0A05				POF_20: 					; (welcome print on)			 ;AN000;
 0A05  0E				PUSH	CS				; get addressability to IFSSEG		 ;AN000;
 0A06  1F				POP	DS									 ;AN000;
				ASSUME	DS:IFSSEG,ES:NOTHING								 ;AN000;
															 ;AN000;
 0A07  8A 0E 0168 R			MOV	CL,[DFLCount]			; Prep loop through DFL list		 ;AN000;
 0A0B  32 ED				XOR	CH,CH				; For all unc devices, set pause	 ;AN000;
 0A0D  32 F6				XOR	DH,DH				; flag					 ;AN000;
 0A0F  B2 1E				MOV	DL,SIZE DFLL_LIST							 ;AN000;
 0A11  C5 36 0164 R			LDS	SI,[DFLAddr]								 ;AN000;
 0A15				POF_40: 					; *** loop on setting pause flag	 ;AN000;
 0A15  F7 06 015A R 0080		TEST	IFSPROC_FLAGS,PRINT_ON		;     on print on, just reset all	 ;AN000;
 0A1B  75 1C				JNZ	POF_50									 ;AN000;
 0A1D  C4 7C 0E				LES	DI,DS:[SI.DFLL_IFS_HDR]		;     only set pause on unc devices	 ;AN000;
 0A20  0B FF				OR	DI,DI				; make sure this dfl taken		 ;AN000;
 0A22  75 08				JNZ	POF_45									 ;AN000;
					SaveReg <AX,ES> 								 ;AN000;
 0A24  50                    2		PUSH    AX 
 0A25  06                    2		PUSH    ES 
					RestoreReg <AX> 								 ;AN000;
 0A26  58                    2		POP     AX 
 0A27  0B C0				OR	AX,AX									 ;AN000;
					RestoreReg <AX> 								 ;AN000;
 0A29  58                    2		POP     AX 
 0A2A  74 10				JZ	POF_60									 ;AN000;
 0A2C				POF_45: 										 ;AN000;
 0A2C  26: F7 45 0C 2000		TEST	ES:[DI.IFS_ATTRIBUTE],IFSUNC						 ;AN000;
 0A32  74 08				JZ	POF_60									 ;AN000;
 0A34  80 0C 20				OR	DS:[SI.DFLL_FLAGS],DFL_PAUSED						 ;AN000;
 0A37  EB 03				JMP	SHORT POF_60								       ;AN00
				0;
 0A39				POF_50: 										 ;AN000;
 0A39  80 24 DF				AND	DS:[SI.DFLL_FLAGS],NOT DFL_PAUSED					 ;AN000;
 0A3C				POF_60: 										 ;AN000;
 0A3C  03 F2				ADD	SI,DX				; prep for next dfl			 ;AN000;
 0A3E  E2 D5				LOOP	POF_40				; go process next dfl			 ;AN000;
										; now go tell unc, device pause 	 ;AN000;
										; is in effect				 ;AN000;
					invoke	PREP_IFSR			; init ifsr				 ;AN000;
 0A40  E8 0000 E             1		CALL    PREP_IFSR 
															 ;AN000;
					ifsr_fcn_def	EXECAPI 		; define ifsr for dep ioctl		 ;AN000;
					ifsr_api_def	DEPIOCTL							 ;AN000;
															 ;AN000;
					invoke	SET_DEPIOCTL_IFSR							 ;AN000;
 0A43  E8 0000 E             1		CALL    SET_DEPIOCTL_IFSR 
 0A46  F7 06 015A R 0080		TEST	IFSPROC_FLAGS,PRINT_ON							 ;AN000;
 0A4C  74 07				JZ	POF_80									 ;AN000;
 0A4E  26: C6 47 2F 27			MOV	ES:[BX.IFSR_CTLFUNC],CTLFUNC_PRINT_ON					 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-37
ASSIGN_MODE_FUNCTIONS -- drive/print on/off                 

 0A53  EB 05				JMP	SHORT POF_100								 ;AN000;
 0A55				POF_80: 										 ;AN000;
 0A55  26: C6 47 2F 07			MOV	ES:[BX.IFSR_CTLFUNC],CTLFUNC_PRINT_OFF					 ;AN000;
 0A5A				POF_100:										 ;AN000;
 0A5A  26: C6 47 2E 01			MOV	ES:[BX.IFSR_CATEGORY],1 						 ;AN000;
					invoke	SET_THISIFS_UNC 							 ;AN000;
 0A5F  E8 0000 E             1		CALL    SET_THISIFS_UNC 
				
				;***********************************************************************************************
					invoke	CALL_IFS			; call ifs driver w/request		 ;AN000;
 0A62  E8 0000 E             1		CALL    CALL_IFS 
				;***********************************************************************************************
				
					invoke	CONSIST_SFT							       ;AN000;
 0A65  E8 0000 E             1		CALL    CONSIST_SFT 
															 ;AN000;
 0A68				POF_1000:										 ;AN000;
					LeaveCrit CritNet								 ;AN000;
 0A68  E8 0000 E             2		CALL    LCritNet 
					return										 ;AN000;
 0A6B                        1	??0025: 
 0A6B  C3                    1		RET 
															 ;AN000;
				EndProc PrintOff									 ;AN000;
 0A6C                        1	PrintOff    ENDP 
															 ;AN000;
															 ;AN000;
				BREAK <GET_UNC_ITEM_INFO  -- resv bits, net name id, user word, max xmitt sz>		 ;AC000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-38
GET_UNC_ITEM_INFO  -- resv bits, net name id, user word, max

				
				;******************************************************************************
				;
				; GET_UNC_ITEM_INFO
				;
				; Called by:  GET_IFSFUNC_ITEM
				;
				; Routines called:  CALL_IFS
				;
				; Inputs:
				;	    BL = redirection index
				;	    ES:DI -> Target buffer:  old - net path string			   ;AN00
				;				     new - dw file system driver name
				;					   dw # parms
				;					   db parms
				;
				; Function:
				;
				;	Prep IFSRH:
				;	*  IFSR_LENGTH	    DW	   48	    ; Request length
				;	*  IFSR_FUNCTION    DB	    4	    ; Execute API function
				;	   IFSR_RETCODE     DB	    ?
				;	   IFSR_RETCLASS    DB	    ?
				;	   IFSR_RESV1	    DB	   17 DUP(0)
				;	*  IFSR_APIFUNC     DB	   16	    ; IFS dependent IOCTL
				;	   IFSR_ERROR_CLASS DB	    ?
				;	   IFSR_ERROR_ACTION DB     ?
				;	   IFSR_ERROR_LOCUS DB	    ?
				;	   IFSR_ALLOWED     DB	    ?
				;	   IFSR_I24_RETRY   DB	    ?
				;	   IFSR_I24_RESP    DB	    ?
				;	   IFSR_RESV2	    DB	    ?
				;	   IFSR_DEVICE_CB@  DD	    ?
				;	   IFSR_OPEN_CB@    DD	    ?
				;	*  IFSR_FUNC	    DB	    0	    ; 0 generic ioctl
				;	   IFSR_RESV2	    DB	    0
				;	*  IFSR_BUFFER@     DD	    ?	    ; unc item info buffer
				;	   IFSR_BUFSIZE     DW	    10
				;	*  IFSR_CATEGORY    DB	    1	    ; 1 for UNC
				;	*  IFSR_CTLFUNC     DB	    ?	    ; 4 - get unc item
				;
				;	buffer:  dw	index  (bx)
				;		 dw	user word
				;		 dw	max xmitt size
				;		 dw	net name ID
				;		 dw	lower 8 bits lsn from ncb_list
				;		 db	redir reserved bits
				;		 db	net path...(asciiz)
				;
				;
				;	CALL routine, CALL_IFS, with pointer to IFS header
				;
				;   Outputs: user stack contains info
				;		cx - user word
				;		bx - bits and macro type
				;		dx - max xmitt size
				;		ax - net name id
				;		bp - lsn (if specified)
				;
				;   Regs: nothing preserved
				;
				;******************************************************************************
															 ;AC003;
					Procedure   GET_UNC_ITEM_INFO,NEAR						 ;AC003;
 0A6C                        1	GET_UNC_ITEM_INFO    PROC    NEAR 
															 ;AC003;
 0A6C  2E: F7 06 0171 R 0080		TEST	CS:IFSFUNC_FLAGS,UNC_INSTALLED						 ;AN013;
 0A73  75 03				JNZ	GUI_05									 ;AN013;
					transfer ifs_980								 ;AN013;
 0A75  E9 0000 E             2	??0026:      JMP ifs_980                         ; 
				
 0A78				GUI_05: 										 ;AN013;
					SaveReg <ES,DI,BX>			; target ptr and index			 ;AC003;
 0A78  06                    2		PUSH    ES 
 0A79  57                    2		PUSH    DI 
 0A7A  53                    2		PUSH    BX 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-39
GET_UNC_ITEM_INFO  -- resv bits, net name id, user word, max

															 ;AC003;
					invoke	PREP_IFSR			; init ifsr				 ;AC003;
 0A7B  E8 0000 E             1		CALL    PREP_IFSR 
					SaveReg <CS>				; prep ds for call ifs call		 ;AC003;
 0A7E  0E                    2		PUSH    CS 
					RestoreReg <DS> 								 ;AC003;
 0A7F  1F                    2		POP     DS 
				ASSUME	DS:IFSSEG									 ;AC003;
															 ;AC003;
					invoke	SET_DEPIOCTL_IFSR		; prep IFSRH				 ;AC003;
 0A80  E8 0000 E             1		CALL    SET_DEPIOCTL_IFSR 
					invoke	SET_THISIFS_UNC 		; prep IFSRH				 ;AC003;
 0A83  E8 0000 E             1		CALL    SET_THISIFS_UNC 
 0A86  26: C6 47 2E 01			MOV	ES:[BX.IFSR_CATEGORY],1 						 ;AC003;
 0A8B  26: C6 47 2F 04			MOV	ES:[BX.IFSR_CTLFUNC],CTLFUNC_GET_UNC_ITEM				 ;AC003;
															 ;AC003;
 0A90  BE 0000 E			MOV	SI,OFFSET TEMPBUF							 ;AC003;
 0A93  26: 89 77 28			MOV	WORD PTR ES:[BX.IFSR_BUFFER@],SI					 ;AC003;
 0A97  26: 8C 5F 2A			MOV	WORD PTR ES:[BX.IFSR_BUFFER@+2],DS					 ;AC003;
					RestoreReg <AX> 			; index 				 ;AN003;
 0A9B  58                    2		POP     AX 
 0A9C  89 04				MOV	WORD PTR DS:[SI],AX							 ;AN003;
				
				;***********************************************************************************************
					invoke	CALL_IFS			; call redir w/get unc item request	 ;AC003;
 0A9E  E8 0000 E             1		CALL    CALL_IFS 
				;***********************************************************************************************
				
															 ;AC003;
 0AA1  73 03				JNC	GUI_10									 ;AC003;
					RestoreReg <DI,ES>								 ;AC003;
 0AA3  5F                    2		POP     DI 
 0AA4  07                    2		POP     ES 
					return										 ;AC003;
 0AA5                        1	??0027: 
 0AA5  C3                    1		RET 
 0AA6				GUI_10: 										 ;AC003;
 0AA6  26: 8B 77 28			MOV	SI,WORD PTR ES:[BX.IFSR_BUFFER@]					 ;AC003;
 0AAA  26: 8E 5F 2A			MOV	DS,WORD PTR ES:[BX.IFSR_BUFFER@+2]					 ;AC003;
					SaveReg <SI>
 0AAE  56                    2		PUSH    SI 
 0AAF  83 C6 02				ADD	SI,2				; space to user word (skip index)	;AN018;
 0AB2  AD				LODSW					; user word				 ;AC003;
 0AB3  8B C8				MOV	CX,AX									 ;AC003;
 0AB5  AD				LODSW					; max xmitt size			 ;AC003;
 0AB6  8B D0				MOV	DX,AX									 ;AC003;
 0AB8  AD				LODSW					; net name id				 ;AC003;
 0AB9  50				PUSH	AX									 ;AC003;
 0ABA  AD				LODSW					; lsn					 ;AC003;
 0ABB  8B E8				MOV	BP,AX									 ;AC003;
 0ABD  AC				LODSB					; redir bits				 ;AC003;
 0ABE  8A F8				MOV	BH,AL									 ;AC003;
 0AC0  B3 04				MOV	BL,4									 ;AC003;
 0AC2  58				POP	AX				; net name id				 ;AC003;
					SaveReg <DS,SI> 								 ;AC003;
 0AC3  1E                    2		PUSH    DS 
 0AC4  56                    2		PUSH    SI 
					CallInstall Get_User_Stack,multDOS,24,<AX>,<AX> 				 ;AC003;
 0AC5  50                    3		PUSH    AX 
 0AC6  B8 1218               1		MOV     AX,(multDOS SHL 8) + 24 
 0AC9  CD 2F                 1		INT     2Fh 
 0ACB  58                    3		POP     AX 
 0ACC  89 4C 04				MOV	[SI].User_CX,CX 	; User Word					 ;AC003;
 0ACF  89 5C 02				MOV	[SI].User_BX,BX 	; Bits and macro type				 ;AC003;
 0AD2  89 54 06				MOV	[SI].User_DX,DX 	; Max Xmitt size				 ;AC003;
 0AD5  89 04				MOV	[SI].User_AX,AX 	; Net name ID					 ;AC003;
 0AD7  2E: F7 06 015A R 0800		TEST	CS:IFSPROC_FLAGS,SetBP							 ;AC003;
 0ADE  74 03				JZ	GUI_15									 ;AC003;
 0AE0  89 6C 0C				MOV	[SI].User_BP,BP 	; LSN						 ;AC003;
 0AE3				GUI_15: 										 ;AN003;
					RestoreReg <SI,DS>
 0AE3  5E                    2		POP     SI 
 0AE4  1F                    2		POP     DS 
 0AE5  F7 06 015A R 1000		TEST	IFSPROC_FLAGS,Filesys_status						 ;AC003;
 0AEB  75 09				JNZ	GUI_20									 ;AC003;
 0AED  83 C4 02				ADD	SP,2			; old si
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-40
GET_UNC_ITEM_INFO  -- resv bits, net name id, user word, max

					RestoreReg <DI,ES>		; buffer/target ptr	(dssi - 18)	       ;AC003;;AC018
				;
 0AF0  5F                    2		POP     DI 
 0AF1  07                    2		POP     ES 
					SaveReg <AX,DI> 								 ;AC003;;AC0
				08;
 0AF2  50                    2		PUSH    AX 
 0AF3  57                    2		PUSH    DI 
 0AF4  EB 19				JMP	SHORT GUI_40								 ;AC003;
															 ;AC003;
 0AF6				GUI_20: 				; new style					 ;AC003;
					RestoreReg <SI> 		; offset path
 0AF6  5E                    2		POP     SI 
 0AF7  83 C6 0B				ADD	SI,11									 ;AC003;
					RestoreReg <DI,ES>		; target - dw fsname				 ;AC003;
 0AFA  5F                    2		POP     DI 
 0AFB  07                    2		POP     ES 
									;	   dw # parms				 ;AC003;
									;	   db asciiz,...			 ;AC003;
					SaveReg <DI>									 ;AC003;
 0AFC  57                    2		PUSH    DI 
 0AFD  26: 8B 3D			MOV	DI,ES:[DI]								 ;AC003;
					invoke	GET_UNC_FS_NAME 							 ;AC003;
 0B00  E8 0000 E             1		CALL    GET_UNC_FS_NAME 
					RestoreReg <DI> 								 ;AC003;
 0B03  5F                    2		POP     DI 
					SaveReg <AX,DI> 								 ;AC003;
 0B04  50                    2		PUSH    AX 
 0B05  57                    2		PUSH    DI 
 0B06  47				INC	DI									 ;AC003;
 0B07  47				INC	DI									 ;AC003;
 0B08  26: C7 05 0001			MOV	WORD PTR ES:[DI],1							 ;AC003;
 0B0D  47				INC	DI									 ;AC003;
 0B0E  47				INC	DI									 ;AC003;
															 ;AC003;
 0B0F				GUI_40: 										 ;AC003;
					CallInstall StrCpy,MultDOS,17							 ;AC003;
 0B0F  B8 1211               1		MOV     AX,(MultDOS SHL 8) + 17 
 0B12  CD 2F                 1		INT     2Fh 
					RestoreReg <DI> 								 ;AC003;
 0B14  5F                    2		POP     DI 
				;;;;;;;;TEST	CS:IFSPROC_FLAGS,FILESYS_STATUS 					 ;AN008;;AD0
				18;
				;;;;;;;;JZ	GUI_1000								 ;AN008;;AD0
				18;
					RestoreReg <AX> 								 ;AN008;
 0B15  58                    2		POP     AX 
				
 0B16				GUI_1000:
					return										 ;AC003;
 0B16                        1	??0028: 
 0B16  C3                    1		RET 
															 ;AC003;
															 ;AC003;
				EndProc GET_UNC_ITEM_INFO								 ;AC003;
 0B17                        1	GET_UNC_ITEM_INFO    ENDP 
															 ;AN000;
				
				BREAK <CHECK_END_SPACE -- check esdi string for blanks> 				 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Page     1-41
CHECK_END_SPACE -- check esdi string for blanks             

															 ;AN000;
				;************************************************************************************	 ;AN000;
				;											 ;AN000;
				; CHECK_END_SPACE									 ;AN000;
				;											 ;AN000;
				; Called by:		FIND_IFS_DRIVER 						 ;AN000;
				;											 ;AN000;
				; Routines called:
				;											 ;AN000;
				; Inputs:										 ;AN000;
				;	    ES:DI -> IFS driver name							 ;AN000;
				; Function:										 ;AN000;
				;	Replace any blanks in asciiz ifs driver name with 0's.                           ;AN000;
				; Output:										 ;AN000;
				;	none
				;											 ;AN000;
				; Regs: all preserved									 ;AN000;
				;											 ;AN000;
				;************************************************************************************	 ;AN000;
															 ;AN000;
					Procedure   CHECK_END_SPACE							 ;AN000;
 0B17                        1	CHECK_END_SPACE    PROC     
				ASSUME	DS:NOTHING,ES:NOTHING								 ;AN000;
															 ;AN000;
					SaveReg <AX,DS,SI,ES>			; save registers			 ;AN000;
 0B17  50                    2		PUSH    AX 
 0B18  1E                    2		PUSH    DS 
 0B19  56                    2		PUSH    SI 
 0B1A  06                    2		PUSH    ES 
					RestoreReg <DS> 			; set dssi -> asciiz ifs name		 ;AN000;
 0B1B  1F                    2		POP     DS 
 0B1C  8B F7				MOV	SI,DI									 ;AN000;
 0B1E  FC				CLD					; clear dir flag to count forward	 ;AN000;
 0B1F				CES_20: 					; search LOOP				 ;AN000;
 0B1F  AC				LODSB					; put char in al			 ;AN000;
 0B20  0A C0				OR	AL,AL				; check for end of string		 ;AN000;
 0B22  74 08				JZ	CES_1000			; if so go quit 			 ;AN000;
 0B24  3C 20				CMP	AL," "                          ; check for blank                        ;AN000;
 0B26  75 F7				JNE	CES_20				; cont loop if not			 ;AN000;
 0B28  C6 44 FF 00			MOV	BYTE PTR DS:[SI-1],0		; replace blank with zero		 ;AN000;
															 ;AN000;
															 ;AN000;
 0B2C				CES_1000:										 ;AN000;
					RestoreReg <SI,DS,AX>			; restore registers			 ;AN000;
 0B2C  5E                    2		POP     SI 
 0B2D  1F                    2		POP     DS 
 0B2E  58                    2		POP     AX 
					return										 ;AN000;
 0B2F                        1	??0029: 
 0B2F  C3                    1		RET 
															 ;AN000;
				EndProc CHECK_END_SPACE 								 ;AN000;
 0B30                        1	CHECK_END_SPACE    ENDP 
				
															 ;AN000;
															 ;AN000;
 0B30				IFSSEG	ENDS										 ;AN000;
				    END 										 ;AN000;

Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-1


Macros:

		N a m e			Lines

ARGVAR . . . . . . . . . . . . .  	  23
ASMVAR . . . . . . . . . . . . .  	   3
ASMVARS  . . . . . . . . . . . .  	   3
ASSERT . . . . . . . . . . . . .  	   0
CALLINSTALL  . . . . . . . . . .  	  12
DOSASSUME  . . . . . . . . . . .  	   3
ENTER  . . . . . . . . . . . . .  	   3
ENTERCRIT  . . . . . . . . . . .  	   1
ERRNZ  . . . . . . . . . . . . .  	   4
FMT  . . . . . . . . . . . . . .  	   0
IFSR_API_DEF . . . . . . . . . .  	 192
IFSR_FCN_DEF . . . . . . . . . .  	  75
LEAVE  . . . . . . . . . . . . .  	   2
LEAVECRIT  . . . . . . . . . . .  	   1
LOCALVAR . . . . . . . . . . . .  	  23

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

ABS_32RW . . . . . . . . . . . .  	000A	0003
  SECTOR_RBA . . . . . . . . . .  	0000
  ABS_RW_COUNT . . . . . . . . .  	0004
  BUFFER_ADDR  . . . . . . . . .  	0006
ARENA  . . . . . . . . . . . . .  	0010	0005
  ARENA_SIGNATURE  . . . . . . .  	0000
  ARENA_OWNER  . . . . . . . . .  	0001
  ARENA_SIZE . . . . . . . . . .  	0003
  ARENA_RESERVED . . . . . . . .  	0005
  ARENA_NAME . . . . . . . . . .  	0008
ATTACH_PARMS . . . . . . . . . .  	0003	0002
  AP_COUNT . . . . . . . . . . .  	0000
  AP_STRING  . . . . . . . . . .  	0002
A_BPB  . . . . . . . . . . . . .  	001F	000F
  BPB_BYTESPERSECTOR . . . . . .  	0000
  BPB_SECTORSPERCLUSTER  . . . .  	0002
  BPB_RESERVEDSECTORS  . . . . .  	0003
  BPB_NUMBEROFFATS . . . . . . .  	0005
  BPB_ROOTENTRIES  . . . . . . .  	0006
  BPB_TOTALSECTORS . . . . . . .  	0008
  BPB_MEDIADESCRIPTOR  . . . . .  	000A
  BPB_SECTORSPERFAT  . . . . . .  	000B
  BPB_SECTORSPERTRACK  . . . . .  	000D
  BPB_HEADS  . . . . . . . . . .  	000F
  BPB_HIDDENSECTORS  . . . . . .  	0011
  BPB_BIGTOTALSECTORS  . . . . .  	0015
BPBLOCK  . . . . . . . . . . . .  	000D	0008
  BPSECSZ  . . . . . . . . . . .  	0000
  BPCLUS . . . . . . . . . . . .  	0002
  BPRES  . . . . . . . . . . . .  	0003
  BPFTCNT  . . . . . . . . . . .  	0005
  BPDRCNT  . . . . . . . . . . .  	0006
  BPSCCNT  . . . . . . . . . . .  	0008
  BPMEDIA  . . . . . . . . . . .  	000A
  BPFTSEC  . . . . . . . . . . .  	000B
BUFFER_HASH_ENTRY  . . . . . . .  	0008	0004
  EMS_PAGE_NUM . . . . . . . . .  	0000
  BUFFER_BUCKET  . . . . . . . .  	0002
  DIRTY_COUNT  . . . . . . . . .  	0006
  BUFFER_RESERVED  . . . . . . .  	0007
BUFFINFO . . . . . . . . . . . .  	0023	000F
  HASH_PTR . . . . . . . . . . .  	0000
  HASH_COUNT . . . . . . . . . .  	0004
  CACHE_PTR  . . . . . . . . . .  	0006
  CACHE_COUNT  . . . . . . . . .  	000A
  EMS_SAFE_FLAG  . . . . . . . .  	000C
  EMS_LAST_PAGE  . . . . . . . .  	000D
  EMS_FIRST_PAGE . . . . . . . .  	0011
  EMS_NPA640 . . . . . . . . . .  	0015
  EMS_MODE . . . . . . . . . . .  	0017
  EMS_HANDLE . . . . . . . . . .  	0018
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-2


  EMS_PAGEFRAME_NUMBER . . . . .  	001A
  EMS_SEG_CNT  . . . . . . . . .  	001C
  EMS_PAGE_FRAME . . . . . . . .  	001E
  EMS_RESERVED . . . . . . . . .  	0020
  EMS_MAP_BUFF . . . . . . . . .  	0022
CD . . . . . . . . . . . . . . .  	0054	0005
  CD_TYPE  . . . . . . . . . . .  	0000
  CD_END . . . . . . . . . . . .  	0002
  CD_TEXT  . . . . . . . . . . .  	0004
  CD_RESV  . . . . . . . . . . .  	0047
  CD_FSDA  . . . . . . . . . . .  	004C
CONTINFO . . . . . . . . . . . .  	0034	000F
  CI_SEARCH_FN . . . . . . . . .  	0000
  CI_SEARCH_FN_EXT . . . . . . .  	0008
  CI_SEARCH_ATTR . . . . . . . .  	000B
  CI_FSDA  . . . . . . . . . . .  	000C
  CI_FOUND_FN  . . . . . . . . .  	0014
  CI_FOUND_FN_EXT  . . . . . . .  	001C
  CI_FOUND_ATTRL . . . . . . . .  	001F
  CI_CP  . . . . . . . . . . . .  	0020
  CI_RESV1 . . . . . . . . . . .  	0022
  CI_FOUND_ATTRH . . . . . . . .  	0024
  CI_RESV2 . . . . . . . . . . .  	0025
  CI_FILE_TIME . . . . . . . . .  	002A
  CI_FILE_DATE . . . . . . . . .  	002C
  CI_FSWORD  . . . . . . . . . .  	002E
  CI_FILE_SIZE . . . . . . . . .  	0030
CURDIR_LIST  . . . . . . . . . .  	0058	000A
  CURDIR_TEXT  . . . . . . . . .  	0000
  CURDIR_FLAGS . . . . . . . . .  	0043
  CURDIR_DEVPTR  . . . . . . . .  	0045
  CURDIR_ID  . . . . . . . . . .  	0049
  CURDIR_USER_WORD . . . . . . .  	004D
  CURDIR_END . . . . . . . . . .  	004F
  CURDIR_TYPE  . . . . . . . . .  	0051
  CURDIR_IFS_HDR . . . . . . . .  	0052
  CURDIR_FSDA  . . . . . . . . .  	0056
DEV_OPER_BUFFER  . . . . . . . .  	0002	0002
  OPER_FUNC  . . . . . . . . . .  	0000
  TRUNC_FLAG . . . . . . . . . .  	0001
DFL  . . . . . . . . . . . . . .  	0012	0003
  DFL_TYPE . . . . . . . . . . .  	0000
  DFL_DEV_NAME . . . . . . . . .  	0002
  DFL_FSDA . . . . . . . . . . .  	000A
DFLL_LIST  . . . . . . . . . . .  	001E	0008
  DFLL_FLAGS . . . . . . . . . .  	0000
  DFLL_TYPE  . . . . . . . . . .  	0001
  DFLL_DEV_NAME  . . . . . . . .  	0002
  DFLL_USER_WORD . . . . . . . .  	000A
  DFLL_ALIAS_INDEX . . . . . . .  	000C
  DFLL_IFS_HDR . . . . . . . . .  	000E
  DFLL_FSDA  . . . . . . . . . .  	0012
  DFLL_DEVPTR  . . . . . . . . .  	001A
DIR_ENTRY  . . . . . . . . . . .  	0020	000B
  DIR_NAME . . . . . . . . . . .  	0000
  DIR_ATTR . . . . . . . . . . .  	000B
  DIR_CODEPG . . . . . . . . . .  	000C
  DIR_EXTCLUSTER . . . . . . . .  	000E
  DIR_ATTR2  . . . . . . . . . .  	0010
  DIR_PAD  . . . . . . . . . . .  	0011
  DIR_TIME . . . . . . . . . . .  	0016
  DIR_DATE . . . . . . . . . . .  	0018
  DIR_FIRST  . . . . . . . . . .  	001A
  DIR_SIZE_L . . . . . . . . . .  	001C
  DIR_SIZE_H . . . . . . . . . .  	001E
DOS_VALUE_BUFFER . . . . . . . .  	0010	0008
  VAL_BUF_SIZE . . . . . . . . .  	0000
  VAL_BUF_FILES  . . . . . . . .  	0002
  VAL_BUF_FCBS . . . . . . . . .  	0004
  VAL_BUF_BUFS . . . . . . . . .  	0008
  VAL_BUF_LDRV . . . . . . . . .  	000C
  VAL_BUF_SSZ  . . . . . . . . .  	000E
DPB  . . . . . . . . . . . . . .  	0021	0012
  DPB_DRIVE  . . . . . . . . . .  	0000
  DPB_UNIT . . . . . . . . . . .  	0001
  DPB_SECTOR_SIZE  . . . . . . .  	0002
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-3


  DPB_CLUSTER_MASK . . . . . . .  	0004
  DPB_CLUSTER_SHIFT  . . . . . .  	0005
  DPB_FIRST_FAT  . . . . . . . .  	0006
  DPB_FAT_COUNT  . . . . . . . .  	0008
  DPB_ROOT_ENTRIES . . . . . . .  	0009
  DPB_FIRST_SECTOR . . . . . . .  	000B
  DPB_MAX_CLUSTER  . . . . . . .  	000D
  DPB_FAT_SIZE . . . . . . . . .  	000F
  DPB_DIR_SECTOR . . . . . . . .  	0011
  DPB_DRIVER_ADDR  . . . . . . .  	0013
  DPB_MEDIA  . . . . . . . . . .  	0017
  DPB_FIRST_ACCESS . . . . . . .  	0018
  DPB_NEXT_DPB . . . . . . . . .  	0019
  DPB_NEXT_FREE  . . . . . . . .  	001D
  DPB_FREE_CNT . . . . . . . . .  	001F
EXEC0  . . . . . . . . . . . . .  	000E	0004
  EXEC0_ENVIRON  . . . . . . . .  	0000
  EXEC0_COM_LINE . . . . . . . .  	0002
  EXEC0_5C_FCB . . . . . . . . .  	0006
  EXEC0_6C_FCB . . . . . . . . .  	000A
EXEC1  . . . . . . . . . . . . .  	0016	0008
  EXEC1_ENVIRON  . . . . . . . .  	0000
  EXEC1_COM_LINE . . . . . . . .  	0002
  EXEC1_5C_FCB . . . . . . . . .  	0006
  EXEC1_6C_FCB . . . . . . . . .  	000A
  EXEC1_SP . . . . . . . . . . .  	000E
  EXEC1_SS . . . . . . . . . . .  	0010
  EXEC1_IP . . . . . . . . . . .  	0012
  EXEC1_CS . . . . . . . . . . .  	0014
EXEC3  . . . . . . . . . . . . .  	0004	0002
  EXEC3_LOAD_ADDR  . . . . . . .  	0000
  EXEC3_RELOC_FAC  . . . . . . .  	0002
EXE_FILE . . . . . . . . . . . .  	0020	000F
  EXE_SIGNATURE  . . . . . . . .  	0000
  EXE_LEN_MOD_512  . . . . . . .  	0002
  EXE_PAGES  . . . . . . . . . .  	0004
  EXE_RLE_COUNT  . . . . . . . .  	0006
  EXE_PAR_DIR  . . . . . . . . .  	0008
  EXE_MIN_BSS  . . . . . . . . .  	000A
  EXE_MAX_BSS  . . . . . . . . .  	000C
  EXE_SS . . . . . . . . . . . .  	000E
  EXE_SP . . . . . . . . . . . .  	0010
  EXE_CHKSUM . . . . . . . . . .  	0012
  EXE_IP . . . . . . . . . . . .  	0014
  EXE_CS . . . . . . . . . . . .  	0016
  EXE_RLE_TABLE  . . . . . . . .  	0018
  EXE_IOV  . . . . . . . . . . .  	001A
  EXE_SYM_TAB  . . . . . . . . .  	001C
EXT_OPEN_PARM  . . . . . . . . .  	0006	0002
  EXT_SET_LIST . . . . . . . . .  	0000
  EXT_NUM_OF_PARM  . . . . . . .  	0004
FIND_BUF . . . . . . . . . . . .  	002B	000C
  FIND_BUF_DRIVE . . . . . . . .  	0000
  FIND_BUF_NAME  . . . . . . . .  	0001
  FIND_BUF_SATTR . . . . . . . .  	000C
  FIND_BUF_LASTENT . . . . . . .  	000D
  FIND_BUF_DIRSTART  . . . . . .  	000F
  FIND_BUF_NETID . . . . . . . .  	0011
  FIND_BUF_ATTR  . . . . . . . .  	0015
  FIND_BUF_TIME  . . . . . . . .  	0016
  FIND_BUF_DATE  . . . . . . . .  	0018
  FIND_BUF_SIZE_L  . . . . . . .  	001A
  FIND_BUF_SIZE_H  . . . . . . .  	001C
  FIND_BUF_PNAME . . . . . . . .  	001E
IFSHEADER  . . . . . . . . . . .  	0016	0006
  IFS_NEXT . . . . . . . . . . .  	0000
  IFS_NAME . . . . . . . . . . .  	0004
  IFS_ATTRIBUTE  . . . . . . . .  	000C
  IFS_VERSION  . . . . . . . . .  	000E
  IFS_DOSCALL@ . . . . . . . . .  	0010
  IFS_CALL@  . . . . . . . . . .  	0014
IFSRH  . . . . . . . . . . . . .  	0048	0006
  IFSR_LENGTH  . . . . . . . . .  	0000
  IFSR_FUNCTION  . . . . . . . .  	0002
  IFSR_RETCODE . . . . . . . . .  	0003
  IFSR_RETCLASS  . . . . . . . .  	0005
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-4


  IFSR_RESV1 . . . . . . . . . .  	0006
  IFSR_FCN_PARMS . . . . . . . .  	0016
INTERNAT_BLOCK . . . . . . . . .  	0018	0015
  DATE_TIM_FORMAT  . . . . . . .  	0000
  CURRENCY_SYM . . . . . . . . .  	0002
  THOUS_SEP  . . . . . . . . . .  	0007
  DECIMAL_SEP  . . . . . . . . .  	0009
  DATE_SEP . . . . . . . . . . .  	000B
  TIME_SEP . . . . . . . . . . .  	000D
  BIT_FIELD  . . . . . . . . . .  	000F
  CURRENCY_CENTS . . . . . . . .  	0010
  TIME_24  . . . . . . . . . . .  	0011
  MAP_CALL . . . . . . . . . . .  	0012
  DATA_SEP . . . . . . . . . . .  	0016
IOCTL_REQ  . . . . . . . . . . .  	0017	0006
  MAJORFUNCTION  . . . . . . . .  	000D
  MINORFUNCTION  . . . . . . . .  	000E
  REG_SI . . . . . . . . . . . .  	000F
  REG_DI . . . . . . . . . . . .  	0011
  GENERICIOCTL_PACKET  . . . . .  	0013
MEDIA_ID_INFO  . . . . . . . . .  	0019	0004
  MEDIA_LEVEL  . . . . . . . . .  	0000
  MEDIA_SERIAL . . . . . . . . .  	0002
  MEDIA_LABEL  . . . . . . . . .  	0006
  MEDIA_SYSTEM . . . . . . . . .  	0011
PACKET . . . . . . . . . . . . .  	0004	0002
  PACKLEN  . . . . . . . . . . .  	0000
  PACKCPID . . . . . . . . . . .  	0002
PROCESS_DATA_BLOCK . . . . . . .  	005C	0011
  PDB_EXIT_CALL  . . . . . . . .  	0000
  PDB_BLOCK_LEN  . . . . . . . .  	0002
  PDB_CPM_CALL . . . . . . . . .  	0005
  PDB_EXIT . . . . . . . . . . .  	000A
  PDB_CTRL_C . . . . . . . . . .  	000E
  PDB_FATAL_ABORT  . . . . . . .  	0012
  PDB_PARENT_PID . . . . . . . .  	0016
  PDB_JFN_TABLE  . . . . . . . .  	0018
  PDB_ENVIRON  . . . . . . . . .  	002C
  PDB_USER_STACK . . . . . . . .  	002E
  PDB_JFN_LENGTH . . . . . . . .  	0032
  PDB_JFN_POINTER  . . . . . . .  	0034
  PDB_NEXT_PDB . . . . . . . . .  	0038
  PDB_PAD1 . . . . . . . . . . .  	003C
  PDB_CALL_SYSTEM  . . . . . . .  	0050
  PDB_PAD2 . . . . . . . . . . .  	0055
SF . . . . . . . . . . . . . . .  	0008	0003
  SFLINK . . . . . . . . . . . .  	0000
  SFCOUNT  . . . . . . . . . . .  	0004
  SFTABLE  . . . . . . . . . . .  	0006
SFF  . . . . . . . . . . . . . .  	003D	0011
  SFF_TYPE . . . . . . . . . . .  	0000
  SFF_FLAGS  . . . . . . . . . .  	0002
  SFF_MODE . . . . . . . . . . .  	0004
  SFF_RESV1  . . . . . . . . . .  	0006
  SFF_ATTR . . . . . . . . . . .  	0008
  SFF_UID  . . . . . . . . . . .  	000A
  SFF_PID  . . . . . . . . . . .  	000C
  SFF_SIZE . . . . . . . . . . .  	000E
  SFF_POSITION . . . . . . . . .  	0012
  SFF_TIME . . . . . . . . . . .  	0016
  SFF_DATE . . . . . . . . . . .  	0018
  SFF_NAME . . . . . . . . . . .  	001A
  SFF_EXT  . . . . . . . . . . .  	0022
  SFF_RESV2  . . . . . . . . . .  	0025
  SFF_SF_ID  . . . . . . . . . .  	0027
  SFF_RESV . . . . . . . . . . .  	0029
  SFF_FSDA . . . . . . . . . . .  	0035
SF_ENTRY . . . . . . . . . . . .  	003B	0014
  SF_REF_COUNT . . . . . . . . .  	0000
  SF_MODE  . . . . . . . . . . .  	0002
  SF_ATTR  . . . . . . . . . . .  	0004
  SF_FLAGS . . . . . . . . . . .  	0005
  SF_DEVPTR  . . . . . . . . . .  	0007
  SF_FIRCLUS . . . . . . . . . .  	000B
  SF_TIME  . . . . . . . . . . .  	000D
  SF_DATE  . . . . . . . . . . .  	000F
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-5


  SF_SIZE  . . . . . . . . . . .  	0011
  SF_POSITION  . . . . . . . . .  	0015
  SF_CLUSPOS . . . . . . . . . .  	0019
  SF_DIRSEC  . . . . . . . . . .  	001B
  SF_DIRPOS  . . . . . . . . . .  	001F
  SF_NAME  . . . . . . . . . . .  	0020
  SF_CHAIN . . . . . . . . . . .  	002B
  SF_UID . . . . . . . . . . . .  	002F
  SF_PID . . . . . . . . . . . .  	0031
  SF_MFT . . . . . . . . . . . .  	0033
  SF_LSTCLUS . . . . . . . . . .  	0035
  SF_IFS_HDR . . . . . . . . . .  	0037
SRHEAD . . . . . . . . . . . . .  	000D	0005
  REQLEN . . . . . . . . . . . .  	0000
  REQUNIT  . . . . . . . . . . .  	0001
  REQFUNC  . . . . . . . . . . .  	0002
  REQSTAT  . . . . . . . . . . .  	0003
SYMBOL_ENTRY . . . . . . . . . .  	0106	0004
  SYM_VALUE  . . . . . . . . . .  	0000
  SYM_TYPE . . . . . . . . . . .  	0004
  SYM_LEN  . . . . . . . . . . .  	0006
  SYM_NAME . . . . . . . . . . .  	0007
SYSDEV . . . . . . . . . . . . .  	0012	0005
  SDEVNEXT . . . . . . . . . . .  	0000
  SDEVATT  . . . . . . . . . . .  	0004
  SDEVSTRAT  . . . . . . . . . .  	0006
  SDEVINT  . . . . . . . . . . .  	0008
  SDEVNAME . . . . . . . . . . .  	000A
SYSINITVARS  . . . . . . . . . .  	0047	0018
  SYSI_DPB . . . . . . . . . . .  	0000
  SYSI_SFT . . . . . . . . . . .  	0004
  SYSI_CLOCK . . . . . . . . . .  	0008
  SYSI_CON . . . . . . . . . . .  	000C
  SYSI_MAXSEC  . . . . . . . . .  	0010
  SYSI_BUF . . . . . . . . . . .  	0012
  SYSI_CDS . . . . . . . . . . .  	0016
  SYSI_FCB . . . . . . . . . . .  	001A
  SYSI_KEEP  . . . . . . . . . .  	001E
  SYSI_NUMIO . . . . . . . . . .  	0020
  SYSI_NCDS  . . . . . . . . . .  	0021
  SYSI_DEV . . . . . . . . . . .  	0022
  SYSI_ATTR  . . . . . . . . . .  	0026
  SYSI_STRAT . . . . . . . . . .  	0028
  SYSI_INTER . . . . . . . . . .  	002A
  SYSI_NAME  . . . . . . . . . .  	002C
  SYSI_SPLICE  . . . . . . . . .  	0034
  SYSI_IBMDOS_SIZE . . . . . . .  	0035
  SYSI_IFS_DOSCALL@  . . . . . .  	0037
  SYSI_IFS . . . . . . . . . . .  	003B
  SYSI_BUFFERS . . . . . . . . .  	003F
  SYSI_BOOT_DRIVE  . . . . . . .  	0043
  SYSI_DWMOVE  . . . . . . . . .  	0044
  SYSI_EXT_MEM . . . . . . . . .  	0045
SYSINITVARS_EXT  . . . . . . . .  	0008	0002
  SYSI_INITVARS  . . . . . . . .  	0000
  SYSI_COUNTRY_TAB . . . . . . .  	0004
SYS_FCB  . . . . . . . . . . . .  	0025	000C
  FCB_DRIVE  . . . . . . . . . .  	0000
  FCB_NAME . . . . . . . . . . .  	0001
  FCB_EXT  . . . . . . . . . . .  	0009
  FCB_EXTENT . . . . . . . . . .  	000C
  FCB_RECSIZ . . . . . . . . . .  	000E
  FCB_FILSIZ . . . . . . . . . .  	0010
  FCB_DRVBP  . . . . . . . . . .  	0012
  FCB_FDATE  . . . . . . . . . .  	0014
  FCB_FTIME  . . . . . . . . . .  	0016
  FCB_RESERVED . . . . . . . . .  	0018
  FCB_NR . . . . . . . . . . . .  	0020
  FCB_RR . . . . . . . . . . . .  	0021
USER_ENVIRON . . . . . . . . . .  	0018	000C
  USER_AX  . . . . . . . . . . .  	0000
  USER_BX  . . . . . . . . . . .  	0002
  USER_CX  . . . . . . . . . . .  	0004
  USER_DX  . . . . . . . . . . .  	0006
  USER_SI  . . . . . . . . . . .  	0008
  USER_DI  . . . . . . . . . . .  	000A
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-6


  USER_BP  . . . . . . . . . . .  	000C
  USER_DS  . . . . . . . . . . .  	000E
  USER_ES  . . . . . . . . . . .  	0010
  USER_IP  . . . . . . . . . . .  	0012
  USER_CS  . . . . . . . . . . .  	0014
  USER_F . . . . . . . . . . . .  	0016

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

DOSGROUP . . . . . . . . . . . .  	GROUP
  START  . . . . . . . . . . . .  	0000	PARA	PUBLIC	'START'
  CONSTANTS  . . . . . . . . . .  	0000	WORD	PUBLIC	'CONST'
  DATA . . . . . . . . . . . . .  	0000	WORD	PUBLIC	'DATA'
  TABLE  . . . . . . . . . . . .  	0000	BYTE	PUBLIC	'TABLE'
  CODE . . . . . . . . . . . . .  	0000	BYTE	PUBLIC	'CODE'
  LAST . . . . . . . . . . . . .  	0000	PARA	PUBLIC	'LAST'
IFSSEG . . . . . . . . . . . . .  	0B30	BYTE	PUBLIC	'IFSSEG'

Symbols:            

                N a m e         	Type	 Value	 Attr

ABORT  . . . . . . . . . . . . .  	NUMBER	0000	
ACCESS_MASK  . . . . . . . . . .  	NUMBER	000F	
ACTION_CREATED_OPENED  . . . . .  	NUMBER	0002	
ACTION_OPENED  . . . . . . . . .  	NUMBER	0001	
ACTION_REPLACED_OPENED . . . . .  	NUMBER	0003	
ACTIVE_PROCESS_INFO  . . . . . .  	NUMBER	0001	
ADDR_INT_ABORT . . . . . . . . .  	NUMBER	0080	
ADDR_INT_COMMAND . . . . . . . .  	NUMBER	0084	
ADDR_INT_CTRL_C  . . . . . . . .  	NUMBER	008C	
ADDR_INT_DISK_READ . . . . . . .  	NUMBER	0094	
ADDR_INT_DISK_WRITE  . . . . . .  	NUMBER	0098	
ADDR_INT_FASTCON . . . . . . . .  	NUMBER	00A4	
ADDR_INT_FATAL_ABORT . . . . . .  	NUMBER	0090	
ADDR_INT_IBM . . . . . . . . . .  	NUMBER	00A8	
ADDR_INT_KEEP_PROCESS  . . . . .  	NUMBER	009C	
ADDR_INT_SPOOLER . . . . . . . .  	NUMBER	00A0	
ADDR_INT_TERMINATE . . . . . . .  	NUMBER	0088	
AE_10  . . . . . . . . . . . . .  	L NEAR	0743	IFSSEG
AE_20  . . . . . . . . . . . . .  	L NEAR	074D	IFSSEG
AE_200 . . . . . . . . . . . . .  	L NEAR	0785	IFSSEG
AE_210 . . . . . . . . . . . . .  	L NEAR	078F	IFSSEG
AE_220 . . . . . . . . . . . . .  	L NEAR	0799	IFSSEG
AE_300 . . . . . . . . . . . . .  	L NEAR	07AB	IFSSEG
AE_320 . . . . . . . . . . . . .  	L NEAR	07BD	IFSSEG
AE_40  . . . . . . . . . . . . .  	L NEAR	0763	IFSSEG
AE_400 . . . . . . . . . . . . .  	L NEAR	07D6	IFSSEG
AE_405 . . . . . . . . . . . . .  	L NEAR	07F0	IFSSEG
AE_410 . . . . . . . . . . . . .  	L NEAR	07F2	IFSSEG
AE_420 . . . . . . . . . . . . .  	L NEAR	0808	IFSSEG
AE_440 . . . . . . . . . . . . .  	L NEAR	0814	IFSSEG
AE_60  . . . . . . . . . . . . .  	L NEAR	0774	IFSSEG
ALLOC  . . . . . . . . . . . . .  	NUMBER	0048	
ALLOCOPER  . . . . . . . . . . .  	NUMBER	0058	
ALLOWED_FAIL . . . . . . . . . .  	NUMBER	0008	
ALLOWED_IGNORE . . . . . . . . .  	NUMBER	0020	
ALLOWED_RETRY  . . . . . . . . .  	NUMBER	0010	
ALTVECT  . . . . . . . . . . . .  	ALIAS	 FALSE		
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
AO_10  . . . . . . . . . . . . .  	L NEAR	0218	IFSSEG
AO_20  . . . . . . . . . . . . .  	L NEAR	021E	IFSSEG
AO_40  . . . . . . . . . . . . .  	L NEAR	022F	IFSSEG
AO_TABLE . . . . . . . . . . . .  	L WORD	0201	IFSSEG
ARENA_OWNER_SYSTEM . . . . . . .  	NUMBER	0000	
ARENA_SIGNATURE_END  . . . . . .  	NUMBER	005A	
ARENA_SIGNATURE_NORMAL . . . . .  	NUMBER	004D	
AssignOff  . . . . . . . . . . .  	N PROC	0980	IFSSEG	Global	Length = 004F
AssignOn . . . . . . . . . . . .  	N PROC	0945	IFSSEG	Global	Length = 003B
ASSIGNOPER . . . . . . . . . . .  	NUMBER	005F	
AS_10  . . . . . . . . . . . . .  	L NEAR	0552	IFSSEG
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-7


AS_100 . . . . . . . . . . . . .  	L NEAR	0637	IFSSEG
AS_120 . . . . . . . . . . . . .  	L NEAR	0685	IFSSEG
AS_15  . . . . . . . . . . . . .  	L NEAR	055C	IFSSEG
AS_20  . . . . . . . . . . . . .  	L NEAR	0562	IFSSEG
AS_200 . . . . . . . . . . . . .  	L NEAR	068E	IFSSEG
AS_22  . . . . . . . . . . . . .  	L NEAR	0586	IFSSEG
AS_220 . . . . . . . . . . . . .  	L NEAR	0698	IFSSEG
AS_23  . . . . . . . . . . . . .  	L NEAR	0589	IFSSEG
AS_240 . . . . . . . . . . . . .  	L NEAR	06A8	IFSSEG
AS_25  . . . . . . . . . . . . .  	L NEAR	058E	IFSSEG
AS_30  . . . . . . . . . . . . .  	L NEAR	0593	IFSSEG
AS_33  . . . . . . . . . . . . .  	L NEAR	059C	IFSSEG
AS_35  . . . . . . . . . . . . .  	L NEAR	05B0	IFSSEG
AS_37  . . . . . . . . . . . . .  	L NEAR	05B6	IFSSEG
AS_38  . . . . . . . . . . . . .  	L NEAR	05BB	IFSSEG
AS_40  . . . . . . . . . . . . .  	L NEAR	05C2	IFSSEG
AS_400 . . . . . . . . . . . . .  	L NEAR	06AD	IFSSEG
AS_410 . . . . . . . . . . . . .  	L NEAR	06C3	IFSSEG
AS_420 . . . . . . . . . . . . .  	L NEAR	06E0	IFSSEG
AS_440 . . . . . . . . . . . . .  	L NEAR	06EA	IFSSEG
AS_460 . . . . . . . . . . . . .  	L NEAR	070A	IFSSEG
AS_50  . . . . . . . . . . . . .  	L NEAR	05D1	IFSSEG
AS_55  . . . . . . . . . . . . .  	L NEAR	05D3	IFSSEG
AS_55_0  . . . . . . . . . . . .  	L NEAR	05E1	IFSSEG
AS_55_1  . . . . . . . . . . . .  	L NEAR	05E9	IFSSEG
AS_56  . . . . . . . . . . . . .  	L NEAR	0609	IFSSEG
AS_57  . . . . . . . . . . . . .  	L NEAR	060F	IFSSEG
AS_60  . . . . . . . . . . . . .  	L NEAR	0614	IFSSEG
ATTACH_END . . . . . . . . . . .  	N PROC	0712	IFSSEG	Global	Length = 0104
ATTACH_START . . . . . . . . . .  	N PROC	0548	IFSSEG	Global	Length = 01CA
ATTR_ALL . . . . . . . . . . . .  	NUMBER	0016	
ATTR_ARCHIVE . . . . . . . . . .  	NUMBER	0020	
ATTR_CHANGEABLE  . . . . . . . .  	NUMBER	0027	
ATTR_DEVICE  . . . . . . . . . .  	NUMBER	0040	
ATTR_DIRECTORY . . . . . . . . .  	NUMBER	0010	
ATTR_HIDDEN  . . . . . . . . . .  	NUMBER	0002	
ATTR_IGNORE  . . . . . . . . . .  	NUMBER	0061	
ATTR_READ_ONLY . . . . . . . . .  	NUMBER	0001	
ATTR_SYSTEM  . . . . . . . . . .  	NUMBER	0004	
ATTR_VOLUME_ID . . . . . . . . .  	NUMBER	0008	
AUTO_COMMIT_WRITE  . . . . . . .  	NUMBER	4000	

BLOCK_GENERIC  . . . . . . . . .  	NUMBER	000D	
BREAK_INFORMATION  . . . . . . .  	NUMBER	0003	
BUFFERFLAG . . . . . . . . . . .  	NUMBER	FFFF	
BUFINSIZ . . . . . . . . . . . .  	NUMBER	0014	
BUF_DIRTY  . . . . . . . . . . .  	NUMBER	0040	
BUF_DPB  . . . . . . . . . . . .  		000D	
BUF_FILL . . . . . . . . . . . .  		0011	
BUF_FLAGS  . . . . . . . . . . .  		0005	
BUF_FREE . . . . . . . . . . . .  	NUMBER	00FF	
BUF_ID . . . . . . . . . . . . .  		0004	
BUF_ISDATA . . . . . . . . . . .  	NUMBER	0008	
BUF_ISDIR  . . . . . . . . . . .  	NUMBER	0004	
BUF_ISFAT  . . . . . . . . . . .  	NUMBER	0002	
BUF_ISNET  . . . . . . . . . . .  	NUMBER	0080	
BUF_NETID  . . . . . . . . . . .  	ALIAS	 BUFINSIZ		
BUF_NEXT . . . . . . . . . . . .  		0000	
BUF_OFFSET . . . . . . . . . . .  	DWORD	0006	
BUF_PREV . . . . . . . . . . . .  		0002	
BUF_RESERVED . . . . . . . . . .  		0013	
BUF_SECTOR . . . . . . . . . . .  		0006	
BUF_SNBUF  . . . . . . . . . . .  	NUMBER	0010	
BUF_TYPE_0 . . . . . . . . . . .  	NUMBER	00F1	
BUF_VISIT  . . . . . . . . . . .  	NUMBER	0020	
BUF_WRTCNT . . . . . . . . . . .  		000A	
BUF_WRTCNTINC  . . . . . . . . .  		000B	

CALL_IFS . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
CALL_INTERRUPT_ROUTINE . . . . .  	NUMBER	0001	
CANCEL_ATTACH  . . . . . . . . .  	NUMBER	0004	
CARGS  . . . . . . . . . . . . .  	NUMBER	0000	
CATEGORY_FS  . . . . . . . . . .  	NUMBER	0000	
CATEGORY_PRINTER . . . . . . . .  	NUMBER	0005	
CATEGORY_REDIR . . . . . . . . .  	NUMBER	0001	
CBTYPE_CD  . . . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-8


CBTYPE_DF  . . . . . . . . . . .  	NUMBER	0002	
CBTYPE_DUMMYCD . . . . . . . . .  	NUMBER	0003	
CBTYPE_SFF . . . . . . . . . . .  	NUMBER	0000	
CD1  . . . . . . . . . . . . . .  	L WORD	008E	IFSSEG	Global	Length = 0054
CDSAddr  . . . . . . . . . . . .  	V DWORD	0000	DATA	External
CDSAlt . . . . . . . . . . . . .  	L DWORD	0169	IFSSEG	Global
CDSCount . . . . . . . . . . . .  	V BYTE	0000	DATA	External
CDS_TO_CD  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
CD_TO_CDS  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
CES_1000 . . . . . . . . . . . .  	L NEAR	0B2C	IFSSEG
CES_20 . . . . . . . . . . . . .  	L NEAR	0B1F	IFSSEG
CHARDEV  . . . . . . . . . . . .  	NUMBER	8000	
CHAR_GENERIC . . . . . . . . . .  	NUMBER	000C	
CHAR_OPER  . . . . . . . . . . .  	NUMBER	0037	
CHDIR  . . . . . . . . . . . . .  	NUMBER	003B	
CHECK_END_SPACE  . . . . . . . .  	N PROC	0B17	IFSSEG	Global	Length = 0019
CHECK_REMOVABLE  . . . . . . . .  	NUMBER	4408	
CHMOD  . . . . . . . . . . . . .  	NUMBER	0043	
CLOSE  . . . . . . . . . . . . .  	NUMBER	003E	
CLOSE_SPOOL_FILES  . . . . . . .  	NUMBER	0009	
COMMIT . . . . . . . . . . . . .  	NUMBER	0068	
COMMON_ERR_2 . . . . . . . . . .  	NUMBER	0002	
COMMON_ERR_3 . . . . . . . . . .  	NUMBER	0003	
CONFIG_SYS_VALUES  . . . . . . .  	NUMBER	0005	
CONSIST_SFT  . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
COPYRIGHT  . . . . . . . . . . .  	L BYTE	0184	IFSSEG
COUNTRY_INFO . . . . . . . . . .  	NUMBER	0007	
CPSW_INFORMATION . . . . . . . .  	NUMBER	0002	
CREAT  . . . . . . . . . . . . .  	NUMBER	003C	
CREATENEWFILE  . . . . . . . . .  	NUMBER	005B	
CREATETEMPFILE . . . . . . . . .  	NUMBER	005A	
CREATE_DFL_ENTRY . . . . . . . .  	L NEAR	0000	IFSSEG	External
CREATE_PROCESS_DATA_BLOCK  . . .  	NUMBER	0026	
CRITASSIGN . . . . . . . . . . .  	NUMBER	0008	
CRITDEVICE . . . . . . . . . . .  	NUMBER	0002	
CRITDISK . . . . . . . . . . . .  	NUMBER	0001	
CRITIFS  . . . . . . . . . . . .  	NUMBER	0006	
CRITMEM  . . . . . . . . . . . .  	NUMBER	0001	
CRITNET  . . . . . . . . . . . .  	NUMBER	0005	
CRITSFT  . . . . . . . . . . . .  	NUMBER	0001	
CRITSHARE  . . . . . . . . . . .  	NUMBER	0001	
CRIT_MSG_TYPE_1  . . . . . . . .  	NUMBER	0001	
CRLVA  . . . . . . . . . . . . .  	L NEAR	0976	IFSSEG
CRLVB  . . . . . . . . . . . . .  	L NEAR	09CB	IFSSEG
CTLFUNC_DEVCLOSE . . . . . . . .  	NUMBER	0005	
CTLFUNC_DEVECHOCHECK . . . . . .  	NUMBER	0003	
CTLFUNC_DEVOPER  . . . . . . . .  	NUMBER	0006	
CTLFUNC_GET_UNC_ITEM . . . . . .  	NUMBER	0004	
CTLFUNC_PRINTER_GET_FLAGS  . . .  	NUMBER	0002	
CTLFUNC_PRINTER_GET_STRING . . .  	NUMBER	0001	
CTLFUNC_PRINTER_SET_FLAGS  . . .  	NUMBER	0022	
CTLFUNC_PRINTER_SET_STRING . . .  	NUMBER	0021	
CTLFUNC_PRINT_OFF  . . . . . . .  	NUMBER	0007	
CTLFUNC_PRINT_ON . . . . . . . .  	NUMBER	0027	
CTLFUNC_QUERY_PREPLIST . . . . .  	NUMBER	006B	
CTLFUNC_QUERY_SELECTED . . . . .  	NUMBER	006A	
CTLFUNC_SELECT . . . . . . . . .  	NUMBER	004A	
CTRL_BREAK_FLAG  . . . . . . . .  	NUMBER	0200	
CURDIRLEN  . . . . . . . . . . .  	NUMBER	0058	
CURDIR_INUSE . . . . . . . . . .  	NUMBER	4000	
CURDIR_ISIFS . . . . . . . . . .  	NUMBER	8000	
CURDIR_ISNET . . . . . . . . . .  	NUMBER	8000	
CURDIR_LOCAL . . . . . . . . . .  	NUMBER	1000	
CURDIR_NETID . . . . . . . . . .  	DWORD	0049	
CURDIR_SPLICE  . . . . . . . . .  	NUMBER	2000	
CurrentPDB . . . . . . . . . . .  	V WORD	0000	DATA	External
CURRENT_DIR  . . . . . . . . . .  	NUMBER	0047	
C_BS . . . . . . . . . . . . . .  	NUMBER	0008	
C_CR . . . . . . . . . . . . . .  	NUMBER	000D	
C_DEL  . . . . . . . . . . . . .  	NUMBER	007F	
C_ETB  . . . . . . . . . . . . .  	NUMBER	0017	
C_ETX  . . . . . . . . . . . . .  	NUMBER	0003	
C_HT . . . . . . . . . . . . . .  	NUMBER	0009	
C_LF . . . . . . . . . . . . . .  	NUMBER	000A	
C_NAK  . . . . . . . . . . . . .  	NUMBER	0015	

Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-9


DBCS . . . . . . . . . . . . . .  	NUMBER	0000	
DBCS_VOLID . . . . . . . . . . .  	NUMBER	0080	
DBCS_VOLID2  . . . . . . . . . .  	NUMBER	0100	
DBPBHL . . . . . . . . . . . . .  	NUMBER	0016	
DDKEY  . . . . . . . . . . . . .  	NUMBER	0400	
DEALLOC  . . . . . . . . . . . .  	NUMBER	0049	
DEBUG  . . . . . . . . . . . . .  	NUMBER	0000	
DEFINE_MACRO . . . . . . . . . .  	NUMBER	0003	
DEFKEEPVAL . . . . . . . . . . .  	NUMBER	0000	
DEFNUMFCB  . . . . . . . . . . .  	NUMBER	0004	
DELETE_DFL_ENTRY . . . . . . . .  	L NEAR	0000	IFSSEG	External
DEV320 . . . . . . . . . . . . .  	NUMBER	0040	
DEVBPB . . . . . . . . . . . . .  	NUMBER	0002	
DEVCLS . . . . . . . . . . . . .  	NUMBER	000E	
DEVGETOWN  . . . . . . . . . . .  	NUMBER	0017	
DEVICE_CB@_OFFSET  . . . . . . .  	L WORD	015D	IFSSEG	Global
DEVICE_MACRO . . . . . . . . . .  	NUMBER	0003	
DEVICE_NOT_ATTACHED  . . . . . .  	NUMBER	000F	
DEVID_BLOCK_DEV  . . . . . . . .  	NUMBER	001F	
DEVID_DEVICE . . . . . . . . . .  	NUMBER	0080	
DEVID_DEVICE_CLOCK . . . . . . .  	NUMBER	0008	
DEVID_DEVICE_CON_IN  . . . . . .  	NUMBER	0001	
DEVID_DEVICE_CON_OUT . . . . . .  	NUMBER	0002	
DEVID_DEVICE_EOF . . . . . . . .  	NUMBER	0040	
DEVID_DEVICE_NULL  . . . . . . .  	NUMBER	0004	
DEVID_DEVICE_RAW . . . . . . . .  	NUMBER	0020	
DEVID_DEVICE_SPECIAL . . . . . .  	NUMBER	0010	
DEVID_EOF  . . . . . . . . . . .  	NUMBER	0040	
DEVID_FILE_CLEAN . . . . . . . .  	NUMBER	0040	
DEVID_FILE_MASK_DRIVE  . . . . .  	NUMBER	003F	
DEVID_ISCIN  . . . . . . . . . .  	NUMBER	0001	
DEVID_ISCLK  . . . . . . . . . .  	NUMBER	0008	
DEVID_ISCOT  . . . . . . . . . .  	NUMBER	0002	
DEVID_ISDEV  . . . . . . . . . .  	NUMBER	0080	
DEVID_ISNUL  . . . . . . . . . .  	NUMBER	0004	
DEVID_RAW  . . . . . . . . . . .  	NUMBER	0020	
DEVID_SPECIAL  . . . . . . . . .  	NUMBER	0010	
DEVIFL . . . . . . . . . . . . .  	NUMBER	0007	
DEVINIT  . . . . . . . . . . . .  	NUMBER	0000	
DEVIOCTL . . . . . . . . . . . .  	NUMBER	4000	
DEVIST . . . . . . . . . . . . .  	NUMBER	0006	
DEVMDCH  . . . . . . . . . . . .  	NUMBER	0001	
DEVOFL . . . . . . . . . . . . .  	NUMBER	000B	
DEVOPCL  . . . . . . . . . . . .  	NUMBER	0800	
DEVOPN . . . . . . . . . . . . .  	NUMBER	000D	
DEVOST . . . . . . . . . . . . .  	NUMBER	000A	
DEVOUT . . . . . . . . . . . . .  	NUMBER	0010	
DEVOUTL  . . . . . . . . . . . .  	ALIAS	 DEVWRT		
DEVRD  . . . . . . . . . . . . .  	NUMBER	0004	
DEVRDIOCTL . . . . . . . . . . .  	NUMBER	0003	
DEVRDND  . . . . . . . . . . . .  	NUMBER	0005	
DEVRMD . . . . . . . . . . . . .  	NUMBER	000F	
DEVSETOWN  . . . . . . . . . . .  	NUMBER	0018	
DEVTYP . . . . . . . . . . . . .  	NUMBER	8000	
DEVWRIOCTL . . . . . . . . . . .  	NUMBER	000C	
DEVWRT . . . . . . . . . . . . .  	NUMBER	0008	
DEVWRTV  . . . . . . . . . . . .  	NUMBER	0009	
DF1  . . . . . . . . . . . . . .  	L WORD	0136	IFSSEG	Global	Length = 0012
DFLAddr  . . . . . . . . . . . .  	L DWORD	0164	IFSSEG	Global
DFLCount . . . . . . . . . . . .  	L BYTE	0168	IFSSEG	Global
DFLSHL . . . . . . . . . . . . .  	NUMBER	000F	
DFL_DEV_REAL . . . . . . . . . .  	NUMBER	0010	
DFL_INPROG . . . . . . . . . . .  	NUMBER	0080	
DFL_INUSE  . . . . . . . . . . .  	NUMBER	0040	
DFL_MATCH  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
DFL_PAUSED . . . . . . . . . . .  	NUMBER	0020	
DFL_TO_DF  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
DF_TO_DFL  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
DINITHL  . . . . . . . . . . . .  	NUMBER	001A	
DIRSTRLEN  . . . . . . . . . . .  	NUMBER	0043	
DIR_SEARCH_FIRST . . . . . . . .  	NUMBER	0011	
DIR_SEARCH_NEXT  . . . . . . . .  	NUMBER	0012	
DISABLE_EOF_I24  . . . . . . . .  	NUMBER	0040	
DISK_RESET . . . . . . . . . . .  	NUMBER	000D	
DMEDHL . . . . . . . . . . . . .  	NUMBER	000F	
DOPCLHL  . . . . . . . . . . . .  	NUMBER	000D	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-10


DOS2NET_DATE . . . . . . . . . .  	NUMBER	0022	
DOSCALL@ . . . . . . . . . . . .  	L DWORD	0175	IFSSEG	Global
DOS_STRCMP . . . . . . . . . . .  	NUMBER	0024	
DOS_STRCPY . . . . . . . . . . .  	NUMBER	0025	
DPBSIZ . . . . . . . . . . . . .  	NUMBER	0021	
DRDNDHL  . . . . . . . . . . . .  	NUMBER	000E	
DRDWRHL  . . . . . . . . . . . .  	NUMBER	0016	
DRIVE_MACRO  . . . . . . . . . .  	NUMBER	0004	
DSKSIZ . . . . . . . . . . . . .  	NUMBER	000D	
DSTATHL  . . . . . . . . . . . .  	NUMBER	000D	
DummyCDS . . . . . . . . . . . .  	V BYTE	0000	DATA	External
DUP_PDB  . . . . . . . . . . . .  	NUMBER	0055	

ECritNet . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
ECS_CALL . . . . . . . . . . . .  	NUMBER	0063	
EMS_MAP_BUFF_SIZE  . . . . . . .  	NUMBER	000C	
ENTRYPOINT . . . . . . . . . . .  	NUMBER	00C0	
EOP_ABORT  . . . . . . . . . . .  	NUMBER	0001	
EOP_NORMAL . . . . . . . . . . .  	NUMBER	0000	
ERRACT_ABORT . . . . . . . . . .  	NUMBER	0004	
ERRACT_DLYRET  . . . . . . . . .  	NUMBER	0002	
ERRACT_IGNORE  . . . . . . . . .  	NUMBER	0006	
ERRACT_INTRET  . . . . . . . . .  	NUMBER	0007	
ERRACT_PANIC . . . . . . . . . .  	NUMBER	0005	
ERRACT_RETRY . . . . . . . . . .  	NUMBER	0001	
ERRACT_USER  . . . . . . . . . .  	NUMBER	0003	
ERRCLASS_ALREADY . . . . . . . .  	NUMBER	000C	
ERRCLASS_APPERR  . . . . . . . .  	NUMBER	0007	
ERRCLASS_AUTH  . . . . . . . . .  	NUMBER	0003	
ERRCLASS_BADFMT  . . . . . . . .  	NUMBER	0009	
ERRCLASS_HRDFAIL . . . . . . . .  	NUMBER	0005	
ERRCLASS_INTRN . . . . . . . . .  	NUMBER	0004	
ERRCLASS_LOCKED  . . . . . . . .  	NUMBER	000A	
ERRCLASS_MEDIA . . . . . . . . .  	NUMBER	000B	
ERRCLASS_NOTFND  . . . . . . . .  	NUMBER	0008	
ERRCLASS_OUTRES  . . . . . . . .  	NUMBER	0001	
ERRCLASS_SYSFAIL . . . . . . . .  	NUMBER	0006	
ERRCLASS_TEMPSIT . . . . . . . .  	NUMBER	0002	
ERRCLASS_UNK . . . . . . . . . .  	NUMBER	000D	
ERRLOC_DISK  . . . . . . . . . .  	NUMBER	0002	
ERRLOC_MEM . . . . . . . . . . .  	NUMBER	0005	
ERRLOC_NET . . . . . . . . . . .  	NUMBER	0003	
ERRLOC_SERDEV  . . . . . . . . .  	NUMBER	0004	
ERRLOC_UNK . . . . . . . . . . .  	NUMBER	0001	
ERROR_ACCESS_DENIED  . . . . . .  	NUMBER	0005	
ERROR_ALREADY_ASSIGNED . . . . .  	NUMBER	0055	
ERROR_ARENA_TRASHED  . . . . . .  	NUMBER	0007	
ERROR_BAD_COMMAND  . . . . . . .  	NUMBER	0016	
ERROR_BAD_ENVIRONMENT  . . . . .  	NUMBER	000A	
ERROR_BAD_FORMAT . . . . . . . .  	NUMBER	000B	
ERROR_BAD_LENGTH . . . . . . . .  	NUMBER	0018	
ERROR_BAD_UNIT . . . . . . . . .  	NUMBER	0014	
ERROR_CANNOT_MAKE  . . . . . . .  	NUMBER	0052	
ERROR_CODE_PAGE_MISMATCHED . . .  	NUMBER	0025	
ERROR_CRC  . . . . . . . . . . .  	NUMBER	0017	
ERROR_CURRENT_DIRECTORY  . . . .  	NUMBER	0010	
ERROR_DUP_FCB  . . . . . . . . .  	NUMBER	0051	
ERROR_FAIL_I24 . . . . . . . . .  	NUMBER	0053	
ERROR_FCB_UNAVAILABLE  . . . . .  	NUMBER	0023	
ERROR_FILE_EXISTS  . . . . . . .  	NUMBER	0050	
ERROR_FILE_NOT_FOUND . . . . . .  	NUMBER	0002	
ERROR_GEN_FAILURE  . . . . . . .  	NUMBER	001F	
ERROR_HANDLE_DISK_FULL . . . . .  	NUMBER	0027	
ERROR_HANDLE_EOF . . . . . . . .  	NUMBER	0026	
ERROR_I24_BAD_COMMAND  . . . . .  	NUMBER	0003	
ERROR_I24_BAD_LENGTH . . . . . .  	NUMBER	0005	
ERROR_I24_BAD_UNIT . . . . . . .  	NUMBER	0001	
ERROR_I24_CRC  . . . . . . . . .  	NUMBER	0004	
ERROR_I24_GEN_FAILURE  . . . . .  	NUMBER	000C	
ERROR_I24_NOT_DOS_DISK . . . . .  	NUMBER	0007	
ERROR_I24_NOT_READY  . . . . . .  	NUMBER	0002	
ERROR_I24_OUT_OF_PAPER . . . . .  	NUMBER	0009	
ERROR_I24_READ_FAULT . . . . . .  	NUMBER	000B	
ERROR_I24_SECTOR_NOT_FOUND . . .  	NUMBER	0008	
ERROR_I24_SEEK . . . . . . . . .  	NUMBER	0006	
ERROR_I24_WRITE_FAULT  . . . . .  	NUMBER	000A	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-11


ERROR_I24_WRITE_PROTECT  . . . .  	NUMBER	0000	
ERROR_I24_WRONG_DISK . . . . . .  	NUMBER	000F	
ERROR_INFO_NOT_SET . . . . . . .  	NUMBER	-0001	
ERROR_INVALID_ACCESS . . . . . .  	NUMBER	000C	
ERROR_INVALID_BLOCK  . . . . . .  	NUMBER	0009	
ERROR_INVALID_DATA . . . . . . .  	NUMBER	000D	
ERROR_INVALID_DRIVE  . . . . . .  	NUMBER	000F	
ERROR_INVALID_FUNCTION . . . . .  	NUMBER	0001	
ERROR_INVALID_HANDLE . . . . . .  	NUMBER	0006	
ERROR_INVALID_PARAMETER  . . . .  	NUMBER	0057	
ERROR_INVALID_PASSWORD . . . . .  	NUMBER	0056	
ERROR_LOCK_VIOLATION . . . . . .  	NUMBER	0021	
ERROR_NET_WRITE_FAULT  . . . . .  	NUMBER	0058	
ERROR_NOT_DOS_DISK . . . . . . .  	NUMBER	001A	
ERROR_NOT_ENOUGH_MEMORY  . . . .  	NUMBER	0008	
ERROR_NOT_READY  . . . . . . . .  	NUMBER	0015	
ERROR_NOT_SAME_DEVICE  . . . . .  	NUMBER	0011	
ERROR_NOT_SUPPORTED  . . . . . .  	NUMBER	0032	
ERROR_NO_MORE_FILES  . . . . . .  	NUMBER	0012	
ERROR_OUT_OF_PAPER . . . . . . .  	NUMBER	001C	
ERROR_OUT_OF_STRUCTS . . . . . .  	NUMBER	0038	
ERROR_OUT_OF_STRUCTURES  . . . .  	NUMBER	0054	
ERROR_PATH_NOT_FOUND . . . . . .  	NUMBER	0003	
ERROR_READ_FAULT . . . . . . . .  	NUMBER	001E	
ERROR_SECTOR_NOT_FOUND . . . . .  	NUMBER	001B	
ERROR_SEEK . . . . . . . . . . .  	NUMBER	0019	
ERROR_SHARING_BUFFER_EXCEEDED  .  	NUMBER	0024	
ERROR_SHARING_VIOLATION  . . . .  	NUMBER	0020	
ERROR_STATUS . . . . . . . . . .  	L BYTE	017E	IFSSEG
ERROR_SYS_COMP_NOT_LOADED  . . .  	NUMBER	005A	
ERROR_TOO_MANY_OPEN_FILES  . . .  	NUMBER	0004	
ERROR_WRITE_FAULT  . . . . . . .  	NUMBER	001D	
ERROR_WRITE_PROTECT  . . . . . .  	NUMBER	0013	
ERROR_WRONG_DISK . . . . . . . .  	NUMBER	0022	
EXEC . . . . . . . . . . . . . .  	NUMBER	004B	
EXEC_FUNC_NO_EXECUTE . . . . . .  	NUMBER	0001	
EXEC_FUNC_OVERLAY  . . . . . . .  	NUMBER	0002	
EXE_VALID_OLD_SIGNATURE  . . . .  	NUMBER	4D5A	
EXE_VALID_SIGNATURE  . . . . . .  	NUMBER	5A4D	
EXISTS_MASK  . . . . . . . . . .  	NUMBER	000F	
EXIST_ACT_FAIL . . . . . . . . .  	NUMBER	0000	
EXIST_ACT_OPEN . . . . . . . . .  	NUMBER	0001	
EXIST_ACT_REP_OPEN . . . . . . .  	NUMBER	0002	
EXIT . . . . . . . . . . . . . .  	NUMBER	004C	
EXIT_ABORT . . . . . . . . . . .  	NUMBER	0000	
EXIT_CTRL_C  . . . . . . . . . .  	NUMBER	0001	
EXIT_HARD_ERROR  . . . . . . . .  	NUMBER	0002	
EXIT_KEEP_PROCESS  . . . . . . .  	NUMBER	0003	
EXIT_TERMINATE . . . . . . . . .  	NUMBER	0000	
EXIT_TYPE  . . . . . . . . . . .  	V BYTE	0000	DATA	External
EXPECTED_VERSION . . . . . . . .  	NUMBER	0004	
EXTDRVR  . . . . . . . . . . . .  	NUMBER	0002	
EXTENTBIT  . . . . . . . . . . .  	NUMBER	0400	
EXTHANDLE  . . . . . . . . . . .  	NUMBER	0067	
EXTOPEN  . . . . . . . . . . . .  	NUMBER	006C	
EXT_EXISTS_FAIL  . . . . . . . .  	NUMBER	0000	
EXT_EXISTS_OPEN  . . . . . . . .  	NUMBER	0001	
EXT_FILE_NOT_EXISTS  . . . . . .  	NUMBER	0004	
EXT_NEXISTS_CREATE . . . . . . .  	NUMBER	0010	
EXT_OPEN_I24_OFF . . . . . . . .  	NUMBER	0002	
EXT_OPEN_ON  . . . . . . . . . .  	NUMBER	0001	

FALSE  . . . . . . . . . . . . .  	NUMBER	0000	
fAssign  . . . . . . . . . . . .  	L BYTE	017B	IFSSEG	Global
FCBDEVICE  . . . . . . . . . . .  	NUMBER	0040	
FCBMASK  . . . . . . . . . . . .  	NUMBER	00C0	
FCBNETWORK . . . . . . . . . . .  	NUMBER	0080	
FCBSHARE . . . . . . . . . . . .  	NUMBER	00C0	
FCBSPECIAL . . . . . . . . . . .  	NUMBER	0080	
FCB_CLOSE  . . . . . . . . . . .  	NUMBER	0010	
FCB_CREATE . . . . . . . . . . .  	NUMBER	0016	
FCB_DELETE . . . . . . . . . . .  	NUMBER	0013	
FCB_L_ATTR . . . . . . . . . . .  	BYTE	001E	
FCB_L_DRIVE  . . . . . . . . . .  	BYTE	0019	
FCB_L_FIRCLUS  . . . . . . . . .  	WORD	001A	
FCB_L_MFS  . . . . . . . . . . .  	WORD	001C	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-12


FCB_NETID  . . . . . . . . . . .  	DWORD	001C	
FCB_NET_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NET_HANDLE . . . . . . . . .  	WORD	001A	
FCB_NSLD_DRIVE . . . . . . . . .  	BYTE	0019	
FCB_NSLD_DRVPTR  . . . . . . . .  	DWORD	001A	
FCB_NSL_BITS . . . . . . . . . .  	BYTE	001A	
FCB_NSL_DIRPOS . . . . . . . . .  	BYTE	001F	
FCB_NSL_DIRSEC . . . . . . . . .  	WORD	001D	
FCB_NSL_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NSL_FIRCLUS  . . . . . . . .  	WORD	001B	
FCB_OPEN . . . . . . . . . . . .  	NUMBER	000F	
FCB_RANDOM_READ  . . . . . . . .  	NUMBER	0021	
FCB_RANDOM_READ_BLOCK  . . . . .  	NUMBER	0027	
FCB_RANDOM_WRITE . . . . . . . .  	NUMBER	0022	
FCB_RANDOM_WRITE_BLOCK . . . . .  	NUMBER	0028	
FCB_RENAME . . . . . . . . . . .  	NUMBER	0017	
FCB_SEQ_READ . . . . . . . . . .  	NUMBER	0014	
FCB_SEQ_WRITE  . . . . . . . . .  	NUMBER	0015	
FCB_SFN  . . . . . . . . . . . .  	BYTE	0018	
FCHK . . . . . . . . . . . . . .  	NUMBER	0001	
FDELIM . . . . . . . . . . . . .  	NUMBER	0002	
FFCB . . . . . . . . . . . . . .  	NUMBER	0008	
FID_10 . . . . . . . . . . . . .  	L NEAR	08F4	IFSSEG
FID_1000 . . . . . . . . . . . .  	L NEAR	093F	IFSSEG
FID_20 . . . . . . . . . . . . .  	L NEAR	08FB	IFSSEG
FID_30 . . . . . . . . . . . . .  	L NEAR	0929	IFSSEG
FID_40 . . . . . . . . . . . . .  	L NEAR	092E	IFSSEG
FID_980  . . . . . . . . . . . .  	L NEAR	093B	IFSSEG
FID_990  . . . . . . . . . . . .  	L NEAR	093E	IFSSEG
FILDIRENT  . . . . . . . . . . .  	NUMBER	0010	
FILESYS_STATUS . . . . . . . . .  	NUMBER	1000	
FILE_CREATED . . . . . . . . . .  	NUMBER	0002	
FILE_OPENED  . . . . . . . . . .  	NUMBER	0001	
FILE_REPLACED  . . . . . . . . .  	NUMBER	0003	
FILE_TIMES . . . . . . . . . . .  	NUMBER	0057	
FILPERPROC . . . . . . . . . . .  	NUMBER	0014	
FIND_FIRST . . . . . . . . . . .  	NUMBER	004E	
FIND_IFS_DRIVER  . . . . . . . .  	N PROC	08E3	IFSSEG	Global	Length = 0062
FIND_NEXT  . . . . . . . . . . .  	NUMBER	004F	
FIND_SECTOR  . . . . . . . . . .  	NUMBER	0008	
FLUSH_DOS_BUFFERS  . . . . . . .  	NUMBER	000D	
FORCE_I24_FAIL . . . . . . . . .  	NUMBER	0020	
fPrint . . . . . . . . . . . . .  	L BYTE	017C	IFSSEG	Global
FREE_DOS_BUFFER  . . . . . . . .  	NUMBER	000C	
FROM_DISK_RESET  . . . . . . . .  	NUMBER	0004	
FROM_DOS_WRITE . . . . . . . . .  	NUMBER	0010	
FROM_STRING_OUTPUT . . . . . . .  	NUMBER	0008	
FSPCHK . . . . . . . . . . . . .  	NUMBER	0004	
FS_DRIVER_NOT_FOUND  . . . . . .  	NUMBER	0043	
FUNC_CLOSE . . . . . . . . . . .  	NUMBER	0000	
FUNC_COMMIT  . . . . . . . . . .  	NUMBER	0001	
FUNC_FLUSH . . . . . . . . . . .  	NUMBER	0000	
FUNC_FLUSH_INVALIDATE  . . . . .  	NUMBER	0001	
FUNC_GET_BY_HANDLE . . . . . . .  	NUMBER	0000	
FUNC_GET_BY_NAME . . . . . . . .  	NUMBER	0002	
FUNC_LOCK  . . . . . . . . . . .  	NUMBER	0000	
FUNC_SET_BY_HANDLE . . . . . . .  	NUMBER	0001	
FUNC_SET_BY_NAME . . . . . . . .  	NUMBER	0003	
FUNC_UNLOCK  . . . . . . . . . .  	NUMBER	0001	
F_AUX  . . . . . . . . . . . . .  	NUMBER	0010	
F_CARRY  . . . . . . . . . . . .  	NUMBER	0001	
F_DIRECTION  . . . . . . . . . .  	NUMBER	0400	
F_INTERRUPT  . . . . . . . . . .  	NUMBER	0200	
F_OVERFLOW . . . . . . . . . . .  	NUMBER	0800	
F_PARITY . . . . . . . . . . . .  	NUMBER	0004	
F_SIGN . . . . . . . . . . . . .  	NUMBER	0080	
F_TRACE  . . . . . . . . . . . .  	NUMBER	0100	
F_ZERO . . . . . . . . . . . . .  	NUMBER	0040	

GAM_20 . . . . . . . . . . . . .  	L NEAR	0254	IFSSEG
GAM_40 . . . . . . . . . . . . .  	L NEAR	0259	IFSSEG
GAM_60 . . . . . . . . . . . . .  	L NEAR	0267	IFSSEG
GENIOCTL . . . . . . . . . . . .  	NUMBER	0013	
GEN_IOCTL_BY_DEVNUM  . . . . . .  	NUMBER	0000	
GEN_IOCTL_BY_HANDLE  . . . . . .  	NUMBER	0001	
GEN_IOCTL_FN_TST . . . . . . . .  	NUMBER	0020	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-13


GEN_IOCTL_RD_TRK . . . . . . . .  	NUMBER	0060	
GEN_IOCTL_WRT_TRK  . . . . . . .  	NUMBER	0040	
GETCURRENTPSP  . . . . . . . . .  	NUMBER	0062	
GETEXTCNTRY  . . . . . . . . . .  	NUMBER	0065	
GETEXTENDEDERROR . . . . . . . .  	NUMBER	0059	
GETSETCDPG . . . . . . . . . . .  	NUMBER	0066	
GETSETMEDIAID  . . . . . . . . .  	NUMBER	0069	
GET_ASSIGN_LIST  . . . . . . . .  	NUMBER	0002	
GET_ASSIGN_MODE  . . . . . . . .  	NUMBER	0021	
GET_CURRENT_PDB  . . . . . . . .  	NUMBER	0051	
GET_DATE . . . . . . . . . . . .  	NUMBER	002A	
GET_DEFAULT_DPB  . . . . . . . .  	NUMBER	001F	
GET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	0019	
GET_DMA  . . . . . . . . . . . .  	NUMBER	002F	
GET_DOS_VALUE  . . . . . . . . .  	NUMBER	0020	
GET_DPB  . . . . . . . . . . . .  	NUMBER	0032	
GET_DRIVE_FREESPACE  . . . . . .  	NUMBER	0036	
GET_FCB_FILE_LENGTH  . . . . . .  	NUMBER	0023	
GET_FCB_POSITION . . . . . . . .  	NUMBER	0024	
GET_IFSFUNC_ITEM . . . . . . . .  	N PROC	02A6	IFSSEG	Global	Length = 02A2
GET_IFSFUNC_ITEM2  . . . . . . .  	L NEAR	02AF	IFSSEG	Global
GET_IFSFUNC_ITEM3  . . . . . . .  	L NEAR	02B8	IFSSEG	Global
GET_IFS_DRIVER_NAME  . . . . . .  	N PROC	08C5	IFSSEG	Global	Length = 001E
GET_INDOS_FLAG . . . . . . . . .  	NUMBER	0034	
GET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0035	
GET_IN_VAR . . . . . . . . . . .  	NUMBER	0052	
GET_IN_VARS  . . . . . . . . . .  	NUMBER	0052	
GET_MODE . . . . . . . . . . . .  	NUMBER	0000	
GET_TIME . . . . . . . . . . . .  	NUMBER	002C	
GET_TRUNCATE_FLAG  . . . . . . .  	NUMBER	0007	
GET_UNC_FS_NAME  . . . . . . . .  	L NEAR	0000	IFSSEG	External
GET_UNC_ITEM_INFO  . . . . . . .  	N PROC	0A6C	IFSSEG	Global	Length = 00AB
GET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	0054	
GET_VERSION  . . . . . . . . . .  	NUMBER	0030	
GIDN_20  . . . . . . . . . . . .  	L NEAR	08D8	IFSSEG
GIDN_40  . . . . . . . . . . . .  	L NEAR	08DB	IFSSEG
GII_100  . . . . . . . . . . . .  	L NEAR	02FD	IFSSEG
GII_120  . . . . . . . . . . . .  	L NEAR	0305	IFSSEG
GII_140  . . . . . . . . . . . .  	L NEAR	0317	IFSSEG
GII_150  . . . . . . . . . . . .  	L NEAR	0343	IFSSEG
GII_160  . . . . . . . . . . . .  	L NEAR	0355	IFSSEG
GII_180  . . . . . . . . . . . .  	L NEAR	038E	IFSSEG
GII_20 . . . . . . . . . . . . .  	L NEAR	02BF	IFSSEG
GII_200  . . . . . . . . . . . .  	L NEAR	0396	IFSSEG
GII_210  . . . . . . . . . . . .  	L NEAR	03B1	IFSSEG
GII_220  . . . . . . . . . . . .  	L NEAR	03C1	IFSSEG
GII_240  . . . . . . . . . . . .  	L NEAR	03CE	IFSSEG
GII_280  . . . . . . . . . . . .  	L NEAR	03D1	IFSSEG
GII_40 . . . . . . . . . . . . .  	L NEAR	02CB	IFSSEG
GII_400  . . . . . . . . . . . .  	L NEAR	03D5	IFSSEG
GII_460  . . . . . . . . . . . .  	L NEAR	03DF	IFSSEG
GII_480  . . . . . . . . . . . .  	L NEAR	03F6	IFSSEG
GII_520  . . . . . . . . . . . .  	L NEAR	0408	IFSSEG
GII_540  . . . . . . . . . . . .  	L NEAR	0410	IFSSEG
GII_545  . . . . . . . . . . . .  	L NEAR	042C	IFSSEG
GII_550  . . . . . . . . . . . .  	L NEAR	0434	IFSSEG
GII_555  . . . . . . . . . . . .  	L NEAR	0452	IFSSEG
GII_560  . . . . . . . . . . . .  	L NEAR	045D	IFSSEG
GII_580  . . . . . . . . . . . .  	L NEAR	048F	IFSSEG
GII_60 . . . . . . . . . . . . .  	L NEAR	02D7	IFSSEG
GII_600  . . . . . . . . . . . .  	L NEAR	0497	IFSSEG
GII_610  . . . . . . . . . . . .  	L NEAR	04B2	IFSSEG
GII_620  . . . . . . . . . . . .  	L NEAR	04C2	IFSSEG
GII_630  . . . . . . . . . . . .  	L NEAR	04CC	IFSSEG
GII_640  . . . . . . . . . . . .  	L NEAR	04E0	IFSSEG
GII_660  . . . . . . . . . . . .  	L NEAR	0519	IFSSEG
GII_680  . . . . . . . . . . . .  	L NEAR	0532	IFSSEG
GII_80 . . . . . . . . . . . . .  	L NEAR	02EB	IFSSEG
GII_800  . . . . . . . . . . . .  	L NEAR	0536	IFSSEG
GII_820  . . . . . . . . . . . .  	L NEAR	0542	IFSSEG
GUI_05 . . . . . . . . . . . . .  	L NEAR	0A78	IFSSEG
GUI_10 . . . . . . . . . . . . .  	L NEAR	0AA6	IFSSEG
GUI_1000 . . . . . . . . . . . .  	L NEAR	0B16	IFSSEG
GUI_15 . . . . . . . . . . . . .  	L NEAR	0AE3	IFSSEG
GUI_20 . . . . . . . . . . . . .  	L NEAR	0AF6	IFSSEG
GUI_40 . . . . . . . . . . . . .  	L NEAR	0B0F	IFSSEG
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-14



HANDLE_FAIL_I24  . . . . . . . .  	NUMBER	0100	
HONGEUL  . . . . . . . . . . . .  	NUMBER	0063	

I24_AREA . . . . . . . . . . . .  	NUMBER	0006	
I24_CLASS  . . . . . . . . . . .  	NUMBER	0080	
I24_OPERATION  . . . . . . . . .  	NUMBER	0001	
I24_RESP_IGNORE  . . . . . . . .  	NUMBER	0000	
I24_RESP_RETRY . . . . . . . . .  	NUMBER	0001	
I2F5_MSGRET  . . . . . . . . . .  	NUMBER	0002	
IA_100 . . . . . . . . . . . . .  	L NEAR	08B6	IFSSEG
IA_1000  . . . . . . . . . . . .  	L NEAR	08C2	IFSSEG
IA_20  . . . . . . . . . . . . .  	L NEAR	0836	IFSSEG
IA_40  . . . . . . . . . . . . .  	L NEAR	085C	IFSSEG
IA_60  . . . . . . . . . . . . .  	L NEAR	0866	IFSSEG
IA_70  . . . . . . . . . . . . .  	L NEAR	086B	IFSSEG
IA_80  . . . . . . . . . . . . .  	L NEAR	0871	IFSSEG
IA_90  . . . . . . . . . . . . .  	L NEAR	08AB	IFSSEG
IBM  . . . . . . . . . . . . . .  	ALIAS	 IBMVER		
IBMCOPYRIGHT . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPAN . . . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPVER  . . . . . . . . . . .  	ALIAS	 FALSE		
IBMVER . . . . . . . . . . . . .  	ALIAS	 TRUE		
ICOLON . . . . . . . . . . . . .  	NUMBER	003A	
IFSATTEND  . . . . . . . . . . .  	NUMBER	0004	
IFSATTSTART  . . . . . . . . . .  	NUMBER	0002	
IFSATTSTAT . . . . . . . . . . .  	NUMBER	0003	
IFSCHDIR . . . . . . . . . . . .  	NUMBER	0005	
IFSCLOSEFILE . . . . . . . . . .  	NUMBER	000E	
IFSCRITMSG . . . . . . . . . . .  	NUMBER	0006	
IFSDELFILE . . . . . . . . . . .  	NUMBER	0006	
IFSDEPIOCTL  . . . . . . . . . .  	NUMBER	0010	
IFSDEVICE  . . . . . . . . . . .  	NUMBER	8000	
IFSDEVIOCTL  . . . . . . . . . .  	NUMBER	0011	
IFSDISK  . . . . . . . . . . . .  	NUMBER	4000	
IFSDISKATTR  . . . . . . . . . .  	NUMBER	0002	
IFSDRIVERESET  . . . . . . . . .  	NUMBER	0001	
IFSDRV . . . . . . . . . . . . .  	L BYTE	015C	IFSSEG	Global
IFSEOCID . . . . . . . . . . . .  	NUMBER	0013	
IFSEOP . . . . . . . . . . . . .  	NUMBER	0012	
IFSEXECAPI . . . . . . . . . . .  	NUMBER	0005	
IFSFILEATTR  . . . . . . . . . .  	NUMBER	000F	
IFSFILTER  . . . . . . . . . . .  	NUMBER	0400	
IFSFINSTALLED  . . . . . . . . .  	NUMBER	00FF	
IFSFUNC_FLAGS  . . . . . . . . .  	L WORD	0171	IFSSEG	Global
IFSF_SWAP_END  . . . . . . . . .  	L BYTE	0164	IFSSEG	Global
IFSF_SWAP_START  . . . . . . . .  	L BYTE	0000	IFSSEG	Global
IFSINIT  . . . . . . . . . . . .  	NUMBER	0001	
IFSIOCTL . . . . . . . . . . . .  	NUMBER	0002	
IFSLOCKFILE  . . . . . . . . . .  	NUMBER	000D	
IFSLSEEKFILE . . . . . . . . . .  	NUMBER	000A	
IFSMKDIR . . . . . . . . . . . .  	NUMBER	0003	
IFSOPENFILE  . . . . . . . . . .  	NUMBER	0009	
IFSPROC_FLAGS  . . . . . . . . .  	L WORD	015A	IFSSEG	Global
IFSR . . . . . . . . . . . . . .  	L BYTE	0008	IFSSEG	Global	Length = 0048
IFSREADFILE  . . . . . . . . . .  	NUMBER	000B	
IFSREMOTE  . . . . . . . . . . .  	NUMBER	0800	
IFSRENFILE . . . . . . . . . . .  	NUMBER	0007	
IFSRMDIR . . . . . . . . . . . .  	NUMBER	0004	
IFSR_ACCESS_DENIED . . . . . . .  	NUMBER	0003	
IFSR_ALLOWED . . . . . . . . . .  	BYTE	001A	
IFSR_APIFUNC . . . . . . . . . .  	BYTE	0016	
IFSR_API_PARMS . . . . . . . . .  	BYTE	0026	
IFSR_BAD_FORMAT  . . . . . . . .  	NUMBER	-0001	
IFSR_BUFFER@ . . . . . . . . . .  	DWORD	0028	
IFSR_BUFSIZE . . . . . . . . . .  	WORD	002C	
IFSR_CATEGORY  . . . . . . . . .  	BYTE	002E	
IFSR_CTLFUNC . . . . . . . . . .  	BYTE	002F	
IFSR_DEVICE_CB@  . . . . . . . .  	DWORD	001E	
IFSR_DEVICE_ERROR  . . . . . . .  	NUMBER	0004	
IFSR_DEVICE_STATUS . . . . . . .  	BYTE	0028	
IFSR_DEVICE_TYPE_MISMATCH  . . .  	NUMBER	0004	
IFSR_DRIVER_ERROR  . . . . . . .  	NUMBER	0002	
IFSR_ERROR_ACTION  . . . . . . .  	BYTE	0018	
IFSR_ERROR_CLASS . . . . . . . .  	BYTE	0017	
IFSR_ERROR_LOCUS . . . . . . . .  	BYTE	0019	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-15


IFSR_FUNC  . . . . . . . . . . .  	BYTE	0026	
IFSR_I24_COUNT . . . . . . . . .  	BYTE	001B	
IFSR_I24_RESP  . . . . . . . . .  	BYTE	001C	
IFSR_INT21H_CRITER . . . . . . .  	NUMBER	0003	
IFSR_INT21H_ERROR  . . . . . . .  	NUMBER	0001	
IFSR_LSN . . . . . . . . . . . .  	WORD	0026	
IFSR_MAX_XMITT_SIZE  . . . . . .  	WORD	0022	
IFSR_NAME@ . . . . . . . . . . .  	DWORD	001A	
IFSR_NET_NAME_ID . . . . . . . .  	WORD	0024	
IFSR_NONSPEC_ERROR . . . . . . .  	NUMBER	0001	
IFSR_NOT_FOUND_ERROR . . . . . .  	NUMBER	0002	
IFSR_NO_ERROR  . . . . . . . . .  	NUMBER	0000	
IFSR_NO_FCN_SUPPORT  . . . . . .  	NUMBER	-0001	
IFSR_NO_SUBFCN_SUPPORT . . . . .  	NUMBER	-0002	
IFSR_OPEN_CB@  . . . . . . . . .  	DWORD	0022	
IFSR_PARMS@  . . . . . . . . . .  	DWORD	0018	
IFSR_PID . . . . . . . . . . . .  	WORD	0026	
IFSR_SUBFUNC . . . . . . . . . .  	BYTE	0028	
IFSR_TYPE  . . . . . . . . . . .  	BYTE	0016	
IFSR_USER_WORD . . . . . . . . .  	WORD	0020	
IFSSEARCHFILE  . . . . . . . . .  	NUMBER	0008	
IFSSEARCH_FIRST  . . . . . . . .  	NUMBER	0001	
IFSSEARCH_NEXT . . . . . . . . .  	NUMBER	0002	
IFSSEM . . . . . . . . . . . . .  	L BYTE	0163	IFSSEG	Global
IFSUNC . . . . . . . . . . . . .  	NUMBER	2000	
IFSUPDATECB  . . . . . . . . . .  	NUMBER	0007	
IFSUSESHARE  . . . . . . . . . .  	NUMBER	0001	
IFSWRITEFILE . . . . . . . . . .  	NUMBER	000C	
ifs_1000 . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
IFS_1000_J . . . . . . . . . . .  	NEAR	0797	IFSSEG
ifs_980  . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
IFS_980_J  . . . . . . . . . . .  	NEAR	0A75	IFSSEG
ifs_990  . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
IFS_990_J  . . . . . . . . . . .  	NEAR	0814	IFSSEG
IFS_ABORT  . . . . . . . . . . .  	N PROC	0822	IFSSEG	Global	Length = 00A3
IFS_ABSRW  . . . . . . . . . . .  	NUMBER	0001	
IFS_ASSOPER  . . . . . . . . . .  	N PROC	020F	IFSSEG	Global	Length = 0033
IFS_ATTRS  . . . . . . . . . . .  	L WORD	0173	IFSSEG	Global
IFS_CLOSE  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
IFS_DRIVE_RESET  . . . . . . . .  	NUMBER	0002	
IFS_HEADER . . . . . . . . . . .  	V DWORD	0000	DATA	External
IFS_IOCTL  . . . . . . . . . . .  	NUMBER	006B	
IFS_RESET_ENVIRONMENT  . . . . .  	N PROC	0816	IFSSEG	Global	Length = 000C
INSTALLED  . . . . . . . . . . .  	NUMBER	FFFF	
INSTALLEDDATA  . . . . . . . . .  	NUMBER	0000	
INTBASE  . . . . . . . . . . . .  	NUMBER	0080	
INTERNAT . . . . . . . . . . . .  	ALIAS	 FALSE		
INTERNATIONAL  . . . . . . . . .  	NUMBER	0038	
INTERNAT_BLOCK_MAX . . . . . . .  	NUMBER	0020	
INTTAB . . . . . . . . . . . . .  	NUMBER	0020	
INT_24_ERROR . . . . . . . . . .  	NUMBER	2000	
INT_ABORT  . . . . . . . . . . .  	ALIAS	 INTTAB		
INT_COMMAND  . . . . . . . . . .  	NUMBER	0021	
INT_CTRL_C . . . . . . . . . . .  	NUMBER	0023	
INT_DISK_READ  . . . . . . . . .  	NUMBER	0025	
INT_DISK_WRITE . . . . . . . . .  	NUMBER	0026	
INT_FASTCON  . . . . . . . . . .  	NUMBER	0029	
INT_FATAL_ABORT  . . . . . . . .  	NUMBER	0024	
INT_IBM  . . . . . . . . . . . .  	NUMBER	002A	
INT_KEEP_PROCESS . . . . . . . .  	NUMBER	0027	
INT_SPOOLER  . . . . . . . . . .  	NUMBER	0028	
INT_TERMINATE  . . . . . . . . .  	NUMBER	0022	
IOCTL  . . . . . . . . . . . . .  	NUMBER	0044	
IO_MODE_ID . . . . . . . . . . .  	NUMBER	0002	
ISCDS  . . . . . . . . . . . . .  	NUMBER	0080	
ISCIN  . . . . . . . . . . . . .  	NUMBER	0001	
ISCLOCK  . . . . . . . . . . . .  	NUMBER	0008	
ISCLOSE  . . . . . . . . . . . .  	NUMBER	0010	
ISCOUT . . . . . . . . . . . . .  	NUMBER	0002	
ISCREATE . . . . . . . . . . . .  	NUMBER	8000	
ISCRITIFS  . . . . . . . . . . .  	NUMBER	0002	
ISCTLFCN . . . . . . . . . . . .  	NUMBER	0001	
ISDUMMYCDS . . . . . . . . . . .  	NUMBER	0200	
ISFATBYDEV . . . . . . . . . . .  	NUMBER	2000	
ISGET  . . . . . . . . . . . . .  	NUMBER	0010	
ISINIT . . . . . . . . . . . . .  	NUMBER	2000	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-16


ISMSGRET . . . . . . . . . . . .  	NUMBER	8000	
ISNET  . . . . . . . . . . . . .  	NUMBER	1000	
ISNETWORK  . . . . . . . . . . .  	NUMBER	0400	
ISNULL . . . . . . . . . . . . .  	NUMBER	0004	
ISOLDCREATE  . . . . . . . . . .  	NUMBER	0008	
ISOLDOPEN  . . . . . . . . . . .  	NUMBER	0010	
ISREN  . . . . . . . . . . . . .  	NUMBER	0010	
ISRESETENVIRN  . . . . . . . . .  	NUMBER	4000	
ISSEQ  . . . . . . . . . . . . .  	NUMBER	0020	
ISSFT  . . . . . . . . . . . . .  	NUMBER	0040	
ISSHARE  . . . . . . . . . . . .  	NUMBER	0080	
ISSPEC . . . . . . . . . . . . .  	NUMBER	0010	

JAPAN  . . . . . . . . . . . . .  	ALIAS	 FALSE		

KANJI  . . . . . . . . . . . . .  	ALIAS	 FALSE		
KEEP_PROCESS . . . . . . . . . .  	NUMBER	0031	
KOREA  . . . . . . . . . . . . .  	ALIAS	 FALSE		

LCritNet . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
LENGTH_ATTEND  . . . . . . . . .  	NUMBER	001E	
LENGTH_ATTSTART  . . . . . . . .  	NUMBER	0022	
LENGTH_ATTSTAT . . . . . . . . .  	NUMBER	002A	
LENGTH_DEPIOCTL  . . . . . . . .  	NUMBER	0030	
LENGTH_DEVECHOCHECK_BUFFER . . .  	NUMBER	0001	
LENGTH_EOP . . . . . . . . . . .  	NUMBER	002A	
LOCKOPER . . . . . . . . . . . .  	NUMBER	005C	
LSEEK  . . . . . . . . . . . . .  	NUMBER	0042	

MACHINE_NAME . . . . . . . . . .  	NUMBER	0006	
MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MARK_SECTOR_CHANGED  . . . . . .  	NUMBER	0009	
MAXBUCKETINPAGE  . . . . . . . .  	NUMBER	0002	
MAXBUFFINBUCKET  . . . . . . . .  	NUMBER	000F	
MAX_PRE_STRING . . . . . . . . .  	NUMBER	0040	
MEMS . . . . . . . . . . . . . .  	NUMBER	0001	
MINOR_VERSION  . . . . . . . . .  	NUMBER	0000	
MINUS_ONE  . . . . . . . . . . .  	NUMBER	-0001	
MI_INT . . . . . . . . . . . . .  	NUMBER	00CD	
MI_LONG_CALL . . . . . . . . . .  	NUMBER	009A	
MI_LONG_JMP  . . . . . . . . . .  	NUMBER	00EA	
MI_LONG_RET  . . . . . . . . . .  	NUMBER	00CB	
MI_NEAR_RET  . . . . . . . . . .  	NUMBER	00C3	
MKDIR  . . . . . . . . . . . . .  	NUMBER	0039	
MODE2  . . . . . . . . . . . . .  	NUMBER	0002	
MOVE_DRIVER_NAME . . . . . . . .  	L NEAR	0000	IFSSEG	External
MR_ERRMSG_SEM  . . . . . . . . .  	NUMBER	0080	
MSNET_TIMING . . . . . . . . . .  	NUMBER	0000	
MSVER  . . . . . . . . . . . . .  	NUMBER	0000	
MULTDOS  . . . . . . . . . . . .  	NUMBER	0012	
MULTIFS  . . . . . . . . . . . .  	NUMBER	0011	
MULTNET  . . . . . . . . . . . .  	NUMBER	0011	
MULTSHARE  . . . . . . . . . . .  	NUMBER	0010	
MYNAME . . . . . . . . . . . . .  	V BYTE	0000	DATA	External

NET2DOS_DATE . . . . . . . . . .  	NUMBER	0023	
NET_CALL_INT . . . . . . . . . .  	NUMBER	002A	
NET_TRANS  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
NEWKEEPVAL . . . . . . . . . . .  	NUMBER	0008	
NEWNUMFCB  . . . . . . . . . . .  	NUMBER	0010	
NEW_EXPECTED_VERSION . . . . . .  	NUMBER	2605	
NEW_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
NEW_MINOR_VERSION  . . . . . . .  	NUMBER	0026	
NEXTCDS  . . . . . . . . . . . .  	L NEAR	0972	IFSSEG
NLSFUNC  . . . . . . . . . . . .  	NUMBER	0014	
NOTEXIST_ACT_CREATE  . . . . . .  	NUMBER	0001	
NOTEXIST_ACT_FAIL  . . . . . . .  	NUMBER	0000	
NOT_EXISTS_MASK  . . . . . . . .  	NUMBER	00F0	
NO_CODE_PAGE_CHECK . . . . . . .  	NUMBER	0100	
NO_CTRL_BREAK_FLAG . . . . . . .  	NUMBER	FDFF	
NO_DISABLE_EOF_I24 . . . . . . .  	NUMBER	FFBF	
NO_FORCE_I24_FAIL  . . . . . . .  	NUMBER	FFDF	
NO_FROM_DISK_RESET . . . . . . .  	NUMBER	FFFB	
NO_FROM_DOS_WRITE  . . . . . . .  	NUMBER	FFEF	
NO_FROM_STRING_OUTPUT  . . . . .  	NUMBER	FFF7	
NO_IFS_ABSRW . . . . . . . . . .  	NUMBER	FFFE	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-17


NO_IFS_DRIVERS . . . . . . . . .  	NUMBER	0040	
NO_IFS_DRIVE_RESET . . . . . . .  	NUMBER	FFFD	
NO_RETRY . . . . . . . . . . . .  	NUMBER	0000	
NULL_PTR . . . . . . . . . . . .  	NUMBER	-0001	

OEM_C1 . . . . . . . . . . . . .  	NUMBER	00F9	
OEM_C2 . . . . . . . . . . . . .  	NUMBER	00FA	
OEM_C3 . . . . . . . . . . . . .  	NUMBER	00FB	
OEM_C4 . . . . . . . . . . . . .  	NUMBER	00FC	
OEM_C5 . . . . . . . . . . . . .  	NUMBER	00FD	
OEM_C6 . . . . . . . . . . . . .  	NUMBER	00FE	
OEM_C7 . . . . . . . . . . . . .  	NUMBER	00FF	
OFFDONE  . . . . . . . . . . . .  	L NEAR	09C5	IFSSEG
OFFINC . . . . . . . . . . . . .  	L NEAR	09C1	IFSSEG
OFFLOOP  . . . . . . . . . . . .  	L NEAR	09A5	IFSSEG
OLDCREATENEW_FLAG  . . . . . . .  	NUMBER	0010	
OLDCREATE_FLAG . . . . . . . . .  	NUMBER	0112	
OLDCREATE_MODE . . . . . . . . .  	NUMBER	0002	
OLDOPEN_FLAG . . . . . . . . . .  	NUMBER	0101	
OLDOPEN_MODE . . . . . . . . . .  	NUMBER	2180	
ONLOOP . . . . . . . . . . . . .  	L NEAR	0967	IFSSEG
OPEN . . . . . . . . . . . . . .  	NUMBER	003D	
OPEN_FOR_BOTH  . . . . . . . . .  	NUMBER	0002	
OPEN_FOR_READ  . . . . . . . . .  	NUMBER	0000	
OPEN_FOR_WRITE . . . . . . . . .  	NUMBER	0001	
OUTTILBUSY . . . . . . . . . . .  	NUMBER	2000	
OWNHL  . . . . . . . . . . . . .  	NUMBER	000D	

PARSE_ERR_1  . . . . . . . . . .  	NUMBER	0001	
PARSE_ERR_10 . . . . . . . . . .  	NUMBER	000A	
PARSE_ERR_5  . . . . . . . . . .  	NUMBER	0005	
PARSE_ERR_6  . . . . . . . . . .  	NUMBER	0006	
PARSE_FILE_DESCRIPTOR  . . . . .  	NUMBER	0029	
PATHGEN  . . . . . . . . . . . .  	NUMBER	FFFF	
PATHPARSE  . . . . . . . . . . .  	NUMBER	0061	
PAUSE_MODE_OFF . . . . . . . . .  	NUMBER	0000	
PAUSE_MODE_ON  . . . . . . . . .  	NUMBER	0001	
PDB_APPEND . . . . . . . . . . .  	BYTE	003D	
PDB_INTERCON . . . . . . . . . .  	BYTE	003C	
POF_100  . . . . . . . . . . . .  	L NEAR	0A5A	IFSSEG
POF_1000 . . . . . . . . . . . .  	L NEAR	0A68	IFSSEG
POF_20 . . . . . . . . . . . . .  	L NEAR	0A05	IFSSEG
POF_40 . . . . . . . . . . . . .  	L NEAR	0A15	IFSSEG
POF_45 . . . . . . . . . . . . .  	L NEAR	0A2C	IFSSEG
POF_50 . . . . . . . . . . . . .  	L NEAR	0A39	IFSSEG
POF_60 . . . . . . . . . . . . .  	L NEAR	0A3C	IFSSEG
POF_80 . . . . . . . . . . . . .  	L NEAR	0A55	IFSSEG
PON_20 . . . . . . . . . . . . .  	L NEAR	09DD	IFSSEG
PREP_IFSR  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
PRINTER_GET_FLAGS  . . . . . . .  	NUMBER	0005	
PRINTER_GET_STRING . . . . . . .  	NUMBER	0003	
PRINTER_SET_FLAGS  . . . . . . .  	NUMBER	0004	
PRINTER_SET_STRING . . . . . . .  	NUMBER	0002	
PrintOff . . . . . . . . . . . .  	N PROC	09ED	IFSSEG	Global	Length = 007F
PrintOn  . . . . . . . . . . . .  	N PROC	09CF	IFSSEG	Global	Length = 001E
PRINT_ON . . . . . . . . . . . .  	NUMBER	0080	

QUERY_OS_TYPE  . . . . . . . . .  	NUMBER	0002	

RAW_CON_INPUT  . . . . . . . . .  	NUMBER	0007	
RAW_CON_IO . . . . . . . . . . .  	NUMBER	0006	
READ . . . . . . . . . . . . . .  	NUMBER	003F	
READ_DEVICE  . . . . . . . . . .  	NUMBER	0002	
READ_DOS_BUFFER  . . . . . . . .  	NUMBER	000B	
READ_SECTORS . . . . . . . . . .  	NUMBER	0002	
REDIRECTOR . . . . . . . . . . .  	NUMBER	FFFF	
REMHL  . . . . . . . . . . . . .  	NUMBER	000D	
RENAME . . . . . . . . . . . . .  	NUMBER	0056	
RESERVED_BITS_MASK . . . . . . .  	NUMBER	FE00	
RESET_ENVIRONMENT  . . . . . . .  	NUMBER	0002	
RESTCDS  . . . . . . . . . . . .  	L NEAR	097A	IFSSEG
RETRY  . . . . . . . . . . . . .  	NUMBER	0001	
RETURN_ASSIGN_MODE . . . . . . .  	N PROC	0242	IFSSEG	Global	Length = 0029
RET_L  . . . . . . . . . . . . .  	NEAR	0B2F	IFSSEG
RMDIR  . . . . . . . . . . . . .  	NUMBER	003A	

Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-18


SAM_20 . . . . . . . . . . . . .  	L NEAR	027F	IFSSEG
SAM_40 . . . . . . . . . . . . .  	L NEAR	0284	IFSSEG
SAM_60 . . . . . . . . . . . . .  	L NEAR	0297	IFSSEG
SAM_80 . . . . . . . . . . . . .  	L NEAR	029C	IFSSEG
SAVE_CB@ . . . . . . . . . . . .  	L DWORD	015F	IFSSEG	Global
SEARCH_FASTOPEN  . . . . . . . .  	NUMBER	0400	
SERVERCALL . . . . . . . . . . .  	NUMBER	005D	
SETBLOCK . . . . . . . . . . . .  	NUMBER	004A	
SETBP  . . . . . . . . . . . . .  	NUMBER	0800	
SETDEVICECB  . . . . . . . . . .  	NUMBER	0100	
SETDPB . . . . . . . . . . . . .  	NUMBER	0053	
SET_ASSIGN_MODE  . . . . . . . .  	N PROC	026B	IFSSEG	Global	Length = 0039
SET_CATEGORY . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
SET_CTRL_C_TRAPPING  . . . . . .  	NUMBER	0033	
SET_CURRENT_PDB  . . . . . . . .  	NUMBER	0050	
SET_DATE . . . . . . . . . . . .  	NUMBER	002B	
SET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	000E	
SET_DEPIOCTL_IFSR  . . . . . . .  	L NEAR	0000	IFSSEG	External
SET_DMA  . . . . . . . . . . . .  	NUMBER	001A	
SET_EXTERR_INFO  . . . . . . . .  	L NEAR	0000	IFSSEG	External
SET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0025	
SET_MODE . . . . . . . . . . . .  	NUMBER	0001	
SET_OEM_HANDLER  . . . . . . . .  	NUMBER	00F8	
SET_PRINTER_FLAG . . . . . . . .  	NUMBER	0064	
SET_THISIFS_UNC  . . . . . . . .  	L NEAR	0000	IFSSEG	External
SET_TIME . . . . . . . . . . . .  	NUMBER	002D	
SET_TRUNCATE_FLAG  . . . . . . .  	NUMBER	0008	
SET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	002E	
SFF1 . . . . . . . . . . . . . .  	L BYTE	0050	IFSSEG	Global	Length = 003E
SFF_CLOSE_NODATE . . . . . . . .  	NUMBER	4000	
SFF_DEVICE_RAW . . . . . . . . .  	NUMBER	0020	
SFF_FILECLEAN  . . . . . . . . .  	NUMBER	0040	
SFF_ISDEVICE . . . . . . . . . .  	NUMBER	0080	
SFF_ISFCB  . . . . . . . . . . .  	NUMBER	8000	
SFF_NET_SPOOL  . . . . . . . . .  	NUMBER	0800	
sftFCB . . . . . . . . . . . . .  	V DWORD	0000	DATA	External
SFT_SERIAL_NUMBER  . . . . . . .  	L WORD	0179	IFSSEG	Global
SF_BUSY  . . . . . . . . . . . .  	NUMBER	-0001	
SF_CLOSE_NODATE  . . . . . . . .  	NUMBER	4000	
SF_DEFAULT_NUMBER  . . . . . . .  	NUMBER	0005	
SF_FSDA  . . . . . . . . . . . .  	BYTE	0019	
SF_ISFCB . . . . . . . . . . . .  	NUMBER	8000	
SF_ISNET . . . . . . . . . . . .  	NUMBER	8000	
SF_LRU . . . . . . . . . . . . .  	WORD	0015	
SF_NETID . . . . . . . . . . . .  	BYTE	0019	
SF_NET_SPOOL . . . . . . . . . .  	NUMBER	0800	
SF_NO_INHERIT  . . . . . . . . .  	NUMBER	1000	
SF_OPENAGE . . . . . . . . . . .  	WORD	0017	
SF_PIPE  . . . . . . . . . . . .  	NUMBER	2000	
SF_SERIAL_ID . . . . . . . . . .  	WORD	000B	
SHAREF . . . . . . . . . . . . .  	NUMBER	0000	
SHARE_RETRY_COUNT  . . . . . . .  	NUMBER	0008	
SHARING_COMPAT . . . . . . . . .  	NUMBER	0000	
SHARING_DENY_BOTH  . . . . . . .  	NUMBER	0010	
SHARING_DENY_NONE  . . . . . . .  	NUMBER	0040	
SHARING_DENY_READ  . . . . . . .  	NUMBER	0030	
SHARING_DENY_WRITE . . . . . . .  	NUMBER	0020	
SHARING_MASK . . . . . . . . . .  	NUMBER	00F0	
SHARING_NET_FCB  . . . . . . . .  	NUMBER	0070	
SHARING_NO_INHERIT . . . . . . .  	NUMBER	0080	
STBUI  . . . . . . . . . . . . .  	NUMBER	0200	
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDON  . . . . . . . . . . . . .  	NUMBER	0100	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
STD_AUX_INPUT  . . . . . . . . .  	NUMBER	0003	
STD_AUX_OUTPUT . . . . . . . . .  	NUMBER	0004	
STD_CON_INPUT  . . . . . . . . .  	NUMBER	0001	
STD_CON_INPUT_FLUSH  . . . . . .  	NUMBER	000C	
STD_CON_INPUT_NO_ECHO  . . . . .  	NUMBER	0008	
STD_CON_INPUT_STATUS . . . . . .  	NUMBER	000B	
STD_CON_OUTPUT . . . . . . . . .  	NUMBER	0002	
STD_CON_STRING_INPUT . . . . . .  	NUMBER	000A	
STD_CON_STRING_OUTPUT  . . . . .  	NUMBER	0009	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-19


STD_PRINTER_OUTPUT . . . . . . .  	NUMBER	0005	
STECODE  . . . . . . . . . . . .  	NUMBER	00FF	
STERR  . . . . . . . . . . . . .  	NUMBER	8000	
SUBFUNC_EA . . . . . . . . . . .  	NUMBER	0002	
SUBFUNC_EA_NAMES . . . . . . . .  	NUMBER	0003	
SUBFUNC_INLINE . . . . . . . . .  	NUMBER	0000	
SysInitTable . . . . . . . . . .  	V BYTE	0000	DATA	External

TEMPBUF  . . . . . . . . . . . .  	V BYTE	0000	IFSSEG	External
TEMPLEN  . . . . . . . . . . . .  	NUMBER	0086	
THISCDS  . . . . . . . . . . . .  	V DWORD	0000	DATA	External
THISDFL  . . . . . . . . . . . .  	L DWORD	0004	IFSSEG	Global
THISIFS  . . . . . . . . . . . .  	L DWORD	0000	IFSSEG	Global
THISIFS_SET  . . . . . . . . . .  	NUMBER	0002	
THISSFT  . . . . . . . . . . . .  	V DWORD	0000	DATA	External
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	
TRUEBYTE . . . . . . . . . . . .  	NUMBER	00FF	
TRUNCATE_FLAG  . . . . . . . . .  	L BYTE	017D	IFSSEG	Global
TYPE0  . . . . . . . . . . . . .  	NUMBER	0000	
TYPE1  . . . . . . . . . . . . .  	NUMBER	0001	
TYPE_DEVICE  . . . . . . . . . .  	NUMBER	0001	
TYPE_DRIVE . . . . . . . . . . .  	NUMBER	0002	
TYPE_NET_DEVICE  . . . . . . . .  	NUMBER	0003	
TYPE_NET_DRIVE . . . . . . . . .  	NUMBER	0004	
TYPE_NONE  . . . . . . . . . . .  	NUMBER	0000	

UNC_FS_HDR . . . . . . . . . . .  	L DWORD	016D	IFSSEG	Global
UNC_INSTALLED  . . . . . . . . .  	NUMBER	0080	
UNLINK . . . . . . . . . . . . .  	NUMBER	0041	
USEROPER . . . . . . . . . . . .  	NUMBER	005E	
USER_WORD  . . . . . . . . . . .  	L WORD	02A4	IFSSEG
USE_SYSTEM_TIMEDATE  . . . . . .  	NUMBER	0000	
USE_USER_TIMEDATE  . . . . . . .  	NUMBER	0001	
UTIL_ERR_4 . . . . . . . . . . .  	NUMBER	0004	

VERIFY_INFORMATION . . . . . . .  	NUMBER	0004	

WAITPROCESS  . . . . . . . . . .  	NUMBER	004D	
WRITE  . . . . . . . . . . . . .  	NUMBER	0040	
WRITE_DEVICE . . . . . . . . . .  	NUMBER	0003	
WRITE_DOS_BUFFER . . . . . . . .  	NUMBER	000A	
WRITE_SECTORS  . . . . . . . . .  	NUMBER	0003	

X25_SPECIAL  . . . . . . . . . .  	NUMBER	0800	
XCHGP  . . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
XDUP . . . . . . . . . . . . . .  	NUMBER	0045	
XDUP2  . . . . . . . . . . . . .  	NUMBER	0046	
XNAMETRANS . . . . . . . . . . .  	NUMBER	0060	

ZERO . . . . . . . . . . . . . .  	NUMBER	0000	

??0000 . . . . . . . . . . . . .  	L NEAR	021B	IFSSEG
??0001 . . . . . . . . . . . . .  	L NEAR	0264	IFSSEG
??0002 . . . . . . . . . . . . .  	L NEAR	0269	IFSSEG
??0003 . . . . . . . . . . . . .  	L NEAR	027D	IFSSEG
??0004 . . . . . . . . . . . . .  	L NEAR	0282	IFSSEG
??0005 . . . . . . . . . . . . .  	L NEAR	0295	IFSSEG
??0006 . . . . . . . . . . . . .  	L NEAR	029A	IFSSEG
??0007 . . . . . . . . . . . . .  	L NEAR	02A2	IFSSEG
??0008 . . . . . . . . . . . . .  	L NEAR	03BE	IFSSEG
??0009 . . . . . . . . . . . . .  	L NEAR	04BF	IFSSEG
??000A . . . . . . . . . . . . .  	L NEAR	04DE	IFSSEG
??000B . . . . . . . . . . . . .  	L NEAR	052F	IFSSEG
??000C . . . . . . . . . . . . .  	L NEAR	0540	IFSSEG
??000D . . . . . . . . . . . . .  	L NEAR	0547	IFSSEG
??000E . . . . . . . . . . . . .  	L NEAR	055F	IFSSEG
??000F . . . . . . . . . . . . .  	L NEAR	0590	IFSSEG
??0010 . . . . . . . . . . . . .  	L NEAR	05C0	IFSSEG
??0011 . . . . . . . . . . . . .  	L NEAR	0612	IFSSEG
??0012 . . . . . . . . . . . . .  	L NEAR	0635	IFSSEG
??0013 . . . . . . . . . . . . .  	L NEAR	0696	IFSSEG
??0014 . . . . . . . . . . . . .  	L NEAR	06A6	IFSSEG
??0015 . . . . . . . . . . . . .  	L NEAR	06DE	IFSSEG
??0016 . . . . . . . . . . . . .  	L NEAR	06E8	IFSSEG
??0017 . . . . . . . . . . . . .  	L NEAR	0707	IFSSEG
??0018 . . . . . . . . . . . . .  	L NEAR	0710	IFSSEG
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:15:59
IFSFUNC SESSION ROUTINES - IFS Attach Routines					 ;AN000; Symbols-20


??0019 . . . . . . . . . . . . .  	L NEAR	074B	IFSSEG
??001A . . . . . . . . . . . . .  	L NEAR	0760	IFSSEG
??001B . . . . . . . . . . . . .  	L NEAR	0772	IFSSEG
??001C . . . . . . . . . . . . .  	L NEAR	0797	IFSSEG
??001D . . . . . . . . . . . . .  	L NEAR	07F0	IFSSEG
??001E . . . . . . . . . . . . .  	L NEAR	0805	IFSSEG
??001F . . . . . . . . . . . . .  	L NEAR	0814	IFSSEG
??0020 . . . . . . . . . . . . .  	L NEAR	08C4	IFSSEG
??0021 . . . . . . . . . . . . .  	L NEAR	08E2	IFSSEG
??0022 . . . . . . . . . . . . .  	L NEAR	0944	IFSSEG
??0023 . . . . . . . . . . . . .  	L NEAR	0979	IFSSEG
??0024 . . . . . . . . . . . . .  	L NEAR	09CE	IFSSEG
??0025 . . . . . . . . . . . . .  	L NEAR	0A6B	IFSSEG
??0026 . . . . . . . . . . . . .  	L NEAR	0A75	IFSSEG
??0027 . . . . . . . . . . . . .  	L NEAR	0AA5	IFSSEG
??0028 . . . . . . . . . . . . .  	L NEAR	0B16	IFSSEG
??0029 . . . . . . . . . . . . .  	L NEAR	0B2F	IFSSEG
?PLM . . . . . . . . . . . . . .  	NUMBER	0000	
?WIN . . . . . . . . . . . . . .  	NUMBER	0000	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  ifssess		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   5654 Source  Lines
   9337 Total   Lines
   1450 Symbols

  41630 + 107837 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
