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:

  1. The boot record is read into memory and given control.
  2. 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+.
  3. The boot record loads IBMBIO.COM into memory. BIOS\IO.SYS
  4. 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.
  5. 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.
  6. 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.