BIOSs Initialization
The system is initialized by a software reset (Ctrl-Alt-Del), a hardware
reset (reset button), or by turning the computer on. The Intel 80x8x series
processors always look for their first instruction at the end of their address
space (0FFFF0h) when powered up or reset. This address contains a jump to
the first instruction for the ROM BIOS.
Built-in ROM programs (Power-On Self-Test, or POST, in the IBM) check machine
status and run inspection programs of various sorts. Some machines set up
a reserved RAM area with bytes indicating installed equipment (AT and PCjr).
The ROM routine looks for a disk drive at A: or an option ROM (usually a
hard disk) at absolute address C:800h. BIOS\Dsk\ROM
If no floppy drive or option ROM is found, the BIOS calls
Int\19 (ROM BASIC if it is an IBM) or displays error
message. If a bootable disk is found, the ROM BIOS loads the first sector
of information from the disk and then jumps into the RAM location holding
that code. This code normally is a routine to load the rest of the code off
the disk, or to "boot" the system.
The following actions occur after a system initialization:
-
The boot record is read into memory and given control.
-
The boot record then checks the root directory to assure that the first two
files are IBMBIO.COM and IBMDOS.COM. These two files must be the first two
files, and they must be in that order (IBMBIO.COM first, with its sectors
in contiguous order). NOTE: IBMDOS.COM need not be contiguous in version
3.x+.
-
The boot record loads IBMBIO.COM into memory.
BIOS\IO.SYS
-
The initialization code in IBMBIO.COM loads IBMDOS.COM, determines equipment
status, resets the disk system, initializes the attached devices, sets the
system parameters and loads any installable device drivers according to the
CONFIG.SYS file in the root directory (if present), sets the low-numbered
interrupt vectors, relocates IBMDOS.COM downward, and calls the first byte
of DOS. NOTE: CONFIG.SYS may be a hidden file.
-
DOS initializes its internal working tables, initializes the interrupt vectors
for interrupts 20h through 27h, Int\sum and builds
a Program Segment Prefix for COMMAND.COM at the lowest available segment.
For DOS v3.10 up, DOS also initializes the vectors for interrupts 0Fh through
3Fh. An initialization routine is included in the resident portion and assumes
control during startup. This routine contains the AUTOEXEC.BAT file handler
and determines the segment address where user application programs may be
loaded. The initialization routine is then no longer needed and is overlaid
by the first program COMMAND.COM loads. NOTE: AUTOEXEC.BAT may be a hidden
file.
-
IBMBIO.COM uses the EXEC function call to load and start the top-level command
processor. The default command processor is COMMAND.COM in the root directory
of the boot drive. If COMMAND.COM is in a subdirectory or another command
processor is to be used, it must be specified by a SHELL= statement in the
CONFIG.SYS file. A transient portion is loaded at the high end of memory.
This is the command processor itself, containing all of the internal command
processors and the batch file processor. For DOS 2.x, this portion also contains
a routine to load and execute external commands, such as files with extensions
of COM or EXE. This portion of COMMAND.COM also produces the DOS prompt (such
as "A"), reads the command from the standard input device (usually the keyboard
or a batch file), and executes the command. For external commands, it builds
a command line and issues an EXEC function call to load and transfer control
to the program.
NOTE: COMMAND.COM may be a hidden file.
NOTE: For IBM DOS 2.x, the transient portion of the command processor contains
the EXEC routine that loads and executes external commands. For MSDOS 2.x+
and IBM DOS 3.x+, the resident portion of the command processor contains
the EXEC routine.
NOTE: IBMBIO only checks for a file *named* "COMMAND.COM". It will load any
file of that name if no SHELL= command is used.