mirror of
https://github.com/microsoft/MS-DOS.git
synced 2024-11-29 17:15:47 +00:00
79 lines
3.0 KiB
Plaintext
79 lines
3.0 KiB
Plaintext
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.
|
||
|