Files
2024-02-19 00:25:23 -05:00

87 lines
3.2 KiB
Plaintext

===========================================================================
From: BRIAN FRASER Refer#: NONE
To: MATHIEU BOUCHARD Recvd: NO
Subj: .SYS format. Conf: (99) 80xxxProgr
---------------------------------------------------------------------------
Main Header:
00h word - Link to next driver, offset
02h word - Link to next driver, segment
04h word - Device Attribute
06h word - Strategy entry point, offset
0ah word - interrupt entry point, offset
-- Character device --
0ch 8 bytes - Logical Name
-- Block device --
0ch byte - Number of units
Header Attribute word:
bit 15 - 1= Character device; 0= Block device
bit 14 - 1= IOCTL read and write supported
-- Character device --
bit 13 - 1= Output until busy supported
-- Block device --
bit 13 - 1= Check BIOS to determine media characteristics; 0= Media ID
should be used instead
bit 12 - should be 0
bit 11 - 1= if open/close/removable media supported
bit 7-10 - 0
bit 6 - 1= if generic IOCTL and get/set logical drive supported
bit 5 - 0
bit 4 - 1= if CON driver and int 29h fast-output supported
bit 3 - 1= if current CLOCK$ device
bit 2 - 1= if current NULL device
-- Character device --
bit 1 - 1= if standard output device (stdout)
-- Block device --
bit 1 - 1= if 32bit sector addressing supported
bit 0 - 1= if current standard input device (stdin)
Strategy Request Header:
00h byte - length of request header
01h byte - unit number for this request
02h byte - request headers command code
03h word - drivers return status
05h 8 bytes - ? (reserved)
The rest of the header varies depending on what function is being called.
I would think it's best to find a book, as I don't really want to type out all
the different headers for each function. :)
This book I am using is Advanced MS-DOS, Second Ed. Provided, it's a little out
of date, but alot of the information is still the same. Plus, I got it for 8
bucks.. Can't complain for that price! :) Check out the book list.
Heres just a little info on what the above headers are for...
There are two different kinds of device drivers. Character, and Block.
Character devices handle 1 character at a time, while Block devices deal with
Blocks of data. Character devices can have a logical name like "MYSYS", which
can be used like "CON" or "PRN" etc.. Block devices use units (drives), which
are assigned upon install.
The Main Header is the first few bytes of the SYS file, The link to next driver
is to be -1:-1 (or FFFF:FFFF) unless there is more then one driver in this SYS
file, then you set this to the next driver in the chain. BUT, the last driver
must have FFFF:FFFF as the next driver, or you have big problems! :)
The Device attribute is fairly strate forward.
The strategy routine is a routine that is called my DOS with the address of the
Request Header. All this routine has to do is save the address in a local
memory location.
The interrupt routine is then called after the strategy routine. The interrupt
routine process the request header, and performs the requested function, and
returns.
If you can't find a book.. Maybe I'll type out the return attributes, and the
info for each function.
Brian