MS-DOS/v2.0/bin/SYSINIT.DOC

79 lines
3.0 KiB
Plaintext
Raw Normal View History

1983-08-13 01:53:34 +01:00
SYSINIT is a module linked behind the OEM bios. It takes
over the system initialization after the OEM bios has
performed any initialization it needs to do. Control is
transfered with a long jump to the external variable SYSINIT
The OEM has the following variables declared external:
CURRENT_DOS_LOCATION WORD
This word contains the segment number of the DOS before it
is relocated. The OEM bios must set this value.
FINAL_DOS_LOCATION WORD
This word contains the segment number of the DOS after SYSINIT
moves it. The OEM bios must set this value.
DEVICE_LIST DWORD
This double word pointer points to the linked list of
character and block device drivers. The OEM must set this
value.
MEMORY_SIZE WORD
This word contains the number of RAM paragraphs. If the
bios doesn't set this variable SYSINIT will automatically
calculate it. NOTE: systems with PARITY checked memory must
size memory in the BIOS. SYSINITs method is to write memory
and read it back until it gets a mismatch.
DEFAULT_DRIVE BYTE
This is the initial default drive when the system first comes
up. drive a=0, drive b=1, etc. If the bios doesn't set
it then drive a is assumed.
BUFFERS BYTE
This is the default number of buffers for the system. This
value may be overridden by the user in the CONFIG.SYS file.
It is DBed to 2 in SYSINIT it should be greater than 1.
FILES BYTE
This is the default number of files for the system. This
value may be overridden by the user in the CONFIG.SYS file.
It is DBed to 8 in SYSINIT, values less than 5 are ignored.
SYSINIT FAR
The entry point of the SYSINIT module. OEM BIOS jumps to
this label at the end of its INIT code.
The OEM has the following variables declared public:
RE_INIT FAR
This is an entry point which allows the BIOS to do some INIT
work after the DOS is initialized. ALL REGISTERS MUST BE
PRESERVED. On entry DS points to the first available memory
(after the DOS). DS:0 points to a 100H byte program header
prefix which represents the "program" currently running.
This program should be thought of as the OEM BIOS and
SYSINIT taken together. This is not a normal program in
that no memory is allocated to it, it is running in free
memory.
NOTES:
At the time this routine is called SYSINIT occupies the
highest 10K of memory ("highest" is determined by the value
of the MEMORY_SIZE variable), DO NOT DO WRITES THERE.
Since this is called AFTER DOS is initialized, you can
make system calls. This also implies that the code for this
routine CANNOT be thrown away by use of the
FINAL_DOS_LOCATION since the DOS has already been moved.
If you don't want anything done just set this to point
at a FAR RET instruction.