     1                                  ;	SCCSID = @(#)create.asm 1.6 85/08/19
     2                                  ;TITLE	DOS_CREATE/DOS_CREATE_NEW - Internal CREATE calls for MS-DOS
     3                                  ;NAME	DOS_CREATE
     4                                  ; Internal Create and Create new to create a local or NET file and SFT.
     5                                  ;
     6                                  ;   DOS_CREATE
     7                                  ;   DOS_CREATE_NEW
     8                                  ;   SET_MKND_ERR
     9                                  ;   SET_Media_ID
    10                                  ;   SET_EXT_Mode
    11                                  ;
    12                                  ;   Revision history:
    13                                  ;
    14                                  ;	A000 version 4.00     Jan. 1988
    15                                  ;	A001  D490 -- Change IOCTL subfunctios from 63h,43h to 66h, 46h
    16                                  
    17                                  ;
    18                                  ; get the appropriate segment definitions
    19                                  ;
    20                                  [list -]
    20          ******************       warning: redefining multi-line macro `struc' [-w+pp-macro-redef-multi]
    14                              <4> [list -]
    14                              <3> [list -]
     3                              <2> 
     4                              <2> addsection DOSSTART, align=16 PUBLIC class=DOSSTART
     5                              <2> ; (no prior section) ; DOSSTART		ENDS
     6                              <2> 
     7                              <2> addsection DOSSTARTJUMP, align=1 PUBLIC class=START
     8                              <2> ; (no prior section) ; DOSSTARTJUMP		ENDS
     9                              <2> 
    10                              <2> addsection CONSTANTS, align=2 PUBLIC class=CONST
    11                              <2> ; (no prior section) ; CONSTANTS	ENDS
    12                              <2> 
    13                              <2> addsection DATA, align=2 PUBLIC class=DATA
    14                              <2> ; (no prior section) ; DATA		ENDS
    15                              <2> 
    16                              <2> addsection TABLE, align=2 PUBLIC class=TABLE
    17                              <2> ; (no prior section) ; TABLE		ENDS
    18                              <2> 
    19                              <2> addsection DOSDATATABLE, align=2 PUBLIC class=DOSDATACODE
    20                              <2> ; (no prior section) ; DOSDATATABLE		ENDS
    21                              <2> 
    22                              <2> addsection DOSDATACODE, align=1 PUBLIC class=DOSDATACODE
    23                              <2> ; (no prior section) ; DOSDATACODE		ENDS
    24                              <2> 
    25                              <2> addsection DOSBIODATA, align=2 PUBLIC class=DOSBIODATA
    26                              <2> 
    27                              <2> addsection LAST, align=16 PUBLIC class=LAST
    28                              <2> ; (no prior section) ; LAST		ENDS
    29                              <2> 
    30                              <2> group DOSGROUP DOSSTART DOSSTARTJUMP CONSTANTS DATA TABLE DOSDATATABLE DOSDATACODE DOSBIODATA LAST
     8                              <1> 
     9                              <1> %include "dcodeseg.nas"
     1                              <2> 
     2                              <2> %ifndef DCODESEGNAS
     3                              <2> %assign DCODESEGNAS 1
     4                              <2> 
     5                              <2> section DOSCODETABLE align=2 PUBLIC class=DOSCODE
     6                              <2> ; (no prior section) ; DOSCODETABLE		ENDS
     7                              <2> section DOSCODECODE align=1 PUBLIC class=DOSCODE
     8                              <2> ; (no prior section) ; DOSCODECODE		ENDS
     9                              <2> section DOSBIOCODE align=2 PUBLIC class=DOSCODE
    10                              <2> section BIOCODE	align=2 PUBLIC class=DOSCODE
    11                              <2> 
    12                              <2> %ifnidni DOSENTRYGROUP, DOSCODEGROUP
    13                              <2>  group DOSCODEGROUP DOSCODETABLE DOSCODECODE DOSBIOCODE BIOCODE
    14                              <2> %endif
    15                              <2> 
    16                              <2> %endif
    10                              <1> 
    11                              <1> section LAST
    12                              <1> ; (no prior section) ; LAST		ENDS
    22                                  
    23                                  [list +]
    24                                  section DOSCODECODE
    25                                  [list -]
    25          ******************       warning: out: ... for DOS Version 4.00 ... [-w+user]
    25          ******************       warning: out: BPB.INC... [-w+user]
    25          ******************       warning: out: ... CLONE version build switch on ... [-w+user]
    25          ******************       warning: out: DEVSYM.INC... [-w+user]
    25          ******************       warning: out: ... CLONE version build switch on ... [-w+user]
    33                                  
    34                                  %iassign Installed TRUE
    35                                  
    36                                  	extrn IFS_extopen_shared:near
    37                                  
    38                                  	i_need	NoSetDir,BYTE
    39                                  	i_need	THISSFT,DWORD
    40                                  	i_need	THISCDS,DWORD
    41                                  	I_need	EXTERR,WORD
    42                                  	I_Need	ExtErr_locus,BYTE
    43                                  	I_need	JShare,DWORD
    44                                  	I_need	VOLCHNG_FLAG,BYTE
    45                                  	I_need	SATTRIB,BYTE
    46                                  	I_need	CALLVIDM,DWORD
    47                                  	I_need	OpenBuf,128
    48                                  	I_need	EXTOPEN_ON,BYTE 		  ;AN000; extended open
    49                                  	I_need	NAME1,BYTE			  ;AN000;
    50                                  	I_need	NO_NAME_ID,BYTE 		  ;AN000;
    51                                  	I_need	Packet_Temp,WORD		  ;AN000;
    52                                  	I_need	DOS34_FLAG,WORD 		  ;AN000;
    53                                  	I_need	SAVE_BX,WORD			  ;AN000;
    54                                  	I_need	SAVE_CX,WORD
    55                                  
    56                                   assume nocheck, ss:DOSGROUP
    57                                  
    58                                  ; Inputs:
    59                                  ;	[WFP_START] Points to WFP string ("d:/" must be first 3 chars, NUL
    60                                  ;		terminated)
    61                                  ;	[CURR_DIR_END] Points to end of Current dir part of string
    62                                  ;		( = -1 if current dir not involved, else
    63                                  ;		 Points to first char after last "/" of current dir part)
    64                                  ;	[THISCDS] Points to CDS being used
    65                                  ;		(Low word = -1 if NUL CDS (Net direct request))
    66                                  ;	[THISSFT] Points to SFT to fill in if file created
    67                                  ;		(sf_mode field set so that FCB may be detected)
    68                                  ;	[SATTRIB] Is attribute of search, determines what files can be found
    69                                  ;	AX is Attribute to create
    70                                  ; Function:
    71                                  ;	Try to create the specified file truncating an old one that exists
    72                                  ; Outputs:
    73                                  ;	sf_ref_count is NOT altered
    74                                  ;	CARRY CLEAR
    75                                  ;	    THISSFT filled in.
    76                                  ;		sf_mode = unchanged for FCB, sharing_compat + open_for_both
    77                                  ;	CARRY SET
    78                                  ;	    AX is error code
    79                                  ;		error_path_not_found
    80                                  ;			Bad path (not in curr dir part if present)
    81                                  ;		error_bad_curr_dir
    82                                  ;			Bad path in current directory part of path
    83                                  ;		error_access_denied
    84                                  ;			Attempt to re-create read only file , or
    85                                  ;			create a second volume id or create a dir
    86                                  ;		error_sharing_violation
    87                                  ;			The sharing mode was correct but not allowed
    88                                  ;			generates an INT 24
    89                                  ; DS preserved, others destroyed
    90                                  
    91                                  	procedure   DOS_Create,NEAR
    91          ******************       warning: proc DOS_Create... [-w+user]
    92                                  	DOSAssume   CS,<DS>,"DOS_Create"
    93                                  	ASSUME	ES:NOTHING
    94                                  
    95 00000000 30E4                    	XOR	AH,AH		; Truncate is OK
    96                                  Create_inter:
    97 00000002 A880                    	TEST	AL,~ (attr_all + attr_ignore + attr_volume_id)
    98                                  				; Mask out any meaningless bits
    99 00000004 7512                    	JNZ	AttErr
   100 00000006 A808                    	TEST	AL,attr_volume_id
   101 00000008 7408                    	JZ	NoReset
   102 0000000A 810E[0000]8000          	OR	word [DOS34_FLAG],DBCS_VOLID      ;AN000;FOR dbcs volid
   103 00000010 B008                    	MOV	AL,attr_volume_id
   104                                  NoReset:
   105 00000012 0C20                    	OR	AL,attr_archive ; File changed
   106 00000014 A850                    	TEST	AL,attr_directory + attr_device
   107 00000016 740A                    	JZ	ATT_OK
   108                                  AttErr:
   109 00000018 B80500                  	MOV	AX,5		; Attribute problem
   110                                  Exterr_Locus equ ExtErr_locus	; NASM port label
   111 0000001B C606[0000]01            	MOV	byte [Exterr_Locus],errLOC_Unk
   112 00000020 EB5D                    	JMP	SHORT SET_MKND_ERR ; Gotta use MKDIR to make dirs, NEVER allow
   113                                  				   ;	attr_device to be set.
   114                                  ATT_OK:
   115 00000022 C43E[0000]              	LES	DI,[THISSFT]
   116 00000026 06                      	PUSH	ES
   117 00000027 C436[0000]              	LES	SI,[THISCDS]
   118 0000002B 83FEFF                  	CMP	SI,-1
   119 0000002E 7513                    	JNZ	TEST_RE_NET
   120 00000030 07                      	POP	ES
   121                                   assume es:nothing
   122                                  
   123                                  ;Extended open hooks
   124 00000031 F606[0000]01            	TEST	byte [EXTOPEN_ON],ext_open_on    ;AN000;EO. from extnded open
   125 00000036 7403                    	JZ	NOEXTOP 		    ;AN000;EO. no, do normal
   126                                  IFS_extopen:
   127 00000038 E9(0000)                	jmp	IFS_extopen_shared
   128                                  NOEXTOP:				    ;AN000;
   129                                  ;Extended open hooks
   130                                  
   131                                  %IFN Installed
   132                                  	transfer NET_SEQ_CREATE
   133                                  %ELSE
   134 0000003B 50                      	PUSH	AX
   135                                  multNET equ MultNET	; NASM port equate
   136 0000003C B81811                  	MOV	AX,(multNET << 8) | 24
   137 0000003F CD2F                    	INT	2FH
   138 00000041 5B                      	POP	BX			; BX is trashed anyway
   139 00000042 C3                      	return
   140                                  %ENDIF
   141                                  
   142                                  TEST_RE_NET:
   143 00000043 26F744430080            	TEST	word [ES:SI + curdir_flags],curdir_isnet
   144 00000049 07                      	POP	ES
   145                                   assume es:nothing
   146 0000004A 7419                    	JZ	LOCAL_CREATE
   147                                  
   148 0000004C E8B700                  	CALL	Set_EXT_mode		    ;AN000;EO.
   149 0000004F 7205                    	JC	SHORT dochk		    ;AN000;EO.
   150 00000051 26834D0202              	OR	word [ES:DI + sf_mode],sharing_compat + open_for_both ;IFS.
   151                                  dochk:
   152                                   ;	invoke	IFS_SHARE_CHECK 	    ;AN000;IFS. check share
   153                                   ;	JC	nomore			    ;AN000;IFS. share violation
   154                                  
   155                                  ;Extended open hooks
   156 00000056 F606[0000]01            	TEST	byte [EXTOPEN_ON],ext_open_on    ;AN000;EO. from extnded open
   157 0000005B 75DB                    	JNZ	IFS_extopen		    ;AN000;EO. yes, issue extended open
   158                                  ;Extended open hooks
   159                                  
   160                                  %IFN Installed
   161                                  	transfer NET_CREATE
   162                                  %ELSE
   163 0000005D 50                      	PUSH	AX
   164 0000005E B81711                  	MOV	AX,(multNET << 8) | 23
   165 00000061 CD2F                    	INT	2FH
   166 00000063 5B                      	POP	BX			; BX is trashed anyway
   167                                  nomore:
   168 00000064 C3                      	return
   169                                  %ENDIF
   170                                  
   171                                  LOCAL_CREATE:
   172 00000065 E89E00                  	CALL	Set_EXT_mode	       ;AN000;EO. set mode if from extended open
   173 00000068 7205                    	JC	setdone 	       ;AN000;EO.
   174 0000006A 26834D0202              	OR	word [ES:DI + sf_mode],sharing_compat+open_for_both
   175                                  setdone:
   176 0000006F E8(0000)                	EnterCrit   critDisk
   177 00000072 E8(0000)                	invoke	MakeNode
   178 00000075 730F                    	JNC	Create_ok
   179 00000077 C606[0000]FF            	mov	byte [VOLCHNG_FLAG],-1	; indicate no change in volume label
   180 0000007C E8(0000)                	LeaveCrit   critDisk
   181                                  
   182                                  	entry	SET_MKND_ERR
   183                                  	DOSAssume   CS,<DS>,"Set_MkNd_Err"
   184                                  	ASSUME	ES:NOTHING
   185                                  ; Looks up MakeNode errors and converts them. AL is MakeNode
   186                                  ; error, SI is GetPath bad spot return if path_not_found error.
   187                                  
   188 0000007F BB[0000]                	MOV	BX,OFFSET CRTERRTAB
   189 00000082 2ED7                    	cs xlatb
   190                                  CreatBadRet:
   191 00000084 F9                      	STC
   192 00000085 C3                      	return
   193                                  
   194                                  section DOSCODETABLE
   195                                  Public CREAT001S,CREAT001E
   196                                  CREAT001S  label  byte
   197                                  CRTERRTAB LABEL BYTE		; Lookup table for MakeNode returns
   198 00000000 ??                      	DB	?			; none
   199 00000001 05                      	DB	error_access_denied	; MakeNode error 1
   200 00000002 52                      	DB	error_cannot_make	; MakeNode error 2
   201 00000003 50                      	DB	error_file_exists	; MakeNode error 3
   202 00000004 03                      	DB	error_path_not_found	; MakeNode error 4
   203 00000005 05                      	DB	error_access_denied	; MakeNode error 5
   204 00000006 20                      	DB	error_sharing_violation ; MakeNode error 6
   205 00000007 02                      	DB	error_file_not_found	; MakeNode error 7
   206                                  CREAT001E  label byte
   207                                  section DOSCODECODE
   208                                  
   209                                  ;
   210                                  ; We have just created a new file.  This results in the truncation of old
   211                                  ; files.  We must inform the sharer to slash all the open SFT's for this
   212                                  ; file to the current size.
   213                                  ;
   214                                  Create_ok:
   215                                  ; If we created a volume id on the diskette, set the VOLCHNG_FLAG to logical
   216                                  ; drive number to force a Build BPB after Media Check.
   217                                  
   218                                  ;;; FASTOPEN 8/29/86
   219 00000086 E8(0000)                	invoke	FastOpen_Delete
   220                                  ;;; FASTOPEN 8/29/86
   221 00000089 A0[0000]                	mov	al,[SATTRIB]
   222 0000008C A808                    	test	al,attr_volume_id
   223 0000008E 741C                    	jz	NoVolLabel
   224 00000090 C43E[0000]              	LES	DI,[THISCDS]
   225 00000094 268A25                  	mov	ah,byte ptr [ES:DI]	; get drive letter
   226 00000097 80EC41                  	sub	ah,'A'                  ; convert to drive letter
   227 0000009A 8826[0000]              	mov	[VOLCHNG_FLAG],ah	;Set flag to indicate volid change
   228 0000009E B701                    	MOV	BH,1			;AN000;>32mb set volume id to boot record
   229 000000A0 E81F00                  	CALL	$Set_Media_ID		;AN000;>32mb
   230                                  
   231 000000A3 E8(0000)                	EnterCrit CritDisk
   232 000000A6 E8(0000)                	invoke	FatRead_CDS		; force a media check
   233 000000A9 E8(0000)                	LeaveCrit CritDisk
   234                                  NoVolLabel:
   235 000000AC B80200                  	MOV	ax,2
   236                                  ThisSFT equ THISSFT	; NASM port label
   237 000000AF C43E[0000]              	LES	DI,[ThisSFT]
   238                                  %if installed
   239 000000B3 FF1E[3800]              	call	far [JShare + 14 * 4]
   240                                  %else
   241                                  	Call	ShSU
   242                                  %endif
   243 000000B7 E8(0000)                	LeaveCrit   critDisk
   244 000000BA E9(0000)                	transfer SET_SFT_MODE
   245                                  
   246                                  EndProc DOS_Create
   247                                  
   248                                  ; Inputs:
   249                                  ;	[WFP_START] Points to WFP string ("d:/" must be first 3 chars, NUL
   250                                  ;		terminated)
   251                                  ;	[CURR_DIR_END] Points to end of Current dir part of string
   252                                  ;		( = -1 if current dir not involved, else
   253                                  ;		 Points to first char after last "/" of current dir part)
   254                                  ;	[THISCDS] Points to CDS being used
   255                                  ;		(Low word = -1 if NUL CDS (Net direct request))
   256                                  ;	[THISSFT] Points to SFT to fill in if file created
   257                                  ;		(sf_mode field set so that FCB may be detected)
   258                                  ;	[SATTRIB] Is attribute of search, determines what files can be found
   259                                  ;	AX is Attribute to create
   260                                  ; Function:
   261                                  ;	Try to create the specified file truncating an old one that exists
   262                                  ; Outputs:
   263                                  ;	sf_ref_count is NOT altered
   264                                  ;	CARRY CLEAR
   265                                  ;	    THISSFT filled in.
   266                                  ;		sf_mode = sharing_compat + open_for_both for Non-FCB SFT
   267                                  ;	CARRY SET
   268                                  ;	    AX is error code
   269                                  ;		error_path_not_found
   270                                  ;			Bad path (not in curr dir part if present)
   271                                  ;		error_bad_curr_dir
   272                                  ;			Bad path in current directory part of path
   273                                  ;		error_access_denied
   274                                  ;			Create a second volume id or create a dir
   275                                  ;		error_file_exists
   276                                  ;			Already a file by this name
   277                                  ; DS preserved, others destroyed
   278                                  
   279                                  	procedure   DOS_Create_New,NEAR
   279          ******************       warning: proc DOS_Create_New... [-w+user]
   280                                  	DOSAssume   CS,<DS>,"DOS_Create_New"
   281                                  	ASSUME	ES:NOTHING
   282                                  
   283 000000BD B401                    	MOV	AH,1		; Truncate is NOT OK
   284 000000BF E940FF                  	JMP	Create_inter
   285                                  
   286                                  EndProc DOS_Create_New
   287                                  
   288                                  
   289                                  ; Inputs:
   290                                  ;	NAME1= Volume ID
   291                                  ;	BH= 0, delete volume id
   292                                  ;	    1, set new volume id
   293                                  ;	DS= DOSGROUP
   294                                  ; Function:
   295                                  ;	Set Volume ID to DOS 4.00 Boot record.
   296                                  ; Outputs:
   297                                  ;	CARRY CLEAR
   298                                  ;	    volume id set
   299                                  ;	CARRY SET
   300                                  ;	    AX is error code
   301                                  
   302                                  	procedure   $Set_Media_ID,NEAR		   ;AN000;
   302          ******************       warning: proc $Set_Media_ID... [-w+user]
   303                                  	DOSAssume   CS,<DS>,"DOS_Create_New"       ;AN000;
   304                                  	ASSUME	ES:NOTHING			   ;AN000;
   305                                  
   306 000000C2 50                      	PUSH	AX		;AN000;;>32mb
   307 000000C3 06                      	PUSH	ES		;AN000;;>32mb
   308 000000C4 57                      	PUSH	DI		;AN000;;>32mb
   309                                  
   310 000000C5 FEC4                    	INC	AH		;AN000;;>32mb  bl=drive #
   311 000000C7 88E3                    	MOV	BL,AH		;AN000;;>32mb  bl=drive # (A=1,B=2,,,)
   312 000000C9 B00D                    	MOV	AL,0DH		;AN000;;>32mb  generic IOCTL
   313 000000CB B96608                  	MOV	CX,0866H	;AN001;;>32mb  get media id
   314                                  PACKET_TEMP equ Packet_Temp	; NASM port label
   315 000000CE BA[0000]                	MOV	DX,OFFSET PACKET_TEMP wrt DOSGROUP	;AN000;>32mb
   316                                  
   317 000000D1 53                      	PUSH	BX		;AN000;;>32mb
   318 000000D2 52                      	PUSH	DX		;AN000;;>32mb
   319 000000D3 30FF                    	XOR	BH,BH		;AN000;;>32mb
   320                                  
   321 000000D5 E8(0000)                	invoke	D_IOCTL		;AN000;;>32mb
   322 000000D8 5A                      	POP	DX		;AN000;;>32mb
   323 000000D9 5B                      	POP	BX		;AN000;;>32mb
   324 000000DA 7224                    	JC	geterr		;AN000;;>32mb
   325                                  
   326 000000DC 08FF                    	OR	BH,BH		;AN000;;>32mb delete volume id
   327                                  NoName equ Noname	; NASM port label
   328 000000DE 7405                    	JZ	NoName		;AN000;>32mb yes
   329 000000E0 BE[0000]                	MOV	SI,OFFSET NAME1 wrt DOSGROUP   ;AN000;>32mb
   330 000000E3 EB03                    	JMP	SHORT doset	;AN000;>32mb yes
   331                                  Noname: 			;AN000;
   332 000000E5 BE[0000]                	MOV	SI,OFFSET NO_NAME_ID wrt DOSGROUP  ;AN000;>32mb
   333                                  doset:					       ;AN000;
   334 000000E8 89D7                    	MOV	DI,DX		;AN000;;>32mb
   335                                  MEDIA_LABEL equ MEDIA_Label	; NASM port equate
   336 000000EA 83C706                  	ADD	DI,MEDIA_LABEL	;AN000;;>32mb
   337 000000ED 16                      	PUSH	ss		;AN000;;>32mb  move new volume id to packet
   338 000000EE 1F                      	POP	DS		;AN000;;>32mb
   339                                   assume ds:DOSGROUP
   340 000000EF 16                      	PUSH	ss		;AN000;;>32mb
   341 000000F0 07                      	POP	ES		;AN000;;>32mb
   342                                   assume es:DOSGROUP
   343 000000F1 B90B00                  	MOV	CX,11		;AN000;;>32mb
   344 000000F4 F3A4                    	REP	MOVSB		;AN000;;>32mb
   345 000000F6 B94608                  	MOV	CX,0846H	;AN001;;>32mb
   346 000000F9 B00D                    	MOV	AL,0DH		;AN000;;>32mb
   347 000000FB 30FF                    	XOR	BH,BH		;AN000;;>32mb
   348 000000FD E8(0000)                	invoke	D_IOCTL		;AN000;;>32mb  set volume id
   349                                  geterr: 			;AN000;
   350 00000100 16                      	PUSH	ss		;AN000;>32mb
   351 00000101 1F                      	POP	DS		;AN000;>32mb   ds= dosgroup
   352                                   assume ds:DOSGROUP
   353                                  
   354 00000102 5F                      	POP	DI		;AN000;;>32mb
   355 00000103 07                      	POP	ES		;AN000;;>32mb
   356                                   assume es:nothing
   357 00000104 58                      	POP	AX		;AN000;;>32mb
   358 00000105 C3                      	return			;AN000;>32mb
   359                                  
   360                                  EndProc $Set_Media_ID		;AN000;
   361                                  
   362                                  
   363                                  ; Inputs:
   364                                  ;	[EXTOPEN_ON]= flag for extende open
   365                                  ;	SAVE_BX= mode specified in Extended Open
   366                                  ; Function:
   367                                  ;	Set mode in ThisSFT
   368                                  ; Outputs:
   369                                  ;	carry set,mode is set if from Extended Open
   370                                  ;	carry clear, mode not set yet
   371                                  
   372                                  %IFN IBMCOPYRIGHT
   373                                  	public Set_EXT_mode
   374                                  %ENDIF
   375                                  
   376                                  	procedure   Set_EXT_mode,NEAR	    ;AN000;
   376          ******************       warning: proc Set_EXT_mode... [-w+user]
   377                                  	ASSUME	ES:NOTHING,DS:NOTHING	    ;AN000;
   378                                  
   379 00000106 36F606[0000]01          	TEST	byte [ss:EXTOPEN_ON],ext_open_on    ;AN000;EO. from extnded open
   380 0000010C 740B                    	JZ	NOTEX			    ;AN000;EO. no, do normal
   381 0000010E 50                      	PUSH	AX			    ;AN000;EO.
   382 0000010F 36A1[0000]              	MOV	AX,[ss:SAVE_BX]		    ;AN000;EO.
   383 00000113 26094502                	OR	[ES:DI + sf_mode],AX	    ;AN000;EO.
   384 00000117 58                      	POP	AX			    ;AN000;EO.
   385 00000118 F9                      	STC				    ;AN000;EO.
   386                                  NOTEX:					    ;AN000;
   387 00000119 C3                      	return				    ;AN000;EO.
   388                                  
   389                                  EndProc Set_EXT_mode			    ;AN000;
   390                                  
   391                                      END
   392                                  
   393                                  
