almanach DOS boot process
How DOS Loads and Starts
If you have a problem with your system during startup and you can determine where in this
sequence of events your system has stalled, you know what events have occurred and you probably
can eliminate each of them as a cause of the problem. The following steps occur in a typical
system startup:
1. You switch on electrical power to the system.
2. The power supply performs a self-test. When all voltages and current levels are acceptable,
the supply indicates that the power is stable and sends the Power Good signal to the motherboard.
The time from switch-on to Power Good is normally between .1 and .5 seconds.
3. The microprocessor timer chip receives the Power Good signal, which causes it to stop generating
a reset signal to the microprocessor.
4. The microprocessor begins executing the ROM BIOS code, starting at memory address FFFF:0000.
Because this location is only 16 bytes from the very end of the available ROM space, it contains
a JMP (jump) instruction to the actual ROM BIOS starting address.
5. The ROM BIOS performs a test of the central hardware to verify basic system functionality.
Any errors that occur are indicated by audio codes because the video system has not yet been
initialized.
6. The BIOS performs a video ROM scan of memory locations C000:0000 through C780:0000, looking
for video adapter ROM BIOS programs contained on a video adapter card plugged into a slot. If a
video ROM BIOS is found, it is tested by a checksum procedure. If it passes the checksum test,
the ROM is executed; the video ROM code initializes the video adapter; and a cursor appears
on-screen. If the checksum test fails, the following message appears:
C000 ROM Error
7. If the BIOS finds no video adapter ROM, it uses the motherboard ROM video drivers to initialize
the video display hardware, and a cursor appears on-screen.
8. The motherboard ROM BIOS scans memory locations C800:0000 through DF80:0000 in 2K increments
for any other ROMs located on any other adapter cards. If any ROMs are found, they are
checksum-tested and executed. These adapter ROMs can alter existing BIOS routines as well as
establish new ones.
9. Failure of a checksum test for any of these ROM modules causes this message to appear:
XXXX ROM Error
10. The address XXXX indicates the segment address of the failed ROM module.
11. The ROM BIOS checks the word value at memory location 0000:0472 to see whether this start is
a cold start or a warm start. A word value of 1234h in this location is a flag that indicates a
warm start, which causes the memory test portion of the POST (Power-On Self Test) to be skipped.
Any other word value in this location indicates a cold start and full POST.
12. If this is a cold start, the POST executes. Any errors found during the POST are reported by
a combination of audio and displayed error messages. Successful completion of the POST is indicated
by a single beep.
13. The ROM BIOS searches for a DOS volume boot sector at cylinder 0, head 0, sector 1 (the very
first sector) on the A: drive. This sector is loaded into memory at 0000:7C00 and tested. If a disk
is in the drive but the sector cannot be read, or if no disk is present, the BIOS continues with
the next step.
14. If the first byte of the DOS volume boot sector loaded from the floppy disk in A: is less than
06h, or if the first byte is greater than or equal to 06h, and the first nine words contain the
same data pattern, this error message appears and the system stops:
602-Diskette Boot Record Error
15. If the disk was prepared with FORMAT or SYS using DOS 3.3 or an earlier version and the
specified system files are not the first two files in the directory, or if a problem was encountered
loading them, the following message appears:
Non-System disk or disk error
Replace and strike any key when ready
16. If the disk was prepared with FORMAT or SYS using DOS 3.3 or an earlier version and the boot
sector is corrupt, you might see this message:
Disk Boot failure
17. If the disk was prepared with FORMAT or SYS using DOS 4.0 and later versions, and the specified
system files are not the first two files in the directory, or if a problem was encountered loading
them, or the boot sector is corrupt, this message appears:
Non-System disk or disk error
Replace and press any key when ready
18. If no DOS volume boot sector can be read from drive A:, the BIOS looks for a master partition
boot sector at cylinder 0, head 0, sector 1 (the very first sector) of the first fixed disk. If
this sector is found, it is loaded into memory address 0000:7C00 and tested for a signature.
19. If the last two (signature) bytes of the master partition boot sector are not equal to 55AAh,
software interrupt 18h (Int 18h) is invoked on most systems. On an IBM PS/2 system, a special
character graphics message is displayed that depicts inserting a floppy disk in drive A: and
pressing the F1 key. For non-PS/2 systems made by IBM, an Int 18h executes the ROM BIOS-based
Cassette BASIC Interpreter. When this occurs, the message looks like this:
The IBM Personal Computer Basic
Version C1.10 Copyright IBM Corp 1981
62940 Bytes free
Ok
Because no BIOS versions other than IBM's systems ever had the Cassette BASIC interpreter in ROM,
other BIOS manufacturers had to come up with different messages to display for the same situations
in which an IBM system would invoke this BASIC. PCs that have an AMI BIOS in fact display a
confusing message as follows:
NO ROM BASIC - SYSTEM HALTED
This message is a BIOS error message that is displayed by the AMI BIOS when the same situations
occur that would cause an IBM system to dump into Cassette BASIC, which of course is not present
in an AMI BIOS (or any other compatible BIOS for that matter). Other BIOS versions display
different messages. For example, under the same circumstances, a Compaq BIOS displays the following:
Non-System disk or disk error
replace and strike any key when ready
This is somewhat confusing on Compaq's part because this very same (or similar) error message is
contained in the DOS Boot Sector, and would normally be displayed if the DOS system files were
missing or corrupted.
In the same situations that you would see Cassette BASIC on an IBM system, a system with an Award
BIOS would display the following:
DISK BOOT FAILURE, INSERT SYSTEM DISK AND PRESS ENTER
Phoenix BIOS systems will display either:
No boot device available -
strike F1 to retry boot, F2 for setup utility
or
No boot sector on fixed disk -
strike F1 to retry boot, F2 for setup utility
The first or second Phoenix message displays depending on exactly which error actually occurred.
Although the message displayed varies from BIOS to BIOS, the cause for all of them relates to
specific bytes in the Master Boot Record, which is the first sector of a hard disk at the physical
location Cylinder 0, Head 0, Sector 1. The problem involves a disk that has either never been
partitioned or has had the Master Boot Sector corrupted. During the boot process, the BIOS checks
the last two bytes in the Master Boot Record (first sector of the drive) for a "signature" value
of 55AAh. If the last two bytes are not 55AAh, an Interrupt 18h is invoked, which calls the
subroutine that displays the message you received as well as the others indicated, or on an IBM
system invokes Cassette (ROM) BASIC itself. The Master Boot Sector (including the signature bytes)
is written to the hard disk by the DOS FDISK program. Immediately after you low-level format a hard
disk, all the sectors are initialized with a pattern of bytes, and the first sector does not contain
the 55AAh signature. In other words, these ROM error messages are exactly what you see if you
attempt to boot from a hard disk that has been low-level formatted, but has not yet been partitioned.
20. The master partition boot sector program searches its partition table for an entry with a system
indicator byte indicating an extended partition. If the program finds such an entry, it loads the
extended partition boot sector at the location indicated. The extended partition boot sector also
has a table that is searched for another extended partition. If another extended partition entry is
found, that extended partition boot sector is loaded from the location indicated. The search
continues until either no more extended partitions are indicated, or the maximum number of 24 total
partitions has been reached.
21. The master partition boot sector searches its partition table for a boot indicator byte marking
an active partition.
22. On an IBM system, if none of the partitions are marked active (bootable), ROM BIOS-based
Cassette BASIC is invoked. On most IBM-compatible systems, some type of disk error message is
displayed.
23. If any boot indicator in the master partition boot record table is invalid, or if more than one
indicates an active partition, the following message is displayed, and the system stops:
Invalid partition table
24. If an active partition is found in the master partition boot sector, the volume boot sector
from the active partition is loaded and tested.
25. If the DOS volume boot sector cannot be read successfully from the active partition within five
retries because of read errors, this message appears and the system stops:
Error loading operating system
26. The hard disk DOS volume boot sector is tested for a signature. If the DOS volume boot sector
does not contain a valid signature of 55AAh as the last two bytes in the sector, this message
appears and the system stops:
Missing operating system
27. The volume boot sector is executed as a program. This program checks the root directory to
ensure that the first two files are IO.SYS (or IBMBIO.COM) and MSDOS.SYS (or IBMDOS.COM). If these
files are present, they are loaded.
28. If the disk was prepared with FORMAT or SYS using DOS 3.3 or an earlier version and the
specified system files are not the first two files in the directory, or if a problem is encountered
loading them, the following message appears:
Non-System disk or disk error
Replace and strike any key when ready
29. If the disk was prepared with FORMAT or SYS using DOS 3.3 or an earlier version and the boot
sector is corrupt, you might see this message:
Disk Boot failure
30. If the disk was prepared with FORMAT or SYS using DOS 4.0 or a later version and the specified
system files are not the first two files in the directory, or if a problem is encountered loading
them, or the boot sector is corrupt, the following message appears:
Non-System disk or disk error
Replace and press any key when ready
31. If no problems occur, the DOS volume boot sector executes IO.SYS/IBMBIO.COM.
32. The initialization code in IO.SYS/IBMBIO.COM copies itself into the highest region of contiguous
DOS memory and transfers control to the copy. The initialization code copy then relocates MSDOS.SYS
over the portion of IO.SYS in low memory that contains the initialization code, because the
initialization code no longer needs to be in that location. Windows 95's IO.SYS combines the
functions of DOS' IO.SYS and MSDOS.SYS.
33. The initialization code executes MSDOS.SYS (or IBMDOS.COM), which initializes the base device
drivers, determines equipment status, resets the disk system, resets and initializes attached
devices, and sets the system default parameters.
34. The full DOS filing system is active, and control is returned to the IO.SYS initialization code.
35. The IO.SYS initialization code reads the CONFIG.SYS file multiple times. In Windows 95, IO.SYS
also looks for the SYSTEM.DAT Registry file.
36. When loading CONFIG.SYS, DEVICE statements are first processed in the order in which they
appear, and any device driver files named are loaded and executed. Then any INSTALL statements are
processed in the order in which they appear, and the programs named are loaded and executed. The
SHELL statement is processed and loads the specified command processor with the specified
parameters. If the CONFIG.SYS file contains no SHELL statement, the default \COMMAND.COM processor
is loaded with default parameters. Loading the command processor overwrites the initialization code
in memory (because the job of the initialization code is finished). In Windows 95, the COMMAND.COM
program is loaded only if an AUTOEXEC.BAT exists, so it can process the commands contained within.
During the final reads of CONFIG.SYS, all of the remaining statements are read and processed in a
predetermined order. Thus, the order of appearance for statements other than DEVICE, INSTALL, and
SHELL in CONFIG.SYS is of no significance.
37. If AUTOEXEC.BAT is present, COMMAND.COM loads and runs AUTOEXEC.BAT. After the commands in
AUTOEXEC.BAT have been executed, the DOS prompt appears (unless the AUTOEXEC.BAT calls an
application program or shell of some kind, in which case the user might operate the system without
ever seeing a DOS prompt).
38. If no AUTOEXEC.BAT is present, COMMAND.COM executes the internal DATE and TIME commands,
displays a copyright message, and displays the DOS prompt. In Windows 95, IO.SYS automatically
loads HIMEM.SYS, IFSHLP.SYS, and SETVER.EXE. Finally, it loads WIN.COM and Windows 95 is officially
started.
Some minor variations from this scenario are possible, such as those introduced by other ROM
programs in the various adapters that might be plugged into a slot. Also, depending on the exact
ROM BIOS programs involved, some of the error messages and sequences might vary. Generally, however,
a computer follows this chain of events in "coming to life." You can modify the system startup
procedures by altering the CONFIG.SYS and AUTOEXEC.BAT files, or the Windows 95 Registry. These
files control the configuration of DOS or Windows 95 and allow special startup programs to be
executed every time the system starts.