summaryrefslogtreecommitdiff
path: root/v4.0/src/DOS/MS_TABLE.ASM
diff options
context:
space:
mode:
authorGravatar Mark Zbikowski2024-04-25 21:24:10 +0100
committerGravatar Microsoft Open Source2024-04-25 22:32:27 +0000
commit2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch)
tree80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/DOS/MS_TABLE.ASM
parentMerge pull request #430 from jpbaltazar/typoptbr (diff)
downloadms-dos-main.tar.gz
ms-dos-main.tar.xz
ms-dos-main.zip
MZ is back!HEADmain
Diffstat (limited to 'v4.0/src/DOS/MS_TABLE.ASM')
-rw-r--r--v4.0/src/DOS/MS_TABLE.ASM710
1 files changed, 710 insertions, 0 deletions
diff --git a/v4.0/src/DOS/MS_TABLE.ASM b/v4.0/src/DOS/MS_TABLE.ASM
new file mode 100644
index 0000000..b5ffac7
--- /dev/null
+++ b/v4.0/src/DOS/MS_TABLE.ASM
@@ -0,0 +1,710 @@
1; SCCSID = @(#)mstable.asm 1.3 85/07/25
2; Revision history:
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
7.xlist
8.xcref
9include dosseg.asm
10include EA.inc ;AN000;; for Extended Attributes
11include fastopen.inc ;AN000;; for Extended Attributes
12include dossym.inc
13.cref
14.list
15
16 AsmVars <Kanji, Debug, Redirector, ShareF>
17
18TABLE SEGMENT BYTE PUBLIC 'TABLE'
19TableZero LABEL BYTE
20
21 PUBLIC MSVERS
22PUBLIC MSTAB001s,MSTAB001e
23MSTAB001S label byte
24
25MSVERS EQU THIS WORD ; MS-DOS version in hex for $GET_VERSION
26MSMAJOR DB MAJOR_VERSION
27MSMINOR DB MINOR_VERSION
28
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]
31
32;
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.
38;
39; The table is organized as follows:
40;
41; Each entry in the table is of variable size, but the first
42; two bytes are always:
43;
44; Call#,Cnt of bytes following this byte
45;
46; EXAMPLE:
47; Call 61 (OPEN)
48;
49; DB 61,5,12,3,2,4,5
50;
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.
57;
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.
61;
62; The table is terminated by a call value of 0FFh
63
64PUBLIC I21_MAP_E_TAB
65I21_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
113 DB ExtOpen,10
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
120 DB 0FFh
121
122;
123; The following table defines CLASS ACTION and LOCUS info for the INT 21H
124; errors. Each entry is 4 bytes long:
125;
126; Err#,Class,Action,Locus
127;
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.
131ErrTab Macro err,class,action,locus
132ifidn <locus>,<0FFh>
133 DB error_&err,errCLASS_&class,errACT_&action,0FFh
134ELSE
135 DB error_&err,errCLASS_&class,errACT_&action,errLOC_&locus
136ENDIF
137ENDM
138
139PUBLIC ERR_TABLE_21
140ERR_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
173
174;
175; The following table defines CLASS ACTION and LOCUS info for the INT 24H
176; errors. Each entry is 4 bytes long:
177;
178; Err#,Class,Action,Locus
179;
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
182; THE END.
183
184PUBLIC ERR_TABLE_24
185ERR_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
206
207;
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
210;
211Public ErrMap24
212ErrMap24 Label BYTE
213 DB error_write_protect ; 0
214 DB error_bad_unit ; 1
215 DB error_not_ready ; 2
216 DB error_bad_command ; 3
217 DB error_CRC ; 4
218 DB error_bad_length ; 5
219 DB error_Seek ; 6
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
229
230Public ErrMap24End
231ErrMap24End LABEL BYTE
232
233
234 PUBLIC DISPATCH,MAXCALL,MAXCOM
235
236MAXCALL DB VAL1
237MAXCOM DB VAL2
238
239; Standard Functions
240DISPATCH LABEL WORD
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
268
269;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
270; C A V E A T P R O G R A M M E R ;
271; ;
272 short_addr $SLEAZEFUNC ; 27 1B
273 short_addr $SLEAZEFUNCDL ; 28 1C
274; ;
275; C A V E A T P R O G R A M M E R ;
276;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
277
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 ;
282; ;
283 short_addr $GET_DEFAULT_DPB ; 31 1F
284; ;
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
292VAL1 = ($-DISPATCH)/2 - 1
293
294; Extended Functions
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 ;
298; ;
299 short_addr $CREATE_PROCESS_DATA_BLOCK ; 38 26
300; ;
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
311
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 ;
318; ;
319 short_addr $GET_DPB ; 50 32
320; ;
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
329; XENIX CALLS
330; Directory Group
331 short_addr $MKDIR ; 57 39
332 short_addr $RMDIR ; 58 3A
333 short_addr $CHDIR ; 59 3B
334; File Group
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
347; Memory Group
348 short_addr $ALLOC ; 72 48
349 short_addr $DEALLOC ; 73 49
350 short_addr $SETBLOCK ; 74 4A
351; Process Group
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
356; Special Group
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 ;
361; ;
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
366; ;
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 ;
372; ;
373 short_addr $DUP_PDB ; 85 55
374; ;
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 ;
395; ;
396 short_addr $Set_Printer_Flag ; 100 64
397; ;
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;
408;
409VAL2 = ($-DISPATCH)/2 - 1
410
411
412 If Installed
413
414PUBLIC FOO
415FOO LABEL WORD
416 Short_addr Leave2F
417DTab DW OFFSET DOSGroup:DOSTable
418 PUBLIC FOO,DTAB
419
420DOSTable LABEL WORD
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;
470
471DOSTableEnd LABEL BYTE
472
473 ENDIF
474
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
479;
480; The varialbes for ECS version are moved here for the same data alignments
481; as IBM-DOS and MS-DOS.
482;
483
484 I_AM InterChar, byte ; Interim character flag ( 1= interim) ;AN000;
485 ;AN000;
486;------- NOTE: NEXT TWO BYTES SOMETIMES USED AS A WORD !! ---------------------
487DUMMY LABEL WORD ;AN000;
488 PUBLIC InterCon ; Console in Interim mode ( 1= interim) ;AN000;
489InterCon db 0 ;AN000;
490 PUBLIC SaveCurFlg ; Print, do not advance cursor flag ;AN000;
491SaveCurFlg db 0 ;AN000;
492;-----------------------------------------End of Korean support 2/11/KK
493
494
495 PUBLIC HEADER
496Header LABEL BYTE
497 IF DEBUG
498 DB 13,10,"Debugging DOS version "
499 DB MAJOR_VERSION + "0"
500 DB "."
501 DB (MINOR_VERSION / 10) + "0"
502 DB (MINOR_VERSION MOD 10) + "0"
503 ENDIF
504
505 IF NOT IBM
506 DB 13,10,"MS-DOS version "
507 DB MAJOR_VERSION + "0"
508 DB "."
509 DB (MINOR_VERSION / 10) + "0"
510 DB (MINOR_VERSION MOD 10) + "0"
511
512 IF HIGHMEM
513 DB "H"
514 ENDIF
515
516 DB 13,10, "Copyright 1981,82,83,84,88 Microsoft Corp.",13,10,"$"
517 ENDIF
518
519IF DEBUG
520 DB 13,10,"$"
521ENDIF
522
523MSTAB001E label byte
524
525include copyrigh.inc ;AN000;
526
527; SYS init extended table, DOS 3.3 F.C. 5/29/86
528;
529 PUBLIC SysInitTable
530 I_need COUNTRY_CDPG,BYTE
531 I_need SYSINITVAR,BYTE
532
533SysInitTable label byte
534 dw OFFSET DOSGROUP:SYSINITVAR ; pointer to sysinit var
535 dw 0 ; segment
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
539
540; FASTOPEN communications area DOS 3.3 F.C. 5/29/86
541;
542 PUBLIC FastOpenTable
543 PUBLIC FastTable ; a better name
544 EXTRN FastRet:FAR ; defined in misc2.asm
545
546FastTable label byte ; a better name
547FastOpenTable 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
552 dw 0 ;
553; DOS 3.3 F.C. 6/12/86
554 PUBLIC FastFlg ;AN000; flags
555FastFlg label byte ;AN000; don't change the following order
556 I_am FastOpenFlg,BYTE,<0> ;AN000;
557 I_am FastSeekFlg,BYTE,<0> ;AN000;
558
559 PUBLIC FastOpen_Ext_Info
560
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
564
565FastOpen_Ext_Info label byte
566 db SIZE FASTOPEN_EXTENDED_INFO dup(0) ;dirpos
567
568; Dir_Info_Buff is a dir entry buffer which is filled by FastOPen
569; when calling FastOpen Lookup
570
571 PUBLIC Dir_Info_Buff
572
573Dir_Info_Buff label byte
574 db SIZE dir_entry dup (0)
575
576
577 I_am Next_Element_Start,WORD ; save next element start offset
578
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 #
584
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.
588
589
590 PUBLIC User_SP_2F
591
592USER_SP_2F LABEL WORD
593 dw OFFSET DOSGROUP:FAKE_STACK_2F
594
595 PUBLIC Packet_Temp
596Packet_Temp label word ; temporary packet used by readtime
597 PUBLIC DOS_TEMP ; temporary word
598DOS_TEMP label word
599FAKE_STACK_2F dw 14 dup (0) ; 12 register temporary storage
600
601 PUBLIC Hash_Temp ;AN000; temporary word
602Hash_Temp label word ;AN000;
603 dw 4 dup (0) ;AN000; temporary hash table during config.sys
604
605 PUBLIC SCAN_FLAG ; flag to indicate key ALT_Q
606SCAN_FLAG label byte
607 db 0
608;;; The following 2 words must be adjacent for IBMDOS reasons
609
610 PUBLIC DATE_FLAG
611DATE_FLAG label word ; flag to
612 dw 0 ; to update the date
613;;;; special tag for IBMDOS
614 PUBLIC FETCHI_TAG
615FETCHI_TAG label word ; TAG to make DOS 3.3 work
616 dw 0 ; must be 22642
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;
620
621 PUBLIC MSG_EXTERROR ; for system message addr ;AN000;
622MSG_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;
628
629 PUBLIC SEQ_SECTOR ; last sector read ;AN000;
630SEQ_SECTOR label DWORD ;AN000;
631 dd -1 ;AN000;
632
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;
643;
644
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;
648
649
650; PUBLIC XA_TABLE ; for get/set EA ;AN000;
651;
652;XA_TABLE label byte ;AN000;
653; db EAISBINARY ;Code Page ;AN000;
654; dw EASYSTEM ;AN000;
655; db 0,2 ;AN000;
656; dw 2 ;AN000;
657; db 'CP' ;AN000;
658;
659; db EAISBINARY ;File Type ;AN000;
660; dw EASYSTEM ;AN000;
661; db 0,8 ;AN000;
662; dw 1 ;AN000;
663; db 'FILETYPE' ;AN000;
664;
665
666; PUBLIC XA_PACKET ;AN000;
667;XA_PACKET label byte ;AN000;
668;IF DBCS ;AN000;
669; dw 18 ;AN000;
670; db 18 dup(0) ;AN000;
671; PUBLIC DBCS_PACKET ;AN000;
672;DBCS_PACKET label byte ;AN000;
673; db 5 dup(0)
674;ELSE
675; dw 2, 0 ; get/set device code page ;AN000;
676;ENDIF
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;
686
687 PUBLIC NO_NAME_ID ;AN000;
688NO_NAME_ID label byte ;AN000;
689 db 'NO NAME ' ; null media id ;AN000;
690
691 PUBLIC SWAP_AREA_TABLE ;AN000;
692SWAP_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;
700
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
706
707TABLE ENDS
708
709
710 \ No newline at end of file