10 BREAK <Control character definitions
>
12 c_DEL EQU 7Fh
; ASCII rubout or delete previous char
13 c_BS EQU
08h ; ^H ASCII backspace
14 c_CR EQU
0Dh ; ^M ASCII carriage return
15 c_LF EQU
0Ah ; ^J ASCII linefeed
16 c_ETB EQU 17h
; ^W ASCII end of transmission
17 c_NAK EQU 15h
; ^U ASCII negative acknowledge
18 c_ETX EQU
03h ; ^C ASCII end of text
19 c_HT EQU
09h ; ^I ASCII tab
21 BREAK <BPB Definition
>
24 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
26 ; C A V E A T P R O G R A M M E R ;
28 ; Certain structures, constants and system calls below are private to ;
29 ; the DOS and are extremely version-dependent. They may change at any ;
30 ; time at the implementors' whim. As a result, they must not be ;
31 ; documented to the general public. If an extreme case arises, they ;
32 ; must be documented with this warning. ;
34 ; Those structures and constants that are subject to the above will be ;
35 ; marked and bracketed with the flag: ;
37 ; C A V E A T P R O G R A M M E R ;
39 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
41 BREAK <Bios Parameter Block
>
42 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
43 ; C A V E A T P R O G R A M M E R ;
46 ; Bios Parameter Block definition
47 ; This structure is used to build a full DPB
50 BPSECSZ
DW ?
; Size in bytes of physical sector
51 BPCLUS
DB ?
; Sectors/Alloc unit
52 BPRES
DW ?
; Number of reserved sectors
53 BPFTCNT
DB ?
; Number of FATs
54 BPDRCNT
DW ?
; Number of directory entries
55 BPSCCNT
DW ?
; Total number of sectors
56 BPMEDIA
DB ?
; Media descriptor byte
57 BPFTSEC
DW ?
; Number of sectors taken up by one FAT
60 ; C A V E A T P R O G R A M M E R ;
61 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
63 BREAK <Disk I
/O Buffer Header
>
64 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
65 ; C A V E A T P R O G R A M M E R ;
68 ; Field definition for I/O buffer information
71 NEXTBUF
DD ?
; Pointer to next buffer in list
72 ; The next two items are often refed as a word
73 BUFDRV
DB ?
; Logical drive # assoc with buffer FF = free
74 BUFDIRTY
DB ?
; Dirty flag
75 BUFPRI
DB ?
; Buffer selection priority (see EQUs below)
76 VISIT
DB ?
; Visit flag for buffer pool scans
77 BUFSECNO
DW ?
; Sector number of buffer
78 ; The next two items are often refed as a word
79 BUFWRTCNT
DB ?
; For FAT sectors, # times sector written out
80 BUFWRTINC
DB ?
; " " " , # sectors between each write
81 BUFDRVDP
DD ?
; Pointer to drive parameters
84 BUFINSIZ EQU SIZE BUFFINFO
85 ; Size of structure in bytes
88 LBRPRI EQU
2 ; Last byte of buffer read
89 LBWPRI EQU
4 ; Last byte written
90 RPRI EQU
6 ; Read but not last byte
91 WPRI EQU
8 ; Written but not last byte
92 DIRPRI EQU
15 ; Directory Sector
93 FATPRI EQU
30 ; FAT sector
95 ; C A V E A T P R O G R A M M E R ;
96 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
98 BREAK <User
stack inside of system
call>
99 ; Location of user registers relative user stack pointer
116 BREAK <interrupt definitions
>
119 INTBASE EQU
4 * inttab
120 ENTRYPOINT EQU INTBASE
+40H
124 ALTBASE EQU
4 * ALTTAB
128 ; interrupt assignments
131 int_abort EQU INTTAB
; abort process
132 int_command EQU int_abort
+1 ; call MSDOS
133 int_terminate EQU int_abort
+2 ; int to terminate address
134 int_ctrl_c EQU int_abort
+3 ; ^c trapper
135 int_fatal_abort EQU int_abort
+4 ; hard disk error
136 int_disk_read EQU int_abort
+5 ; logical sector disk read
137 int_disk_write EQU int_abort
+6 ; logical sector disk write
138 int_keep_process EQU int_abort
+7 ; terminate program and stay resident
139 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
140 ; C A V E A T P R O G R A M M E R ;
142 int_spooler EQU int_abort
+8 ; spooler call
143 int_fastcon EQU int_abort
+9 ; fast CON interrupt
145 ; C A V E A T P R O G R A M M E R ;
146 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
148 int_abort EQU INTTAB
; abort process
149 int_command EQU int_abort
+1 ; call MSDOS
150 int_terminate EQU ALTTAB
; int to terminate address
151 int_ctrl_c EQU int_terminate
+1 ; ^c trapper
152 int_fatal_abort EQU int_terminate
+2 ; hard disk error
153 int_disk_read EQU int_abort
+5 ; logical sector disk read
154 int_disk_write EQU int_abort
+6 ; logical sector disk write
155 int_keep_process EQU int_abort
+7 ; terminate program and stay resident
156 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
157 ; C A V E A T P R O G R A M M E R ;
159 int_spooler EQU int_terminate
+3 ; spooler call
160 int_fastcon EQU int_abort
+9 ; fast CON interrupt
162 ; C A V E A T P R O G R A M M E R ;
163 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
166 addr_int_abort EQU
4 * int_abort
167 addr_int_command EQU
4 * int_command
168 addr_int_terminate EQU
4 * int_terminate
169 addr_int_ctrl_c EQU
4 * int_ctrl_c
170 addr_int_fatal_abort EQU
4 * int_fatal_abort
171 addr_int_disk_read EQU
4 * int_disk_read
172 addr_int_disk_write EQU
4 * int_disk_write
173 addr_int_keep_process EQU
4 * int_keep_process
174 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
175 ; C A V E A T P R O G R A M M E R ;
177 addr_int_spooler EQU
4 * int_spooler
178 addr_int_fastcon EQU
4 * int_fastcon
180 ; C A V E A T P R O G R A M M E R ;
181 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
184 ; MSDOS partitions the disk into 4 sections:
186 ; phys sector 0: +-------------------+
187 ; | | boot/reserved |
188 ; | +-------------------+
189 ; | | File allocation |
191 ; | (multiple copies |
193 ; +-------------------+
195 ; +-------------------+
197 ; +-------------------+
199 ; | (to end of disk) |
200 ; +-------------------+
202 ; All partition boundaries are sector boundaries. The size of the FAT is
203 ; adjusted to maximize the file space addressable.
205 BREAK <Directory
entry>
208 ; +---------------------------+
209 ; | (12 BYTE) filename/ext | 0 0
210 ; +---------------------------+
211 ; | (BYTE) attributes | 11 B
212 ; +---------------------------+
213 ; | (10 BYTE) reserved | 12 C
214 ; +---------------------------+
215 ; | (WORD) time of last write | 22 16
216 ; +---------------------------+
217 ; | (WORD) date of last write | 24 18
218 ; +---------------------------+
219 ; | (WORD) First cluster | 26 1A
220 ; +---------------------------+
221 ; | (DWORD) file size | 28 1C
222 ; +---------------------------+
224 ; First byte of filename = E5 -> free directory entry
225 ; = 00 -> end of allocated directory
226 ; Time: Bits 0-4=seconds/2, bits 5-10=minute, 11-15=hour
227 ; Date: Bits 0-4=day, bits 5-8=month, bits 9-15=year-1980
230 dir_name
DB 11 DUP (?
) ; file name
231 dir_attr
DB ?
; attribute bits
232 dir_pad
DB 10 DUP (?
) ; reserved for expansion
233 dir_time
DW ?
; time of last write
234 dir_date
DW ?
; date of last write
235 dir_first
DW ?
; first allocation unit of file
236 dir_size_l
DW ?
; low 16 bits of file size
237 dir_size_h
DW ?
; high 16 bits of file size
240 attr_read_only EQU 1h
243 attr_volume_id EQU 8h
244 attr_directory EQU 10h
247 attr_all EQU attr_hidden
+attr_system
+attr_directory
248 ; OR of hard attributes for FINDENTRY
250 attr_ignore EQU attr_read_only
+attr_archive
251 ; ignore this(ese) attribute(s)
252 ; during search first/next
254 attr_changeable EQU attr_read_only
+attr_hidden
+attr_system
+attr_archive
255 ; changeable via CHMOD
257 BREAK <File allocation Table information
>
259 ; The File Allocation Table uses a 12-bit entry for each allocation unit on the
260 ; disk. These entries are packed, two for every three bytes. The contents of
261 ; entry number N is found by 1) multiplying N by 1.5; 2) adding the result to
262 ; the base address of the Allocation Table; 3) fetching the 16-bit word at this
263 ; address; 4) If N was odd (so that N*1.5 was not an integer), shift the word
264 ; right four bits; 5) mask to 12 bits (AND with 0FFF hex). Entry number zero
265 ; is used as an end-of-file trap in the OS and is passed to the BIOS to help
266 ; determine disk format. Entry 1 is reserved for future use. The first
267 ; available allocation unit is assigned entry number two, and even though it is
268 ; the first, is called cluster 2. Entries greater than 0FF8H are end of file
269 ; marks; entries of zero are unallocated. Otherwise, the contents of a FAT
270 ; entry is the number of the next cluster in the file.
272 ; Clusters with bad sectors are tagged with FF7H. Any non-zero number would do
273 ; because these clusters show as allocated, but are not part of any allocation
274 ; chain and thus will never be allocated to a file. A particular number is
275 ; selected so that disk checking programs know what to do (ie. a cluster with
276 ; entry FF7H which is not in a chain is not an error).
278 BREAK <DPB structure
>
279 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
280 ; C A V E A T P R O G R A M M E R ;
283 DIRSTRLEN EQU
64 ; Max length in bytes of directory strings
286 dpb_drive
DB ?
; Logical drive # assoc with DPB (A=0,B=1,...)
287 dpb_UNIT
DB ?
; Driver unit number of DPB
288 dpb_sector_size
DW ?
; Size of physical sector in bytes
289 dpb_cluster_mask
DB ?
; Sectors/cluster - 1
290 dpb_cluster_shift
DB ?
; Log2 of sectors/cluster
291 dpb_first_FAT
DW ?
; Starting record of FATs
292 dpb_FAT_count
DB ?
; Number of FATs for this drive
293 dpb_root_entries
DW ?
; Number of directory entries
294 dpb_first_sector
DW ?
; First sector of first cluster
295 dpb_max_cluster
DW ?
; Number of clusters on drive + 1
296 dpb_FAT_size
DB ?
; Number of records occupied by FAT
297 dpb_dir_sector
DW ?
; Starting record of directory
298 dpb_driver_addr
DD ?
; Pointer to driver
299 dpb_media
DB ?
; Media byte
300 dpb_first_access
DB ?
; This is initialized to -1 to force a media
301 ; check the first time this DPB is used
302 dpb_next_dpb
DD ?
; Pointer to next Drive parameter block
303 dpb_current_dir
DW ?
; Cluster number of start of current directory
304 ; 0 indicates root, -1 indicates invalid
306 dpb_dir_text
DB DIRSTRLEN
DUP(?
)
307 ; ASCIZ string of current directory
310 DPBSIZ EQU SIZE dpb
; Size of the structure in bytes
312 DSKSIZ
= dpb_max_cluster
; Size of disk (temp used during init only)
314 ; C A V E A T P R O G R A M M E R ;
315 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
317 BREAK <File Control Block definition
>
319 ; Field definition for FCBs
320 ; The FCB has the following structure:
322 ; +---------------------------+
323 ; | Drive indicator(byte) |
324 ; +---------------------------+
325 ; | Filename (8 chars) |
326 ; +---------------------------+
327 ; | Extension (3 chars) |
328 ; +---------------------------+
329 ; | Current Extent(word) |
330 ; +---------------------------+
331 ; | Record size (word) |
332 ; +---------------------------+
333 ; | File Size (2 words) |
334 ; +---------------------------+
336 ; +---------------------------+
338 ; +---------------------------+
339 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
340 ; C A V E A T P R O G R A M M E R ;
343 ; | bit 7=0 file/1 device |
344 ; | bit 6=0 if dirty |
345 ; | bits 0-5 deviceid |
346 ; +---------------------------+
347 ; | first cluster in file |
348 ; +---------------------------+
349 ; | position of last cluster |
350 ; +---------------------------+
351 ; | last cluster accessed | 12 bit-+--- packed in 3 bytes
352 ; +---------------------------+ |
353 ; | parent directory | <------+
354 ; +---------------------------+
356 ; C A V E A T P R O G R A M M E R ;
357 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
358 ; | next record number |
359 ; +---------------------------+
360 ; | random record number |
361 ; +---------------------------+
366 fcb_name
DB 8 DUP (?
)
369 fcb_RECSIZ
DW ?
; Size of record (user settable)
370 fcb_FILSIZ
DW ?
; Size of file in bytes; used with the following
372 fcb_DRVBP
DW ?
; BP for SEARCH FIRST and SEARCH NEXT
373 fcb_FDATE
DW ?
; Date of last writing
374 fcb_FTIME
DW ?
; Time of last writing
375 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
376 ; C A V E A T P R O G R A M M E R ;
378 fcb_DEVID
DB ?
; Device ID number, bits 0-5 if file.
379 ; bit 7=0 for file, bit 7=1 for I/O device
380 ; If file, bit 6=0 if dirty
381 ; If I/O device, bit 6=0 if EOF (input)
382 ; Bit 5=1 if Raw mode
383 ; Bit 0=1 if console input device
384 ; Bit 1=1 if console output device
385 ; Bit 2=1 if null device
386 ; Bit 3=1 if clock device
387 fcb_FIRCLUS
DW ?
; First cluster of file
388 fcb_CLUSPOS
DW ?
; Position of last cluster accessed
389 fcb_LSTCLUS
DW ?
; Last cluster accessed and directory
390 DB ?
; pack 2 12 bit numbers into 24 bits...
392 ; C A V E A T P R O G R A M M E R ;
393 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
394 fcb_NR
DB ?
; Next record
395 fcb_RR
DB 4 DUP (?
) ; Random record
398 FILDIRENT
= fcb_FILSIZ
; Used only by SEARCH FIRST and
401 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
402 ; C A V E A T P R O G R A M M E R ;
404 devid_file_clean EQU 40h
; true if file and not written
405 devid_file_mask_drive EQU 3Fh
; mask for drive number
407 devid_device EQU 80h
; true if a device
408 devid_device_EOF EQU 40h
; true if end of file reached
409 devid_device_raw EQU 20h
; true if in raw mode
410 devid_device_special EQU 10h
; true if special device
411 devid_device_clock EQU
08h ; true if clock device
412 devid_device_null EQU
04h ; true if null device
413 devid_device_con_out EQU
02h ; true if console output
414 devid_device_con_in EQU
01h ; true if consle input
417 ; structure of devid field as returned by IOCTL is:
419 ; BIT 7 6 5 4 3 2 1 0
420 ; |---|---|---|---|---|---|---|---|
421 ; | I | E | R | S | I | I | I | I |
422 ; | S | O | A | P | S | S | S | S |
423 ; | D | F | W | E | C | N | C | C |
424 ; | E | | | C | L | U | O | I |
425 ; | V | | | L | K | L | T | N |
426 ; |---|---|---|---|---|---|---|---|
427 ; ISDEV = 1 if this channel is a device
428 ; = 0 if this channel is a disk file
432 ; EOF = 0 if End Of File on input
433 ; RAW = 1 if this device is in Raw mode
434 ; = 0 if this device is cooked
435 ; ISCLK = 1 if this device is the clock device
436 ; ISNUL = 1 if this device is the null device
437 ; ISCOT = 1 if this device is the console output
438 ; ISCIN = 1 if this device is the console input
441 ; EOF = 0 if channel has been written
442 ; Bits 0-5 are the block device number for
443 ; the channel (0 = A, 1 = B, ...)
448 devid_SPECIAL EQU 10H
454 devid_block_dev EQU 1Fh
; mask for block device number
457 ; find first/next buffer
460 find_buf_sattr
DB ?
; attribute of search
461 find_buf_drive
DB ?
; drive of search
462 find_buf_name
DB 11 DUP (?
) ; formatted name
463 find_buf_LastEnt
DW ?
; LastEnt
464 find_buf_ThisDPB
DD ?
; This DPB
465 find_buf_DirStart
DW ?
; DirStart
467 ; C A V E A T P R O G R A M M E R ;
468 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
470 find_buf_attr
DB ?
; attribute found
471 find_buf_time
DW ?
; time
472 find_buf_date
DW ?
; date
473 find_buf_size_l
DW ?
; low(size)
474 find_buf_size_h
DW ?
; high(size)
475 find_buf_pname
DB 13 DUP (?
) ; packed name
478 BREAK <Process
data block
>
480 ; Process data block (otherwise known as program header)
485 Process_data_block
STRUC
486 PDB_Exit_Call
DW ?
; INT int_abort system terminate
487 PDB_block_len
DW ?
; size of execution block
489 PDB_CPM_Call
DB 5 DUP (?
) ; ancient call to system
490 PDB_Exit
DD ?
; pointer to exit routine
491 PDB_Ctrl_C
DD ?
; pointer to ^C routine
492 PDB_Fatal_abort
DD ?
; pointer to fatal error
493 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
494 ; C A V E A T P R O G R A M M E R ;
496 PDB_Parent_PID
DW ?
; PID of parent (terminate PID)
497 PDB_JFN_Table
DB FilPerProc
DUP (?
)
498 ; indices into system table
500 ; C A V E A T P R O G R A M M E R ;
501 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
502 PDB_environ
DW ?
; seg addr of environment
503 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
504 ; C A V E A T P R O G R A M M E R ;
506 PDB_User_stack
DD ?
; stack of self during system calls
507 PDB_PAD1
DB 1Eh
DUP (?
)
509 ; C A V E A T P R O G R A M M E R ;
510 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
511 PDB_Call_system
DB 5 DUP (?
) ; portable method of system call
512 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
513 ; C A V E A T P R O G R A M M E R ;
515 PDB_PAD2
DB 6h
DUP (?
) ;
517 ; C A V E A T P R O G R A M M E R ;
518 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
519 Process_data_block ENDS
521 BREAK <EXEC
and EXE
file structures
>
523 ; EXEC arg block - load/go program
527 ; The following get used as arguments to the EXEC system call. They indicate
528 ; whether or not the program is executed or whether or not a program header
531 exec_func_no_execute EQU
1 ; no execute bit
532 exec_func_overlay EQU
2 ; overlay bit
535 Exec0_environ
DW ?
; seg addr of environment
536 Exec0_com_line
DD ?
; pointer to asciz command line
537 Exec0_5C_FCB
DD ?
; default fcb at 5C
538 Exec0_6C_FCB
DD ?
; default fcb at 6C
542 Exec1_environ
DW ?
; seg addr of environment
543 Exec1_com_line
DD ?
; pointer to asciz command line
544 Exec1_5C_FCB
DD ?
; default fcb at 5C
545 Exec1_6C_FCB
DD ?
; default fcb at 6C
546 Exec1_SP
DW ?
; stack pointer of program
547 Exec1_SS
DW ?
; stack seg register of program
548 Exec1_IP
DW ?
; entry point IP
549 Exec1_CS
DW ?
; entry point CS
553 Exec3_load_addr
DW ?
; seg address of load point
554 Exec3_reloc_fac
DW ?
; relocation factor
558 ; Exit codes in upper byte
563 Exit_Hard_Error EQU
2
564 Exit_Keep_process EQU
3
571 exe_signature
DW ?
; must contain 4D5A (yay zibo!)
572 exe_len_mod_512
DW ?
; low 9 bits of length
573 exe_pages
DW ?
; number of 512b pages in file
574 exe_rle_count
DW ?
; count of reloc entries
575 exe_par_dir
DW ?
; number of paragraphs before image
576 exe_min_BSS
DW ?
; minimum number of para of BSS
577 exe_max_BSS
DW ?
; max number of para of BSS
578 exe_SS
DW ?
; stack of image
579 exe_SP
DW ?
; SP of image
580 exe_chksum
DW ?
; checksum of file (ignored)
581 exe_IP
DW ?
; IP of entry
582 exe_CS
DW ?
; CS of entry
583 exe_rle_table
DW ?
; byte offset of reloc table
584 exe_iov
DW ?
; overlay number (0 for root)
585 exe_sym_tab
DD ?
; offset of symbol table in file
588 exe_valid_signature EQU 5A4Dh
589 exe_valid_old_signature EQU 4D5Ah
595 sym_name
DB 255 dup (?
)
598 BREAK <Internal system
file table
format>
599 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
600 ; C A V E A T P R O G R A M M E R ;
608 sft_count
DW ?
; number of entries
609 sft_table
DW ?
; beginning of array of the following
613 ; system file table entry
617 sf_ref_count
DB ?
; number of processes sharing fcb
618 sf_mode
DB ?
; mode of access
619 sf_attr
DB ?
; attribute of file
620 sf_fcb
DB (SIZE sys_fcb
) DUP (?
)
624 sf_default_number EQU 5h
626 ; C A V E A T P R O G R A M M E R ;
627 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
629 BREAK <Memory arena structure
>
630 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
631 ; C A V E A T P R O G R A M M E R ;
637 arena_signature
DB ?
; 4D for valid item, 5A for last item
638 arena_owner
DW ?
; owner of arena item
639 arena_size
DW ?
; size in paragraphs of item
642 arena_owner_system EQU
0 ; free block indication
644 arena_signature_normal EQU 4
Dh ; valid signature, not end of arena
645 arena_signature_end EQU 5
Ah ; valid signature, last block in arena
647 ; C A V E A T P R O G R A M M E R ;
648 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
650 BREAK <Machine instruction definitions
>
654 mi_Long_CALL EQU
09Ah
657 BREAK <Standard I
/O assignments
>
665 BREAK <Xenix subfunction assignments
>
671 BREAK <Xenix error codes
>
674 ; XENIX calls all return error codes through AX. If an error occurred then the
675 ; carry bit will be set and the error code is in AX. If no error occurred then
676 ; the carry bit is reset and AX contains returned info.
679 no_error_occurred EQU
0 ?
681 error_invalid_function EQU
1
682 error_file_not_found EQU
2
683 error_path_not_found EQU
3
684 error_too_many_open_files EQU
4
685 error_access_denied EQU
5
686 error_invalid_handle EQU
6
687 error_arena_trashed EQU
7
688 error_not_enough_memory EQU
8
689 error_invalid_block EQU
9
690 error_bad_environment EQU
10
691 error_bad_format EQU
11
692 error_invalid_access EQU
12
693 error_invalid_data EQU
13
695 error_invalid_drive EQU
15
696 error_current_directory EQU
16
697 error_not_same_device EQU
17
698 error_no_more_files EQU
18
700 alloc_not_enough_memory EQU error_not_enough_memory
701 alloc_arena_trashed EQU error_arena_trashed
703 close_invalid_handle EQU error_invalid_handle
704 close_invalid_function EQU error_invalid_function
706 chdir_path_not_found EQU error_path_not_found
708 chmod_path_not_found EQU error_path_not_found
709 chmod_access_denied EQU error_access_denied
710 chmod_invalid_function EQU error_invalid_function
712 creat_access_denied EQU error_access_denied
713 creat_path_not_found EQU error_path_not_found
714 creat_too_many_open_files EQU error_too_many_open_files
716 curdir_invalid_drive EQU error_invalid_drive
718 dealloc_invalid_block EQU error_invalid_block
719 dealloc_arena_trashed EQU error_arena_trashed
721 dup_invalid_handle EQU error_invalid_handle
722 dup_too_many_open_files EQU error_too_many_open_files
724 dup2_invalid_handle EQU error_invalid_handle
726 exec_invalid_function EQU error_invalid_function
727 exec_bad_environment EQU error_bad_environment
728 exec_bad_format EQU error_bad_format
729 exec_not_enough_memory EQU error_not_enough_memory
730 exec_file_not_found EQU error_file_not_found
732 filetimes_invalid_function EQU error_invalid_function
733 filetimes_invalid_handle EQU error_invalid_handle
735 findfirst_file_not_found EQU error_file_not_found
736 findfirst_no_more_files EQU error_no_more_files
737 findnext_no_more_files EQU error_no_more_files
739 international_invalid_function EQU error_invalid_function
741 ioctl_invalid_handle EQU error_invalid_handle
742 ioctl_invalid_function EQU error_invalid_function
743 ioctl_invalid_data EQU error_invalid_data
745 lseek_invalid_handle EQU error_invalid_handle
746 lseek_invalid_function EQU error_invalid_function
748 mkdir_path_not_found EQU error_path_not_found
749 mkdir_access_denied EQU error_access_denied
751 open_invalid_access EQU error_invalid_access
752 open_file_not_found EQU error_file_not_found
753 open_access_denied EQU error_access_denied
754 open_too_many_open_files EQU error_too_many_open_files
756 read_invalid_handle EQU error_invalid_handle
757 read_access_denied EQU error_access_denied
759 rename_file_not_found EQU error_file_not_found
760 rename_not_same_device EQU error_not_same_device
761 rename_access_denied EQU error_access_denied
763 rmdir_path_not_found EQU error_path_not_found
764 rmdir_access_denied EQU error_access_denied
765 rmdir_current_directory EQU error_current_directory
767 setblock_invalid_block EQU error_invalid_block
768 setblock_arena_trashed EQU error_arena_trashed
769 setblock_not_enough_memory EQU error_not_enough_memory
770 setblock_invalid_function EQU error_invalid_function
772 unlink_file_not_found EQU error_file_not_found
773 unlink_access_denied EQU error_access_denied
775 write_invalid_handle EQU error_invalid_handle
776 write_access_denied EQU error_access_denied
778 BREAK <system
call definitions
>
781 STD_CON_INPUT EQU
1 ; 1 1
782 STD_CON_OUTPUT EQU
2 ; 2 2
783 STD_AUX_INPUT EQU
3 ; 3 3
784 STD_AUX_OUTPUT EQU
4 ; 4 4
785 STD_PRINTER_OUTPUT EQU
5 ; 5 5
786 RAW_CON_IO EQU
6 ; 6 6
787 RAW_CON_INPUT EQU
7 ; 7 7
788 STD_CON_INPUT_NO_ECHO EQU
8 ; 8 8
789 STD_CON_STRING_OUTPUT EQU
9 ; 9 9
790 STD_CON_STRING_INPUT EQU
10 ; 10 A
791 STD_CON_INPUT_STATUS EQU
11 ; 11 B
792 STD_CON_INPUT_FLUSH EQU
12 ; 12 C
793 DISK_RESET EQU
13 ; 13 D
794 SET_DEFAULT_DRIVE EQU
14 ; 14 E
795 FCB_OPEN EQU
15 ; 15 F
796 FCB_CLOSE EQU
16 ; 16 10
797 DIR_SEARCH_FIRST EQU
17 ; 17 11
798 DIR_SEARCH_NEXT EQU
18 ; 18 12
799 FCB_DELETE EQU
19 ; 19 13
800 FCB_SEQ_READ EQU
20 ; 20 14
801 FCB_SEQ_WRITE EQU
21 ; 21 15
802 FCB_CREATE EQU
22 ; 22 16
803 FCB_RENAME EQU
23 ; 23 17
804 GET_DEFAULT_DRIVE EQU
25 ; 25 19
805 SET_DMA EQU
26 ; 26 1A
806 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
807 ; C A V E A T P R O G R A M M E R ;
809 GET_DEFAULT_DPB EQU
31 ; 31 1F
811 ; C A V E A T P R O G R A M M E R ;
812 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
813 FCB_RANDOM_READ EQU
33 ; 33 21
814 FCB_RANDOM_WRITE EQU
34 ; 34 22
815 GET_FCB_FILE_LENGTH EQU
35 ; 35 23
816 GET_FCB_POSITION EQU
36 ; 36 24
817 SET_INTERRUPT_VECTOR EQU
37 ; 37 25
818 CREATE_PROCESS_DATA_BLOCK EQU
38 ; 38 26
819 FCB_RANDOM_READ_BLOCK EQU
39 ; 39 27
820 FCB_RANDOM_WRITE_BLOCK EQU
40 ; 40 28
821 PARSE_FILE_DESCRIPTOR EQU
41 ; 41 29
822 GET_DATE EQU
42 ; 42 2A
823 SET_DATE EQU
43 ; 43 2B
824 GET_TIME EQU
44 ; 44 2C
825 SET_TIME EQU
45 ; 45 2D
826 SET_VERIFY_ON_WRITE EQU
46 ; 46 2E
827 ; Extended functionality group
828 GET_DMA EQU
47 ; 47 2F
829 GET_VERSION EQU
48 ; 48 30
830 KEEP_PROCESS EQU
49 ; 49 31
831 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
832 ; C A V E A T P R O G R A M M E R ;
834 GET_DPB EQU
50 ; 50 32
836 ; C A V E A T P R O G R A M M E R ;
837 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
838 SET_CTRL_C_TRAPPING EQU
51 ; 51 33
839 GET_INDOS_FLAG EQU
52 ; 52 34
840 GET_INTERRUPT_VECTOR EQU
53 ; 53 35
841 GET_DRIVE_FREESPACE EQU
54 ; 54 36
842 CHAR_OPER EQU
55 ; 55 37
843 INTERNATIONAL EQU
56 ; 56 38
855 UNLINK EQU
65 ; 65 41
861 CURRENT_DIR EQU
71 ; 71 47
864 DEALLOC EQU
73 ; 73 49
865 SETBLOCK EQU
74 ; 74 4A
870 FIND_FIRST EQU
78 ; 78 4E
872 FIND_NEXT EQU
79 ; 79 4F
873 ; SPECIAL SYSTEM GROUP
874 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
875 ; C A V E A T P R O G R A M M E R ;
877 SET_CURRENT_PDB EQU
80 ; 80 50
878 GET_CURRENT_PDB EQU
81 ; 81 51
879 GET_IN_VARS EQU
82 ; 82 52
880 SETDPB EQU
83 ; 83 53
882 ; C A V E A T P R O G R A M M E R ;
883 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
884 GET_VERIFY_ON_WRITE EQU
84 ; 84 54
885 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
886 ; C A V E A T P R O G R A M M E R ;
888 DUP_PDB EQU
85 ; 85 55
890 ; C A V E A T P R O G R A M M E R ;
891 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
892 RENAME EQU
86 ; 86 56
893 FILE_TIMES EQU
87 ; 87 57
895 SET_OEM_HANDLER EQU
248 ; 248 F8
896 OEM_C1 EQU
249 ; 249 F9
897 OEM_C2 EQU
250 ; 250 FA
898 OEM_C3 EQU
251 ; 251 FB
899 OEM_C4 EQU
252 ; 252 FC
900 OEM_C5 EQU
253 ; 253 FD
901 OEM_C6 EQU
254 ; 254 FE
902 OEM_C7 EQU
255 ; 255 FF