1 ; SCCSID = @(#)dossym.asm 1.1 85/04/10
2 ; SCCSID = @(#)dossym.asm 1.1 85/04/10
21 BREAK <Control character definitions>
23 c_DEL EQU 7Fh ; ASCII rubout or delete previous char
24 c_BS EQU 08h ; ^H ASCII backspace
25 c_CR EQU 0Dh ; ^M ASCII carriage return
26 c_LF EQU 0Ah ; ^J ASCII linefeed
27 c_ETB EQU 17h ; ^W ASCII end of transmission
28 c_NAK EQU 15h ; ^U ASCII negative acknowledge
29 c_ETX EQU 03h ; ^C ASCII end of text
30 c_HT EQU 09h ; ^I ASCII tab
32 BREAK <Read This and Weep>
34 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
36 ; C A V E A T P R O G R A M M E R ;
38 ; Certain structures, constants and system calls below are private to ;
39 ; the DOS and are extremely version-dependent. They may change at any ;
40 ; time at the implementors' whim. As a result, they must not be ;
41 ; documented to the general public. If an extreme case arises, they ;
42 ; must be documented with this warning. ;
44 ; Those structures and constants that are subject to the above will be ;
45 ; marked and bracketed with the flag: ;
47 ; C A V E A T P R O G R A M M E R ;
49 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
55 BREAK <User stack inside of system call and SysVars>
56 ; Location of user registers relative user stack pointer
80 ; MSDOS partitions the disk into 4 sections:
82 ; phys sector 0: +-------------------+
84 ; | +-------------------+
85 ; | | File allocation |
87 ; | (multiple copies |
89 ; +-------------------+
91 ; +-------------------+
93 ; +-------------------+
95 ; | (to end of disk) |
96 ; +-------------------+
98 ; All partition boundaries are sector boundaries. The size of the FAT is
99 ; adjusted to maximize the file space addressable.
103 BREAK <File allocation Table information>
105 ; The File Allocation Table uses a 12-bit entry for each allocation unit on
106 ; the disk. These entries are packed, two for every three bytes. The contents
107 ; of entry number N is found by 1) multiplying N by 1.5; 2) adding the result
108 ; to the base address of the Allocation Table; 3) fetching the 16-bit word
109 ; at this address; 4) If N was odd (so that N*1.5 was not an integer), shift
110 ; the word right four bits; 5) mask to 12 bits (AND with 0FFF hex). Entry
111 ; number zero is used as an end-of-file trap in the OS and is passed to the
112 ; BIOS to help determine disk format. Entry 1 is reserved for future use.
113 ; The first available allocation unit is assigned entry number two, and even
114 ; though it is the first, is called cluster 2. Entries greater than 0FF8H
115 ; (12-bit fats) or 0FFF8H (16-bit fats) are end of file marks; entries of zero
116 ; are unallocated. Otherwise, the contents of a FAT entry is the number of
117 ; the next cluster in the file.
119 ; Clusters with bad sectors are tagged with FF7H. Any non-zero number would
120 ; do because these clusters show as allocated, but are not part of any
121 ; allocation chain and thus will never be allocated to a file. A particular
122 ; number is selected so that disk checking programs know what to do (ie. a
123 ; cluster with entry FF7H which is not in a chain is not an error).