1 ; SCCSID = @(#)mstable.asm 1.3 85/07/25
3 ; A000 version 4.0 Jan. 1988
4 ; A001 DCR 486 - Share installation for >32mb drives
5 ; A006 DCR 503 - fake version for IBMCACHE
6 ; A008 PTM 4070 - fake version for MS WINDOWS
10 include EA
.inc ;AN000;; for Extended Attributes
11 include fastopen
.inc ;AN000;; for Extended Attributes
16 AsmVars
<Kanji
, Debug
, Redirector
, ShareF
>
18 TABLE
SEGMENT BYTE PUBLIC 'TABLE'
22 PUBLIC MSTAB001s
,MSTAB001e
25 MSVERS EQU THIS
WORD ; MS-DOS version in hex for $GET_VERSION
26 MSMAJOR
DB MAJOR_VERSION
27 MSMINOR
DB MINOR_VERSION
29 I_am YRTAB
,8,<200,166,200,165,200,165,200,165> ; [SYSTEM]
30 I_am MONTAB
,12,<31,28,31,30,31,30,31,31,30,31,30,31> ; [SYSTEM]
33 ; This is the error code mapping table for INT 21 errors. This table defines
34 ; those error codes which are "allowed" for each system call. If the error
35 ; code ABOUT to be returned is not "allowed" for the call, the correct action
36 ; is to return the "real" error via Extended error, and one of the allowed
37 ; errors on the actual call.
39 ; The table is organized as follows:
41 ; Each entry in the table is of variable size, but the first
42 ; two bytes are always:
44 ; Call#,Cnt of bytes following this byte
51 ; 61 is the AH INT 21 call value for OPEN.
52 ; 5 indicates that there are 5 bytes after this byte (12,3,2,4,5).
53 ; Next five bytes are those error codes which are "allowed" on OPEN.
54 ; The order of these values is not important EXCEPT FOR THE LAST ONE (in
55 ; this case 5). The last value will be the one returned on the call if
56 ; the "real" error is not one of the allowed ones.
58 ; There are a number of calls (for instance all of the FCB calls) for which
59 ; there is NO entry. This means that NO error codes are returned on this
60 ; call, so set up an Extended error and leave the current error code alone.
62 ; The table is terminated by a call value of 0FFh
65 I21_MAP_E_TAB
LABEL BYTE
66 DB International
,2,error_invalid_function
,error_file_not_found
67 DB MKDir
,3,error_path_not_found
,error_file_not_found
,error_access_denied
68 DB RMDir
,4,error_current_directory
,error_path_not_found
69 DB error_file_not_found
,error_access_denied
70 DB CHDir
,2,error_file_not_found
,error_path_not_found
71 DB Creat
,4,error_path_not_found
,error_file_not_found
72 DB error_too_many_open_files
73 DB error_access_denied
74 DB Open
,6,error_path_not_found
,error_file_not_found
,error_invalid_access
75 DB error_too_many_open_files
76 DB error_not_dos_disk
,error_access_denied
77 DB Close
,1,error_invalid_handle
78 DB Read
,2,error_invalid_handle
,error_access_denied
79 DB Write
,2,error_invalid_handle
,error_access_denied
80 DB Unlink
,3,error_path_not_found
,error_file_not_found
,error_access_denied
81 DB LSeek
,2,error_invalid_handle
,error_invalid_function
82 DB CHMod
,4,error_path_not_found
,error_file_not_found
,error_invalid_function
83 DB error_access_denied
84 DB IOCtl
,5,error_invalid_drive
,error_invalid_data
,error_invalid_function
85 DB error_invalid_handle
,error_access_denied
86 DB XDup
,2,error_invalid_handle
,error_too_many_open_files
87 DB XDup2
,2,error_invalid_handle
,error_too_many_open_files
88 DB Current_Dir
,2,error_not_DOS_disk
,error_invalid_drive
89 DB Alloc
,2,error_arena_trashed
,error_not_enough_memory
90 DB Dealloc
,2,error_arena_trashed
,error_invalid_block
91 DB Setblock
,3,error_arena_trashed
,error_invalid_block
,error_not_enough_memory
92 DB Exec
,8,error_path_not_found
,error_invalid_function
,error_file_not_found
93 DB error_too_many_open_files
,error_bad_format
,error_bad_environment
94 DB error_not_enough_memory
,error_access_denied
95 DB Find_First
,3,error_path_not_found
,error_file_not_found
,error_no_more_files
96 DB Find_Next
,1,error_no_more_files
97 DB Rename
,5,error_not_same_device
,error_path_not_found
,error_file_not_found
98 DB error_current_directory
,error_access_denied
99 DB File_Times
,4,error_invalid_handle
,error_not_enough_memory
100 DB error_invalid_data
,error_invalid_function
101 DB AllocOper
,1,error_invalid_function
102 DB CreateTempFile
,4,error_path_not_found
,error_file_not_found
103 DB error_too_many_open_files
,error_access_denied
104 DB CreateNewFile
,5,error_file_exists
,error_path_not_found
105 DB error_file_not_found
,error_too_many_open_files
,error_access_denied
106 DB LockOper
,4,error_invalid_handle
,error_invalid_function
107 DB error_sharing_buffer_exceeded
,error_lock_violation
108 DB GetExtCntry
,2,error_invalid_function
,error_file_not_found
;DOS 3.3
109 DB GetSetCdPg
,2,error_invalid_function
,error_file_not_found
;DOS 3.3
110 DB Commit
,1,error_invalid_handle
;DOS 3.3
111 DB ExtHandle
,3,error_too_many_open_files
,error_not_enough_memory
112 DB error_invalid_function
114 DB error_path_not_found
,error_file_not_found
,error_invalid_access
115 DB error_too_many_open_files
,error_file_exists
,error_not_enough_memory
116 DB error_not_dos_disk
,error_invalid_data
117 DB error_invalid_function
,error_access_denied
118 DB GetSetMediaID
,4,error_invalid_drive
,error_invalid_data
119 DB error_invalid_function
,error_access_denied
123 ; The following table defines CLASS ACTION and LOCUS info for the INT 21H
124 ; errors. Each entry is 4 bytes long:
126 ; Err#,Class,Action,Locus
128 ; A value of 0FFh indicates a call specific value (ie. should already
129 ; be set). AN ERROR CODE NOT IN THE TABLE FALLS THROUGH TO THE CATCH ALL AT
130 ; THE END, IT IS ASSUMES THAT CLASS, ACTION, LOCUS IS ALREADY SET.
131 ErrTab
Macro err,class
,action
,locus
133 DB error_
&err,errCLASS_
&class
,errACT_
&action
,0FFh
135 DB error_
&err,errCLASS_
&class
,errACT_
&action
,errLOC_
&locus
140 ERR_TABLE_21
LABEL BYTE
141 ErrTab invalid_function
, Apperr
, Abort
, 0FFh
142 ErrTab file_not_found
, NotFnd
, User
, Disk
143 ErrTab path_not_found
, NotFnd
, User
, Disk
144 ErrTab too_many_open_files
, OutRes
, Abort
, Unk
145 ErrTab access_denied
, Auth
, User
, 0FFh
146 ErrTab invalid_handle
, Apperr
, Abort
, Unk
147 ErrTab arena_trashed
, Apperr
, Panic
, Mem
148 ErrTab not_enough_memory
, OutRes
, Abort
, Mem
149 ErrTab invalid_block
, Apperr
, Abort
, Mem
150 ErrTab bad_environment
, Apperr
, Abort
, Mem
151 ErrTab bad_format
, BadFmt
, User
, Unk
152 ErrTab invalid_access
, Apperr
, Abort
, Unk
153 ErrTab invalid_data
, BadFmt
, Abort
, Unk
154 ErrTab invalid_drive
, NotFnd
, User
, Disk
155 ErrTab current_directory
, Auth
, User
, Disk
156 ErrTab not_same_device
, Unk
, User
, Disk
157 ErrTab no_more_files
, NotFnd
, User
, Disk
158 ErrTab file_exists
, Already
, User
, Disk
159 ErrTab sharing_violation
, Locked
, DlyRet
, Disk
160 ErrTab lock_violation
, Locked
, DlyRet
, Disk
161 ErrTab out_of_structures
, OutRes
, Abort
, 0FFh
162 ErrTab invalid_password
, Auth
, User
, Unk
163 ErrTab cannot_make
, OutRes
, Abort
, Disk
164 ErrTab Not_supported
, BadFmt
, User
, Net
165 ErrTab Already_assigned
, Already
, User
, Net
166 ErrTab Invalid_Parameter
, BadFmt
, User
, Unk
167 ErrTab FAIL_I24
, Unk
, Abort
, Unk
168 ErrTab Sharing_buffer_exceeded
,OutRes
, Abort
, Mem
169 ErrTab Handle_EOF
, OutRes
, Abort
, Unk
;AN000;
170 ErrTab Handle_DISK_FULL
, OutRes
, Abort
, Unk
;AN000;
171 ErrTab sys_comp_not_loaded
, Unk
, Abort
, Disk
;AN001;
172 DB 0FFh, 0FFH, 0FFH, 0FFh
175 ; The following table defines CLASS ACTION and LOCUS info for the INT 24H
176 ; errors. Each entry is 4 bytes long:
178 ; Err#,Class,Action,Locus
180 ; A Locus value of 0FFh indicates a call specific value (ie. should already
181 ; be set). AN ERROR CODE NOT IN THE TABLE FALLS THROUGH TO THE CATCH ALL AT
185 ERR_TABLE_24
LABEL BYTE
186 ErrTab write_protect
, Media
, IntRet
, Disk
187 ErrTab bad_unit
, Intrn
, Panic
, Unk
188 ErrTab not_ready
, HrdFail
, IntRet
, 0FFh
189 ErrTab bad_command
, Intrn
, Panic
, Unk
190 ErrTab CRC
, Media
, Abort
, Disk
191 ErrTab bad_length
, Intrn
, Panic
, Unk
192 ErrTab Seek
, HrdFail
, Retry
, Disk
193 ErrTab not_DOS_disk
, Media
, IntRet
, Disk
194 ErrTab sector_not_found
, Media
, Abort
, Disk
195 ErrTab out_of_paper
, TempSit
, IntRet
, SerDev
196 ErrTab write_fault
, HrdFail
, Abort
, 0FFh
197 ErrTab read_fault
, HrdFail
, Abort
, 0FFh
198 ErrTab gen_failure
, Unk
, Abort
, 0FFh
199 ErrTab sharing_violation
, Locked
, DlyRet
, Disk
200 ErrTab lock_violation
, Locked
, DlyRet
, Disk
201 ErrTab wrong_disk
, Media
, IntRet
, Disk
202 ErrTab not_supported
, BadFmt
, User
, Net
203 ErrTab FCB_unavailable
, Apperr
, Abort
, Unk
204 ErrTab Sharing_buffer_exceeded
,OutRes
, Abort
, Mem
205 DB 0FFh, errCLASS_Unk
, errACT_Panic
, 0FFh
208 ; We need to map old int 24 errors and device driver errors into the new set
209 ; of errors. The following table is indexed by the new errors
213 DB error_write_protect
; 0
214 DB error_bad_unit
; 1
215 DB error_not_ready
; 2
216 DB error_bad_command
; 3
218 DB error_bad_length
; 5
220 DB error_not_DOS_disk
; 7
221 DB error_sector_not_found
; 8
222 DB error_out_of_paper
; 9
223 DB error_write_fault
; A
224 DB error_read_fault
; B
225 DB error_gen_failure
; C
226 DB error_gen_failure
; D RESERVED
227 DB error_gen_failure
; E RESERVED
228 DB error_wrong_disk
; F
231 ErrMap24End
LABEL BYTE
234 PUBLIC DISPATCH
,MAXCALL
,MAXCOM
241 short_addr $ABORT
; 0 0
242 short_addr $STD_CON_INPUT
; 1 1
243 short_addr $STD_CON_OUTPUT
; 2 2
244 short_addr $STD_AUX_INPUT
; 3 3
245 short_addr $STD_AUX_OUTPUT
; 4 4
246 short_addr $STD_PRINTER_OUTPUT
; 5 5
247 short_addr $RAW_CON_IO
; 6 6
248 short_addr $RAW_CON_INPUT
; 7 7
249 short_addr $STD_CON_INPUT_NO_ECHO
; 8 8
250 short_addr $STD_CON_STRING_OUTPUT
; 9 9
251 short_addr $STD_CON_STRING_INPUT
; 10 A
252 short_addr $STD_CON_INPUT_STATUS
; 11 B
253 short_addr $STD_CON_INPUT_FLUSH
; 12 C
254 short_addr $DISK_RESET
; 13 D
255 short_addr $SET_DEFAULT_DRIVE
; 14 E
256 short_addr $FCB_OPEN
; 15 F
257 short_addr $FCB_CLOSE
; 16 10
258 short_addr $DIR_SEARCH_FIRST
; 17 11
259 short_addr $DIR_SEARCH_NEXT
; 18 12
260 short_addr $FCB_DELETE
; 19 13
261 short_addr $FCB_SEQ_READ
; 20 14
262 short_addr $FCB_SEQ_WRITE
; 21 15
263 short_addr $FCB_CREATE
; 22 16
264 short_addr $FCB_RENAME
; 23 17
265 short_addr CPMFUNC
; 24 18
266 short_addr $GET_DEFAULT_DRIVE
; 25 19
267 short_addr $SET_DMA
; 26 1A
269 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
270 ; C A V E A T P R O G R A M M E R ;
272 short_addr $SLEAZEFUNC
; 27 1B
273 short_addr $SLEAZEFUNCDL
; 28 1C
275 ; C A V E A T P R O G R A M M E R ;
276 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
278 short_addr CPMFUNC
; 29 1D
279 short_addr CPMFUNC
; 30 1E
280 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
281 ; C A V E A T P R O G R A M M E R ;
283 short_addr $GET_DEFAULT_DPB
; 31 1F
285 ; C A V E A T P R O G R A M M E R ;
286 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
287 short_addr CPMFUNC
; 32 20
288 short_addr $FCB_RANDOM_READ
; 33 21
289 short_addr $FCB_RANDOM_WRITE
; 34 22
290 short_addr $GET_FCB_FILE_LENGTH
; 35 23
291 short_addr $GET_FCB_POSITION
; 36 24
292 VAL1
= ($-DISPATCH
)/2 - 1
295 short_addr $SET_INTERRUPT_VECTOR
; 37 25
296 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
297 ; C A V E A T P R O G R A M M E R ;
299 short_addr $CREATE_PROCESS_DATA_BLOCK
; 38 26
301 ; C A V E A T P R O G R A M M E R ;
302 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
303 short_addr $FCB_RANDOM_READ_BLOCK
; 39 27
304 short_addr $FCB_RANDOM_WRITE_BLOCK
; 40 28
305 short_addr $PARSE_FILE_DESCRIPTOR
; 41 29
306 short_addr $GET_DATE
; 42 2A
307 short_addr $SET_DATE
; 43 2B
308 short_addr $GET_TIME
; 44 2C
309 short_addr $SET_TIME
; 45 2D
310 short_addr $SET_VERIFY_ON_WRITE
; 46 2E
312 ; Extended functionality group
313 short_addr $GET_DMA
; 47 2F
314 short_addr $GET_VERSION
; 48 30
315 short_addr $Keep_Process
; 49 31
316 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
317 ; C A V E A T P R O G R A M M E R ;
319 short_addr $GET_DPB
; 50 32
321 ; C A V E A T P R O G R A M M E R ;
322 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
323 short_addr $SET_CTRL_C_TRAPPING
; 51 33
324 short_addr $GET_INDOS_FLAG
; 52 34
325 short_addr $GET_INTERRUPT_VECTOR
; 53 35
326 short_addr $GET_DRIVE_FREESPACE
; 54 36
327 short_addr $CHAR_OPER
; 55 37
328 short_addr $INTERNATIONAL
; 56 38
331 short_addr $MKDIR
; 57 39
332 short_addr $RMDIR
; 58 3A
333 short_addr $CHDIR
; 59 3B
335 short_addr $CREAT
; 60 3C
336 short_addr $OPEN
; 61 3D
337 short_addr $CLOSE
; 62 3E
338 short_addr $READ
; 63 3F
339 short_addr $WRITE
; 64 40
340 short_addr $UNLINK
; 65 41
341 short_addr $LSEEK
; 66 42
342 short_addr $CHMOD
; 67 43
343 short_addr $IOCTL
; 68 44
344 short_addr $
DUP ; 69 45
345 short_addr $DUP2
; 70 46
346 short_addr $CURRENT_DIR
; 71 47
348 short_addr $ALLOC
; 72 48
349 short_addr $DEALLOC
; 73 49
350 short_addr $SETBLOCK
; 74 4A
352 short_addr $EXEC
; 75 4B
353 short_addr $EXIT
; 76 4C
354 short_addr $
WAIT ; 77 4D
355 short_addr $FIND_FIRST
; 78 4E
357 short_addr $FIND_NEXT
; 79 4F
358 ; SPECIAL SYSTEM GROUP
359 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
360 ; C A V E A T P R O G R A M M E R ;
362 short_addr $SET_CURRENT_PDB
; 80 50
363 short_addr $GET_CURRENT_PDB
; 81 51
364 short_addr $GET_IN_VARS
; 82 52
365 short_addr $SETDPB
; 83 53
367 ; C A V E A T P R O G R A M M E R ;
368 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
369 short_addr $GET_VERIFY_ON_WRITE
; 84 54
370 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
371 ; C A V E A T P R O G R A M M E R ;
373 short_addr $DUP_PDB
; 85 55
375 ; C A V E A T P R O G R A M M E R ;
376 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
377 short_addr $RENAME
; 86 56
378 short_addr $FILE_TIMES
; 87 57
379 short_addr $AllocOper
; 88 58
380 ; Network extention system calls
381 short_addr $GetExtendedError
; 89 59
382 short_addr $CreateTempFile
; 90 5A
383 short_addr $CreateNewFile
; 91 5B
384 short_addr $LockOper
; 92 5C
385 short_addr $ServerCall
; 93 5D
386 short_addr $UserOper
; 94 5E
387 short_addr $AssignOper
; 95 5F
388 short_addr $NameTrans
; 96 60
389 short_addr CPMFunc
; 97 61
390 short_addr $Get_Current_PDB
; 98 62
391 ; the next call is reserved for hangool sys call
392 short_addr $ECS_Call
; 99 63
393 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
394 ; C A V E A T P R O G R A M M E R ;
396 short_addr $Set_Printer_Flag
; 100 64
398 ; C A V E A T P R O G R A M M E R ;
399 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
400 short_addr $GetExtCntry
; 101 65
401 short_addr $GetSetCdPg
; 102 66
402 short_addr $ExtHandle
; 103 67
403 short_addr $Commit
; 104 68
404 short_addr $GSetMediaID
; 105 69 ;AN000;
405 short_addr $Commit
; 106 6A ;AN000;
406 short_addr $IFS_IOCTL
; 107 6B ;AN000;
407 short_addr $Extended_Open
; 108 6C ;AN000;
409 VAL2
= ($-DISPATCH
)/2 - 1
417 DTab
DW OFFSET DOSGroup
:DOSTable
421 DB (DOSTableEnd
-DOSTable
-1)/2
422 Short_addr DOSInstall
; 0 install check
423 Short_addr DOS_CLOSE
; 1 DOS_CLOSE
424 Short_addr RECSET
; 2 RECSET
425 Short_addr DOSGetGroup
; 3 Get DOSGROUP
426 Short_addr PATHCHRCMP
; 4 PATHCHRCMP
427 Short_addr OUTT
; 5 OUT
428 Short_addr NET_I24_ENTRY
; 6 NET_I24_ENTRY
429 Short_addr PLACEBUF
; 7 PLACEBUF
430 Short_addr FREE_SFT
; 8 FREE_SFT
431 Short_addr BUFWRITE
; 9 BUFWRITE
432 Short_addr SHARE_VIOLATION
; 10 SHARE_VIOLATION
433 Short_addr SHARE_ERROR
; 11 SHARE_ERROR
434 Short_addr SET_SFT_MODE
; 12 SET_SFT_MODE
435 Short_addr DATE16
; 13 DATE16
436 Short_addr idle
; 14 empty slot
437 Short_addr SCANPLACE
; 15 SCANPLACE
438 Short_addr idle
; 16 empty slot
439 Short_addr StrCpy
; 17 StrCpy
440 Short_addr StrLen
; 18 StrLen
441 Short_addr Ucase
; 19 Ucase
442 Short_addr POINTCOMP
; 20 POINTCOMP
443 Short_addr CHECKFLUSH
; 21 CHECKFLUSH
444 Short_addr SFFromSFN
; 22 SFFromSFN
445 Short_addr GetCDSFromDrv
; 23 GetCDSFromDrv
446 Short_addr Get_User_Stack
; 24 Get_User_Stack
447 Short_addr GetThisDrv
; 25 GetThisDrv
448 Short_addr DriveFromText
; 26 DriveFromText
449 Short_addr SETYEAR
; 27 SETYEAR
450 Short_addr DSUM
; 28 DSUM
451 Short_addr DSLIDE
; 29 DSLIDE
452 Short_addr StrCmp
; 30 StrCmp
453 Short_addr InitCDS
; 31 initcds
454 Short_addr pJFNFromHandle
; 32 pJfnFromHandle
455 Short_addr $NameTrans
; 33 $NameTrans
456 Short_addr CAL_LK
; 34 CAL_LK
457 Short_addr DEVNAME
; 35 DEVNAME
458 Short_addr Idle
; 36 Idle
459 Short_addr DStrLen
; 37 DStrLen
460 Short_addr NLS_OPEN
; 38 NLS_OPEN DOS 3.3
461 Short_addr $CLOSE
; 39 $CLOSE DOS 3.3
462 Short_addr NLS_LSEEK
; 40 NLS_LSEEK DOS 3.3
463 Short_addr $READ
; 41 $READ DOS 3.3
464 Short_addr FastInit
; 42 FastInit DOS 3.4 ;AN000;
465 Short_addr NLS_IOCTL
; 43 NLS_IOCTL DOS 3.3
466 Short_addr GetDevList
; 44 GetDevList DOS 3.3
467 Short_addr NLS_GETEXT
; 45 NLS_GETEXT DOS 3.3
468 Short_addr MSG_RETRIEVAL
; 46 MSG_RETRIEVAL DOS 4.0 ;AN000;
469 Short_addr Fake_Version
; 47 Fake_Version DOS 4.0 ;AN006;
471 DOSTableEnd
LABEL BYTE
475 ; NOTE WARNING: This declaration of HEADER must be THE LAST thing in this
476 ; module. The reason is so that the data alignments are the same in
477 ; IBM-DOS and MS-DOS up through header.
478 ;---------------------------------------Start of Korean support 2/11/KK
480 ; The varialbes for ECS version are moved here for the same data alignments
481 ; as IBM-DOS and MS-DOS.
484 I_AM InterChar
, byte ; Interim character flag ( 1= interim) ;AN000;
486 ;------- NOTE: NEXT TWO BYTES SOMETIMES USED AS A WORD !! ---------------------
487 DUMMY
LABEL WORD ;AN000;
488 PUBLIC InterCon
; Console in Interim mode ( 1= interim) ;AN000;
489 InterCon db 0 ;AN000;
490 PUBLIC SaveCurFlg
; Print, do not advance cursor flag ;AN000;
491 SaveCurFlg db 0 ;AN000;
492 ;-----------------------------------------End of Korean support 2/11/KK
498 DB 13,10,"Debugging DOS version "
499 DB MAJOR_VERSION
+ "0"
501 DB (MINOR_VERSION
/ 10) + "0"
502 DB (MINOR_VERSION
MOD 10) + "0"
506 DB 13,10,"MS-DOS version "
507 DB MAJOR_VERSION
+ "0"
509 DB (MINOR_VERSION
/ 10) + "0"
510 DB (MINOR_VERSION
MOD 10) + "0"
516 DB 13,10, "Copyright 1981,82,83,84,88 Microsoft Corp.",13,10,"$"
525 include copyrigh
.inc ;AN000;
527 ; SYS init extended table, DOS 3.3 F.C. 5/29/86
530 I_need COUNTRY_CDPG
,BYTE
531 I_need SYSINITVAR
,BYTE
533 SysInitTable
label byte
534 dw OFFSET DOSGROUP
:SYSINITVAR
; pointer to sysinit var
536 dw OFFSET DOSGROUP
:COUNTRY_CDPG
; pointer to country table
537 dw 0 ; segment of pointer
538 ; DOS 3.3 F.C. 6/12/86
540 ; FASTOPEN communications area DOS 3.3 F.C. 5/29/86
543 PUBLIC FastTable
; a better name
544 EXTRN FastRet
:FAR ; defined in misc2.asm
546 FastTable
label byte ; a better name
547 FastOpenTable
label byte
548 dw 2 ; number of entries
549 dw OFFSET DOSGROUP
:FastRet
; pointer to ret instr.
550 dw 0 ; and will be modified by
551 dw OFFSET DOSGROUP
:FastRet
; FASTxxx when loaded in
553 ; DOS 3.3 F.C. 6/12/86
554 PUBLIC FastFlg
;AN000; flags
555 FastFlg
label byte ;AN000; don't change the following order
556 I_am FastOpenFlg
,BYTE,<0> ;AN000;
557 I_am FastSeekFlg
,BYTE,<0> ;AN000;
559 PUBLIC FastOpen_Ext_Info
561 ; FastOpen_Ext_Info is used as a temporary storage for saving dirpos,dirsec
562 ; and clusnum which are filled by DOS 3.3 when calling FastOpen Insert
563 ; or filled by FastOPen when calling FastOpen Lookup
565 FastOpen_Ext_Info
label byte
566 db SIZE FASTOPEN_EXTENDED_INFO
dup(0) ;dirpos
568 ; Dir_Info_Buff is a dir entry buffer which is filled by FastOPen
569 ; when calling FastOpen Lookup
573 Dir_Info_Buff
label byte
574 db SIZE dir_entry
dup (0)
577 I_am Next_Element_Start
,WORD ; save next element start offset
579 ; Following 4 variables moved to MSDATA.asm (P4986)
580 ; I_am FSeek_drive,BYTE ;AN000; fastseek drive #
581 ; I_am FSeek_firclus,WORD ;AN000; fastseek first cluster #
582 ; I_am FSeek_logclus,WORD ;AN000; fastseek logical cluster #
583 ; I_am FSeek_logsave,WORD ;AN000; fastseek returned log clus #
585 ; The following is a stack and its pointer for interrupt 2F which is uesd
586 ; by NLSFUNC. There is no significant use of this stack, we are just trying
587 ; not to destroy the INT 21 stack saved for the user.
592 USER_SP_2F
LABEL WORD
593 dw OFFSET DOSGROUP
:FAKE_STACK_2F
596 Packet_Temp
label word ; temporary packet used by readtime
597 PUBLIC DOS_TEMP
; temporary word
599 FAKE_STACK_2F dw 14 dup (0) ; 12 register temporary storage
601 PUBLIC Hash_Temp
;AN000; temporary word
602 Hash_Temp
label word ;AN000;
603 dw 4 dup (0) ;AN000; temporary hash table during config.sys
605 PUBLIC SCAN_FLAG
; flag to indicate key ALT_Q
608 ;;; The following 2 words must be adjacent for IBMDOS reasons
611 DATE_FLAG
label word ; flag to
612 dw 0 ; to update the date
613 ;;;; special tag for IBMDOS
615 FETCHI_TAG
label word ; TAG to make DOS 3.3 work
617 ;;; The above 2 words must be adjacent for IBMDOS reasons
618 ; DOS 3.3 F.C. 6/12/86
619 I_am Del_ExtCluster
,WORD ; for dos_delete ;AN000;
621 PUBLIC MSG_EXTERROR
; for system message addr ;AN000;
622 MSG_EXTERROR
label DWORD ;AN000;
623 dd 0 ; for extended error ;AN000;
624 dd 0 ; for parser ;AN000;
625 dd 0 ; for critical errror ;AN000;
626 dd 0 ; for IFS ;AN000;
627 dd 0 ; for code reduction ;AN000;
629 PUBLIC SEQ_SECTOR
; last sector read ;AN000;
630 SEQ_SECTOR
label DWORD ;AN000;
633 I_am XA_CONDITION
,BYTE,<0> ; for Extended Attributes ;AN000;
634 ; I_am XA_ES,WORD ; for extended find ;AN000;
635 ; I_am XA_BP,WORD ; for extended find ;AN000;
636 ; I_am XA_handle,WORD ; for get/set EA ;AN000;
637 I_am XA_type
,BYTE ; for get/set EA ;AN000;
638 ; I_am XA_device,BYTE ; for get/set EA ;AN000;
639 I_am XA_from
,BYTE ; for get/set EA ;AN000;
640 ; I_am XA_VAR,WORD ; for get/set EA ;AN000;
641 ; I_am XA_TEMP,WORD ; for get/set EA ;AN000;
642 ; I_am XA_TEMP2,WORD ; for get/set EA ;AN000;
645 ; I_am MAX_EA_SIZE,WORD,<29> ; max EA list size ;AN000;
646 ; I_am MAX_EANAME_SIZE,WORD,<20> ; max EA name list size ;AN000;
647 ; I_am XA_COUNT,WORD,<2> ; number of EA entries ;AN000;
650 ; PUBLIC XA_TABLE ; for get/set EA ;AN000;
652 ;XA_TABLE label byte ;AN000;
653 ; db EAISBINARY ;Code Page ;AN000;
654 ; dw EASYSTEM ;AN000;
659 ; db EAISBINARY ;File Type ;AN000;
660 ; dw EASYSTEM ;AN000;
663 ; db 'FILETYPE' ;AN000;
666 ; PUBLIC XA_PACKET ;AN000;
667 ;XA_PACKET label byte ;AN000;
670 ; db 18 dup(0) ;AN000;
671 ; PUBLIC DBCS_PACKET ;AN000;
672 ;DBCS_PACKET label byte ;AN000;
675 ; dw 2, 0 ; get/set device code page ;AN000;
677 I_am CurHashEntry
,DWORD ; current hash buffer entry ;AN000;
678 ;; I_am ACT_PAGE,WORD,<-1> ;BL ; active EMS page ;AN000;
679 I_am SC_SECTOR_SIZE
,WORD ; sector size for SC ;AN000;
680 I_am SC_DRIVE
,BYTE ; drive # for secondary cache ;AN000;
681 I_am CurSC_DRIVE
,BYTE,<-1> ; current SC drive ;AN000;
682 I_am CurSC_SECTOR
,DWORD ; current SC starting sector ;AN000;
683 I_am SC_STATUS
,WORD,<0> ; SC status word ;AN000;
684 I_am SC_FLAG
,BYTE,<0> ; SC flag ;AN000;
685 I_am IFS_DRIVER_ERR
,WORD,<0> ; driver error for IFS ;AN000;
687 PUBLIC NO_NAME_ID
;AN000;
688 NO_NAME_ID
label byte ;AN000;
689 db 'NO NAME ' ; null media id ;AN000;
691 PUBLIC SWAP_AREA_TABLE
;AN000;
692 SWAP_AREA_TABLE
label byte ;AN000;
693 I_am NUM_SWAP_AREA
,WORD,<2> ; number of swap areas ;AN000;
694 I_am SWAP_IN_DOS
,DWORD ; swap in dos area ;AN000;
695 I_am SWAP_IN_DOS_LEN
,WORD ; swap in dos area length ;AN000;
696 I_am SWAP_ALWAYS_AREA
,DWORD ; swap always area ;AN000;
697 I_am SWAP_ALWAYS_AREA_LEN
,WORD ; swap always area length ;AN000;
698 I_am IFSFUNC_SWAP_IN_DOS
,DWORD ; ifsfunc swap in dos area ;AN000;
699 I_am IFSFUNC_SWAP_IN_DOS_LEN
,WORD ; ifsfunc swap in dos area length ;AN000;
701 I_am SWAP_AREA_LEN
,WORD ; swap area length ;AN000;
702 I_am FIRST_BUFF_ADDR
,WORD ; first buffer address ;AN000;
703 I_am SPECIAL_VERSION
,WORD,<0> ;AN006; used by INT 2F 47H
704 I_am FAKE_COUNT
,<255> ;AN008; fake version count
705 I_am OLD_FIRSTCLUS
,WORD ;AN011; save old first cluster for fastopen