Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-1


				        PAGE    ,132                            ;                                       ;AN000;
				;       SCCSID = @(#)ifsfile.asm        1.0 87/05/11                                     ;AN000;
				TITLE   IFS FILE ROUTINES - Routines for IFS dispatch                                    ;AN000;
				NAME    IFSFILE                                                                          ;AN000;
				;************************************************************************************
				;
				; FILE (WFP_START) related Network calls
				;
				;   IFS_DISK_INFO
				;   IFS_SEQ_SET_FILE_ATTRIBUTE
				;   IFS_SET_FILE_ATTRIBUTE
				;   IFS_SEQ_GET_FILE_INFO
				;   IFS_GET_FILE_INFO
				;   IFS_SEQ_RENAME
				;   IFS_RENAME
				;   IFS_SEQ_DELETE
				;   IFS_DELETE
				;   IFS_SEQ_OPEN
				;   IFS_OPEN
				;   IFS_SEQ_CREATE
				;   IFS_CREATE
				;   IFS_SEQ_XOPEN
				;   IFS_XOPEN
				;   IFS_SEQ_SEARCH_FIRST
				;   IFS_SEQ_SEARCH_NEXT
				;   IFS_SEARCH_FIRST
				;   IFS_SEARCH_NEXT
				;   OPEN_CHECK_SEQ
				;
				; Programming notes:
				;   Old redirector segmentation and DOS interface preserved.
				;   Routine prologues are accurate for input/output.
				;   However, the pseudocode was not kept up to date.
				;   Use it for a rough idea of the routine function.
				;
				; REVISION HISTORY:
				;       A000    Original version 4.00 - May 1987
				;       A001    PTM 316 - Fix search next drive byte interpretation
				;                         Set drive number in DMAADD
				;       A002    PTM 845 - Disk info ignored
				;       A003    PTM 869 - Lock failure due to sf_ifs_hdr not set
				;       A004    DCR 213 - SFT Serial number
				;       A005    PTM 849 - Printer open problems
				;       A006    PTM 1518- open mode/flag finalized
				;       A007    PTM ????- Action Taken not set on Extended open           10/27 FEIGENBAUM
				;       A008    PTM ????- Old Open/Creates pass parms list                10/27 FEIGENBAUM
				;       A009    PTM 2247- Delete does not return carry on error           11/3  RG
				;       A010    PTM 2248- Old Create mode incorrect - must be 2           11/3  RG
				;       A011    DCR 285 - Remove Extended Attribute/Lock support           1/88 RG
				;       A012    PTM 3968- set sft time/date on create                     3/25/88 RMG
				;       A013            - sft analysis changes                            3/25/88 RMG
				;       A014    Austin Deviceless Attach problems                         3/28/88 RMG
				;       A015    P4392     SFT change - attr_hi gone                       4/19/88 RMG
				;       A016    P4801     File size segment not right                     5/10/88 RMG
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-2


				;       A017    P????     DS not preserved during CALLBACK                5/13/88 RPS
				; LOC - 486
				;
				;************************************************************************************
				
				.list                                                                                    ;AN000;
				                                                                                         ;AN000;
				AsmVars <IBM, Installed, DEBUG>                                                          ;AN000;
				                                                                                         ;AN000;
				; then define the base code segment of the ifsfunc support first                         ;AN000;
				                                                                                         ;AN000;
 0000				IFSSEG  SEGMENT BYTE PUBLIC 'IFSSEG'                                                     ;AN000;
 0000				IFSSEG  ENDS                                                                             ;AN000;
				                                                                                         ;AN000;
				; include the rest of the segment definitions for normal MSDOS                           ;AN000;
				                                                                                         ;AN000;
				include dosseg.asm                                                                       ;AN000;
			     C	;	SCCSID = @(#)dosseg.asm	1.1 85/04/10
			     C	;	SCCSID = @(#)dosseg.asm	1.1 85/04/10
			     C	;
			     C	; segment ordering for MSDOS
			     C	;
			     C	
 0000                        C	START		SEGMENT BYTE PUBLIC 'START'
 0000                        C	START		ENDS
			     C	
 0000                        C	CONSTANTS	SEGMENT WORD PUBLIC 'CONST'
 0000                        C	CONSTANTS	ENDS
			     C	
 0000                        C	DATA		SEGMENT WORD PUBLIC 'DATA'
 0000                        C	DATA		ENDS
			     C	
 0000                        C	TABLE		SEGMENT BYTE PUBLIC 'TABLE'
 0000                        C	TABLE		ENDS
			     C	
 0000                        C	CODE		SEGMENT BYTE PUBLIC 'CODE'
 0000                        C	CODE		ENDS
			     C	
 0000                        C	LAST		SEGMENT PARA PUBLIC 'LAST'
 0000                        C	LAST		ENDS
			     C	
			     C	DOSGROUP    GROUP   START,CONSTANTS,DATA,TABLE,CODE,LAST
				                                                                                         ;AN000;
 0000				DATA            SEGMENT WORD PUBLIC 'DATA'                                               ;AN000;
				        ;DOSGROUP Data                                                                   ;AN000;
				        Extrn   REN_WFP:WORD                                                             ;AN000;
				        Extrn   WFP_START:WORD                                                           ;AN000;
				        Extrn   SATTRIB:BYTE                                                             ;AN000;
				        Extrn   ATTRIB:BYTE                                                              ;AN000;
				        Extrn   THISCDS:DWORD                                                            ;AN000;
				        Extrn   THISSFT:DWORD                                                            ;AN000;
				        Extrn   DMAADD:DWORD                                                             ;AN000;
				        Extrn   CDSADDR:DWORD                                                            ;AN000;
				        Extrn   SAVE_BX:WORD                                                             ;AN000;
				        Extrn   SAVE_CX:WORD                                                             ;AN000;
				        Extrn   SAVE_DX:WORD                                                             ;AN000;
				        Extrn   SAVE_SI:WORD                                                             ;AN000;
				        Extrn   SAVE_DI:WORD                                                             ;AN000;
				        Extrn   SAVE_DS:WORD                                                             ;AN000;
				        Extrn   SAVE_ES:WORD                                                             ;AN000;
				        Extrn   Name1:BYTE                                                               ;AN000;
				        Extrn   DEVPT:DWORD                                                              ;AN000;
				        Extrn   CPSWFLAG:BYTE
				        Extrn   COUNTRY_CDPG:BYTE
 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                                                                        ;AN000;
				        Extrn   IFSR:WORD                                                                ;AN000;
				        Extrn   IFSDRV:BYTE                                                              ;AN000;
				        Extrn   IFSPROC_FLAGS:WORD                                                       ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-3
                                                            

				        Extrn   UNC_FS_HDR:DWORD                                                         ;AN000;
				        Extrn   THISIFS:DWORD                                                            ;AN000;
				        Extrn   THISDFL:DWORD                                                            ;AN000;
				        Extrn   DEVICE_CB@_OFFSET:WORD                                                   ;AN000;
				        Extrn   SFT_SERIAL_NUMBER:WORD                                                   ;AN004;
				        Extrn   fAssign:BYTE                                                             ;AN014;
				                                                                                         ;AN000;
				BREAK <IFS_DISK_INFO Get disk Info>                                                      ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-4
IFS_DISK_INFO Get disk Info                                 

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_DISK_INFO                                                                          ;AN000;
				;                                                                                        ;AN000;
				; Input:                                                                                 ;AN000;
				;       ES:DI -> CDS  (not NULL)                                                         ;AN000;
				;       DS    -> DOSGROUP                                                                ;AN000;
				; Function:                                                                              ;AN000;
				;     Prep IFSRH:                                                                        ;AN000;
				;     *  IFSR_LENGTH      DW     48       ; Total length of request                      ;AN000;
				;     *  IFSR_FUNCTION    DB      4       ; Execute API function                         ;AN000;
				;      + IFSR_RETCODE     DW      ?                                                      ;AN000;
				;      + IFSR_RETCLASS    DB      ?                                                      ;AN000;
				;        IFSR_RESV1       DB     16 DUP(0)                                               ;AN000;
				;     *  IFSR_APIFUNC     DB      2       ; Disk Attributes                              ;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      ?       ; Call CDS_TO_CD to convert CDS to CD          ;AN000;
				;                                        ; and set this as pointer to it.                ;AN000;
				;        IFSR_OPEN_CB@    DD      ?                                                      ;AN000;
				;      + IFSR_ALLOCUNITS  DW      number of allocation units                             ;AN000;
				;      + IFSR_ALLOCSIZE   DW      allocation unit sectors                                ;AN000;
				;      + IFSR_SECTSIZE    DW      sector size                                            ;AN000;
				;      + IFSR_AVAILALLOC  DW      free allocation units                                  ;AN000;
				;      + IFSR_FSID        DB      file system media id                                   ;AN000;
				;        IFSR_RESV3       DB      0                                                      ;AN000;
				;                                                                                        ;AN000;
				;     CALL routine, CALL_IFS, with pointer to CURDIR_IFSR_HDR                            ;AN000;
				;     IF IFSR_RETCODE = 0 THEN                                                           ;AN000;
				;        DO                                                                              ;AN000;
				;          Call CD_TO_CDS to update CDS                                                  ;AN000;
				;          Set:                                                                          ;AN000;
				;             DX = IFSR_AVAILALLOC                                                       ;AN000;
				;             BX = IFSR_ALLOCUNITS                                                       ;AN000;
				;             CX = IFSR_SECTSIZE                                                         ;AN000;
				;             AL = IFSR_ALLOCSIZE                                                        ;AN000;
				;             AH = IFSR_FSID                                                             ;AN000;
				;          Clear carry                                                                   ;AN000;
				;        ENDDO                                                                           ;AN000;
				;     ELSE DO                                                                            ;AN000;
				;            Put error code in AX                                                        ;AN000;
				;            Set carry                                                                   ;AN000;
				;          ENDDO                                                                         ;AN000;
				;     ENDIF                                                                              ;AN000;
				;                                                                                        ;AN000;
				; Output:                                                                                ;AN000;
				;       DX = Number of free allocation units                                             ;AN000;
				;       BX = Total Number of allocation units on disk                                    ;AN000;
				;       CX = Sector size                                                                 ;AN000;
				;       AL = Sectors per allocation unit                                                 ;AN000;
				;       AH = Media ID BYTE                                                               ;AN000;
				;       Carry set if error                                                               ;AN000;
				;                                                                                        ;AN000;
				; Regs: Segs and DI preserved, others destroyed                                          ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_DISK_INFO,NEAR                                                   ;AN000;
 0000                        1	IFS_DISK_INFO    PROC    NEAR 
				ASSUME  DS:DOSGROUP,ES:NOTHING                                                           ;AN000;
				                                                                                         ;AN000;
 0000  8B C7			        MOV     AX,DI                           ; set ifsDrv for possible I24            ;AN000;
				        invoke  IFSDrvFromCDS                                                            ;AN000;
 0002  E8 0000 E             1		CALL    IFSDrvFromCDS 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for diskattr               ;AN000;
				        ifsr_api_def  DISKATTR                                                           ;AN000;
 0005  2E: C7 06 0000 E 0000	        MOV     CS:IFSPROC_FLAGS,ZERO           ;  & processing flags                    ;AN000;
				                                                                                         ;AN000;
 000C  06			        PUSH    ES                              ; set ds:si -> cds                       ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-5
IFS_DISK_INFO Get disk Info                                 

 000D  1F			        POP     DS                                                                       ;AN000;
 000E  8B F7			        MOV     SI,DI                                                                    ;AN000;
				                                                                                         ;AN000;
				        invoke  PREP_IFSR                       ; init ifsr                              ;AN000;
 0010  E8 0000 E             1		CALL    PREP_IFSR 
				        SaveReg <DS,SI>                         ; save for cd_to_cds                     ;AN000;
 0013  1E                    2		PUSH    DS 
 0014  56                    2		PUSH    SI 
 0015  2E: C7 06 0000 E 001E	        MOV     CS:DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@                                     ;AN000;
				        invoke  CDS_TO_CD                       ; CDS: sets [THISIFS]                    ;AN000;
 001C  E8 0000 E             1		CALL    CDS_TO_CD 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           IFSR_DEVICE_CB@              ;AN000;
				                                                ;           ds - IFSSEG                  ;AN000;
 001F  26: C7 07 0030		        MOV     ES:[BX.IFSR_LENGTH],LENGTH_DISKATTR         ; prep IFSRH                 ;AN000;
 0024  26: C6 47 02 05		        MOV     ES:[BX.IFSR_FUNCTION],IFSEXECAPI                                         ;AN000;
 0029  26: C6 47 16 02		        MOV     ES:[BX.IFSR_APIFUNC],IFSDISKATTR                                         ;AN000;
				                                                                                         ;AN000;
				        invoke  CALL_IFS                        ; call fs with diskattr request          ;AN000;
 002E  E8 0000 E             1		CALL    CALL_IFS 
				                                                                                         ;AN000;
 0031  73 05			        JNC     DA_20                                                                    ;AN000;
				        RestoreReg <DI,ES>                      ; error - restore stack                  ;AN000;
 0033  5F                    2		POP     DI 
 0034  07                    2		POP     ES 
 0035  E9 0167 R		        JMP     FA_1000                         ;         go return                      ;AN000;
 0038				DA_20:                                                                                   ;AN000;
 0038  26: 8B 57 2C		        MOV     DX,ES:[BX.IFSR_AVAILALLOC]      ; no error - load return regs            ;AN000;
 003C  26: 8B 4F 2A		        MOV     CX,ES:[BX.IFSR_SECTSIZE]                                                 ;AN000;
 0040  26: 8B 47 28		        MOV     AX,ES:[BX.IFSR_ALLOCSIZE]                                                ;AN000;
 0044  26: 8A 67 2E		        MOV     AH,ES:[BX.IFSR_FSID]                                                     ;AN000;
 0048  26: 8B 5F 26		        MOV     BX,ES:[BX.IFSR_ALLOCUNITS]                                               ;AM002;
				        RestoreReg <DI,ES>                      ; restore cds into es:di                 ;AN000;
 004C  5F                    2		POP     DI 
 004D  07                    2		POP     ES 
				        invoke  CD_TO_CDS                                                                ;AN000;
 004E  E8 0000 E             1		CALL    CD_TO_CDS 
 0051  F8			        CLC                                                                              ;AN000;
 0052  E9 0167 R		        JMP     FA_1000                         ; go ret in file attr routine            ;AN000;
				                                                ; since it restores ds-dosgroup          ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_DISK_INFO                                                                    ;AN000;
 0055                        1	IFS_DISK_INFO    ENDP 
				                                                                                         ;AN000;
				                                                                                        ;AN000;
				BREAK <IFS_SEQ_SET_FILE_ATTRIBUTE  - Seq Set File Attributes>                            ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-6
IFS_SEQ_SET_FILE_ATTRIBUTE  - Seq Set File Attributes       

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEQ_SET_FILE_ATTRIBUTE                                                             ;AN000;
				;                                                                                        ;AN000;
				; see IFS_GET_FILE_INFO for details                                                      ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SEQ_SET_FILE_ATTRIBUTE,NEAR                                      ;AN000;
 0055                        1	IFS_SEQ_SET_FILE_ATTRIBUTE    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                                                            ;AN000;
				        ifsr_api_def  FILEATTR                                                           ;AN000;
				                                                                                         ;AN000;
 0055  50			        PUSH    AX                              ; save file attrs                        ;AN000;
				                                                                                         ;AN000;
				        invoke  CHECK_SEQ                       ; check if this is unc or ifs device     ;AN000;
 0056  E8 0000 E             1		CALL    CHECK_SEQ 
 0059  72 0B			        JC      SA_20                           ; cf=0 unc, cf=1 device                  ;AN000;
				                                                                                         ;AN000;
 005B  0E			        PUSH    CS                              ; get addressability to IFSSEG           ;AN000;
 005C  1F			        POP     DS                              ; prep ifsflags for set                  ;AN000;
				ASSUME  DS:IFSSEG                                                                        ;AN000;
 005D  C7 06 0000 E 0000	        MOV     IFSPROC_FLAGS,ZERO                                                       ;AN000;
 0063  EB 17			        JMP     SHORT SFA_20                    ; cont. in ifs_seq_get_fa                ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEQ_SET_FILE_ATTRIBUTE                                                       ;AN000;
 0065                        1	IFS_SEQ_SET_FILE_ATTRIBUTE    ENDP 
				                                                                                         ;AN000;
				BREAK <IFS_SET_FILE_ATTRIBUTE      - Set File Attributes>                                ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-7
IFS_SET_FILE_ATTRIBUTE      - Set File Attributes           

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SET_FILE_ATTRIBUTE                                                                 ;AN000;
				;                                                                                        ;AN000;
				; see IFS_GET_FILE_INFO for details                                                      ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SET_FILE_ATTRIBUTE,NEAR                                          ;AN000;
 0065                        1	IFS_SET_FILE_ATTRIBUTE    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                                                            ;AN000;
				        ifsr_api_def  FILEATTR                                                           ;AN000;
				                                                                                         ;AN000;
 0065  50			        PUSH    AX                              ; save file attrs                        ;AN000;
 0066				SA_20:                                                                                   ;AN000;
 0066  2E: C7 06 0000 E 0000	        MOV     CS:IFSPROC_FLAGS,0              ; prep ifsflags                          ;AN000;
 006D  EB 21			        JMP     SHORT FA_20                     ; cont. in ifs_get_file_info             ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SET_FILE_ATTRIBUTE                                                           ;AN000;
 006F                        1	IFS_SET_FILE_ATTRIBUTE    ENDP 
				                                                                                         ;AN000;
				BREAK <IFS_SEQ_GET_FILE_INFO       - Seq Get File Attributes>                            ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-8
IFS_SEQ_GET_FILE_INFO       - Seq Get File Attributes       

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEQ_GET_FILE_ATTRIBUTE                                                             ;AN000;
				;                                                                                        ;AN000;
				; see IFS_GET_FILE_INFO for details                                                      ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SEQ_GET_FILE_INFO,NEAR                                           ;AN000;
 006F                        1	IFS_SEQ_GET_FILE_INFO    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                                                            ;AN000;
				        ifsr_api_def  FILEATTR                                                           ;AN000;
				                                                                                         ;AN000;
				        invoke  CHECK_SEQ                       ; check if this is unc or ifs device     ;AN000;
 006F  E8 0000 E             1		CALL    CHECK_SEQ 
 0072  72 15			        JC      FA_10                           ; cf=0 unc, cf=1 device                  ;AN000;
				                                                                                         ;AN000;
 0074  0E			        PUSH    CS                              ; prep ifsflags for get & seq            ;AN000;
 0075  1F			        POP     DS                                                                       ;AN000;
				ASSUME  DS:IFSSEG                                                                        ;AN000;
 0076  C7 06 0000 E 0010	        MOV     IFSPROC_FLAGS,ISGET                                                      ;AN000;
				                                                                                         ;AN000;
 007C				SFA_20:                                                                                  ;AN000;
 007C  83 0E 0000 E 20		        OR      IFSPROC_FLAGS,ISSEQ             ; SEQ - UNC                              ;AN000;
				        invoke  SET_THISIFS_UNC                 ; set thisifs = unc                      ;AN000;
 0081  E8 0000 E             1		CALL    SET_THISIFS_UNC 
				        invoke  PREP_IFSR                       ; init ifsr                              ;AN000;
 0084  E8 0000 E             1		CALL    PREP_IFSR 
 0087  EB 48			        JMP     SHORT FA_200                    ; cont. in ifs_get_file_info             ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEQ_GET_FILE_INFO                                                            ;AN000;
 0089                        1	IFS_SEQ_GET_FILE_INFO    ENDP 
				                                                                                        ;AN000;
				BREAK <IFS_GET_FILE_INFO           - Get File Attributes>                                ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-9
IFS_GET_FILE_INFO           - Get File Attributes           

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; GET_FILE_INFO                                                                          ;AN000;
				;                                                                                        ;AN000;
				; Routines called:  DFL_SINGLE_FILE_CHECK                                                ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [WFP_START] Points to WFP string ("//" must be first 2 chars, NUL                ;AN000;
				;               terminated)                                                              ;AN000;
				;       [THISCDS] Points to CDS being used                                               ;AN000;
				;               (Low word = -1 if NUL CDS (dfl))                                         ;AN000;
				;       [SATTRIB] is attribute of search (determines what files may be found)            ;AN000;
				;       AX is new attributes to give to file (already checked for bad bits)              ;AN000;
				; Function:                                                                              ;AN000;
				;                                                                                        ;AN000;
				;     IF seq call THEN                                                                   ;AN000;
				;        DO                                                                              ;AN000;
				;          Set IFS Header pointer to UNC IFS                                             ;AN000;
				;          Set IFSR_DEVICE_CB@ = null                                                    ;AN000;
				;        ENDDO                                                                           ;AN000;
				;     ELSE DO                                                                            ;AN000;
				;            IF [THISCDS] .NOT. NULL THEN                                                ;AN000;
				;                 CALL CDS_TO_CD                                                         ;AN000;
				;            ELSE DO                                                                     ;AN000;
				;                   CALL DFL_SINGLE_FILE_CHECK                                           ;AN000;
				;                   IF have DFL that supports single file fcns THEN                      ;AN000;
				;                      call DFL_TO_DF                                                    ;AN000;
				;                   ELSE set error - device not IFS or no single file support            ;AN000;
				;                   ENDIF                                                                ;AN000;
				;                 ENDDO                                                                  ;AN000;
				;            ENDIF                                                                       ;AN000;
				;          ENDDO                                                                         ;AN000;
				;     IF  no error  THEN                                                                 ;AN000;
				;        DO                                                                              ;AN000;
				;          Prep IFSRH:                                                                   ;AN000;
				;          *  IFSR_LENGTH      DW     66       ; Total length of request                 ;AN000;
				;          *  IFSR_FUNCTION    DB      4       ; Execute API function                    ;AN000;
				;           + IFSR_RETCODE     DW      ?                                                 ;AN000;
				;           + IFSR_RETCLASS    DB      ?                                                 ;AN000;
				;             IFSR_RESV1       DB     16 DUP(0)                                          ;AN000;
				;          *  IFSR_APIFUNC     DB     15       ; File Attributes - get/set by name       ;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      ?       ; CD/DF                                   ;AN000;
				;             IFSR_OPEN_CB@    DD      ?                                                 ;AN000;
				;          *  IFSR_FUNC        DB      ?       ; 2=get 3=set depends on INT 2FH          ;AN000;
				;          *  IFSR_RESV3       DB      ?
				;          *  IFSR_SUBFUNC     DB      0       ; in-line parms                           ;AN000;
				;          *  IFSR_RESV4       DB      ?
				;             IFSR_BUFFER1@    DD      ?       ; not used here
				;             IFSR_BUFFER2@    DD      ?       ; not used here
				;             IFSR_COUNT       DW      ?       ; not used here
				;          *  IFSR_MATCHATTR   DW      ?       ; format 0000000re0advshr                 ;AN000;
				;          *  IFSR_NAME@       DD      ?       ; ASCIIZ file name ptr                    ;AN000;
				;           + IFSR_SIZE        DD      ?       ; file size                               ;AN000;
				;           + IFSR_DATE        DW      ?       ; file date                               ;AN000;
				;           + IFSR_TIME        DW      ?       ; file time                               ;AN000;
				;          *+ IFSR_ATTR        DW      ?       ; file attribute                          ;AN000;
				;                                              ; format 0000000re0advshr                 ;AN000;
				;                                              ; Set to AX on set                        ;AN000;
				;                                                                                        ;AN000;
				;          IF set THEN                                                                   ;AN000;
				;             DO                                                                         ;AN000;
				;               IFSR_FUNC = 3                                                            ;AN000;
				;               IFSR_ATTR = AX                                                           ;AN000;
				;             ENDDO                                                                      ;AN000;
				;          ELSE IFSR_FUNC = 2                                                            ;AN000;
				;          ENDIF                                                                         ;AN000;
				;          CALL routine, CALL_IFS, with pointer to IFS Header                            ;AN000;
				;          IF IFSR_RETCODE = 0 THEN                                                      ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-10
IFS_GET_FILE_INFO           - Get File Attributes           

				;             DO                                                                         ;AN000;
				;               IF cds THEN Call CD_TO_CDS                                               ;AN000;
				;               IF dfl THEN Call DF_TO_DFL                                               ;AN000;
				;               IF  get THEN                                                             ;AN000;
				;                  DO                                                                    ;AN000;
				;                    AX = IFSR_ATTR                                                      ;AN000;
				;                    CX = IFSR_TIME                                                      ;AN000;
				;                    DX = IFSR_DATE                                                      ;AN000;
				;                    BX:DI = IFSR_SIZE                                                   ;AN000;
				;                  ENDDO                                                                 ;AN000;
				;               Clear carry                                                              ;AN000;
				;             ENDDO                                                                      ;AN000;
				;          ELSE DO                                                                       ;AN000;
				;                 AX = IFSR_RETCODE                                                      ;AN000;
				;                 Set carry                                                              ;AN000;
				;               ENDDO                                                                    ;AN000;
				;          ENDIF                                                                         ;AN000;
				;        ENDDO                                                                           ;AN000;
				;     ELSE Set carry                                                                     ;AN000;
				;     ENDIF                                                                              ;AN000;
				; Outputs:                                                                               ;AN000;
				;       CARRY CLEAR                                                                      ;AN000;
				;           AX    = ATTR                                                                 ;AN000;
				;           CX    = TIME                                                                 ;AN000;
				;           DX    = DATE                                                                 ;AN000;
				;           BX:DI = SIZE                                                                 ;AN000;
				;       CARRY SET                                                                        ;AN000;
				;           AX is error code                                                             ;AN000;
				;               error_file_not_found                                                     ;AN000;
				;                       Last element of path not found                                   ;AN000;
				;               error_path_not_found                                                     ;AN000;
				;                       Bad path (not in curr dir part if present)                       ;AN000;
				;               error_access_denied                                                      ;AN000;
				;                       Attempt to set an attribute which cannot be set                  ;AN000;
				;                       (attr_directory, attr_volume_ID)                                 ;AN000;
				;               error_sharing_violation                                                  ;AN000;
				;                       Sharing mode of file did not allow the change                    ;AN000;
				;                       (this request requires exclusive write/read access)              ;AN000;
				;                       (INT 24H generated)                                              ;AN000;
				;                                                                                        ;AN000;
				; Regs: DS preserved, others destroyed                                                   ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_GET_FILE_INFO,NEAR                                               ;AN000;
 0089                        1	IFS_GET_FILE_INFO    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for fileattr               ;AN000;
				        ifsr_api_def  FILEATTR                                                           ;AN000;
				                                                                                         ;AN000;
 0089				FA_10:                                                                                   ;AN000;
 0089  2E: C7 06 0000 E 0010	        MOV     CS:IFSPROC_FLAGS,ISGET          ;  set for get                           ;AN000;
				                                                                                         ;AN000;
 0090				FA_20:                                                                                   ;AN000;
				ASSUME  DS:DOSGROUP,ES:NOTHING                                                           ;AN000;
 0090  83 3E 0000 E FF		        CMP     WORD PTR [THISCDS],NULL_PTR     ; determine CDS or DFL                   ;AN000;
 0095  74 2C			        JE      FA_100                                                                   ;AN000;
 0097  C5 36 0000 E		        LDS     SI,[THISCDS]                                                             ;AN000;
				ASSUME  DS:NOTHING                                                                       ;AN000;
 009B  2E: F7 06 0000 E 0010	        TEST    CS:IFSPROC_FLAGS,ISGET                                                   ;AN000;
 00A2  74 04			        JZ      FA_40                                                                    ;AN000;
				        SaveReg <DS,SI>                         ; preserve ds:si -> cds                  ;AN000;
 00A4  1E                    2		PUSH    DS 
 00A5  56                    2		PUSH    SI 
 00A6  EB 04			        JMP     SHORT FA_60                                                              ;AN000;
 00A8				FA_40:                                                                                   ;AN000;
				        RestoreReg <AX>                         ; want attr on stack to stay on top      ;AN000;
 00A8  58                    2		POP     AX 
				        SaveReg <DS,SI,AX>                      ; stack - ax,si,ds                       ;AN000;
 00A9  1E                    2		PUSH    DS 
 00AA  56                    2		PUSH    SI 
 00AB  50                    2		PUSH    AX 
				                                                                                         ;AN000;
 00AC				FA_60:                                                                                   ;AN000;
				        invoke  PREP_IFSR                       ; clear ifsrh                            ;AN000;
 00AC  E8 0000 E             1		CALL    PREP_IFSR 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-11
IFS_GET_FILE_INFO           - Get File Attributes           

 00AF  2E: C7 06 0000 E 001E	        MOV     CS:DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@                                     ;AN000;
				        invoke  CDS_TO_CD                       ; CDS: sets [THISIFS]                    ;AN000;
 00B6  E8 0000 E             1		CALL    CDS_TO_CD 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           IFSR_DEVICE_CB@              ;AN000;
				                                                ;           DS - IFSSEG                  ;AN000;
 00B9  2E: 81 0E 0000 E 0080	        OR      IFSPROC_FLAGS,ISCDS                                                      ;AN000;
 00C0  EB 0F 90			        JMP     FA_200                                                                   ;AN000;
				                                                                                         ;AN000;
 00C3				FA_100:                                                                                  ;AN000;
				        invoke  DFL_SINGLE_FILE_CHECK           ; DFL: sets [THISIFS]                    ;AN000;
 00C3  E8 0000 E             1		CALL    DFL_SINGLE_FILE_CHECK 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           IFSR_DEVICE_CB@              ;AN000;
				                                                ;           DS - IFSSEG                  ;AN000;
 00C6  73 09			        JNC     SHORT FA_200                                                             ;AN000;
 00C8  B8 0001			        MOV     AX,error_invalid_function       ; error - invalid fcn                    ;AN000;
				        invoke  SET_EXTERR_INFO                 ;         set error info &               ;AN000;
 00CB  E8 0000 E             1		CALL    SET_EXTERR_INFO 
 00CE  E9 0163 R		        JMP     FA_980                          ;         go return                      ;AN000;
				                                                                                         ;AN000;
 00D1				FA_200:                                                                                  ;AN000;
				        invoke  DRIVE_FROM_CDS                  ; set IFSDrv for possible I24            ;AN000;
 00D1  E8 0000 E             1		CALL    DRIVE_FROM_CDS 
				                                                                                         ;AN000;
 00D4  26: C7 07 0044		        MOV     ES:[BX.IFSR_LENGTH],LENGTH_FILEATTR     ; continue prepping ifsr         ;AN000;
 00D9  26: C6 47 02 05		        MOV     ES:[BX.IFSR_FUNCTION],IFSEXECAPI                                         ;AN000;
 00DE  26: C6 47 16 0F		        MOV     ES:[BX.IFSR_APIFUNC],IFSFILEATTR                                         ;AN000;
 00E3  2E: F7 06 0000 E 0010	        TEST    IFSPROC_FLAGS,ISGET                                                      ;AN000;
 00EA  75 0B			        JNZ     FA_220                                                                   ;AN000;
 00EC  26: C6 47 26 03		        MOV     ES:[BX.IFSR_FUNC],FUNC_SET_BY_NAME                                       ;AN000;
 00F1  26: 8F 47 42		        POP     ES:[BX.IFSR_ATTR]               ; retrieve attr from stack               ;AN000;
 00F5  EB 05			        JMP     SHORT FA_240                                                             ;AN000;
 00F7				FA_220:                                                                                  ;AN000;
 00F7  26: C6 47 26 02		        MOV     ES:[BX.IFSR_FUNC],FUNC_GET_BY_NAME ; get file info                       ;AN000;
				                                                                                         ;AN000;
 00FC				FA_240:                                                                                  ;AN000;
 00FC  1E			        PUSH    DS                              ; save ds - IFSSEG                       ;AN000;
 00FD  16			        PUSH    SS                              ; get ds = dosgroup so can access        ;AN000;
 00FE  1F			        POP     DS                              ; wfp_start, sattrib                     ;AN000;
				ASSUME  DS:DOSGROUP                                                                      ;AN000;
				                                                                                         ;AN000;
 00FF  8B 36 0000 E		        MOV     SI,[WFP_START]                                                           ;AN000;
				        invoke  STRIP_WFP_START                                                          ;AN000;
 0103  E8 0000 E             1		CALL    STRIP_WFP_START 
 0106  26: 89 77 36		        MOV     ES:WORD PTR [BX.IFSR_NAME@],SI  ; ifsr_name@                             ;AN000;
 010A  26: 8C 5F 38		        MOV     ES:WORD PTR [BX.IFSR_NAME@+2],DS                                         ;AN000;
 010E  A0 0000 E		        MOV     AL,[SATTRIB]                                                             ;AN000;
 0111  32 E4			        XOR     AH,AH                                                                    ;AN000;
 0113  26: 89 47 34		        MOV     ES:[BX.IFSR_MATCHATTR],AX       ; ifsr_matchattr                         ;AN000;
				                                                                                         ;AN000;
 0117  1F			        POP     DS                              ; restore ds=IFSSEG                      ;AN000;
				ASSUME  DS:IFSSEG                                                                        ;AN000;
				
				;************************************************
				        invoke  CALL_IFS                        ; call ifs with file attr request        ;AN000;
 0118  E8 0000 E             1		CALL    CALL_IFS 
				;************************************************
				                                                                                         ;AN000;
 011B  73 0E			        JNC     FA_260                                                                   ;AN000;
 011D  F7 06 0000 E 0080	        TEST    IFSPROC_FLAGS,ISCDS             ; request failed -                       ;AN000;
 0123  74 3E			        JZ      FA_980                          ; go set carry & return                  ;AN000;
 0125  83 C4 04			        ADD     SP,4                            ; if cds, restore stack first            ;AN000;
 0128  EB 39 90			        JMP     FA_980                                                                   ;AN000;
				                                                                                         ;AN000;
 012B				FA_260:                                         ; request successful                     ;AN000;
 012B  F7 06 0000 E 0010	        TEST    IFSPROC_FLAGS,ISGET             ; if get - prep return regs with         ;AN000;
 0131  74 14			        JZ      FA_270                          ; file info                              ;AN000;
 0133  26: 8B 47 42		        MOV     AX,ES:[BX.IFSR_ATTR]                                                     ;AN000;
 0137  26: 8B 4F 40		        MOV     CX,ES:[BX.IFSR_TIME]                                                     ;AN000;
 013B  26: 8B 57 3E		        MOV     DX,ES:[BX.IFSR_DATE]                                                     ;AN000;
 013F  26: 8B 7F 3A		        MOV     DI,ES:WORD PTR [BX.IFSR_SIZE]                                            ;AN000;
 0143  26: 8B 5F 3C		        MOV     BX,ES:WORD PTR [BX.IFSR_SIZE+2]                                          ;AC016;
 0147				FA_270:                                                                                  ;AN000;
 0147  F7 06 0000 E 0080	        TEST    IFSPROC_FLAGS,ISCDS             ; if cds - update cds w/cd               ;AN000;
 014D  74 07			        JZ      FA_280                                                                   ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-12
IFS_GET_FILE_INFO           - Get File Attributes           

				        RestoreReg <DI,ES>                      ; restore cds ptr into es:di             ;AN000;
 014F  5F                    2		POP     DI 
 0150  07                    2		POP     ES 
				        invoke  CD_TO_CDS                       ; cd-cds                                 ;AN000;
 0151  E8 0000 E             1		CALL    CD_TO_CDS 
 0154  EB 10			        JMP     SHORT FA_990                    ; go clc & return                        ;AN000;
 0156				FA_280:                                                                                  ;AN000;
 0156  F7 06 0000 E 0020	        TEST    IFSPROC_FLAGS,ISSEQ                                                      ;AN000;
 015C  75 08			        JNZ     FA_990                                                                   ;AN000;
				        invoke  DF_TO_DFL                       ; update dfl w/df                        ;AN000;
 015E  E8 0000 E             1		CALL    DF_TO_DFL 
 0161  EB 03			        JMP     SHORT FA_990                                                             ;AN000;
				                                                                                         ;AN000;
 0163				FA_980:                                                                                  ;AN000;
 0163  F9			        STC                                                                              ;AN000;
 0164  EB 01			        JMP     SHORT FA_1000                                                            ;AN000;
 0166				FA_990:                                                                                  ;AN000;
 0166  F8			        CLC                                                                              ;AN000;
 0167				FA_1000:                                                                                 ;AN000;
 0167  16			        PUSH    SS                              ; restore original ds (dosgroup)         ;AN000;
 0168  1F			        POP     DS                              ; since this routine preserves ds        ;AN000;
				        return                                                                           ;AN000;
 0169                        1	??0000: 
 0169  C3                    1		RET 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_GET_FILE_INFO                                                                ;AN000;
 016A                        1	IFS_GET_FILE_INFO    ENDP 
				                                                                                         ;AN000;
				BREAK <IFS_SEQ_RENAME Rename>                                                            ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-13
IFS_SEQ_RENAME Rename                                       

				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEQ_RENAME                                                                         ;AN000;
				;                                                                                        ;AN000;
				; see ifs_rename for details                                                             ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				        procedure   IFS_SEQ_RENAME,NEAR                                                  ;AN000;
 016A                        1	IFS_SEQ_RENAME    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                                                            ;AN000;
				        ifsr_api_def  RENFILE                                                            ;AN000;
				                                                                                         ;AN000;
 016A  2E: C7 06 0000 E 0010	        MOV     CS:IFSPROC_FLAGS,ISREN           ; set for rename and cont.              ;AN000;
 0171  EB 0F			        JMP     SHORT SD_10                      ; in ifs_seq_delete                     ;AN000;
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEQ_RENAME                                                                   ;AN000;
 0173                        1	IFS_SEQ_RENAME    ENDP 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				BREAK <IFS_RENAME Rename>                                                                ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-14
IFS_RENAME Rename                                           

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_RENAME                                                                             ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [WFP_START] Points to SOURCE WFP string ("//" must be first 2                    ;AN000;
				;               chars, NUL terminated)                                                   ;AN000;
				;       [REN_WFP] Points to DEST WFP string ("//" must be first 2                        ;AN000;
				;               chars, NUL terminated)                                                   ;AN000;
				;       [THISCDS] Points to CDS being used                                               ;AN000;
				;       [SATTRIB] Is attribute of search, determines what files can be found             ;AN000;
				; Function:                                                                              ;AN000;
				;     same processing as delete except for following parms:                              ;AN000;
				;          *  IFSR_LENGTH      DB     48                                                 ;AN000;
				;          *  IFSR_APIFUNC     DB      7       ; Rename file                             ;AN000;
				;          *  IFSR_NAME1@      DD      ?       ; addr of WFP_START                       ;AN000;
				;          *  IFSR_NAME2@      DD      ?       ; addr of REN_WFP                         ;AN000;
				;                                                                                        ;AN000;
				; Outputs:                                                                               ;AN000;
				;       CARRY CLEAR                                                                      ;AN000;
				;           OK                                                                           ;AN000;
				;       CARRY SET                                                                        ;AN000;
				;           AX is error code                                                             ;AN000;
				;               error_file_not_found                                                     ;AN000;
				;                       No match for source, or dest path invalid                        ;AN000;
				;               error_not_same_device                                                    ;AN000;
				;                       Source and dest are on different devices                         ;AN000;
				;               error_access_denied                                                      ;AN000;
				;                       Directory specified (not simple rename),                         ;AN000;
				;                       Device name given, Destination exists.                           ;AN000;
				;                       NOTE: In third case some renames may have                        ;AN000;
				;                        been done if metas.                                             ;AN000;
				;               error_path_not_found                                                     ;AN000;
				;                       Bad path (not in curr dir part if present)                       ;AN000;
				;                       SOURCE ONLY                                                      ;AN000;
				;               error_sharing_violation                                                  ;AN000;
				;                       Deny both access required, generates an INT 24.                  ;AN000;
				; DS preserved, others destroyed                                                         ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_RENAME,NEAR                                                      ;AN000;
 0173                        1	IFS_RENAME    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                                                            ;AN000;
				        ifsr_api_def  RENFILE                                                            ;AN000;
				                                                                                         ;AN000;
 0173  2E: C7 06 0000 E 0010	        MOV     CS:IFSPROC_FLAGS,ISREN          ; set for rename                         ;AN000;
 017A  EB 1E			        JMP     SHORT D_20                      ; processing continues in ifs_delete     ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_RENAME                                                                       ;AN000;
 017C                        1	IFS_RENAME    ENDP 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				BREAK <IFS_SEQ_DELETE Delete>                                                            ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-15
IFS_SEQ_DELETE Delete                                       

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEQ_DELETE                                                                         ;AN000;
				;                                                                                        ;AN000;
				; see ifs_delete for details                                                             ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				        procedure   IFS_SEQ_DELETE,NEAR                                                  ;AN000;
 017C                        1	IFS_SEQ_DELETE    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                                                            ;AN000;
				        ifsr_api_def  DELFILE                                                            ;AN000;
				                                                                                         ;AN000;
 017C  C7 06 0000 E 0000	        MOV     IFSPROC_FLAGS,0                 ; Clear IFS processing flags             ;AN000;
 0182				SD_10:                                                                                   ;AN000;
				        invoke  CHECK_SEQ                       ; check if this is unc or ifs device     ;AN000;
 0182  E8 0000 E             1		CALL    CHECK_SEQ 
 0185  72 13			        JC      D_20                            ; cf=0 unc, cf=1 device                  ;AN000;
				                                                                                         ;AN000;
 0187				SD_20:                                          ; welcome ifs_seq_rename code            ;AN000;
 0187  0E			        PUSH    CS                                                                       ;AN000;
 0188  1F			        POP     DS                                                                       ;AN000;
				ASSUME  DS:IFSSEG                                                                        ;AN000;
 0189  83 0E 0000 E 20		        OR      IFSPROC_FLAGS,ISSEQ             ; SEQ - UNC                              ;AN000;
				        invoke  SET_THISIFS_UNC                 ;     set [THISIFS] = UNC IFS            ;AN000;
 018E  E8 0000 E             1		CALL    SET_THISIFS_UNC 
 0191  EB 19			        JMP     SHORT D_30                      ;     cont. in ifs_delete                ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEQ_DELETE                                                                   ;AN000;
 0193                        1	IFS_SEQ_DELETE    ENDP 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				BREAK <IFS_DELETE Delete>                                                                ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-16
IFS_DELETE Delete                                           

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_DELETE                                                                             ;AN000;
				;                                                                                        ;AN000;
				; Called by:       IFSFUNC Dispatcher                                                    ;AN000;
				;                                                                                        ;AN000;
				; Routines called: CDS_TO_CD                                                             ;AN000;
				;                  CD_TO_CDS   CALL_IFS                                                  ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [WFP_START] Points to WFP string ("//" must be first 2 chars, NUL                ;AN000;
				;               terminated)                                                              ;AN000;
				;       [THISCDS] Points to CDS being used                                               ;AN000;
				;       [SATTRIB] Is attribute of search, determines what files can be found             ;AN000;
				; Function:                                                                              ;AN000;
				;     IF INT 2FH call .NOT. SEQ version THEN                                             ;AN000;
				;        DO                                                                              ;AN000;
				;          IF [THISCDS] .NOT. NULL  THEN                                                 ;AN000;
				;             DO                                                                         ;AN000;
				;                 CALL CDS_TO_CD                                                         ;AN000;
				;                 Set IFS_DEVICE_CB@ as pointer to CD                                    ;AN000;
				;                 Set IFS_HDR_PTR = CURDIR_IFS_HDR                                       ;AN000;
				;             ENDDO                                                                      ;AN000;
				;          ELSE DO                                                                       ;AN000;
				;                 Set AX = invalid function                                              ;AN000;
				;                 Set extended error info                                                ;AN000;
				;               ENDDO                                                                    ;AN000;
				;          ENDIF                                                                         ;AN000;
				;        ENDDO                                                                           ;AN000;
				;     ELSE DO                                                                            ;AN000;
				;            Set IFS_DEVICE_CB@ to NULL                                                  ;AN000;
				;            Set IFS_HDR_PTR = [UNC_FS_HDR]                                              ;AN000;
				;          ENDDO                                                                         ;AN000;
				;     ENDIF                                                                              ;AN000;
				;     IF  no error  THEN                                                                 ;AN000;
				;        DO                                                                              ;AN000;
				;          Prep IFSRH:                                                                   ;AN000;
				;          *  IFSR_LENGTH      DW     44       ; Total length of request                 ;AN000;
				;          *  IFSR_FUNCTION    DB      4       ; Execute API function                    ;AN000;
				;           + IFSR_RETCODE     DW      ?                                                 ;AN000;
				;           + IFSR_RETCLASS    DB      ?                                                 ;AN000;
				;             IFSR_RESV1       DB     16 DUP(0)                                          ;AN000;
				;          *  IFSR_APIFUNC     DB      6       ; Delete file                             ;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      ?       ; CD                                      ;AN000;
				;             IFSR_OPEN_CB@    DD      ?                                                 ;AN000;
				;          *  IFSR_MATCHATTR   DW      ?       ; attribute - format 00000000e0a00shr     ;AN000;
				;          *  IFSR_NAME@       DD      ?       ; filename to delete                      ;AN000;
				;                                                                                        ;AN000;
				;          Call routine, CALL_IFS, with pointer to CURDIR_IFSR_HDR                       ;AN000;
				;          IF IFSR_RETCODE = 0 THEN                                                      ;AN000;
				;             DO                                                                         ;AN000;
				;               Call CD_TO_CDS or DF_TO_DFL                                              ;AN000;
				;               Clear carry                                                              ;AN000;
				;             ENDDO                                                                      ;AN000;
				;          ELSE DO                                                                       ;AN000;
				;                 AX = IFSR_RETCODE                                                      ;AN000;
				;                 Set carry                                                              ;AN000;
				;               ENDDO                                                                    ;AN000;
				;          ENDIF                                                                         ;AN000;
				;        ENDDO                                                                           ;AN000;
				;     ELSE set carry                                                                     ;AN000;
				;     ENDIF                                                                              ;AN000;
				;                                                                                        ;AN000;
				; Outputs:                                                                               ;AN000;
				;       CARRY CLEAR                                                                      ;AN000;
				;               OK                                                                       ;AN000;
				;       CARRY SET                                                                        ;AN000;
				;           AX is error code                                                             ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-17
IFS_DELETE Delete                                           

				;               error_file_not_found                                                     ;AN000;
				;                       Last element of path not found                                   ;AN000;
				;               error_path_not_found                                                     ;AN000;
				;                       Bad path                                                         ;AN000;
				;               error_access_denied                                                      ;AN000;
				;                       Attempt to delete device or directory                            ;AN000;
				; DS preserved, others destroyed                                                         ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_DELETE,NEAR                                                      ;AN000;
 0193                        1	IFS_DELETE    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                                                            ;AN000;
				        ifsr_api_def  DELFILE                                                            ;AN000;
				                                                                                         ;AN000;
 0193  2E: C7 06 0000 E 0000	        MOV     CS:IFSPROC_FLAGS,ZERO           ; Clear IFS processing flags             ;AN000;
				                                                                                         ;AN000;
 019A				D_20:                                           ; (Welcome ifs_ren)                      ;AN000;
				ASSUME  DS:DOSGROUP                                                                      ;AN000;
				        invoke  DRIVE_FROM_CDS                  ; ds - dosgroup                          ;AN000;
 019A  E8 0000 E             1		CALL    DRIVE_FROM_CDS 
 019D  83 3E 0000 E FF		        CMP     WORD PTR [THISCDS],NULL_PTR     ; CDS must not be null                   ;AN000;
 01A2  75 08			        JNE     D_30                                                                     ;AN000;
 01A4  B8 0001			        MOV     AX,error_invalid_function                                                ;AN000;
				        invoke  SET_EXTERR_INFO                                                          ;AN000;
 01A7  E8 0000 E             1		CALL    SET_EXTERR_INFO 
 01AA  EB B7			        JMP     FA_980                          ; go up, preserve ds, ret w/carry        ;AN000;
 01AC				D_30:                                           ; (Welcome seq ren/del code)             ;AN000;
				        invoke  PREP_IFSR                       ; zero ifsr, es:bx -> ifsr               ;AN000;
 01AC  E8 0000 E             1		CALL    PREP_IFSR 
 01AF  8B 36 0000 E		        MOV     SI,[WFP_START]                                                           ;AN000;
				        invoke  STRIP_WFP_START                                                          ;AN000;
 01B3  E8 0000 E             1		CALL    STRIP_WFP_START 
 01B6  2E: F7 06 0000 E 0010	        TEST    CS:IFSPROC_FLAGS,ISREN                                                   ;AN000;
 01BD  74 29			        JZ      D_40                            ; rename                                 ;AN000;
 01BF  26: 89 77 28		        MOV     ES:WORD PTR [BX.IFSR_NAME1@],SI ; ifsr_name1@ & 2@                       ;AN000;
 01C3  26: 8C 5F 2A		        MOV     ES:WORD PTR [BX.IFSR_NAME1@+2],DS                                        ;AN000;
 01C7  8B 36 0000 E		        MOV     SI,[REN_WFP]                                                             ;AN000;
 01CB  80 7C 01 3A		        CMP     BYTE PTR DS:[SI+1],":"                                                   ;AN000;
 01CF  75 03			        JNE     D_36                                                                     ;AN000;
 01D1  83 C6 02			        ADD     SI,2                                                                     ;AN000;
 01D4				D_36:                                                                                    ;AN000;
 01D4  26: 89 77 2C		        MOV     ES:WORD PTR [BX.IFSR_NAME2@],SI                                          ;AN000;
 01D8  26: 8C 5F 2E		        MOV     ES:WORD PTR [BX.IFSR_NAME2@+2],DS                                        ;AN000;
 01DC  26: C7 07 0030		        MOV     ES:[BX.IFSR_LENGTH],LENGTH_RENFILE ; ifsr_length                         ;AN000;
 01E1  26: C6 47 16 07		        MOV     ES:[BX.IFSR_APIFUNC],IFSRENFILE    ; ifsr_apifunc                        ;AN000;
 01E6  EB 12			        JMP     SHORT D_60                                                               ;AN000;
 01E8				D_40:                                              ; delete                              ;AN000;
 01E8  26: 89 77 28		        MOV     ES:WORD PTR [BX.IFSR_NAME@],SI     ; ifsr_name@                          ;AN000;
 01EC  26: 8C 5F 2A		        MOV     ES:WORD PTR [BX.IFSR_NAME@+2],DS                                         ;AN000;
 01F0  26: C7 07 002C		        MOV     ES:[BX.IFSR_LENGTH],LENGTH_DELFILE ; ifsr_length                         ;AN000;
 01F5  26: C6 47 16 06		        MOV     ES:[BX.IFSR_APIFUNC],IFSDELFILE    ; ifsr_apifunc                        ;AN000;
 01FA				D_60:                                                                                    ;AN000;
 01FA  A0 0000 E		        MOV     AL,[SATTRIB]                                                             ;AN000;
 01FD  32 E4			        XOR     AH,AH                                                                    ;AN000;
 01FF  26: 89 47 26		        MOV     ES:[BX.IFSR_MATCHATTR],AX          ; ifsr_matchattr                      ;AN000;
 0203  26: C6 47 02 05		        MOV     ES:[BX.IFSR_FUNCTION],IFSEXECAPI   ; ifsr_function                       ;AN000;
				                                                                                         ;AN000;
 0208  2E: F7 06 0000 E 0020	        TEST    CS:IFSPROC_FLAGS,ISSEQ          ; if unc, don't do cds stuff             ;AN000;
 020F  75 10			        JNZ     D_70                                                                     ;AN000;
 0211  C5 36 0000 E		        LDS     SI,[THISCDS]                                                             ;AN000;
				ASSUME  DS:NOTHING                                                                       ;AN000;
				        SaveReg <DS,SI>                         ; preserve ds:si -> cds                  ;AN000;
 0215  1E                    2		PUSH    DS 
 0216  56                    2		PUSH    SI 
 0217  2E: C7 06 0000 E 001E	        MOV     CS:DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@                                     ;AN000;
				        invoke  CDS_TO_CD                       ; CDS: sets [THISIFS]                    ;AN000;
 021E  E8 0000 E             1		CALL    CDS_TO_CD 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           IFSR_DEVICE_CB@              ;AN000;
				                                                ;           ds - IFSSEG                  ;AN000;
				                                                                                         ;AN000;
 0221				D_70:                                                                                    ;AN000;
				        invoke  CALL_IFS                        ; call ifs w/request                     ;AN000;
 0221  E8 0000 E             1		CALL    CALL_IFS 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-18
IFS_DELETE Delete                                           

				                                                                                         ;AN000;
 0224  73 12			        JNC     D_80                                                                     ;AN000;
 0226  2E: F7 06 0000 E 0020	        TEST    IFSPROC_FLAGS,ISSEQ             ; fs error - restore stack               ;AN000;
 022D  74 03			        JZ      D_75                            ; if not unc - go ret                    ;AN000;
 022F  E9 0163 R		        JMP     FA_980                                                                   ;AC009;
 0232				D_75:                                                                                    ;AN000;
 0232  83 C4 04			        ADD     SP,4                                                                     ;AN000;
 0235  E9 0163 R		        JMP     FA_980                                                                   ;AC009;
				                                                                                         ;AN000;
 0238				D_80:                                                                                    ;AN000;
 0238  2E: F7 06 0000 E 0020	        TEST    IFSPROC_FLAGS,ISSEQ             ; fs successful                          ;AN000;
 023F  74 03			        JZ      D_90                            ; if seq, just ret                       ;AN000;
 0241  E9 0166 R		        JMP     FA_990                                                                   ;AN000;
 0244				D_90:                                           ; else -                                 ;AN000;
				        RestoreReg <DI,ES>                      ; restore cds ptr into es:di             ;AN000;
 0244  5F                    2		POP     DI 
 0245  07                    2		POP     ES 
				        invoke  CD_TO_CDS                                                                ;AN000;
 0246  E8 0000 E             1		CALL    CD_TO_CDS 
 0249  E9 0166 R		        JMP     FA_990                          ; go up & ret in fa to preserve ds       ;AN000;
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_DELETE                                                                       ;AN000;
 024C                        1	IFS_DELETE    ENDP 
				                                                                                         ;AN000;
				BREAK <IFS_SEQ_OPEN Open>                                                                ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-19
IFS_SEQ_OPEN Open                                           

				;************************************************************************************    ;AN000;
				; see IFS_OPEN for details                                                               ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SEQ_OPEN,NEAR                                                    ;AN000;
 024C                        1	IFS_SEQ_OPEN    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for open/create            ;AN000;
				        ifsr_api_def  OPENFILE                                                           ;AN000;
				                                                                                         ;AN000;
 024C  50			        PUSH    AX                              ; save access/share byte                 ;AN000;
				                                                                                         ;AN000;
 024D  2E: C7 06 0000 E 0010	        MOV     CS:IFSPROC_FLAGS,ISOLDOPEN      ; remember this is old open              ;AN000;
 0254  EB 25			        JMP     SHORT SXO_10                    ; cont. in ifs_seq_xopen                 ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEQ_OPEN                                                                     ;AN000;
 0256                        1	IFS_SEQ_OPEN    ENDP 
				                                                                                         ;AN000;
				BREAK <IFS_OPEN Open>                                                                    ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-20
IFS_OPEN Open                                               

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_OPEN                                                                               ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [WFP_START] Points to WFP string ("//" must be first 2 chars, NUL                ;AN000;
				;               terminated)                                                              ;AN000;
				;       [THISCDS] Points to CDS being used                                               ;AN000;
				;       [THISSFT] Points to SFT to fill in if file found                                 ;AN000;
				;               (sf_mode field set so that FCB may be detected)                          ;AN000;
				;       ES:DI = [THISSFT]                                                                ;AN000;
				;       [SATTRIB] Is attribute of search, determines what files can be found             ;AN000;
				;       AX is Access and Sharing mode                                                    ;AN000;
				;         High NIBBLE of AL (Sharing Mode)                                               ;AN000;
				;               sharing_compat     file is opened in compatibility mode                  ;AN000;
				;               sharing_deny_none  file is opened Multi reader, Multi writer             ;AN000;
				;               sharing_deny_read  file is opened Only reader, Multi writer              ;AN000;
				;               sharing_deny_write file is opened Multi reader, Only writer              ;AN000;
				;               sharing_deny_both  file is opened Only reader, Only writer               ;AN000;
				;         Low NIBBLE of AL (Access Mode)                                                 ;AN000;
				;               open_for_read   file is opened for reading                               ;AN000;
				;               open_for_write  file is opened for writing                               ;AN000;
				;               open_for_both   file is opened for both reading and writing.             ;AN000;
				;                                                                                        ;AN000;
				;         For FCB SFTs AL should = -1                                                    ;AN000;
				;               (not checked)                                                            ;AN000;
				; Function:                                                                              ;AN000;
				;     see IFS_XOPEN                                                                      ;AN000;
				; Outputs:                                                                               ;AN000;
				;       sf_ref_count is NOT altered                                                      ;AN000;
				;       CARRY CLEAR                                                                      ;AN000;
				;           THISSFT filled in.                                                           ;AN000;
				;       CARRY SET                                                                        ;AN000;
				;           AX is error code                                                             ;AN000;
				;               error_file_not_found                                                     ;AN000;
				;                       Last element of path not found                                   ;AN000;
				;               error_path_not_found                                                     ;AN000;
				;                       Bad path                                                         ;AN000;
				;               error_access_denied                                                      ;AN000;
				;                       Attempt to open read only file for writting, or                  ;AN000;
				;                       open a directory                                                 ;AN000;
				;               error_sharing_violation                                                  ;AN000;
				;                       The sharing mode was correct but not allowed                     ;AN000;
				;                       generates an INT 24 on compatibility mode SFTs                   ;AN000;
				; Regs: DS preserved, others destroyed                                                   ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_OPEN,NEAR                                                        ;AN000;
 0256                        1	IFS_OPEN    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for open/create            ;AN000;
				        ifsr_api_def  OPENFILE                                                           ;AN000;
				                                                                                         ;AN000;
 0256  50			        PUSH    AX                              ; save access/share mode                 ;AN000;
				                                                                                         ;AN000;
 0257  2E: C7 06 0000 E 0010	        MOV     CS:IFSPROC_FLAGS,ISOLDOPEN      ; set for old open                       ;AN000;
 025E  EB 3A			        JMP     SHORT XO_20                     ; Rest of processing in                  ;AN000;
				                                                ; extended open routine.                 ;AN000;
				EndProc IFS_Open                                                                         ;AN000;
 0260                        1	IFS_Open    ENDP 
				                                                                                         ;AN000;
				BREAK <IFS_SEQ_CREATE Open>                                                              ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-21
IFS_SEQ_CREATE Open                                         

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEQ_CREATE                                                                         ;AN000;
				;                                                                                        ;AN000;
				; see IFS_CREATE for details                                                             ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SEQ_CREATE,NEAR                                                  ;AN000;
 0260                        1	IFS_SEQ_CREATE    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for open/create            ;AN000;
				        ifsr_api_def  OPENFILE                                                           ;AN000;
				                                                                                         ;AN000;
 0260  50			        PUSH    AX                              ; save attribute                         ;AN000;
				                                                                                         ;AN000;
 0261  2E: C7 06 0000 E 8008	        MOV     CS:IFSPROC_FLAGS,IsOldCreate + IsCreate ; remember is old create         ;AN012;
 0268  EB 11			        JMP     SHORT SXO_10                    ; cont. in ifs_seq_xopen                 ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEQ_CREATE                                                                   ;AN000;
 026A                        1	IFS_SEQ_CREATE    ENDP 
				                                                                                         ;AN000;
				BREAK <IFS_CREATE Create>                                                                ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-22
IFS_CREATE Create                                           

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_CREATE                                                                             ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [WFP_START] Points to WFP string ("d:/" must be first 3 chars, NUL               ;AN000;
				;               terminated)                                                              ;AN000;
				;       [CURR_DIR_END] Points to end of Current dir part of string                       ;AN000;
				;               ( = -1 if current dir not involved, else                                 ;AN000;
				;                Points to first char after last "/" of current dir part)                ;AN000;
				;       [THISCDS] Points to CDS being used                                               ;AN000;
				;       [THISSFT] Points to SFT to fill in if file created                               ;AN000;
				;               (sf_mode field set so that FCB may be detected)                          ;AN000;
				;       ES:DI = [THISSFT]                                                                ;AN000;
				;       [SATTRIB] Is attribute of search, determines what files can be found             ;AN000;
				;       AL is Attribute to create                                                        ;AN000;
				;       AH is 0 if CREATE, non zero if CREATE_NEW                                        ;AN000;
				; Function:                                                                              ;AN000;
				;       See IFS_XOPEN for details                                                        ;AN000;
				; Outputs:                                                                               ;AN000;
				;       sf_ref_count is NOT altered                                                      ;AN000;
				;       CARRY CLEAR                                                                      ;AN000;
				;           THISSFT filled in.                                                           ;AN000;
				;               sf_mode = sharing_compat + open_for_both for Non-FCB SFT                 ;AN000;
				;       CARRY SET                                                                        ;AN000;
				;           AX is error code                                                             ;AN000;
				;               error_path_not_found                                                     ;AN000;
				;                       Bad path (not in curr dir part if present)                       ;AN000;
				;               error_access_denied                                                      ;AN000;
				;                       Attempt to re-create read only file , or                         ;AN000;
				;                       create a second volume id or create a dir                        ;AN000;
				;               error_sharing_violation                                                  ;AN000;
				;                       The sharing mode was correct but not allowed                     ;AN000;
				;                       generates an INT 24                                              ;AN000;
				; Regs: DS preserved, others destroyed                                                   ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_CREATE,NEAR                                                      ;AN000;
 026A                        1	IFS_CREATE    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for open/create            ;AN000;
				        ifsr_api_def  OPENFILE                                                           ;AN000;
				                                                                                         ;AN000;
 026A  50			        PUSH    AX                              ; save attribute                         ;AN000;
				                                                                                         ;AN000;
 026B  2E: C7 06 0000 E 0008	        MOV     CS:IFSPROC_FLAGS,ISOLDCREATE    ; remember is old create                 ;AN000;
 0272  EB 26			        JMP     SHORT XO_20                     ; cont. in ifs_xopen                     ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_Create                                                                       ;AN000;
 0274                        1	IFS_Create    ENDP 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				BREAK <IFS_SEQ_XOPEN Open>                                                               ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-23
IFS_SEQ_XOPEN Open                                          

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEQ_XOPEN                                                                          ;AN000;
				;                                                                                        ;AN000;
				; see IFS_XOPEN for details                                                              ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SEQ_XOPEN,NEAR                                                   ;AN000;
 0274                        1	IFS_SEQ_XOPEN    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for open/create            ;AN000;
				        ifsr_api_def  OPENFILE                                                           ;AN000;
				                                                                                         ;AN000;
 0274  2E: C7 06 0000 E 0000	        MOV     IFSPROC_FLAGS,0                 ; Clear IFS processing flags             ;AN000;
 027B				SXO_10:                                                                                  ;AN000;
				        invoke  CHECK_SEQ                       ; check if this is unc or ifs device     ;AN000;
 027B  E8 0000 E             1		CALL    CHECK_SEQ 
 027E  72 1A			        JC      XO_20                           ; cf=0 unc, cf=1 device                  ;AN000;
				                                                                                         ;AN000;
 0280				SXO_20:                                                                                  ;AN000;
 0280  0E			        PUSH    CS                              ; ds-ifsseg                              ;AN000;
 0281  1F			        POP     DS                                                                       ;AN000;
				ASSUME  DS:IFSSEG                                                                        ;AN000;
				                                                                                         ;AN000;
 0282  83 0E 0000 E 20		        OR      IFSPROC_FLAGS,ISSEQ             ; SEQ = UNC                              ;AN000;
				        invoke  SET_THISIFS_UNC                 ; set [THISIFS] = UNC IFS                ;AN000;
 0287  E8 0000 E             1		CALL    SET_THISIFS_UNC 
				        invoke  PREP_IFSR                       ; zero out ifsr                          ;AN000;
 028A  E8 0000 E             1		CALL    PREP_IFSR 
 028D  E9 0313 R		        JMP     XO_200                          ; cont. in ifs_xopen                     ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEQ_XOPEN                                                                    ;AN000;
 0290                        1	IFS_SEQ_XOPEN    ENDP 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				BREAK <IFS_XOPEN Open>                                                                   ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-24
IFS_XOPEN Open                                              

				                                                                                         ;AN000;
				;************************************************************************************
				;
				; IFS_XOPEN
				;
				; Called by:       IFSFUNC dispatcher
				;
				; Routines called: CALL_IFS    DFL_MATCH
				;                  CD_TO_CDS   DFL_TO_DF
				;                  CDS_TO_CD   DF_TO_DFL
				;                  SFT_TO_SFF
				;                  SF_TO_SFT
				;
				; Inputs:
				;       [THISCDS] Set
				;       [THISSFT] Set
				;       [SAVE_DX] = FLAG: FUNCTION CONTROL, FORMAT=0000000C NNNN EEEE
				;                  C 0=VALIDATE CODE PAGE, 1=NO CODE PAGE CHECK
				;                  NNNN=DOES NOT EXIST ACTION:  0=FAIL, 1=CREATE
				;                  EEEE=EXISTS ACTION        :  0=FAIL, 1=OPEN, 2=REPLACE/OPEN
				;       [SAVE_BX] = MODE  OPEN MODE   FORMAT : 0WF00000ISSS0AAA
				;                  AAA = ACCESS CODE: 0=READ, 1=WRITE, 2=READ/WRITE
				;                                     3=EXECUTE (UNDOCUMENTED)
				;                                     7=FCB     (UNDOCUMENTED)
				;                  SSS=SHARING MODE : 0=COMPATIBILITY, 1=DENY READ/WRITE
				;                                     2=DENY WRITE, 3=DENY READ,
				;                                     4=DENY NONE
				;                  I 0=PASS HANDLE TO CHILD, 1=NO INHERIT
				;                  F 0=INT 24H, 1=RETURN ERROR
				;                  ON THIS OPEN AND ANY IO TO THIS HANDLE
				;                  W 0=NO COMMIT, 1=AUTO-COMMIT ON WRITE
				;       AX        = ATTR  SEARCH/CREATE ATTRIBUTE
				;       [SAVE_DS]:[SAVE_SI] = Full path name
				;       [SAVE_ES]:[SAVE_DI] = Parameter list
				;                             Null list if DI=-1
				;
				; Function:
				;       IF SEQ THEN
				;          prep for UNC
				;       ELSE DO
				;              IF  [THISCDS] .NOT. NULL  THEN
				;                 DO
				;                   Call CDS_TO_CD
				;                   Set IFSR_DEVICE_CB@ as pointer to CD
				;                   Set IFS pointer to CURDIR_IFSR_HDR
				;                   DFL_FLAG = 0
				;                 ENDDO
				;              ELSE DO
				;                     Call DFL_TO_DF
				;                     Set IFSR_DEVICE_CB@ as pointer to DF
				;                     Set IFS pointer to DFL_IFSR_HDR
				;                     DFL_FLAG = 1
				;                   ENDDO
				;              ENDIF
				;            ENDDO
				;       ENDIF
				;       Prep IFSRH:
				;       *  IFSR_LENGTH      DW     62       ; Request length
				;       *  IFSR_FUNCTION    DB      4       ; Execute API function
				;        + IFSR_RETCODE     DW      ?
				;        + IFSR_RETCLASS    DB      ?
				;          IFSR_RESV1       DB     16 DUP(0)
				;       *  IFSR_APIFUNC     DB      9       ; Open/Create File
				;        + 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/DF
				;       *+ IFSR_OPEN_CB@    DD      ?       ; convert SFT to SFF
				;                                           ; and set this as pointer to it.
				;       *  IFSR_MODE        DW      ?       ; BX - open mode
				;       *  IFSR_FLAG        DW      ?       ; AL
				;       *  IFSR_CP          DW      ?       ; Global code page
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-25
IFS_XOPEN Open                                              

				;       *  IFSR_CPSW        DB      0       ; Code page switch flag
				;          IFSR_RESV3       DB      0
				;       *  IFSR_NAME@       DD      ?       ; ptr to full asciiz filename
				;       *  IFSR_PARMS@      DD      ?       ; ES:DI
				;       *  IFSR_MATCHATTR   DW      ?       ; CX
				;        + IFSR_ACTION      DW      0       ; Action taken code: 1=file opened
				;                                           ; 2=file created/opened
				;                                           ; 3=file replaced/opened
				;
				;       CALL routine, CALL_IFS, with IFS pointer
				;       IF IFSR_RETCODE = 0 THEN
				;          DO
				;            IF DFL_FLAG = 0 THEN
				;               Call CD_TO_CDS
				;            ELSE  Call DF_TO_DFL
				;            Call SF_TO_SFT
				;            CX = IFSR_ACTION
				;          ENDDO
				;       ELSE DO   /* error */
				;              AX = IFSR_RETCODE
				;              Set carry
				;            ENDDO
				;       ENDIF
				;
				; Outputs:
				;       CX=ACTION TAKEN CODE
				;          1 = FILE OPENED
				;          2 = FILE CREATED/OPENED
				;          3 = FILE REPLACED/OPENED
				;       sf_ref_count is NOT altered
				;       THISSFT filled in or updated
				;       AX set on error:
				;               error_file_not_found
				;                       Last element of path not found
				;               error_path_not_found
				;                       Bad path
				;               error_access_denied
				;                       Attempt to open read only file for writing,
				;                       or open a directory
				;               error_sharing_violation
				;                       The sharing mode was correct but not allowed
				;                       generates an INT 24 on compatibility mode SFTs
				; DS preserved, others destroyed
				;
				;************************************************************************************
				                                                                                         ;AN000;
				        procedure   IFS_XOPEN,NEAR                                                       ;AN000;
 0290                        1	IFS_XOPEN    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for open/create            ;AN000;
				        ifsr_api_def  OPENFILE                                                           ;AN000;
				                                                                                         ;AN000;
 0290  50			        PUSH    AX                              ; srch attr/create attr
 0291  2E: C7 06 0000 E 0000	        MOV     CS:IFSPROC_FLAGS,ZERO           ; Clear IFS processing flags             ;AN000;
 0298  EB 06			        JMP     SHORT XO_25                                                              ;AN008; BAF
				                                                                                         ;AN000;
 029A				XO_20:                                          ; (welcome all old open/create calls)    ;AN000;
				ASSUME  DS:DOSGROUP                                                                      ;AN000;
 029A  C7 06 0000 E FFFF	        MOV     [SAVE_DI],-1                    ; set no parms list on old calls         ;AN008; BAF
 02A0				XO_25:                                                                                   ;AN008; BAF
				        invoke  PREP_IFSR                       ; zero out ifsr                          ;AN000;
 02A0  E8 0000 E             1		CALL    PREP_IFSR 
 02A3  2E: C7 06 0000 E 001E	        MOV     CS:DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@                                     ;AN000;
				                                                                                         ;AN000;
 02AA  8D 36 0000 E		        LEA     SI,COUNTRY_CDPG                 ; load cp and cpsw                       ;AN000;
 02AE  8B 44 6A			        MOV     AX,DS:[SI.ccDosCodePage]        ;      |                                 ;AN000;
 02B1  26: 89 47 2A		        MOV     ES:[BX.IFSR_CP],AX              ;      |                                 ;AN000;
 02B5  A0 0000 E		        MOV     AL,[CPSWFLAG]                   ;      |                                 ;AN000;
 02B8  26: 88 47 2C		        MOV     ES:[BX.IFSR_CPSW],AL            ;      |                                 ;AN000;
				
 02BC  83 3E 0000 E FF		        CMP     WORD PTR [THISCDS],NULL_PTR     ; determine CDS or DFL                   ;AN000;
 02C1  74 19			        JE      XO_100                                                                   ;AN000;
				                                                                                         ;AN000;
 02C3  C5 36 0000 E		        LDS     SI,[THISCDS]                    ; cds--cds--cds--cds--cds--cds           ;AN000;
 02C7  8B C6			        MOV     AX,SI                           ; set ifsDrv for possible I24            ;AN000;
				        invoke  IFSDrvFromCDS                                                            ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-26
IFS_XOPEN Open                                              

 02C9  E8 0000 E             1		CALL    IFSDrvFromCDS 
				        RestoreReg <AX>                         ; must have ax 1st on stack              ;AN000;
 02CC  58                    2		POP     AX 
				        SaveReg <DS,SI,AX>                      ; cds ptr, attr                          ;AN000;
 02CD  1E                    2		PUSH    DS 
 02CE  56                    2		PUSH    SI 
 02CF  50                    2		PUSH    AX 
 02D0				XO_60:                                                                                   ;AN000;
				        invoke  CDS_TO_CD                       ; CDS: sets [THISIFS]                    ;AN000;
 02D0  E8 0000 E             1		CALL    CDS_TO_CD 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           IFSR_DEVICE_CB@              ;AN000;
				                                                ;           ds - IFSSEG                  ;AN000;
 02D3  2E: 81 0E 0000 E 0080	        OR      IFSPROC_FLAGS,ISCDS                                                      ;AN000;
 02DA  EB 37			        JMP     SHORT XO_200                    ; go prep IFSRH                          ;AN000;
				                                                                                         ;AN000;
 02DC				XO_100:                                                                                  ;AN000;
				        SaveReg <ES>                            ; if deviceless attach, skip device stuff;AN014;
 02DC  06                    2		PUSH    ES 
 02DD  2E: C4 3E 0000 E		        LES     DI,CS:[THISDFL]                                                          ;AN014;
 02E2  2E: 83 3E 0000 E FF	        CMP     WORD PTR [THISDFL],NULL_PTR                                              ;AN014;
				        RestoreReg <ES>                                                                  ;AN014;
 02E8  07                    2		POP     ES 
 02E9  75 17			        JNE     XO_110                                                                   ;AN014;
 02EB  2E: 83 0E 0000 E 20	        OR      CS:IFSPROC_FLAGS,IsSeq                                                   ;AN014;
 02F1  2E: 80 3E 0000 E 00	        CMP     CS:[fAssign],ZERO
 02F7  75 1A			        JNE     XO_200
 02F9  83 C4 02			        ADD     SP,2
 02FC  B8 0048			        MOV     AX,72
 02FF  EB 0C 90			        JMP     XO_120                                                                   ;AN014;
 0302				XO_110:                                                                                  ;AN014;
				        invoke  DFL_SINGLE_FILE_CHECK           ; DFL: sets [THISIFS]                    ;AN000;
 0302  E8 0000 E             1		CALL    DFL_SINGLE_FILE_CHECK 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           IFSR_DEVICE_CB@              ;AN000;
				                                                ;           ds - IFSSEG                  ;AN000;
 0305  73 0C			        JNC     XO_200                                                                   ;AN000;
				;;;;;;;;TEST    IFSPROC_FLAGS,ISOLDOPEN+ISOLDCREATE     ; new open also pushes ax        ;AD014;
				;;;;;;;;JZ      XO_120                          ;  dfl error                             ;AD014;
 0307  83 C4 02			        ADD     SP,2                            ;  get saved ax off stack if old         ;AN000;
				;XO_120:                                                                                 ;AD014;
 030A  B8 0001			        MOV     AX,error_invalid_function       ;  set error info and quit               ;AN000;
 030D				XO_120:                                                                                  ;AN014;
				        invoke  SET_EXTERR_INFO                                                          ;AN000;
 030D  E8 0000 E             1		CALL    SET_EXTERR_INFO 
 0310  E9 0163 R		        JMP     FA_980                          ; ret up in FA to preserve DS            ;AN000;
				                                                                                         ;AN000;
 0313				XO_200:                                         ; (welcome seq open/create)              ;AN000;
				        Context DS                              ; get addressability to dosgroup         ;AN000;
 0313  16                    1		PUSH    SS 
 0314  1F                    1		POP     DS 
				        invoke  SFT_TO_SFF                      ; SFT: sets IFSR_OPEN_CB@                ;AN000;
 0315  E8 0000 E             1		CALL    SFT_TO_SFF 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           ds - IFSSEG                  ;AN000;
 0318  26: C7 07 003A		        MOV     ES:[BX.IFSR_LENGTH],LENGTH_OPENFILE ; prep IFRH                          ;AN000;
 031D  26: C6 47 02 05		        MOV     ES:[BX.IFSR_FUNCTION],IFSEXECAPI                                         ;AN000;
 0322  26: C6 47 16 09		        MOV     ES:[BX.IFSR_APIFUNC],IFSOPENFILE                                         ;AN000;
 0327  58			        POP     AX                              ; restore input AX              ;AN000;
 0328  2E: F7 06 0000 E 0010	        TEST    IFSPROC_FLAGS,ISOLDOPEN         ; check for old open/create              ;AN000;
 032F  74 21			        JZ      XO_220                                                                   ;AN000;
				;;;;;;  OR      AX,OLDOPEN_MODE                 ; why did I do this???? scrap            ;AD006;
				
				        SaveReg <DS,SI>                         ; old redirector does this               ;AN013;
 0331  1E                    2		PUSH    DS 
 0332  56                    2		PUSH    SI 
				        Context DS                                                                       ;AN013;
 0333  16                    1		PUSH    SS 
 0334  1F                    1		POP     DS 
 0335  C5 36 0000 E		        LDS     SI,[THISSFT]                                                             ;AN013;
 0339  F7 44 02 8000		        TEST    DS:[SI.SF_MODE],sf_isFCB                                                 ;AN013;
				        RestoreReg <SI,DS>                                                               ;AN013;
 033E  5E                    2		POP     SI 
 033F  1F                    2		POP     DS 
 0340  74 02			        JZ      XO_210                                                                   ;AN013;
 0342  B0 FF			        MOV     AL,-1                                                                    ;AN013;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-27
IFS_XOPEN Open                                              

 0344				XO_210:                                                                                  ;AN013;
				
 0344  26: 89 47 26		        MOV     ES:[BX.IFSR_MODE_WORD],AX                                                     ;AN000
				;
 0348  26: C7 47 28 0101	        MOV     ES:[BX.IFSR_FLAG],OLDOPEN_FLAG                                           ;AN000;
 034E  32 E4			        XOR     AH,AH                                                                    ;AN000;
 0350  EB 21			        JMP     SHORT XO_240                                                             ;AN000;
 0352				XO_220:                                                                                  ;AN000;
 0352  2E: F7 06 0000 E 0008	        TEST    IFSPROC_FLAGS,ISOLDCREATE                                                ;AN000;
 0359  74 23			        JZ      XO_260                                                                   ;AN000;
 035B  26: C7 47 26 0002	        MOV     ES:[BX.IFSR_MODE_WORD],OLDCREATE_MODE        ; old create                     ;AC006
				;AC010;
 0361  26: C7 47 28 0112	        MOV     ES:[BX.IFSR_FLAG],OLDCREATE_FLAG                                         ;AN000;
 0367  0A E4			        OR      AH,AH                           ; is this create new??                   ;AN000;
 0369  74 06			        JZ      XO_230                                                                   ;AN000;
 036B  26: C7 47 28 0010	        MOV     ES:[BX.IFSR_FLAG],OLDCREATENEW_FLAG                                      ;AN000;
 0371				XO_230:                                                                                  ;AN000;
 0371  86 E0			        XCHG    AH,AL                                                                    ;AN000;
 0373				XO_240:                                                                                  ;AN000;
 0373  16			        PUSH    SS                              ; get ds = dosgroup so can access        ;AN000;
 0374  1F			        POP     DS                              ; wfp_start                              ;AN000;
				ASSUME  DS:DOSGROUP                                                                      ;AN000;
 0375  A0 0000 E		        MOV     AL,[SATTRIB]                                                             ;AN000;
 0378  26: 89 47 36		        MOV     ES:[BX.IFSR_MATCHATTR],AX                                                ;AN000;
 037C  EB 2C			        JMP     SHORT XO_280                    ; go call FS                             ;AN000;
				                                                                                         ;AN000;
 037E				XO_260:                                         ; -------extended open/create------------;AN000;
				        Context DS                              ; set ds-dosgroup                        ;AN000;
 037E  16                    1		PUSH    SS 
 037F  1F                    1		POP     DS 
				;;;;;;;;PUSH    [SAVE_DX]                                                                ;AD012;
				;;;;;;;;POP     ES:[BX.IFSR_FLAG]               ; input dx - flag                        ;AD012;
				        SaveReg <AX>                            ; check if create, if so set flag        ;AN012;
 0380  50                    2		PUSH    AX 
 0381  A1 0000 E		        MOV     AX,[SAVE_DX]                                                             ;AN012;
 0384  26: 89 47 28		        MOV     ES:[BX.IFSR_FLAG],AX
 0388  8A E0			        MOV     AH,AL                                                                    ;AN012;
 038A  25 0FF0			        AND     AX,0FF0H                                                                 ;AN012;
 038D  3C 10			        CMP     AL,NOTEXIST_ACT_CREATE*16                                                ;AN012;
				        RestoreReg <AX>                                                                  ;AN012;
 038F  58                    2		POP     AX 
 0390  75 07			        JNE     XO_270                                                                   ;AN012;
 0392  2E: 81 0E 0000 E 8000	        OR      IFSPROC_FLAGS,IsCreate                                                   ;AN012;
 0399				XO_270:                                                                                  ;AN012;
				
 0399  FF 36 0000 E		        PUSH    [SAVE_BX]                                                                ;AN000;
 039D  26: 8F 47 26		        POP     ES:[BX.IFSR_MODE_WORD]               ; input bx - mode                        ;AN000
				;
 03A1  86 E0			        XCHG    AH,AL                           ; attr                                   ;AN000;
 03A3  A0 0000 E		        MOV     AL,[SATTRIB]                                                             ;AN000;
 03A6  26: 89 47 36		        MOV     ES:[BX.IFSR_MATCHATTR],AX                                                ;AN000;
				;       MOV     DI,[SAVE_DI]                    ; parm list                              ;AD011;
				;       CMP     DI,NULL_PTR                     ;  if offset -1, then no parm list       ;AD011;
				;       JE      XO_280                          ;    |                                   ;AD011;
				;       MOV     ES:WORD PTR[BX.IFSR_PARMS@],DI  ;    |                                   ;AD011;
				;       PUSH    [SAVE_ES]                       ;    |                                   ;AD011;
				;       POP     ES:WORD PTR[BX.IFSR_PARMS@+2]   ;    |                                   ;AD011;
				
 03AA				XO_280:                                                                                  ;AN000;
 03AA  8B 36 0000 E		        MOV     SI,[WFP_START]                                                           ;AN000;
				        invoke  STRIP_WFP_START                                                          ;AN000;
 03AE  E8 0000 E             1		CALL    STRIP_WFP_START 
 03B1  26: 89 77 2E		        MOV     WORD PTR ES:[BX.IFSR_NAME@],SI                                           ;AN000;
 03B5  26: 8C 5F 30		        MOV     WORD PTR ES:[BX.IFSR_NAME@+2],DS                                         ;AN000;
 03B9  0E			        PUSH    CS                                                                       ;AN000;
 03BA  1F			        POP     DS                                                                       ;AN000;
				ASSUME  DS:IFSSEG                                                                        ;AN000;
				                                                                                         ;AN000;
				;******************************************************************************          ;AN000;
				        invoke  CALL_IFS                        ; call fs with open/create request       ;AN000;
 03BB  E8 0000 E             1		CALL    CALL_IFS 
				;******************************************************************************          ;AN000;
				                                                                                         ;AN000;
 03BE  73 10			        JNC     XO_300                                                                   ;AN000;
 03C0  F7 06 0000 E 0080	        TEST    IFSPROC_FLAGS,ISCDS             ; request FAILED -                       ;AN000;
 03C6  75 03			        JNZ     XO_290                                                                   ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-28
IFS_XOPEN Open                                              

 03C8  E9 0163 R		        JMP     FA_980                          ;   go up, set carry & return            ;AN000;
 03CB				XO_290:                                                                                  ;AN000;
				        RestoreReg <SI,DS>                      ;   if cds, restore stack first          ;AN000;
 03CB  5E                    2		POP     SI 
 03CC  1F                    2		POP     DS 
 03CD  E9 0163 R		        JMP     FA_980                                                                   ;AN000;
				                                                                                         ;AN000;
 03D0				XO_300:                                         ; request SUCCEEDED -                    ;AN000;
 03D0  F7 06 0000 E 0018	        TEST    IFSPROC_FLAGS,ISOLDOPEN+ISOLDCREATE   ; check for old open/create        ;AN007; BAF
 03D6  75 10			        JNZ     XO_310                                                                   ;AN007; BAF
				        SaveReg <DS,SI>                                                                  ;AN007; BAF
 03D8  1E                    2		PUSH    DS 
 03D9  56                    2		PUSH    SI 
				        CallInstall Get_User_Stack,multDOS,24   ; Set action take back into CX           ;AN007; BAF
				                                          ;AN000;
 03DA  B8 1218               1		MOV     AX,(multDOS SHL 8) + 24 
 03DD  CD 2F                 1		INT     2Fh 
				ASSUME  DS:DOSGROUP                                                                      ;AN007; BAF
 03DF  26: 8B 47 38		        MOV     AX,ES:[BX.IFSR_ACTION]          ; action take only if Ext Open           ;AN007; BAF
 03E3  89 44 04			        MOV     DS:[SI].USER_CX,AX                                                       ;AN007; BAF
				        RestoreReg <SI,DS>                                                               ;AN007; BAF
 03E6  5E                    2		POP     SI 
 03E7  1F                    2		POP     DS 
				ASSUME  DS:IFSSEG                                                                        ;AN007; BAF
 03E8				XO_310:                                         ; request SUCCEEDED -                    ;AN007; BAF
 03E8  26: 8B 47 36		        MOV     AX,ES:[BX.IFSR_MATCHATTR]                                                ;AN000;
				                                                                                         ;AN000;
				        invoke  SFF_TO_SFT                      ;   update sft                           ;AN000;
 03EC  E8 0000 E             1		CALL    SFF_TO_SFT 
 03EF  F7 06 0000 E 0080	        TEST    IFSPROC_FLAGS,ISCDS                                                      ;AN000;
 03F5  74 08			        JZ      XO_320                                                                   ;AN000;
				        RestoreReg <DI,ES>                      ;   cds-restore cds ptr into es:di       ;AN000;
 03F7  5F                    2		POP     DI 
 03F8  07                    2		POP     ES 
				        invoke  CD_TO_CDS                       ;   update cds                           ;AN000;
 03F9  E8 0000 E             1		CALL    CD_TO_CDS 
 03FC  EB 19 90			        JMP     XO_360                                                                   ;AN000;
 03FF				XO_320:                                                                                  ;AN000;
 03FF  F7 06 0000 E 0020	        TEST    IFSPROC_FLAGS,ISSEQ                                                      ;AN000;
 0405  74 07			        JZ      XO_340                                                                   ;AN000;
 0407  BF FFFF			        MOV     DI,NULL_PTR                     ;   set seq devptr to null               ;AN000;
				        SaveReg <DI>                            ;   this for sf_devptr                   ;AN000;
 040A  57                    2		PUSH    DI 
				        RestoreReg <ES>                                                                  ;AN000;
 040B  07                    2		POP     ES 
 040C  EB 09			        JMP     SHORT XO_360                                                             ;AN000;
				                                                                                         ;AN000;
 040E				XO_340:                                                                                  ;AN000;
				        invoke  DF_TO_DFL                       ;   update dfl                           ;AN000;
 040E  E8 0000 E             1		CALL    DF_TO_DFL 
 0411  C4 3E 0000 E		        LES     DI,[THISDFL]                    ;   this for sf_devptr                   ;AN000;
 0415  33 C0			        XOR     AX,AX                           ;   attr 0 for devices                   ;AN000;
				                                                                                         ;AN000;
 0417				XO_360:                                                                                  ;AN000;
				        Context DS                                                                       ;AN000;
 0417  16                    1		PUSH    SS 
 0418  1F                    1		POP     DS 
 0419  C5 36 0000 E		        LDS     SI,[THISSFT]                    ; set some fields in sft                 ;AN000;
 041D  88 44 04			        MOV     DS:[SI.sf_attr],AL                                                       ;AN000;
				;;;;;;;;MOV     DS:[SI.sf_attr_hi],AH                                                    ;AD015;
 0420  89 7C 07			        MOV     WORD PTR DS:[SI.sf_devptr],DI                                            ;AN000;
 0423  8C 44 09			        MOV     WORD PTR DS:[SI.sf_devptr+2],ES                                          ;AN000;
 0426  2E: F7 06 0000 E 00A0	        TEST    CS:IFSPROC_FLAGS,IsCDS + IsSeq  ; let deviceless attach stuff thru here  ;AC014;
 042D  74 70			        JZ      XO_380                                                                   ;AN000;
 042F  2E: A0 0000 E		        MOV     AL,CS:[IFSDRV]                  ; drive                                  ;AN000;
 0433  25 003F			        AND     AX,devid_file_mask_drive ; Drive in correct bits                         ;AN000;
 0436  0D 8040			        OR      AX,sf_isnet + devid_file_clean                                           ;AN000;
 0439  89 44 05			        MOV     DS:[SI.sf_flags],AX                                                      ;AN000;
				                                                ; now set sf_name to filename in form:   ;AN000;
				                                                ; filename ext  (8 char fn spaced out -  ;AN000;
				                                                ; 3 char ext spaced out)                 ;AN000;
				        SaveReg <CX,DS,SI,DS>                   ; save dssi->sf for later pop & action   ;AN000;
 043C  51                    2		PUSH    CX 
 043D  1E                    2		PUSH    DS 
 043E  56                    2		PUSH    SI 
 043F  1E                    2		PUSH    DS 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-29
IFS_XOPEN Open                                              

				        RestoreReg <ES>                                                                  ;AN000;
 0440  07                    2		POP     ES 
 0441  8B FE			        MOV     DI,SI                           ; esdi->sft                              ;AN000;
				                                                                                         ;AN000;
 0443  83 C7 20			        ADD     DI,sf_name                      ; blank out sf_name                      ;AN000;
				        SaveReg <DI>                            ;         |                              ;AN000;
 0446  57                    2		PUSH    DI 
 0447  B8 2020			        MOV     AX,2020H                        ;         |                              ;AN000;
 044A  B9 0005			        MOV     CX,5                            ;         |                              ;AN000;
 044D  FC			        CLD                                     ;         |                              ;AN000;
 044E  F3/ AB			        REP     STOSW                           ;         |                              ;AN000;
 0450  AA			        STOSB                                   ;         |                              ;AN000;
				        RestoreReg <DI>                         ;         |                              ;AN000;
 0451  5F                    2		POP     DI 
				                                                                                         ;AN000;
				        Context DS                                                                       ;AN000;
 0452  16                    1		PUSH    SS 
 0453  1F                    1		POP     DS 
 0454  8B 36 0000 E		        MOV     SI,[WFP_START]                  ; dssi->wfp_start                        ;AN000;
				        CallInstall DStrlen,multDOS,37          ; get length of full path name (in cx)   ;AN000;
 0458  B8 1225               1		MOV     AX,(multDOS SHL 8) + 37 
 045B  CD 2F                 1		INT     2Fh 
 045D  03 F1			        ADD     SI,CX                           ; mov si to end of name                  ;AN000;
 045F  4E			        DEC     SI                              ; si now on null                         ;AN000;
 0460				XO_362:                                                                                  ;AN000;
 0460  4E			        DEC     SI                              ; mov back one                           ;AN000;
 0461  80 3C 5C			        CMP     BYTE PTR DS:[SI],"\"            ; looking for \ just before fn           ;AN000;
 0464  75 FA			        JNE     XO_362                                                                   ;AN000;
				                                                                                         ;AN000;
 0466  46			        INC     SI                              ; si now pointing to 1st char fn         ;AN000;
 0467  B9 0008			        MOV     CX,8                            ; esdi -> sf_name                        ;AN000;
 046A				XO_364:                                                                                  ;AN000;
 046A  AC			        LODSB                                                                            ;AN000;
 046B  AA			        STOSB                                                                            ;AN000;
 046C  49			        DEC     CX                                                                       ;AN000;
 046D  3C 2E			        CMP     AL,"."                                                                   ;AN000;
 046F  74 0F			        JE      XO_368                                                                   ;AN000;
 0471  0A C0			        OR      AL,AL                                                                    ;AN000;
 0473  74 04			        JZ      XO_366                                                                   ;AN000;
 0475  E3 10			        JCXZ    XO_369                                                                   ;AN000;
 0477  EB F1			        JMP     SHORT XO_364                                                             ;AN000;
				                                                                                         ;AN000;
 0479				XO_366:                                                                                  ;AN000;
 0479  26: C6 45 FF 20		        MOV     BYTE PTR ES:[DI-1]," "                                                   ;AN000;
 047E  EB 1A			        JMP     SHORT XO_378                                                             ;AN000;
				                                                                                         ;AN000;
 0480				XO_368:                                                                                  ;AN000;
 0480  26: C6 45 FF 20		        MOV     BYTE PTR ES:[DI-1]," "                                                   ;AN000;
 0485  03 F9			        ADD     DI,CX                                                                    ;AN000;
 0487				XO_369:                                                                                  ;AN000;
 0487  B9 0003			        MOV     CX,3                                                                     ;AN000;
 048A				XO_370:                                                                                  ;AN000;
 048A  AC			        LODSB                                                                            ;AN000;
 048B  AA			        STOSB                                                                            ;AN000;
 048C  49			        DEC     CX                                                                       ;AN000;
 048D  0A C0			        OR      AL,AL                                                                    ;AN000;
 048F  74 04			        JZ      XO_372                                                                   ;AN000;
 0491  E3 07			        JCXZ    XO_378                                                                   ;AN000;
 0493  EB F5			        JMP     SHORT XO_370                                                             ;AN000;
 0495				XO_372:                                                                                  ;AN000;
 0495  26: C6 45 FF 20		        MOV     BYTE PTR ES:[DI-1]," "                                                   ;AN000;
				                                                                                         ;AN000;
 049A				XO_378:                                                                                  ;AN000;
				        RestoreReg <SI,DS,CX>           ; dssi -> sft, cx=action code                    ;AN000;
 049A  5E                    2		POP     SI 
 049B  1F                    2		POP     DS 
 049C  59                    2		POP     CX 
 049D  EB 1E			        JMP     SHORT XO_500                                                             ;AN000;
				                                                                                         ;AN000;
 049F				XO_380:                                                                                  ;AN000;
				;;;;;;;;TEST    CS:IFSPROC_FLAGS,ISSEQ                                                   ;AD014;
				;;;;;;;;JNZ     XO_500                                                                   ;AD014;
 049F  C7 44 05 88C0		        MOV     DS:[SI.sf_flags],sf_isnet+devid_file_clean+sf_net_spool+devid_device     ;AN000;
				        SaveReg <CX,DS,SI>                      ; sft ptr, action                        ;AN003;
 04A4  51                    2		PUSH    CX 
 04A5  1E                    2		PUSH    DS 
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-30
IFS_XOPEN Open                                              

 04A6  56                    2		PUSH    SI 
				        invoke  XCHGP                           ; dssi -> dfl, esdi -> sft               ;AN000;
 04A7  E8 0000 E             1		CALL    XCHGP 
 04AA  83 C7 20			        ADD     DI,sf_name                                                               ;AN000;
 04AD  83 C6 02			        ADD     SI,DFL_DEV_NAME ; Skip over path sep, now pointing to name               ;AN000;
 04B0  B9 0004			        MOV     CX,4                                                                     ;AN000;
 04B3  F3/ A5			        REP     MOVSW                                                                    ;AN000;
 04B5  B8 2020			        MOV     AX,2020H                                                                 ;AN000;
 04B8  AB			        STOSW                                                                            ;AN000;
 04B9  AA			        STOSB                                                                            ;AN000;
				        RestoreReg <SI,DS,CX>                   ; sft ptr, action                        ;AN003/AC00
				5;
 04BA  5E                    2		POP     SI 
 04BB  1F                    2		POP     DS 
 04BC  59                    2		POP     CX 
				
 04BD				XO_500:                                                                                  ;AN000;
 04BD  2E: A1 0000 E		        MOV     AX,WORD PTR CS:[THISIFS]        ; set sf_ifs_hdr                         ;AN003;
 04C1  89 44 37			        MOV     WORD PTR DS:[SI.SF_IFS_HDR],AX                                           ;AN003;
 04C4  2E: A1 0002 E		        MOV     AX,WORD PTR CS:[THISIFS+2]                                               ;AN003;
 04C8  89 44 39			        MOV     WORD PTR DS:[SI.SF_IFS_HDR+2],AX                                         ;AN003;
				
 04CB  2E: A1 0000 E		        MOV     AX,CS:[SFT_SERIAL_NUMBER]       ; give new sft serial number for         ;AN004;
 04CF  89 44 0B			        MOV     DS:[SI.SF_FIRCLUS],AX           ; fcb processing                         ;AN004;
 04D2  2E: FF 06 0000 E		        INC     CS:[SFT_SERIAL_NUMBER]                                                   ;AN004;
				
 04D7  C7 44 15 0000		        MOV     WORD PTR DS:[SI.SF_POSITION],0                                           ;AN012;
 04DC  C7 44 17 0000		        MOV     WORD PTR DS:[SI.SF_POSITION+2],0                                         ;AN012;
				
 04E1  2E: F7 06 0000 E 8000	        TEST    CS:IFSPROC_FLAGS,IsCreate       ; if create, set sf time/date            ;AN012;
 04E8  74 17			        JZ      XO_520                                                                   ;AN012;
 04EA  1E			        push    ds                              ;AN017: SAVE DS   **RPS
				        CallInstall DATE16,MultDOS,13                                                    ;AN012;
 04EB  B8 120D               1		MOV     AX,(MultDOS SHL 8) + 13 
 04EE  CD 2F                 1		INT     2Fh 
 04F0  1F			        pop     ds                              ;AN017: SAVE DS   **RPS
 04F1  89 54 0D			        MOV     DS:[SI.SF_TIME],DX                                                       ;AN012;
 04F4  89 44 0F			        MOV     DS:[SI.SF_DATE],AX                                                       ;AN012;
 04F7  C7 44 11 0000		        MOV     WORD PTR DS:[SI.SF_SIZE],0                                               ;AN012;
 04FC  C7 44 13 0000		        MOV     WORD PTR DS:[SI.SF_SIZE+2],0                                             ;AN012;
 0501				XO_520:                                                                                  ;AN012;
				
 0501  16			        PUSH    SS                              ; Preserve input DS                      ;AN000;
 0502  1F			        POP     DS                                                                       ;AN000;
 0503  B8 120C			        MOV     AX,(multDOS SHL 8) OR 12                                                 ;AN000;
 0506  CD 2F			        INT     2FH                                                                      ;AN000;
				                                                                                         ;AN000;
				        return                                                                           ;AN000;
 0508                        1	??0001: 
 0508  C3                    1		RET 
				                                                                                         ;AN000;
				EndProc IFS_XOPEN                                                                        ;AN000;
 0509                        1	IFS_XOPEN    ENDP 
				                                                                                         ;AN000;
				BREAK <IFS_SEQ_SEARCH>                                                                   ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-31
IFS_SEQ_SEARCH                                              

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEQ_SEARCH                                                                         ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [WFP_START] Points to WFP string ("d:/" must be first 3 chars, NUL               ;AN000;
				;               terminated)                                                              ;AN000;
				;       [SATTRIB] Is attribute of search, determines what files can be found             ;AN000;
				;       [DMAADD] Points to 53 byte buffer                                                ;AN000;
				; Function:                                                                              ;AN000;
				; BECAUSE OF THE STRUCTURE OF SEARCH IT MUST BE RELATIVE TO A CDS SESSION                ;AN000;
				; Outputs:                                                                               ;AN000;
				;       CARRY SET                                                                        ;AN000;
				;           AX = error_path_not_found                                                    ;AN000;
				; DS preserved, others destroyed                                                         ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SEQ_SEARCH_FIRST,NEAR                                            ;AN000;
 0509                        1	IFS_SEQ_SEARCH_FIRST    PROC    NEAR 
				ASSUME  DS:DOSGROUP,ES:NOTHING                                                           ;AN000;
				                                                                                         ;AN000;
 0509  B8 0003			        MOV     AX,error_path_not_found                                                  ;AN000;
 050C  F9			        STC                                                                              ;AN000;
				        return                                                                           ;AN000;
 050D                        1	??0002: 
 050D  C3                    1		RET 
				                                                                                         ;AN000;
				EndProc IFS_SEQ_SEARCH_FIRST                                                             ;AN000;
 050E                        1	IFS_SEQ_SEARCH_FIRST    ENDP 
				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEQ_SEARCH_NEXT                                                                    ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [DMAADD] Points to 53 byte buffer returned by DOS_SEARCH_FIRST                   ;AN000;
				;           (only first 21 bytes must have valid information)                            ;AN000;
				; Function:                                                                              ;AN000;
				; BECAUSE OF THE STRUCTURE OF SEARCH IT MUST BE RELATIVE TO A CDS SESSION                ;AN000;
				; Outputs:                                                                               ;AN000;
				;       CARRY SET                                                                        ;AN000;
				;           AX = error_no_more_files                                                     ;AN000;
				; DS preserved, others destroyed                                                         ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SEQ_SEARCH_NEXT,NEAR                                             ;AN000;
 050E                        1	IFS_SEQ_SEARCH_NEXT    PROC    NEAR 
				ASSUME  DS:DOSGROUP,ES:NOTHING                                                           ;AN000;
				                                                                                         ;AN000;
 050E  EB F9			        JMP     IFS_SEQ_SEARCH_FIRST                                                     ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEQ_SEARCH_NEXT                                                              ;AN000;
 0510                        1	IFS_SEQ_SEARCH_NEXT    ENDP 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				BREAK <IFS_SEARCH_FIRST Search for first entry>                                          ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-32
IFS_SEARCH_FIRST Search for first entry                     

				                                                                                         ;AN000;
				;************************************************************************************
				;
				; IFS_SEARCH_FIRST
				;
				; Inputs:
				;       [WFP_START] Points to WFP string ("//" must be first 2 chars, NUL
				;               terminated)
				;       [THISCDS] Points to CDS being used may not be NUL
				;       [SATTRIB] Is attribute of search, determines what files can be found
				;       [DMAADD] Points to 53 byte buffer
				;       DS - dosgroup
				;
				; Function:
				;     Prep IFSRH:
				;     *  IFSR_LENGTH      DW     50             ; Request length
				;     *  IFSR_FUNCTION    DB      4             ; Execute API function
				;      + IFSR_RETCODE     DW      ?
				;      + IFSR_RETCLASS    DB      ?
				;        IFSR_RESV1       DB     16 DUP(0)
				;     *  IFSR_APIFUNC     DB      8             ; Search file
				;      + 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      ?             ; null
				;     *  IFSR_SUBFUNC     DB      subfunction   ; 1=first, 2=next
				;                                               ; 4=last (CP/DOS only)
				;     *  IFSR_RESV3       DB      ?             ; DOS Reserved
				;     *+ IFSR_CONTINFO@   DD      continuation info address (always set):
				;     *                          DB      8 DUP(?)   ; SEARCH FILE NAME
				;     *                          DB      3 DUP(?)   ; SEARCH FILE EXTENSION
				;     *                          DB      ?          ; SEARCH ATTRIBUTE
				;                                DB      8 DUP(?)   ; FSDA
				;                                 DIRECTORY ENTRY
				;      +                         DB      8 DUP(?)   ; FOUND FILE NAME
				;      +                         DB      3 DUP(?)   ; FOUND FILE EXTENSION
				;      +                         DB      ?          ; FOUND ATTRIBUTE LOW  ??? DB/DD
				;      +                         DW      ?          ; FILE CODE PAGE (OR 0)
				;      +                         DW      ?          ; RESERVED
				;      +                         DB      ?          ; FOUND ATTRIBUTE HIGH
				;      +                         DB      5  DUP(?)  ; RESERVED
				;      +                         DW      ?          ; FILE TIME
				;      +                         DW      ?          ; FILE DATE
				;      +                         DW      ?          ; MEANING FILE SYSTEM SPECIFIC
				;                                                   ; (STARTING CLUSTER IN FAT)
				;      +                         DD      ?          ; FILE SIZE
				;  following on search first only
				;     *  IFSR_MATCHATTR   DW      ; search attribute  ; format 0000000re0advshr
				;     *  IFSR_NAME@       DD      ; asciiz name to process
				;
				;     IF search first THEN
				;        DO
				;          IFSR_SUBFUNC = 1
				;          Get CDS from [THISCDS]
				;          Call CDS_TO_CD
				;        ENDDO
				;     ELSE DO
				;            IFSR_SUBFUNC = 2
				;            Get CDS from drive byte in DMAADD
				;            Call CDS_TO_CD
				;          ENDDO
				;     ENDIF
				;     CALL routine, CALL_IFS, with pointer to CURDIR_IFSR_HDR
				;     IF IFSR_RETCODE = 0 THEN
				;        DO
				;          Call CD_TO_CDS
				;          DMAADD = IFSR_CONTINFO
				;          Clear carry
				;        ENDDO
				;     ELSE DO   {error}
				;            AX = error code
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-33
IFS_SEARCH_FIRST Search for first entry                     

				;            Set carry
				;          ENDDO
				;     ENDIF
				;
				; Outputs:
				;       CARRY CLEAR
				;           The 53 bytes ot DMAADD are filled in as follows:
				;
				;           Drive Byte (A=1, B=2, ...) High bit = 1   --|
				;           11 byte search name with Meta chars in it   |  From
				;           Search Attribute Byte, attribute of search  |  Server
				;           WORD LastEnt value                          |
				;           WORD DirStart ------------------------------|
				;           DWORD Local CDS
				;           32 bytes of the directory entry found
				;       CARRY SET
				;           AX = error code
				;               error_no_more_files
				;                       No match for this file
				;               error_access_denied
				;                       Device name given
				;               error_path_not_found
				;                       Bad path
				; DS preserved, others destroyed
				;
				;************************************************************************************
				                                                                                         ;AN000;
				        procedure   IFS_SEARCH_FIRST,NEAR                                                ;AN000;
 0510                        1	IFS_SEARCH_FIRST    PROC    NEAR 
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for search                 ;AN000;
				        ifsr_api_def  SEARCHFILE                                                         ;AN000;
				                                                                                         ;AN000;
 0510  2E: C7 06 0000 E 0000	        MOV     CS:IFSPROC_FLAGS,ZERO                                                    ;AN000;
				        invoke  PREP_IFSR                       ; zero ifsr                              ;AN000;
 0517  E8 0000 E             1		CALL    PREP_IFSR 
				                                                                                         ;AN000;
				ASSUME  DS:DOSGROUP                                                                      ;AN000;
 051A  C4 3E 0000 E		        LES     DI,[DMAADD]                     ; esdi -> dmaadd                         ;AN001;
 051E  C5 36 0000 E		        LDS     SI,[THISCDS]                    ; dssi -> cds                            ;AN000;
				
				        invoke  DRIVE_FROM_CDS                  ; set ifsdrv (0-based)                   ;AN001;
 0522  E8 0000 E             1		CALL    DRIVE_FROM_CDS 
 0525  2E: A0 0000 E		        MOV     AL,CS:[IFSDRV]                  ; put 1-based drive # in dmaadd          ;AN001;
 0529  FE C0			        INC     AL                                                                       ;AN001;
 052B  0C 80			        OR      AL,80H                          ; turn on ifs indicator                  ;AN001;
 052D  AA			        STOSB                                                                            ;AN001;
				
				        SaveReg <DS,SI>                         ; preserve ds:si -> cds                  ;AN000;
 052E  1E                    2		PUSH    DS 
 052F  56                    2		PUSH    SI 
 0530  2E: C7 06 0000 E 001E	        MOV     CS:DEVICE_CB@_OFFSET,IFSR_DEVICE_CB@                                     ;AN000;
				        invoke  CDS_TO_CD                       ; CDS: sets [THISIFS]                    ;AN000;
 0537  E8 0000 E             1		CALL    CDS_TO_CD 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           IFSR_DEVICE_CB@              ;AN000;
				                                                ;           ds - IFSSEG                  ;AN000;
 053A  1E			        PUSH    DS                              ; save ds-ifsseg                         ;AN000;
				        Context DS                              ; ds-dosgroup                            ;AN000;
 053B  16                    1		PUSH    SS 
 053C  1F                    1		POP     DS 
				                                                                                         ;AN000;
 053D  8B 36 0000 E		        MOV     SI,[WFP_START]                                                           ;AN000;
				        invoke  STRIP_WFP_START                 ; remove leading d:\ if present          ;AN000;
 0541  E8 0000 E             1		CALL    STRIP_WFP_START 
 0544  26: 89 77 2E		        MOV     ES:WORD PTR[BX.IFSR_NAME@],SI                                            ;AN000;
 0548  26: 8C 5F 30		        MOV     ES:WORD PTR[BX.IFSR_NAME@+2],DS                                          ;AN000;
 054C  A0 0000 E		        MOV     AL,[SATTRIB]                                                             ;AN000;
 054F  32 E4			        XOR     AH,AH                                                                    ;AN000;
 0551  26: 89 47 2C		        MOV     ES:[BX.IFSR_MATCHATTR],AX                                                ;AN000;
				                                                                                         ;AN000;
 0555  1F			        POP     DS                                                                       ;AN000;
				ASSUME  DS:IFSSEG,ES:IFSSEG                                                              ;AN000;
				                                                                                         ;AN000;
 0556  B0 01			        MOV     AL,IFSSEARCH_FIRST                                                       ;AN000;
 0558  EB 30			        JMP     SHORT SN_60                     ; rest of processing is in               ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-34
IFS_SEARCH_FIRST Search for first entry                     

				                                                ; search_next routine                    ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEARCH_FIRST                                                                 ;AN000;
 055A                        1	IFS_SEARCH_FIRST    ENDP 
				                                                                                        ;AN000;
				BREAK <IFS_SEARCH_NEXT Search for next>                                                  ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-35
IFS_SEARCH_NEXT Search for next                             

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; IFS_SEARCH_NEXT                                                                        ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [DMAADD] Points to 53 byte buffer returned by DOS_SEARCH_FIRST                   ;AN000;
				;           (only first 21 bytes must have valid information)                            ;AN000;
				; Function:                                                                              ;AN000;
				;       Look for subsequent matches                                                      ;AN000;
				; Outputs:                                                                               ;AN000;
				;       CARRY CLEAR                                                                      ;AN000;
				;           The 53 bytes at DMAADD are updated for next call                             ;AN000;
				;               (see NET_SEARCH_FIRST)                                                   ;AN000;
				;       CARRY SET                                                                        ;AN000;
				;           AX = error code                                                              ;AN000;
				;               error_no_more_files                                                      ;AN000;
				;                       No more files to find                                            ;AN000;
				; DS preserved, others destroyed                                                         ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   IFS_SEARCH_NEXT,NEAR                                                 ;AN000;
 055A                        1	IFS_SEARCH_NEXT    PROC    NEAR 
				ASSUME  DS:DOSGROUP,ES:NOTHING                                                           ;AN000;
				                                                                                         ;AN000;
				        ifsr_fcn_def  EXECAPI                   ; define ifsr for search                 ;AN000;
				        ifsr_api_def  SEARCHFILE                                                         ;AN000;
				                                                                                         ;AN000;
 055A  2E: C7 06 0000 E 0000	        MOV     CS:IFSPROC_FLAGS,ZERO           ; clear processing flags                 ;AN000;
				        invoke  PREP_IFSR                       ; zero out ifsr                          ;AN000;
 0561  E8 0000 E             1		CALL    PREP_IFSR 
				                                                                                         ;AN000;
 0564				SN_20:                                                                                   ;AN000;
 0564  C5 36 0000 E		        LDS     SI,[DMAADD]                                                              ;AN000;
 0568  AC			        LODSB                                                                            ;AN000;
 0569  24 7F			        AND     AL,NOT 80H                      ; turn off ifs indicator                 ;AN000;
 056B  FE C8			        DEC     AL                              ; make 0-based                           ;AN000;
 056D  2E: A2 0000 E		        MOV     CS:[IFSDRV],AL                  ; set this for possible i24              ;AN000;
				        CallInstall GetCDSFromDrv,multDOS,23,AX,AX                                       ;AN000;
 0571  50                    3		PUSH    AX 
 0572  B8 1217               1		MOV     AX,(multDOS SHL 8) + 23 
 0575  CD 2F                 1		INT     2Fh 
 0577  58                    3		POP     AX 
				ASSUME  DS:NOTHING                                                                       ;AN000;
 0578  73 09			        JNC     SN_40                                                                    ;AN000;
 057A  B8 000F			        MOV     AX,error_invalid_drive          ;   no cds, set error &                  ;AN000;
				        invoke  SET_EXTERR_INFO                                                          ;AN000;
 057D  E8 0000 E             1		CALL    SET_EXTERR_INFO 
 0580  E9 0167 R		        JMP     FA_1000                         ; ret up in FA to preserve DS            ;AN000;
 0583				SN_40:                                          ; (welcome lock)                         ;AN000;
				        SaveReg <DS,SI>                         ; save cds ptr                           ;AN000;
 0583  1E                    2		PUSH    DS 
 0584  56                    2		PUSH    SI 
				        invoke  CDS_TO_CD                       ; CDS: sets [THISIFS]                    ;AN000;
 0585  E8 0000 E             1		CALL    CDS_TO_CD 
				                                                ;           ES:BX -> IFSRH               ;AN000;
				                                                ;           IFSR_DEVICE_CB@              ;AN000;
				                                                ;           ds - IFSSEG                  ;AN000;
 0588  B0 02			        MOV     AL,IFSSEARCH_NEXT               ; start with subfunc=search next         ;AN000;
				;       TEST    IFSPROC_FLAGS,ISADD                                                      ;AD011;
				;       JZ      SN_60                                                                    ;AD011;
				;       INC     AL                              ; inc subfunc to search same             ;AD011;
 058A				SN_60:                                                                                   ;AN000;
 058A  26: 88 47 26		        MOV     ES:[BX.IFSR_SUBFUNC],AL                                                  ;AN000;
 058E  26: C7 07 0032		        MOV     ES:[BX.IFSR_LENGTH],LENGTH_SEARCHFILE                                    ;AN000;
 0593  26: C6 47 02 05		        MOV     ES:[BX.IFSR_FUNCTION],IFSEXECAPI                                         ;AN000;
 0598  26: C6 47 16 08		        MOV     ES:[BX.IFSR_APIFUNC],IFSSEARCHFILE                                       ;AN000;
				                                                                                         ;AN000;
 059D  1E			        PUSH    DS                                                                       ;AN000;
				        Context DS                                                                       ;AN000;
 059E  16                    1		PUSH    SS 
 059F  1F                    1		POP     DS 
 05A0  A1 0000 E		        MOV     AX,WORD PTR [DMAADD]                                                     ;AN000;
 05A3  40			        INC     AX                                                                       ;AN000;
 05A4  26: 89 47 28		        MOV     ES:WORD PTR[BX.IFSR_CONTINFO@],AX                                        ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-36
IFS_SEARCH_NEXT Search for next                             

 05A8  A1 0002 E		        MOV     AX,WORD PTR [DMAADD+2]                                                   ;AN000;
 05AB  26: 89 47 2A		        MOV     ES:WORD PTR[BX.IFSR_CONTINFO@+2],AX                                      ;AN000;
				                                                                                         ;AN000;
 05AF  1F			        POP     DS                                                                       ;AN000;
				ASSUME  DS:IFSSEG                                                                        ;AN000;
				        invoke  CALL_IFS                        ; call FS                                ;AN000;
 05B0  E8 0000 E             1		CALL    CALL_IFS 
				        RestoreReg <DI,ES>                      ; restore cds ptr into es:di             ;AN000;
 05B3  5F                    2		POP     DI 
 05B4  07                    2		POP     ES 
 05B5  72 04			        JC      SN_1000                                                                  ;AN000;
				        invoke  CD_TO_CDS                                                                ;AN000;
 05B7  E8 0000 E             1		CALL    CD_TO_CDS 
 05BA  F8			        CLC                                                                              ;AN000;
				                                                                                         ;AN000;
 05BB				SN_1000:                                                                                 ;AN000;
 05BB  E9 0167 R		        JMP     FA_1000                         ; go up & preserve ds, ret               ;AN000;
				                                                                                         ;AN000;
				EndProc IFS_SEARCH_NEXT                                                                  ;AN000;
 05BE                        1	IFS_SEARCH_NEXT    ENDP 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
				BREAK <OPEN_CHECK_DEVICE  - check that device to be opened is real>                      ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Page     1-37
OPEN_CHECK_DEVICE  - check that device to be opened is real 

				                                                                                         ;AN000;
				;************************************************************************************    ;AN000;
				;                                                                                        ;AN000;
				; CHECK_OPEN_DEVICE                                                                      ;AN000;
				;                                                                                        ;AN000;
				; Inputs:                                                                                ;AN000;
				;       [WFP_START]                                                                      ;AN000;
				;                                                                                        ;AN000;
				; Function:                                                                              ;AN000;
				;                                                                                        ;AN000;
				; Outputs:                                                                               ;AN000;
				;                                                                                        ;AN000;
				;                                                                                        ;AN000;
				;                                                                                        ;AN000;
				;************************************************************************************    ;AN000;
				                                                                                         ;AN000;
				        procedure   OPEN_CHECK_DEVICE,NEAR                                               ;AN000;
 05BE                        1	OPEN_CHECK_DEVICE    PROC    NEAR 
				ASSUME  DS:DOSGROUP,ES:NOTHING                                                           ;AN000;
				                                                                                         ;AN000;
 05BE  8B 36 0000 E		        MOV     SI,[WFP_START]                  ; dssi -> path to open                   ;AN000;
				;       invoke  PARSE_DEVICE_PATH               ; dssi -> device name (asciiz)           ;AN000;
				                                                                                         ;AN000;
 05C2  16			        PUSH    SS                              ; Now check if this device is real       ;AN000;
 05C3  07			        POP     ES                                                                       ;AN000;
 05C4  BF 0000 E		        MOV     DI,OFFSET DOSGROUP:NAME1                                                 ;AN000;
 05C7  B9 0004			        MOV     CX,4                                                                     ;AN000;
 05CA  F3/ A5			        REP     MOVSW                           ; Transfer name to NAME1                 ;AN000;
 05CC  B8 2020			        MOV     AX,2020H                                                                 ;AN000;
 05CF  AB			        STOSW                                                                            ;AN000;
 05D0  AA			        STOSB                                                                            ;AN000;
				                                                                                         ;AN000;
 05D1  06			        PUSH    ES                                                                       ;AN000;
 05D2  1F			        POP     DS                                                                       ;AN000;
				ASSUME  DS:DOSGROUP                                                                      ;AN000;
 05D3  C6 06 0000 E 16		        MOV     [ATTRIB],attr_hidden + attr_system + attr_directory                      ;AN000;
				                                ; Must set this to something interesting                 ;AN000;
				                                ; to call DEVNAME.                                       ;AN000;
				        CallInstall DEVNAME,multDOS,35                                                   ;AN000;
 05D8  B8 1223               1		MOV     AX,(multDOS SHL 8) + 35 
 05DB  CD 2F                 1		INT     2Fh 
 05DD  73 06			        JNC     OCD_120                                                                  ;AN000;
 05DF  B8 0002			        MOV     AX,error_file_not_found                                                  ;AN000;
				        transfer ifs_980                                                                 ;AN000;
 05E2  E9 0000 E             2	??0003:      JMP ifs_980                         ; 
				                                                                                         ;AN000;
 05E5				OCD_120:                                                                                 ;AN000;
				        transfer ifs_990                                                                 ;AN000;
 05E5  E9 0000 E             2	??0004:      JMP ifs_990                         ; 
				                                                                                         ;AN000;
				EndProc OPEN_CHECK_DEVICE                                                                ;AN000;
 05E8                        1	OPEN_CHECK_DEVICE    ENDP 
				                                                                                         ;AN000;
				                                                                                         ;AN000;
 05E8				IFSSEG  ENDS                                                                             ;AN000;
				    END                                                                                  ;AN000;

Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               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:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-2


  EMS_PAGEFRAME_NUMBER . . . . .  	001A
  EMS_SEG_CNT  . . . . . . . . .  	001C
  EMS_PAGE_FRAME . . . . . . . .  	001E
  EMS_RESERVED . . . . . . . . .  	0020
  EMS_MAP_BUFF . . . . . . . . .  	0022
CC_COLLATE_TAB . . . . . . . . .  	0102	0002
  CCCOLLATE_LENG . . . . . . . .  	0000
  CCCOLLATE_DATA . . . . . . . .  	0002
CC_DBCS_TAB  . . . . . . . . . .  	0008	0002
  CCDBCS_LENG  . . . . . . . . .  	0000
  CCDBCS_DATA  . . . . . . . . .  	0002
CC_FILE_CHAR_TAB . . . . . . . .  	0030	0002
  CCFILECHAR_LENG  . . . . . . .  	0000
  CCFILECHAR_DATA  . . . . . . .  	0002
CC_FILE_UCASE_TAB  . . . . . . .  	0082	0002
  CCFILEUCASE_LENG . . . . . . .  	0000
  CCFILEUCASE_DATA . . . . . . .  	0002
CC_UCASE_TAB . . . . . . . . . .  	0082	0002
  CCUCASE_LENG . . . . . . . . .  	0000
  CCUCASE_DATA . . . . . . . . .  	0002
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
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-3


  DIR_DATE . . . . . . . . . . .  	0018
  DIR_FIRST  . . . . . . . . . .  	001A
  DIR_SIZE_L . . . . . . . . . .  	001C
  DIR_SIZE_H . . . . . . . . . .  	001E
DOS_COUNTRY_CDPG_INFO  . . . . .  	008E	001E
  CCINFO_RESERVED  . . . . . . .  	0000
  CCPATH_COUNTRYSYS  . . . . . .  	0008
  CCSYSCODEPAGE  . . . . . . . .  	0048
  CCNUMBER_OF_ENTRIES  . . . . .  	004A
  CCSETUCASE . . . . . . . . . .  	004C
  CCUCASE_PTR  . . . . . . . . .  	004D
  CCSETUCASEFILE . . . . . . . .  	0051
  CCFILEUCASE_PTR  . . . . . . .  	0052
  CCSETFILELIST  . . . . . . . .  	0056
  CCFILECHAR_PTR . . . . . . . .  	0057
  CCSETCOLLATE . . . . . . . . .  	005B
  CCCOLLATE_PTR  . . . . . . . .  	005C
  CCSETDBCS  . . . . . . . . . .  	0060
  CCDBCS_PTR . . . . . . . . . .  	0061
  CCSETCOUNTRYINFO . . . . . . .  	0065
  CCCOUNTRYINFOLEN . . . . . . .  	0066
  CCDOSCOUNTRY . . . . . . . . .  	0068
  CCDOSCODEPAGE  . . . . . . . .  	006A
  CCDFORMAT  . . . . . . . . . .  	006C
  CCCURSYMBOL  . . . . . . . . .  	006E
  CC1000SEP  . . . . . . . . . .  	0073
  CCDECSEP . . . . . . . . . . .  	0075
  CCDATESEP  . . . . . . . . . .  	0077
  CCTIMESEP  . . . . . . . . . .  	0079
  CCCFORMAT  . . . . . . . . . .  	007B
  CCCSIGDIGITS . . . . . . . . .  	007C
  CCTFORMAT  . . . . . . . . . .  	007D
  CCMONO_PTR . . . . . . . . . .  	007E
  CCLISTSEP  . . . . . . . . . .  	0082
  CCRESERVED_AREA  . . . . . . .  	0084
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
  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
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-4


  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
  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
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-5


  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
  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
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-6


  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
  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	BYTE	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 . . . . . . . . . . . . .  	05E8	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	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-7


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	
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	
ARENA_OWNER_SYSTEM . . . . . . .  	NUMBER	0000	
ARENA_SIGNATURE_END  . . . . . .  	NUMBER	005A	
ARENA_SIGNATURE_NORMAL . . . . .  	NUMBER	004D	
ASSIGNOPER . . . . . . . . . . .  	NUMBER	005F	
ATTRIB . . . . . . . . . . . . .  	V BYTE	0000	DATA	External
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	
CAP_ASCIIZ . . . . . . . . . . .  	NUMBER	0022	
CAP_ONE_CHAR . . . . . . . . . .  	NUMBER	0020	
CAP_STRING . . . . . . . . . . .  	NUMBER	0021	
CARGS  . . . . . . . . . . . . .  	NUMBER	0000	
CATEGORY_FS  . . . . . . . . . .  	NUMBER	0000	
CATEGORY_PRINTER . . . . . . . .  	NUMBER	0005	
CATEGORY_REDIR . . . . . . . . .  	NUMBER	0001	
CBTYPE_CD  . . . . . . . . . . .  	NUMBER	0001	
CBTYPE_DF  . . . . . . . . . . .  	NUMBER	0002	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-8


CBTYPE_DUMMYCD . . . . . . . . .  	NUMBER	0003	
CBTYPE_SFF . . . . . . . . . . .  	NUMBER	0000	
CDSADDR  . . . . . . . . . . . .  	V DWORD	0000	DATA	External
CDS_TO_CD  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
CD_TO_CDS  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
CHARDEV  . . . . . . . . . . . .  	NUMBER	8000	
CHAR_GENERIC . . . . . . . . . .  	NUMBER	000C	
CHAR_OPER  . . . . . . . . . . .  	NUMBER	0037	
CHDIR  . . . . . . . . . . . . .  	NUMBER	003B	
CHECK_REMOVABLE  . . . . . . . .  	NUMBER	4408	
CHECK_SEQ  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
CHECK_YES_NO . . . . . . . . . .  	NUMBER	0023	
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	
COUNTRY_CDPG . . . . . . . . . .  	V BYTE	0000	DATA	External
COUNTRY_INFO . . . . . . . . . .  	NUMBER	0007	
CPSWFLAG . . . . . . . . . . . .  	V BYTE	0000	DATA	External
CPSW_INFORMATION . . . . . . . .  	NUMBER	0002	
CREAT  . . . . . . . . . . . . .  	NUMBER	003C	
CREATENEWFILE  . . . . . . . . .  	NUMBER	005B	
CREATETEMPFILE . . . . . . . . .  	NUMBER	005A	
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	
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	
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	

DA_20  . . . . . . . . . . . . .  	L NEAR	0038	IFSSEG
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	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-9


DEFKEEPVAL . . . . . . . . . . .  	NUMBER	0000	
DEFNUMFCB  . . . . . . . . . . .  	NUMBER	0004	
DEV320 . . . . . . . . . . . . .  	NUMBER	0040	
DEVBPB . . . . . . . . . . . . .  	NUMBER	0002	
DEVCLS . . . . . . . . . . . . .  	NUMBER	000E	
DEVGETOWN  . . . . . . . . . . .  	NUMBER	0017	
DEVICE_CB@_OFFSET  . . . . . . .  	V WORD	0000	IFSSEG	External
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		
DEVPT  . . . . . . . . . . . . .  	V DWORD	0000	DATA	External
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	
DFLSHL . . . . . . . . . . . . .  	NUMBER	000F	
DFL_DEV_REAL . . . . . . . . . .  	NUMBER	0010	
DFL_INPROG . . . . . . . . . . .  	NUMBER	0080	
DFL_INUSE  . . . . . . . . . . .  	NUMBER	0040	
DFL_PAUSED . . . . . . . . . . .  	NUMBER	0020	
DFL_SINGLE_FILE_CHECK  . . . . .  	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	
DMAADD . . . . . . . . . . . . .  	V DWORD	0000	DATA	External
DMEDHL . . . . . . . . . . . . .  	NUMBER	000F	
DOPCLHL  . . . . . . . . . . . .  	NUMBER	000D	
DOS2NET_DATE . . . . . . . . . .  	NUMBER	0022	
DOS_STRCMP . . . . . . . . . . .  	NUMBER	0024	
DOS_STRCPY . . . . . . . . . . .  	NUMBER	0025	
DPBSIZ . . . . . . . . . . . . .  	NUMBER	0021	
DRDNDHL  . . . . . . . . . . . .  	NUMBER	000E	
DRDWRHL  . . . . . . . . . . . .  	NUMBER	0016	
DRIVE_FROM_CDS . . . . . . . . .  	L NEAR	0000	IFSSEG	External
DRIVE_MACRO  . . . . . . . . . .  	NUMBER	0004	
DSKSIZ . . . . . . . . . . . . .  	NUMBER	000D	
DSTATHL  . . . . . . . . . . . .  	NUMBER	000D	
DUP_PDB  . . . . . . . . . . . .  	NUMBER	0055	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-10


D_20 . . . . . . . . . . . . . .  	L NEAR	019A	IFSSEG
D_30 . . . . . . . . . . . . . .  	L NEAR	01AC	IFSSEG
D_36 . . . . . . . . . . . . . .  	L NEAR	01D4	IFSSEG
D_40 . . . . . . . . . . . . . .  	L NEAR	01E8	IFSSEG
D_60 . . . . . . . . . . . . . .  	L NEAR	01FA	IFSSEG
D_70 . . . . . . . . . . . . . .  	L NEAR	0221	IFSSEG
D_75 . . . . . . . . . . . . . .  	L NEAR	0232	IFSSEG
D_80 . . . . . . . . . . . . . .  	L NEAR	0238	IFSSEG
D_90 . . . . . . . . . . . . . .  	L NEAR	0244	IFSSEG

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	
ERROR_I24_WRITE_PROTECT  . . . .  	NUMBER	0000	
ERROR_I24_WRONG_DISK . . . . . .  	NUMBER	000F	
ERROR_INFO_NOT_SET . . . . . . .  	NUMBER	-0001	
ERROR_INVALID_ACCESS . . . . . .  	NUMBER	000C	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-11


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_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	
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  . . . . . . . . . . . .  	V BYTE	0000	IFSSEG	External
FA_10  . . . . . . . . . . . . .  	L NEAR	0089	IFSSEG
FA_100 . . . . . . . . . . . . .  	L NEAR	00C3	IFSSEG
FA_1000  . . . . . . . . . . . .  	L NEAR	0167	IFSSEG
FA_20  . . . . . . . . . . . . .  	L NEAR	0090	IFSSEG
FA_200 . . . . . . . . . . . . .  	L NEAR	00D1	IFSSEG
FA_220 . . . . . . . . . . . . .  	L NEAR	00F7	IFSSEG
FA_240 . . . . . . . . . . . . .  	L NEAR	00FC	IFSSEG
FA_260 . . . . . . . . . . . . .  	L NEAR	012B	IFSSEG
FA_270 . . . . . . . . . . . . .  	L NEAR	0147	IFSSEG
FA_280 . . . . . . . . . . . . .  	L NEAR	0156	IFSSEG
FA_40  . . . . . . . . . . . . .  	L NEAR	00A8	IFSSEG
FA_60  . . . . . . . . . . . . .  	L NEAR	00AC	IFSSEG
FA_980 . . . . . . . . . . . . .  	L NEAR	0163	IFSSEG
FA_990 . . . . . . . . . . . . .  	L NEAR	0166	IFSSEG
FCBDEVICE  . . . . . . . . . . .  	NUMBER	0040	
FCBMASK  . . . . . . . . . . . .  	NUMBER	00C0	
FCBNETWORK . . . . . . . . . . .  	NUMBER	0080	
FCBSHARE . . . . . . . . . . . .  	NUMBER	00C0	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-12


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	
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	
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_NEXT  . . . . . . . . . . .  	NUMBER	004F	
FIND_SECTOR  . . . . . . . . . .  	NUMBER	0008	
FLUSH_DOS_BUFFERS  . . . . . . .  	NUMBER	000D	
FORCE_I24_FAIL . . . . . . . . .  	NUMBER	0020	
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	

GENIOCTL . . . . . . . . . . . .  	NUMBER	0013	
GEN_IOCTL_BY_DEVNUM  . . . . . .  	NUMBER	0000	
GEN_IOCTL_BY_HANDLE  . . . . . .  	NUMBER	0001	
GEN_IOCTL_FN_TST . . . . . . . .  	NUMBER	0020	
GEN_IOCTL_RD_TRK . . . . . . . .  	NUMBER	0060	
GEN_IOCTL_WRT_TRK  . . . . . . .  	NUMBER	0040	
GETCURRENTPSP  . . . . . . . . .  	NUMBER	0062	
GETEXTCNTRY  . . . . . . . . . .  	NUMBER	0065	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-13


GETEXTENDEDERROR . . . . . . . .  	NUMBER	0059	
GETINTERIMMODE . . . . . . . . .  	NUMBER	0002	
GETLEADBTBL  . . . . . . . . . .  	NUMBER	0000	
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_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_VERIFY_ON_WRITE  . . . . . .  	NUMBER	0054	
GET_VERSION  . . . . . . . . . .  	NUMBER	0030	

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	
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 . . . . . . . . . . . . .  	V BYTE	0000	IFSSEG	External
IFSDrvFromCDS  . . . . . . . . .  	L NEAR	0000	IFSSEG	External
IFSEOCID . . . . . . . . . . . .  	NUMBER	0013	
IFSEOP . . . . . . . . . . . . .  	NUMBER	0012	
IFSEXECAPI . . . . . . . . . . .  	NUMBER	0005	
IFSFILEATTR  . . . . . . . . . .  	NUMBER	000F	
IFSFILTER  . . . . . . . . . . .  	NUMBER	0400	
IFSFINSTALLED  . . . . . . . . .  	NUMBER	00FF	
IFSINIT  . . . . . . . . . . . .  	NUMBER	0001	
IFSIOCTL . . . . . . . . . . . .  	NUMBER	0002	
IFSLOCKFILE  . . . . . . . . . .  	NUMBER	000D	
IFSLSEEKFILE . . . . . . . . . .  	NUMBER	000A	
IFSMKDIR . . . . . . . . . . . .  	NUMBER	0003	
IFSOPENFILE  . . . . . . . . . .  	NUMBER	0009	
IFSPROC_FLAGS  . . . . . . . . .  	V WORD	0000	IFSSEG	External
IFSR . . . . . . . . . . . . . .  	V WORD	0000	IFSSEG	External
IFSREADFILE  . . . . . . . . . .  	NUMBER	000B	
IFSREMOTE  . . . . . . . . . . .  	NUMBER	0800	
IFSRENFILE . . . . . . . . . . .  	NUMBER	0007	
IFSRMDIR . . . . . . . . . . . .  	NUMBER	0004	
IFSR_ACCESS_DENIED . . . . . . .  	NUMBER	0003	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-14


IFSR_ACTION  . . . . . . . . . .  	WORD	0038	
IFSR_ALLOCSIZE . . . . . . . . .  	WORD	0028	
IFSR_ALLOCUNITS  . . . . . . . .  	WORD	0026	
IFSR_ALLOWED . . . . . . . . . .  	BYTE	001A	
IFSR_APIFUNC . . . . . . . . . .  	BYTE	0016	
IFSR_API_PARMS . . . . . . . . .  	BYTE	0026	
IFSR_ATTR  . . . . . . . . . . .  	WORD	0042	
IFSR_AVAILALLOC  . . . . . . . .  	WORD	002C	
IFSR_BAD_FORMAT  . . . . . . . .  	NUMBER	-0001	
IFSR_BUFFER1@  . . . . . . . . .  	DWORD	002A	
IFSR_BUFFER2@  . . . . . . . . .  	DWORD	002E	
IFSR_CONTINFO@ . . . . . . . . .  	DWORD	0028	
IFSR_COUNT . . . . . . . . . . .  	WORD	0032	
IFSR_CP  . . . . . . . . . . . .  	WORD	002A	
IFSR_CPSW  . . . . . . . . . . .  	BYTE	002C	
IFSR_DATE  . . . . . . . . . . .  	WORD	003E	
IFSR_DEVICE_CB@  . . . . . . . .  	DWORD	001E	
IFSR_DEVICE_ERROR  . . . . . . .  	NUMBER	0004	
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	
IFSR_FLAG  . . . . . . . . . . .  	WORD	0028	
IFSR_FSID  . . . . . . . . . . .  	BYTE	002E	
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_MATCHATTR . . . . . . . . .  	WORD	002C	
IFSR_MATCHATTR_47  . . . . . . .  	WORD	0026	
IFSR_MODE_WORD . . . . . . . . .  	WORD	0026	
IFSR_NAME1@  . . . . . . . . . .  	DWORD	0028	
IFSR_NAME2@  . . . . . . . . . .  	DWORD	002C	
IFSR_NAME@ . . . . . . . . . . .  	DWORD	002E	
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	0032	
IFSR_SECTSIZE  . . . . . . . . .  	WORD	002A	
IFSR_SIZE  . . . . . . . . . . .  	DWORD	003A	
IFSR_SUBFUNC . . . . . . . . . .  	BYTE	0026	
IFSR_TIME  . . . . . . . . . . .  	WORD	0040	
IFSSEARCHFILE  . . . . . . . . .  	NUMBER	0008	
IFSSEARCH_FIRST  . . . . . . . .  	NUMBER	0001	
IFSSEARCH_NEXT . . . . . . . . .  	NUMBER	0002	
IFSUNC . . . . . . . . . . . . .  	NUMBER	2000	
IFSUPDATECB  . . . . . . . . . .  	NUMBER	0007	
IFSUSESHARE  . . . . . . . . . .  	NUMBER	0001	
IFSWRITEFILE . . . . . . . . . .  	NUMBER	000C	
ifs_980  . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
IFS_980_J  . . . . . . . . . . .  	NEAR	05E2	IFSSEG
ifs_990  . . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
IFS_990_J  . . . . . . . . . . .  	NEAR	05E5	IFSSEG
IFS_ABSRW  . . . . . . . . . . .  	NUMBER	0001	
IFS_CREATE . . . . . . . . . . .  	N PROC	026A	IFSSEG	Global	Length = 000A
IFS_DELETE . . . . . . . . . . .  	N PROC	0193	IFSSEG	Global	Length = 00B9
IFS_DISK_INFO  . . . . . . . . .  	N PROC	0000	IFSSEG	Global	Length = 0055
IFS_DRIVE_RESET  . . . . . . . .  	NUMBER	0002	
IFS_GET_FILE_INFO  . . . . . . .  	N PROC	0089	IFSSEG	Global	Length = 00E1
IFS_IOCTL  . . . . . . . . . . .  	NUMBER	006B	
IFS_OPEN . . . . . . . . . . . .  	N PROC	0256	IFSSEG	Global	Length = 000A
IFS_RENAME . . . . . . . . . . .  	N PROC	0173	IFSSEG	Global	Length = 0009
IFS_SEARCH_FIRST . . . . . . . .  	N PROC	0510	IFSSEG	Global	Length = 004A
IFS_SEARCH_NEXT  . . . . . . . .  	N PROC	055A	IFSSEG	Global	Length = 0064
IFS_SEQ_CREATE . . . . . . . . .  	N PROC	0260	IFSSEG	Global	Length = 000A
IFS_SEQ_DELETE . . . . . . . . .  	N PROC	017C	IFSSEG	Global	Length = 0017
IFS_SEQ_GET_FILE_INFO  . . . . .  	N PROC	006F	IFSSEG	Global	Length = 001A
IFS_SEQ_OPEN . . . . . . . . . .  	N PROC	024C	IFSSEG	Global	Length = 000A
IFS_SEQ_RENAME . . . . . . . . .  	N PROC	016A	IFSSEG	Global	Length = 0009
IFS_SEQ_SEARCH_FIRST . . . . . .  	N PROC	0509	IFSSEG	Global	Length = 0005
IFS_SEQ_SEARCH_NEXT  . . . . . .  	N PROC	050E	IFSSEG	Global	Length = 0002
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-15


IFS_SEQ_SET_FILE_ATTRIBUTE . . .  	N PROC	0055	IFSSEG	Global	Length = 0010
IFS_SEQ_XOPEN  . . . . . . . . .  	N PROC	0274	IFSSEG	Global	Length = 001C
IFS_SET_FILE_ATTRIBUTE . . . . .  	N PROC	0065	IFSSEG	Global	Length = 000A
IFS_XOPEN  . . . . . . . . . . .  	N PROC	0290	IFSSEG	Global	Length = 0279
INSTALLED  . . . . . . . . . . .  	NUMBER	FFFF	
INSTALLEDDATA  . . . . . . . . .  	NUMBER	0000	
INTBASE  . . . . . . . . . . . .  	NUMBER	0080	
INTERIMMODE  . . . . . . . . . .  	NUMBER	0001	
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	
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		

LENGTH_DELFILE . . . . . . . . .  	NUMBER	002C	
LENGTH_DEVECHOCHECK_BUFFER . . .  	NUMBER	0001	
LENGTH_DISKATTR  . . . . . . . .  	NUMBER	0030	
LENGTH_FILEATTR  . . . . . . . .  	NUMBER	0044	
LENGTH_OPENFILE  . . . . . . . .  	NUMBER	003A	
LENGTH_RENFILE . . . . . . . . .  	NUMBER	0030	
LENGTH_SEARCHFILE  . . . . . . .  	NUMBER	0032	
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	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-16


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	
MR_ERRMSG_SEM  . . . . . . . . .  	NUMBER	0080	
MSNET_TIMING . . . . . . . . . .  	NUMBER	0000	
MSVER  . . . . . . . . . . . . .  	NUMBER	0000	
MULTDOS  . . . . . . . . . . . .  	NUMBER	0012	
MULTIFS  . . . . . . . . . . . .  	NUMBER	0011	
MULTNET  . . . . . . . . . . . .  	NUMBER	0011	
MULTSHARE  . . . . . . . . . . .  	NUMBER	0010	

Name1  . . . . . . . . . . . . .  	V BYTE	0000	DATA	External
NET2DOS_DATE . . . . . . . . . .  	NUMBER	0023	
NET_CALL_INT . . . . . . . . . .  	NUMBER	002A	
NEWKEEPVAL . . . . . . . . . . .  	NUMBER	0008	
NEWNUMFCB  . . . . . . . . . . .  	NUMBER	0010	
NEW_COUNTRY_SIZE . . . . . . . .  	NUMBER	0026	
NEW_EXPECTED_VERSION . . . . . .  	NUMBER	2605	
NEW_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
NEW_MINOR_VERSION  . . . . . . .  	NUMBER	0026	
NLSFUNC  . . . . . . . . . . . .  	NUMBER	0014	
NONINTERIMMODE . . . . . . . . .  	NUMBER	0000	
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	
NO_IFS_DRIVERS . . . . . . . . .  	NUMBER	0040	
NO_IFS_DRIVE_RESET . . . . . . .  	NUMBER	FFFD	
NO_RETRY . . . . . . . . . . . .  	NUMBER	0000	
NULL_PTR . . . . . . . . . . . .  	NUMBER	-0001	

OCD_120  . . . . . . . . . . . .  	L NEAR	05E5	IFSSEG
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	
OLDCREATENEW_FLAG  . . . . . . .  	NUMBER	0010	
OLDCREATE_FLAG . . . . . . . . .  	NUMBER	0112	
OLDCREATE_MODE . . . . . . . . .  	NUMBER	0002	
OLDOPEN_FLAG . . . . . . . . . .  	NUMBER	0101	
OLDOPEN_MODE . . . . . . . . . .  	NUMBER	2180	
OLD_COUNTRY_SIZE . . . . . . . .  	NUMBER	0018	
OPEN . . . . . . . . . . . . . .  	NUMBER	003D	
OPEN_CHECK_DEVICE  . . . . . . .  	N PROC	05BE	IFSSEG	Global	Length = 002A
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	
PREP_IFSR  . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-17


PRINTER_GET_FLAGS  . . . . . . .  	NUMBER	0005	
PRINTER_GET_STRING . . . . . . .  	NUMBER	0003	
PRINTER_SET_FLAGS  . . . . . . .  	NUMBER	0004	
PRINTER_SET_STRING . . . . . . .  	NUMBER	0002	
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	
REN_WFP  . . . . . . . . . . . .  	V WORD	0000	DATA	External
RESERVED_BITS_MASK . . . . . . .  	NUMBER	FE00	
RESET_ENVIRONMENT  . . . . . . .  	NUMBER	0002	
RETRY  . . . . . . . . . . . . .  	NUMBER	0001	
RET_L  . . . . . . . . . . . . .  	NEAR	050D	IFSSEG
RMDIR  . . . . . . . . . . . . .  	NUMBER	003A	

SATTRIB  . . . . . . . . . . . .  	V BYTE	0000	DATA	External
SAVE_BX  . . . . . . . . . . . .  	V WORD	0000	DATA	External
SAVE_CX  . . . . . . . . . . . .  	V WORD	0000	DATA	External
SAVE_DI  . . . . . . . . . . . .  	V WORD	0000	DATA	External
SAVE_DS  . . . . . . . . . . . .  	V WORD	0000	DATA	External
SAVE_DX  . . . . . . . . . . . .  	V WORD	0000	DATA	External
SAVE_ES  . . . . . . . . . . . .  	V WORD	0000	DATA	External
SAVE_SI  . . . . . . . . . . . .  	V WORD	0000	DATA	External
SA_20  . . . . . . . . . . . . .  	L NEAR	0066	IFSSEG
SD_10  . . . . . . . . . . . . .  	L NEAR	0182	IFSSEG
SD_20  . . . . . . . . . . . . .  	L NEAR	0187	IFSSEG
SEARCH_FASTOPEN  . . . . . . . .  	NUMBER	0400	
SERVERCALL . . . . . . . . . . .  	NUMBER	005D	
SETALL . . . . . . . . . . . . .  	NUMBER	-0001	
SETBLOCK . . . . . . . . . . . .  	NUMBER	004A	
SETBP  . . . . . . . . . . . . .  	NUMBER	0800	
SETCOLLATE . . . . . . . . . . .  	NUMBER	0006	
SETCOUNTRYINFO . . . . . . . . .  	NUMBER	0001	
SETDBCS  . . . . . . . . . . . .  	NUMBER	0007	
SETDEVICECB  . . . . . . . . . .  	NUMBER	0100	
SETDPB . . . . . . . . . . . . .  	NUMBER	0053	
SETFILELIST  . . . . . . . . . .  	NUMBER	0005	
SETINTERIMMODE . . . . . . . . .  	NUMBER	0001	
SETLCASE . . . . . . . . . . . .  	NUMBER	0003	
SETUCASE . . . . . . . . . . . .  	NUMBER	0002	
SETUCASEFILE . . . . . . . . . .  	NUMBER	0004	
SET_CTRL_C_TRAPPING  . . . . . .  	NUMBER	0033	
SET_CURRENT_PDB  . . . . . . . .  	NUMBER	0050	
SET_DATE . . . . . . . . . . . .  	NUMBER	002B	
SET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	000E	
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	
SFA_20 . . . . . . . . . . . . .  	L NEAR	007C	IFSSEG
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	
SFF_TO_SFT . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
SFT_SERIAL_NUMBER  . . . . . . .  	V WORD	0000	IFSSEG	External
SFT_TO_SFF . . . . . . . . . . .  	L NEAR	0000	IFSSEG	External
SF_BUSY  . . . . . . . . . . . .  	NUMBER	-0001	
SF_CLOSE_NODATE  . . . . . . . .  	NUMBER	4000	
Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-18


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	
SN_1000  . . . . . . . . . . . .  	L NEAR	05BB	IFSSEG
SN_20  . . . . . . . . . . . . .  	L NEAR	0564	IFSSEG
SN_40  . . . . . . . . . . . . .  	L NEAR	0583	IFSSEG
SN_60  . . . . . . . . . . . . .  	L NEAR	058A	IFSSEG
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	
STD_PRINTER_OUTPUT . . . . . . .  	NUMBER	0005	
STECODE  . . . . . . . . . . . .  	NUMBER	00FF	
STERR  . . . . . . . . . . . . .  	NUMBER	8000	
STRIP_WFP_START  . . . . . . . .  	L NEAR	0000	IFSSEG	External
SUBFUNC_EA . . . . . . . . . . .  	NUMBER	0002	
SUBFUNC_EA_NAMES . . . . . . . .  	NUMBER	0003	
SUBFUNC_INLINE . . . . . . . . .  	NUMBER	0000	
SXO_10 . . . . . . . . . . . . .  	L NEAR	027B	IFSSEG
SXO_20 . . . . . . . . . . . . .  	L NEAR	0280	IFSSEG

TEMPLEN  . . . . . . . . . . . .  	NUMBER	0086	
THISCDS  . . . . . . . . . . . .  	V DWORD	0000	DATA	External
THISDFL  . . . . . . . . . . . .  	V DWORD	0000	IFSSEG	External
THISIFS  . . . . . . . . . . . .  	V DWORD	0000	IFSSEG	External
THISIFS_SET  . . . . . . . . . .  	NUMBER	0002	
THISSFT  . . . . . . . . . . . .  	V DWORD	0000	DATA	External
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	
TRUEBYTE . . . . . . . . . . . .  	NUMBER	00FF	
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 . . . . . . . . . . .  	V DWORD	0000	IFSSEG	External
UNC_INSTALLED  . . . . . . . . .  	NUMBER	0080	
UNLINK . . . . . . . . . . . . .  	NUMBER	0041	
UPPER_TABLE  . . . . . . . . . .  	NUMBER	0080	
USEROPER . . . . . . . . . . . .  	NUMBER	005E	
USE_SYSTEM_TIMEDATE  . . . . . .  	NUMBER	0000	
USE_USER_TIMEDATE  . . . . . . .  	NUMBER	0001	
UTIL_ERR_4 . . . . . . . . . . .  	NUMBER	0004	

Microsoft (R) Macro Assembler Version 5.10                  9/18/25 23:16:00
IFS FILE ROUTINES - Routines for IFS dispatch               Symbols-19


VERIFY_INFORMATION . . . . . . .  	NUMBER	0004	

WAITPROCESS  . . . . . . . . . .  	NUMBER	004D	
WFP_START  . . . . . . . . . . .  	V WORD	0000	DATA	External
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	
XO_100 . . . . . . . . . . . . .  	L NEAR	02DC	IFSSEG
XO_110 . . . . . . . . . . . . .  	L NEAR	0302	IFSSEG
XO_120 . . . . . . . . . . . . .  	L NEAR	030D	IFSSEG
XO_20  . . . . . . . . . . . . .  	L NEAR	029A	IFSSEG
XO_200 . . . . . . . . . . . . .  	L NEAR	0313	IFSSEG
XO_210 . . . . . . . . . . . . .  	L NEAR	0344	IFSSEG
XO_220 . . . . . . . . . . . . .  	L NEAR	0352	IFSSEG
XO_230 . . . . . . . . . . . . .  	L NEAR	0371	IFSSEG
XO_240 . . . . . . . . . . . . .  	L NEAR	0373	IFSSEG
XO_25  . . . . . . . . . . . . .  	L NEAR	02A0	IFSSEG
XO_260 . . . . . . . . . . . . .  	L NEAR	037E	IFSSEG
XO_270 . . . . . . . . . . . . .  	L NEAR	0399	IFSSEG
XO_280 . . . . . . . . . . . . .  	L NEAR	03AA	IFSSEG
XO_290 . . . . . . . . . . . . .  	L NEAR	03CB	IFSSEG
XO_300 . . . . . . . . . . . . .  	L NEAR	03D0	IFSSEG
XO_310 . . . . . . . . . . . . .  	L NEAR	03E8	IFSSEG
XO_320 . . . . . . . . . . . . .  	L NEAR	03FF	IFSSEG
XO_340 . . . . . . . . . . . . .  	L NEAR	040E	IFSSEG
XO_360 . . . . . . . . . . . . .  	L NEAR	0417	IFSSEG
XO_362 . . . . . . . . . . . . .  	L NEAR	0460	IFSSEG
XO_364 . . . . . . . . . . . . .  	L NEAR	046A	IFSSEG
XO_366 . . . . . . . . . . . . .  	L NEAR	0479	IFSSEG
XO_368 . . . . . . . . . . . . .  	L NEAR	0480	IFSSEG
XO_369 . . . . . . . . . . . . .  	L NEAR	0487	IFSSEG
XO_370 . . . . . . . . . . . . .  	L NEAR	048A	IFSSEG
XO_372 . . . . . . . . . . . . .  	L NEAR	0495	IFSSEG
XO_378 . . . . . . . . . . . . .  	L NEAR	049A	IFSSEG
XO_380 . . . . . . . . . . . . .  	L NEAR	049F	IFSSEG
XO_500 . . . . . . . . . . . . .  	L NEAR	04BD	IFSSEG
XO_520 . . . . . . . . . . . . .  	L NEAR	0501	IFSSEG
XO_60  . . . . . . . . . . . . .  	L NEAR	02D0	IFSSEG

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

??0000 . . . . . . . . . . . . .  	L NEAR	0169	IFSSEG
??0001 . . . . . . . . . . . . .  	L NEAR	0508	IFSSEG
??0002 . . . . . . . . . . . . .  	L NEAR	050D	IFSSEG
??0003 . . . . . . . . . . . . .  	L NEAR	05E2	IFSSEG
??0004 . . . . . . . . . . . . .  	L NEAR	05E5	IFSSEG
?PLM . . . . . . . . . . . . . .  	NUMBER	0000	
?WIN . . . . . . . . . . . . . .  	NUMBER	0000	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  ifsfile		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   5382 Source  Lines
  11278 Total   Lines
   1410 Symbols

  41408 + 98646 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
