2 ; SCCSID = @(#)ifssym.inc 1.0 87/05/11
3 ;******************************************************************************
7 ; A000 Original version 4.00 May 1987
8 ; A001 DCR 158 - merge unc info in attach start/status requests 8/87 RGAZZIA
9 ; A002 DCR 187 - ctrl req renumber, make attach type byte 8/87 RGAZZIA
10 ; A003 PTM 764 - printer attach problems 8/87 RGAZZIA
11 ; A004 PTM ???? - Write Only locks on Read/Write 10/27 FEIGENBAUM
12 ; A005 DCR 285 - remove Extended Attribute/Lock support 1/88 RG
13 ; A006 PTM 2827 error proc 1/88 RG
14 ; A007 PTM 3334- reset envirn subfunc to eop 2/88 RMG
15 ; A008 PTM 3745- commit across net problem due to sft flags problem 3/88 RMG
16 ; A009 PTM 3810- new sft unique id in sff 3/88 RMG
17 ; A010 PTM 4392- ditch sf_iomode,cp 4/18/88 RMG
21 ;******************************************************************************
23 SUBTTL IFS Driver Header ;AN000;
26 IFSHEADER STRUC ;AN000;
27 IFS_NEXT DD -1 ; Next header in list (-1=end) ;AN000;
28 IFS_NAME DB " " ; IFS name ;AN000;
29 IFS_ATTRIBUTE DW ? ; Attributes ;AN000;
30 IFS_VERSION DW 0 ; Request level supported ;AN000;
31 IFS_DOSCALL@ DD ? ; DOS interface routine ;AN000;
32 ; (set by TUPPER before the init call) ;AN000;
33 IFS_CALL@ DW ? ; Function entry point ;AN000;
34 IFSHEADER ENDS ;AN000;
36 ; ifs_attribute equates ;AN000;
38 IFSDEVICE EQU 8000H ; Supports single device/file functions ;AN000;
39 IFSDISK EQU 4000H ; Supports multi-file functions ;AN000;
40 IFSUNC EQU 2000H ; Support UNC (nameless) connection ;AN000;
41 IFSREMOTE EQU 0800H ; File system is remote ;AN000;
42 IFSFILTER EQU 0400H ; FS will filter (if off, use DOS ;AN000;
43 ; standard, cap & 8.3) ;AN000;
44 IFSIOCTL EQU 0002H ; Supports IOCTL functions ;AN000;
45 IFSUSESHARE EQU 0001H ; Uses DOS share support (vs own share) ;AN000;
48 SUBTTL IFSRH - IFS Request Header ;AN000;
51 ; IFS Request Header ;AN000;
54 IFSR_LENGTH DW ? ; Total length of request ;AN000;
55 IFSR_FUNCTION DB ? ; Requested function ;AN000;
56 IFSR_RETCODE DW ? ; Explicit error ;AN000;
57 IFSR_RETCLASS DB ? ; Error class ;AN000;
58 IFSR_RESV1 DB 16 DUP(0) ; DOS reserved ;AN000;
59 IFSR_FCN_PARMS DB 50 DUP(0) ; Additional parameters ;AN000;
62 ; IFSR_FUNCTION codes ;AN000;
63 ; Control requests: ;AN000;
65 IFSATTSTART EQU 2 ;AN000;
66 IFSATTSTAT EQU 3 ;AC002;
67 IFSATTEND EQU 4 ;AC002;
68 IFSEXECAPI EQU 5 ;AC002;
69 IFSCRITMSG EQU 6 ;AC002;
70 IFSUPDATECB EQU 7 ;AC002;
72 ; IFSR_APIFUNC codes: ;AN000;
73 ; Int 21 mapped requests: ;AN000;
74 IFSDRIVERESET EQU 1 ;AN000;
75 IFSDISKATTR EQU 2 ;AN000;
76 IFSMKDIR EQU 3 ;AN000;
77 IFSRMDIR EQU 4 ;AN000;
78 IFSCHDIR EQU 5 ;AN000;
79 IFSDELFILE EQU 6 ;AN000;
80 IFSRENFILE EQU 7 ;AN000;
81 IFSSEARCHFILE EQU 8 ;AN000;
82 IFSOPENFILE EQU 9 ;AN000;
83 IFSLSEEKFILE EQU 10 ;AN000;
84 IFSREADFILE EQU 11 ;AN000;
85 IFSWRITEFILE EQU 12 ;AN000;
86 IFSLOCKFILE EQU 13 ;AN000;
87 IFSCLOSEFILE EQU 14 ;AN000;
88 IFSFILEATTR EQU 15 ;AN000;
89 IFSDEPIOCTL EQU 16 ;AN000;
90 IFSDEVIOCTL EQU 17 ;AN000;
92 IFSEOCID EQU 19 ;AN000;
94 SUBTTL Control Request Parameter Macro ;AN000;
97 IFSR_FCN_DEF MACRO fcn ;AN000;
99 IFIDN <fcn>,<INIT> ;AN000;
100 IFSR_PARMS@ = DWORD PTR IFSR_FCN_PARMS ; command parameters ;AN000;
101 IFSR_RESSIZE = WORD PTR IFSR_FCN_PARMS+4 ; driver total size ;AN000;
102 LENGTH_INIT EQU IFSR_RESSIZE-IFSRH+2 ;AN000;
105 IFIDN <fcn>,<ATTSTART> ;AN000;
106 IFSR_TYPE = BYTE PTR IFSR_FCN_PARMS ; attach type ;AC001;
107 IFSR_PARMS@ = DWORD PTR IFSR_FCN_PARMS+2 ; command parameters ;AN000;
108 IFSR_DEVICE_CB@ = DWORD PTR IFSR_FCN_PARMS+6 ; CD/DF ;AN000;
109 IFSR_USER_WORD = WORD PTR IFSR_FCN_PARMS+10 ; for unc deviceless attach ;AN001;
110 LENGTH_ATTSTART EQU IFSR_USER_WORD-IFSRH+2 ;AC001;/;AC004;
113 IFIDN <fcn>,<ATTSTAT> ;AN000;
114 IFSR_TYPE = BYTE PTR IFSR_FCN_PARMS ; attach type ;AC001;
115 IFSR_PARMS@ = DWORD PTR IFSR_FCN_PARMS+2 ; command parameters ;AN000;
116 IFSR_DEVICE_CB@ = DWORD PTR IFSR_FCN_PARMS+6 ; CD/DF ;AN000;
117 IFSR_USER_WORD = WORD PTR IFSR_FCN_PARMS+10 ; for unc deviceless attach ;AN001;
118 IFSR_MAX_XMITT_SIZE = WORD PTR IFSR_FCN_PARMS+12 ; redir-maximum transmit size ;AN001;
119 IFSR_NET_NAME_ID = WORD PTR IFSR_FCN_PARMS+14 ; redir-net name id ;AN001;
120 IFSR_LSN = WORD PTR IFSR_FCN_PARMS+16 ; redir-low byte=local session # ;AN001;
121 IFSR_DEVICE_STATUS = BYTE PTR IFSR_FCN_PARMS+18 ; redir-interesting bits ;AN001;
122 LENGTH_ATTSTAT EQU IFSR_DEVICE_STATUS-IFSRH+2 ;AC001;
125 IFIDN <fcn>,<ATTEND> ;AN000;
126 IFSR_DEVICE_CB@ = DWORD PTR IFSR_FCN_PARMS ; CD/DF ;AN000;
127 IFSR_NAME@ = DWORD PTR IFSR_FCN_PARMS+4 ; UNC deviceless detach ;AN000;
128 LENGTH_ATTEND EQU IFSR_NAME@-IFSRH+4 ;AN000;
131 IFIDN <fcn>,<EXECAPI> ;AN000;
132 IFSR_APIFUNC = BYTE PTR IFSR_FCN_PARMS ; API function code ;AN000;
133 IFSR_ERROR_CLASS = BYTE PTR IFSR_FCN_PARMS+1 ; DOS extended error class ;AN000;
134 IFSR_ERROR_ACTION = BYTE PTR IFSR_FCN_PARMS+2 ; DOS extended error action ;AN000;
135 IFSR_ERROR_LOCUS = BYTE PTR IFSR_FCN_PARMS+3 ; DOS extended error locus ;AN000;
136 IFSR_ALLOWED = BYTE PTR IFSR_FCN_PARMS+4 ; DOS extended error locus ;AN000;
137 IFSR_I24_COUNT = BYTE PTR IFSR_FCN_PARMS+5 ; critical error retry count ;AN000;
138 ; 0=first time ;AN000;
139 IFSR_I24_RESP = BYTE PTR IFSR_FCN_PARMS+6 ; critical error response ;AN000;
140 ; 0=ignore 1=retry ;AN000;
141 IFSR_DEVICE_CB@ = DWORD PTR IFSR_FCN_PARMS+8 ; device (CD or DF) ;AN000;
142 IFSR_OPEN_CB@ = DWORD PTR IFSR_FCN_PARMS+12 ; open file instance (SF) ;AN000;
143 IFSR_API_PARMS = BYTE PTR IFSR_FCN_PARMS+16 ;AN000;
146 IFIDN <fcn>,<CRITMSG> ;AN000;
147 IFSR_MSG@ = DWORD PTR IFSR_FCN_PARMS ; message buffer address ;AN000;
148 IFSR_MSG_TYPE = BYTE PTR IFSR_FCN_PARMS+4 ; message type ;AN000;
149 ; 1=message is printed in form ;AN000;
151 ; Abort,Retry,Ignore,Fail ;AN000;
152 ; 0=message is printed in form ;AN000;
153 ; <message> error (read/writ)ing (drive/device) XXX ; ;AN000;
154 ; Abort,Retry,Ignore,Fail ;AN000;
156 LENGTH_CRITMSG EQU IFSR_MSG_TYPE-IFSRH+2 ;AN000;
159 IFIDN <fcn>,<UPDATECB> ;AN000;
160 IFSR_CB@ = DWORD PTR IFSR_FCN_PARMS ; control block address ;AN000;
161 IFSR_TYPE = BYTE PTR IFSR_FCN_PARMS+4 ; control block type ;AN000;
162 IFSOPEN EQU 0 ; open instance (SFT) entry ;AN000;
163 IFSCB EQU -1 ; see control block type field ;AN000;
164 LENGTH_UPDATECB EQU IFSR_TYPE-IFSRH+2 ;AN000;
175 SUBTTL INT 21H Mapped Request Parameter Macro ;AN000;
178 IFSR_API_DEF MACRO fcn ;AN000;
180 IFIDN <fcn>,<DRIVERESET> ;AN000;
181 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 0=flush ;AN000;
182 LENGTH_DRIVERESET EQU IFSR_FUNC-IFSRH+2 ;AN000;
185 IFIDN <fcn>,<DISKATTR> ;AN000;
186 IFSR_ALLOCUNITS = WORD PTR IFSR_API_PARMS ; # allocation units ;AN000;
187 IFSR_ALLOCSIZE = WORD PTR IFSR_API_PARMS+2 ; allocation unit sectors ;AN000;
188 IFSR_SECTSIZE = WORD PTR IFSR_API_PARMS+4 ; sector size ;AN000;
189 IFSR_AVAILALLOC = WORD PTR IFSR_API_PARMS+6 ; free allocation units ;AN000;
190 IFSR_FSID = BYTE PTR IFSR_API_PARMS+8 ; file system media id ;AN000;
191 LENGTH_DISKATTR EQU IFSR_FSID-IFSRH+2 ;AN000;
194 IFIDN <fcn>,<MKDIR> ;AN000;
195 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS ; asciiz name to process ;AN000;
196 LENGTH_MKDIR EQU IFSR_NAME@-IFSRH+4 ;AN000;
199 IFIDN <fcn>,<RMDIR> ;AN000;
200 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS ; asciiz name to process ;AN000;
201 LENGTH_RMDIR EQU IFSR_NAME@-IFSRH+4 ;AN000;
204 IFIDN <fcn>,<CHDIR> ;AN000;
205 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS ; asciiz name to process ;AN000;
206 LENGTH_CHDIR EQU IFSR_NAME@-IFSRH+4 ;AN000;
209 IFIDN <fcn>,<DELFILE> ;AN000;
210 IFSR_MATCHATTR_47 = WORD PTR IFSR_API_PARMS ; format 00000000e0a00shr ;AN000;
211 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS+2 ; file to delete ;AN000;
212 LENGTH_DELFILE EQU IFSR_NAME@-IFSRH+4 ;AN000;
215 IFIDN <fcn>,<RENFILE> ;AN000;
216 IFSR_MATCHATTR = WORD PTR IFSR_API_PARMS ; format 00000000e0a00shr ;AN000;
217 IFSR_NAME1@ = DWORD PTR IFSR_API_PARMS+2 ; file to rename ;AN000;
218 IFSR_NAME2@ = DWORD PTR IFSR_API_PARMS+6 ; new file name ;AN000;
219 LENGTH_RENFILE EQU IFSR_NAME2@-IFSRH+4 ;AN000;
222 IFIDN <fcn>,<SEARCHFILE> ;AN000;
223 IFSR_SUBFUNC = BYTE PTR IFSR_API_PARMS ; 1=first, 2=next ;AN000;
224 IFSR_CONTINFO@ = DWORD PTR IFSR_API_PARMS+2 ; continuation info addr ;AN000;
225 IFSR_MATCHATTR = WORD PTR IFSR_API_PARMS+6 ; format 0000000re0advshr (1st) ;AN000;
226 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS+8 ; asciiz name to process (1st) ;AN000;
227 LENGTH_SEARCHFILE EQU IFSR_NAME@-IFSRH+4 ;AN000;
230 IFIDN <fcn>,<OPENFILE> ;AN000;
231 IFSR_MODE = WORD PTR IFSR_API_PARMS ; open mode ;AN000;
232 ; format: 0WF0000CISSS0AAA ;AN000;
233 ; AAA=access code 0=read,1=write ;AN000;
234 ; 2=read/write ;AN000;
235 ; SSS=sharing mode 0=compatibility ;AN000;
236 ; 1=deny r/w, 2=deny write ;AN000;
237 ; 3=deny read, 4=deny none ;AN000;
238 ; I 0=pass handle to child, 1=no inheri;AN000;t
239 ; C 0=validate cp, 1=no cp check ;AN000;
240 ; F 0=int 24H, 1=return error on ;AN000;
241 ; this open & any I/O to this handle ;AN000;
242 ; W 0=no commit, 1=auto-commit on ;AN000;
244 IFSR_FLAG = WORD PTR IFSR_API_PARMS+2 ; function control; format=CE ;AN000;
245 ; C=does not exist action ;AN000;
246 ; 0=fail, 1=create ;AN000;
247 ; E=exists action ;AN000;
248 ; 0=fail, 1=open, 2=replace/open ;AN000;
249 IFSR_CP = WORD PTR IFSR_API_PARMS+4 ; global code page ;AN000;
250 IFSR_CPSW = BYTE PTR IFSR_API_PARMS+6 ; CPSW flag ;AN000;
251 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS+8 ; asciiz name to open ;AN000;
252 IFSR_PARMS@ = DWORD PTR IFSR_API_PARMS+12 ; format:
255 ; DB IOMODE ID ;AN000;
257 IFSR_MATCHATTR = WORD PTR IFSR_API_PARMS+16 ; format 00000000e0advshr ;AN000;
258 IFSR_ACTION = WORD PTR IFSR_API_PARMS+18 ;AN000;
259 LENGTH_OPENFILE EQU IFSR_ACTION-IFSRH+2 ;AN000;
262 IFIDN <fcn>,<LSEEKFILE> ;AN000;
263 IFSR_MODE = BYTE PTR IFSR_API_PARMS ; see INT 21H AH=42H ;AN000;
264 IFSR_POSITION = DWORD PTR IFSR_API_PARMS+2 ; displacement of LSEEK ;AN000;
265 LENGTH_LSEEKFILE EQU IFSR_POSITION-IFSRH+4 ;AN000;
268 IFIDN <fcn>,<READFILE> ;AN000;
269 ;IFSR_MODE = BYTE PTR IFSR_API_PARMS ;AD005;
270 IFSR_COUNT = WORD PTR IFSR_API_PARMS+2 ;AN000;
271 IFSR_BUFFER@ = DWORD PTR IFSR_API_PARMS+4 ;AN000;
272 LENGTH_READFILE EQU IFSR_BUFFER@-IFSRH+4 ;AN000;
275 IFIDN <fcn>,<WRITEFILE> ;AN000;
276 ;IFSR_MODE = BYTE PTR IFSR_API_PARMS ;AD005;
277 IFSR_COUNT = WORD PTR IFSR_API_PARMS+2 ;AN000;
278 IFSR_BUFFER@ = DWORD PTR IFSR_API_PARMS+4 ;AN000;
279 LENGTH_WRITEFILE EQU IFSR_BUFFER@-IFSRH+4 ;AN000;
282 IFIDN <fcn>,<LOCKFILE> ;AN000;
283 ;IFSR_MODE = BYTE PTR IFSR_API_PARMS ; bit 0: 0=lock all operations ;AD005;
284 ; 1=lock only write operations ;AD005;
285 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 0=LOCK, 1=UNLOCK ;AC005;
286 ;IFSR_COUNT = WORD PTR IFSR_API_PARMS+2 ;AD005;
287 ;IFSR_RANGE@ = DWORD PTR IFSR_API_PARMS+4 ;AD005;
288 IFSR_LK_POSITION = DWORD PTR IFSR_API_PARMS+2 ;AN005;
289 IFSR_LK_LENGTH = DWORD PTR IFSR_API_PARMS+6 ;AN005;
290 LENGTH_LOCKFILE EQU IFSR_LK_LENGTH-IFSRH+4 ;AC005;
293 IFIDN <fcn>,<CLOSEFILE> ;AN000;
294 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 0=CLOSE, 1=COMMIT ;AN000;
295 LENGTH_CLOSEFILE EQU IFSR_FUNC-IFSRH+2 ;AN000;
298 IFIDN <fcn>,<FILEATTR> ;AN000;
299 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 0=get, 1=set by handle ;AN000;
300 ; 2=get, 3=set by name ;AN000;
301 IFSR_SUBFUNC = BYTE PTR IFSR_API_PARMS+2 ; 0=none,2=EA List, 3-EA names ;AN000;
302 ; 2,3 used only on IFSR_FUNC=0,1 ;AN000;
303 IFSR_BUFFER1@ = DWORD PTR IFSR_API_PARMS+4 ; if IFSR_TYPE=2,3 ;AN000;
304 IFSR_BUFFER2@ = DWORD PTR IFSR_API_PARMS+8 ; if IFSR_TYPE=2 ;AN000;
305 IFSR_COUNT = WORD PTR IFSR_API_PARMS+12 ; if IFSR_TYPE=2,3 ;AN000;
306 ; Following present only if IFSR_FUNC=2,3 ;AN000;
307 IFSR_MATCHATTR = WORD PTR IFSR_API_PARMS+14 ; format 0000000re0advshr ;AN000;
308 IFSR_NAME@ = DWORD PTR IFSR_API_PARMS+16 ; ASCIIZ file name ;AN000;
309 IFSR_SIZE = DWORD PTR IFSR_API_PARMS+20 ; file size ;AN000;
310 IFSR_DATE = WORD PTR IFSR_API_PARMS+24 ; file date ;AN000;
311 IFSR_TIME = WORD PTR IFSR_API_PARMS+26 ; file time ;AN000;
312 IFSR_ATTR = WORD PTR IFSR_API_PARMS+28 ; format 0000000re0advshr ;AN000;
313 LENGTH_FILEATTR EQU IFSR_ATTR-IFSRH+2 ;AN000;
316 IFIDN <fcn>,<DEPIOCTL> ;AN000;
317 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 00 Generic IOCTL by device # ;AN000;
318 ; 01 Generic IOCTL by handle ;AN000;
319 ; 02 FS IOCTL query OS type ;AN000;
320 IFSR_BUFFER@ = DWORD PTR IFSR_API_PARMS+2 ; set on queries ;AN000;
321 IFSR_BUFSIZE = WORD PTR IFSR_API_PARMS+6 ; Buffer size set for IFSR_FUNC=2 ;AN000;
322 ; FUNC dependent parameters ;AN000;
323 ; For generic ;AN000;
324 IFSR_CATEGORY = BYTE PTR IFSR_API_PARMS+8 ; generic subfunctions ;AN000;
325 IFSR_CTLFUNC = BYTE PTR IFSR_API_PARMS+9 ; see INT 21H AH=6BH ;AN000;
326 LENGTH_DEPIOCTL EQU IFSR_CTLFUNC-IFSRH+1 ;AN000;
329 IFIDN <fcn>,<DEVIOCTL> ;AN000;
330 IFSR_FUNC = BYTE PTR IFSR_API_PARMS ; 00 Generic IOCTL by device # ;AN000;
331 ; 01 Generic IOCTL by handle ;AN000;
332 ; 02 FS IOCTL query OS type ;AN000;
333 IFSR_BUFFER@ = DWORD PTR IFSR_API_PARMS+2 ; set on queries ;AN000;
334 IFSR_BUFSIZE = WORD PTR IFSR_API_PARMS+6 ; buffer size set for IFSR_FUNC=2 ;AN000;
335 ; FUNC dependent parameters ;AN000;
336 ; For generic ;AN000;
337 IFSR_CATEGORY = BYTE PTR IFSR_API_PARMS+8 ; generic subfunctions ;AN000;
338 IFSR_CTLFUNC = BYTE PTR IFSR_API_PARMS+9 ; see INT 21H AH=6BH ;AN000;
339 LENGTH_DEVIOCTL EQU IFSR_CTLFUNC-IFSRH+1 ;AN000;
342 IFIDN <fcn>,<EOP> ;AN000;
343 IFSR_PID = WORD PTR IFSR_API_PARMS ; process ID ;AN000;
344 IFSR_SUBFUNC = BYTE PTR IFSR_API_PARMS+2 ; 0=NORMAL EXIT, 1=ABORT EXIT ;AN000;
345 LENGTH_EOP EQU IFSR_SUBFUNC-IFSRH+2 ;AN000;
348 IFIDN <fcn>,<EOCID> ;AN000;
349 IFSR_UID = WORD PTR IFSR_API_PARMS ; process ID ;AN000;
350 LENGTH_EOCID EQU IFSR_UID-IFSRH+2 ;AN000;
373 SUBTTL Request Data ;AN000;
376 ; Attach types ;AN000;
377 ;;;aliasTYPE_ALIAS EQU 0 ;AN000;
378 TYPE_DEVICE EQU 1 ;AN000;
379 TYPE_DRIVE EQU 2 ;AN000;
380 TYPE_NET_DEVICE EQU 3 ;AN000;
381 TYPE_NET_DRIVE EQU 4 ;AN000;
382 ; Attach cmds ;AN000;
383 GET_MODE EQU 0 ;AN000;
384 SET_MODE EQU 1 ;AN000;
385 GET_ASSIGN_LIST EQU 2 ;AN000;
386 DEFINE_MACRO EQU 3 ;AN000;
387 CANCEL_ATTACH EQU 4 ;AN000;
389 ATTACH_PARMS STRUC ;AN000;
390 AP_COUNT DW ? ;AN000;
391 AP_STRING DB ? ;AN000;
392 ATTACH_PARMS ENDS ;AN000;
394 ; Critical Error Message types ;AN000;
395 CRIT_MSG_TYPE_1 equ 1
399 ; Control Block types ;AN000;
400 CBTYPE_SFF EQU 0 ;AN000;
401 CBTYPE_CD EQU 1 ;AN000;
402 CBTYPE_DF EQU 2 ;AN000;
403 CBTYPE_DUMMYCD EQU 3 ;AN000;
405 ; Drive Reset equates ;AN000;
406 FUNC_FLUSH EQU 0 ;AN000;
407 FUNC_FLUSH_INVALIDATE EQU 1 ;AN000;
409 ; Search File equates ;AN000;
410 IFSSEARCH_FIRST EQU 1 ;AN000;
411 IFSSEARCH_NEXT EQU 2 ;AN000;
413 ; Open/Create type ;AN000;
414 TYPE_NONE EQU 0 ;AN000;
415 NOTEXIST_ACT_FAIL = 0 ;+BAF
416 NOTEXIST_ACT_CREATE = 1 ;+BAF
417 EXIST_ACT_FAIL = 0 ;+BAF
418 EXIST_ACT_OPEN = 1 ;+BAF
419 EXIST_ACT_REP_OPEN = 2 ;+BAF
425 ; Read/Write equates ;AN000;
426 ;MODE_READ EQU 0 ;AD005;
427 ;MODE_WRITE EQU 0 ;AD005;
428 ;MODE_LOCK_READ EQU 1 ;AD005;
429 ;MODE_WRITE_UNLOCK EQU 1 ;AD005;
430 ;MODE_WRITE_SFPOS EQU 00H ;AD005;
431 ;MODE_WRITE_SFSIZE EQU 02H ;AD005;
432 ;MODE_ADD_MASK EQU 00000010B ; do I need this??? ;AD005;
434 ; Lock equates ;AN000;
435 ;MODE_LOCK_ALL EQU 0 ;AD005;
436 ;MODE_LOCK_WRITE EQU 1 ;AD005;
437 FUNC_LOCK EQU 0 ;AN000;
438 FUNC_UNLOCK EQU 1 ;AN000;
439 ;MODE_ADD_MASK EQU 00000010B ;AD005;
440 ;MODE_WO_MASK EQU 10000000B ;AN004; BAF ;AD005;
441 ;LOCK_RANGE_STRUC STRUC ;AD005;
442 ; IFSR_LOCK_POSITION DD ? ;AD005;
443 ; IFSR_LOCK_LENGTH DD ? ;AD005;
444 ;LOCK_RANGE_STRUC ENDS ;AD005;
447 ; Close equates ;AN000;
448 FUNC_CLOSE EQU 0 ;AN000;
449 FUNC_COMMIT EQU 1 ;AN000;
451 ; LSeek equates ;AN000;
454 ; File Attribute equates ;AN000;
455 FUNC_GET_BY_HANDLE EQU 0 ;AN000;
456 FUNC_SET_BY_HANDLE EQU 1 ;AN000;
457 FUNC_GET_BY_NAME EQU 2 ;AN000;
458 FUNC_SET_BY_NAME EQU 3 ;AN000;
459 SUBFUNC_INLINE EQU 0 ;AN000;
460 SUBFUNC_EA EQU 2 ;AN000;
461 SUBFUNC_EA_NAMES EQU 3 ;AN000;
463 ; FS Dependent IOCTL ;AN000;
464 GEN_IOCTL_BY_DEVNUM EQU 0 ;AN000;
465 GEN_IOCTL_BY_HANDLE EQU 1 ;AN000;
466 QUERY_OS_TYPE EQU 2 ;AN000;
467 CATEGORY_FS EQU 0 ;AN000;
468 CATEGORY_REDIR EQU 1 ;AN000;
469 PRINTER_SET_STRING EQU 2 ;AN000;
470 PRINTER_GET_STRING EQU 3 ;AN000;
471 PRINTER_SET_FLAGS EQU 4 ;AN000;
472 PRINTER_GET_FLAGS EQU 5 ;AN000;
473 CTLFUNC_PRINTER_SET_STRING EQU 00100001B ;AN000;
474 CTLFUNC_PRINTER_GET_STRING EQU 00000001B ;AN000;
475 CTLFUNC_PRINTER_SET_FLAGS EQU 00100010B ;AN000;
476 CTLFUNC_PRINTER_GET_FLAGS EQU 00000010B ;AN000;
477 CTLFUNC_DEVECHOCHECK EQU 00000011B ;AN000;
478 CTLFUNC_GET_UNC_ITEM EQU 00000100B ;AN000;
479 CTLFUNC_DEVCLOSE EQU 00000101B ;AN000;
480 CTLFUNC_DEVOPER EQU 00000110B ;AN000;
481 CTLFUNC_PRINT_ON EQU 00100111B ;AN000;
482 CTLFUNC_PRINT_OFF EQU 00000111B ;AN000;
483 CLOSE_SPOOL_FILES EQU 9 ;AN000;
484 LENGTH_DEVECHOCHECK_BUFFER EQU 1 ;AN000;
486 ; FS Device IOCTL ;AN000;
487 READ_DEVICE EQU 2 ;AN000;
488 WRITE_DEVICE EQU 3 ;AN000;
489 CHAR_GENERIC EQU 0CH ;AN000;
490 BLOCK_GENERIC EQU 0DH ;AN000;
492 ; End of Process equates ;AN000;
493 EOP_NORMAL EQU 0 ;AN000;
494 EOP_ABORT EQU 1 ;AN000;
495 RESET_ENVIRONMENT EQU 2
497 SUBTTL Request Return Classes/Codes ;AN000;
500 ; IFS Request Return Codes ;AN000;
501 IFSR_NO_ERROR EQU 0 ;AN000;
502 IFSR_NONSPEC_ERROR EQU 1 ;AN000;
503 IFSR_NOT_FOUND_ERROR EQU 2 ;AN000;
504 IFSR_ACCESS_DENIED EQU 3 ;AN000;
505 IFSR_DEVICE_TYPE_MISMATCH EQU 4 ;AN000;
506 IFSR_NO_SUBFCN_SUPPORT EQU -2 ;AN000;
507 IFSR_NO_FCN_SUPPORT EQU -1 ;AN000;
509 ; IFS Request Return Classes ;AN000;
510 IFSR_INT21H_ERROR EQU 1 ;AN000;
511 IFSR_DRIVER_ERROR EQU 2 ;AN000;
512 IFSR_INT21H_CRITER EQU 3 ;AN000;
513 IFSR_DEVICE_ERROR EQU 4 ;AN006;
514 IFSR_BAD_FORMAT EQU -1 ;AN000;
523 ; IFS_DOSCALL@ function equates ;AN000;
524 ; Block Device Driver Requests ;AN000;
525 CALL_INTERRUPT_ROUTINE EQU 1 ;AN000;
526 READ_SECTORS EQU 2 ;AN000;
527 WRITE_SECTORS EQU 3 ;AN000;
528 FIND_SECTOR EQU 8 ;AN000;
529 MARK_SECTOR_CHANGED EQU 9 ;AN000;
530 ; Buffer Cache Requests ;AN000;
531 WRITE_DOS_BUFFER EQU 10 ;AN000;
532 READ_DOS_BUFFER EQU 11 ;AN000;
533 FREE_DOS_BUFFER EQU 12 ;AN000;
534 FLUSH_DOS_BUFFERS EQU 13 ;AN000;
535 ; Get DOS Variable ;AN000;
536 GET_DOS_VALUE EQU 32 ;AN000;
537 ACTIVE_PROCESS_INFO EQU 1 ;AN000;
538 CPSW_INFORMATION EQU 2 ;AN000;
539 BREAK_INFORMATION EQU 3 ;AN000;
540 VERIFY_INFORMATION EQU 4 ;AN000;
541 CONFIG_SYS_VALUES EQU 5 ;AN000;
542 DOS_VALUE_BUFFER STRUC ;AN000;
543 VAL_BUF_SIZE DW 14 ;AN000;
544 VAL_BUF_FILES DW 0 ;AN000;
545 VAL_BUF_FCBS DW 0 ;AN000;
547 VAL_BUF_BUFS DW 0 ;AN000;
549 VAL_BUF_LDRV DW 0 ;AN000;
550 VAL_BUF_SSZ DW 0 ;AN000;
551 DOS_VALUE_BUFFER ENDS ;AN000;
552 MACHINE_NAME EQU 6 ;AN000;
553 COUNTRY_INFO EQU 7 ;AN000;
554 SHARE_RETRY_COUNT EQU 8 ;AN000;
555 ; Get Assign Mode ;AN000;
556 GET_ASSIGN_MODE EQU 33 ;AN000;
566 USE_SYSTEM_TIMEDATE = 0
567 USE_USER_TIMEDATE = 1
571 SUBTTL Pseudo Block Structures: SF, CD, DF ;AN000;
573 ; SFF - Pseudo SFT ;AN000;
574 ; This structure is used to pass pertinent SFT information ;AN000;
575 ; to IFS driver. ;AN000;
577 SFF STRUC ; Open File Control Block ;AN000;
578 SFF_TYPE DB 0,0 ; Identifies SFF ;AN000;
579 SFF_FLAGS DW ? ; Control flags ;AN000;
580 ; 4000H=don't set date/time on close ;AN009;
581 ; 0080H=device (vs file) ;AN009;
582 ; 0040H=File clean ;AN008;
583 SFF_MODE DW ? ; Mode of access. ;AN000;
584 ; 8000H=FCB (vs handle)[this moved from flags];AC008;
585 SFF_RESV1 DW ? ; IO mode. ;AC023; iomode
586 SFF_ATTR DW ? ; File attr.FORMAT : 0000000re0advshr ;AN000;
587 SFF_UID DW ? ; User ID ;AN000;
588 SFF_PID DW ? ; Process ID ;AN000;
589 SFF_SIZE DD ? ; File size ;AN000;
590 SFF_POSITION DD ? ; Read/Write pointer ;AN000;
591 SFF_TIME DW ? ; File time ;AN000;
592 SFF_DATE DW ? ; File date ;AN000;
593 SFF_NAME DB 8 DUP (?) ; Name ;AN000;
594 SFF_EXT DB 3 DUP (?) ; Extension ;AN000;
595 SFF_RESV2 DW 0 ; Code page ;AC024; cp
596 SFF_SF_ID DW 0 ; Unique SFT entry identifier ;AN009;
597 SFF_RESV DB 12 DUP(0) ; Reserved ;AC009;
598 SFF_FSDA DB 8 DUP(?) ; File System Dependent Data Area ;AN000;
602 SFF_Close_NoDate EQU 4000H ; 4000H=don't set date/time on close ;AN009;
603 SFF_IsDevice EQU 0080H ; 0080H=device (vs file) ;AN009;
604 SFF_FileClean EQU 0040H ; 0040H=File clean ;AN008;
605 SFF_Device_Raw EQU 0020H ; 0020H=Device raw ;AN008;
606 SFF_Net_Spool EQU 0000100000000000B
608 SFF_IsFCB EQU 8000H ; 8000H=FCB (vs handle)[this moved from flags];AC008;
610 ; CD - Pseudo CDS ;AN000;
611 ; This structure is used to pass pertinent CDS information ;AN000;
612 ; to IFS driver. ;AN000;
615 CD_TYPE DB 1,0 ; Identifies CD ;AN000;
616 CD_END DW ? ; End of assignment in CD_TEXT ;AN000;
617 CD_TEXT DB 67 DUP (?) ; Text of assignment and curdir ;AN000;
618 CD_RESV DB 5 DUP(0) ; Reserved ;AN000;
619 CD_FSDA DB 8 DUP(?) ; File System Dependent Data Area ;AN000;
622 ; DF - Pseudo DFL ;AN000;
623 ; This structure is used to pass pertinent DFL information ;AN000;
624 ; to IFS driver. ;AN000;
627 DFL_TYPE DB 2,0 ; Identifies DFL ;AN000;
628 DFL_DEV_NAME DB 8 DUP (?) ; Device name ;AN000;
629 DFL_FSDA DB 8 DUP (?) ; File System Dependent Data Area ;AN000;
632 SUBTTL Search Continuation Information ;AN000;
634 CONTINFO STRUC ;AN000;
635 CI_SEARCH_FN DB 8 DUP(?) ; SEARCH FILE NAME ;AN000;
636 CI_SEARCH_FN_EXT DB 3 DUP(?) ; SEARCH FILE EXTENSION ;AN000;
637 CI_SEARCH_ATTR DB ? ; SEARCH ATTRIBUTE ;AN000;
638 CI_FSDA DB 8 DUP(?) ; FSDA ;AN000;
639 ; Directory entry: ;AN000;
640 CI_FOUND_FN DB 8 DUP(?) ; FOUND FILE NAME ;AN000;
641 CI_FOUND_FN_EXT DB 3 DUP(?) ; FOUND FILE EXTENSION ;AN000;
642 CI_FOUND_ATTRL DB ? ; FOUND ATTRIBUTE LOW ??? DB/DD ;AN000;
643 CI_CP DW ? ; FILE CODE PAGE (OR 0) ;AN000;
644 CI_RESV1 DW ? ; RESERVED ;AN000;
645 CI_FOUND_ATTRH DB ? ; FOUND ATTRIBUTE HIGH ;AN000;
646 CI_RESV2 DB 5 DUP(?) ; RESERVED ;AN000;
647 CI_FILE_TIME DW ? ; FILE TIME ;AN000;
648 CI_FILE_DATE DW ? ; FILE DATE ;AN000;
649 CI_FSWORD DW ? ; MEANING FILE SYSTEM SPECIFIC ;AN000;
650 ; (STARTING CLUSTER IN FAT) ;AN000;
651 CI_FILE_SIZE DD ? ; FILE SIZE ;AN000;
652 CONTINFO ENDS ;AN000;
655 CATEGORY_PRINTER EQU 5
657 CTLFUNC_SELECT EQU 4AH
658 CTLFUNC_QUERY_SELECTED EQU 6AH
659 CTLFUNC_QUERY_PREPLIST EQU 6BH
661 DEV_OPER_BUFFER STRUC
666 PACKET STRUC ; device ioctl buffer info
667 PACKLEN DW 2 ; length of packet in bytes
668 PACKCPID DW ? ; code page id