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.
|
|||
|
|