All computers that
derive from the Intel 8088, start after being turned on at the memory position
F000H:FFF0H with their execution. At this position of the BIOS-ROM one finds
the jump command to a routine/handler which will test the system and its
extensions. Doing this it initializes several hardware components. This
procedure is called Power-On self test, abbreviated with POST.
What do we need the POST for?
The POST is necessary
to detect failure of hardware as early as possible and thus to avoid errors
during program execution, which are harder to localize. Such errors can be
broken memory or a graphic card that refuses to work.
What gets tested by the POST?
The tests can get
grouped into 2 sections. First we have the tests at the central PC hardware.
This includes memory, DMA, processor and so on. Whereas the second group covers
extensions as a SCSI controller of the graphic adapter.
Will the same POST-procedure get called at every start?
No. A complete POST
will only be done on a cold start. If the PC has just done a warm start, is
detected by the BIOS by checking the flag in memory segment 0040h:0072h. In
case of a warm start, this flag will be set to 1234h and the POST will skip the
memory check.
Also
the order of the following tests is not obligatory, most BIOS-suppliers stick
to them, more or less.
The POST-tests at the central hardware include:
So first the processor
gets tested for heart and some other organs (not all functions are checked). An
important point at the tests are the registers. If any error occurs while
testing them, the system gets stopped. There will be no output of an error
message.
The tests at the extensions of the system include:
Furthermore the
variables of the BIOS and the interrupt vector table get initialized.
As the PC can be can be
upgraded with components unknown to the system, the BIOS has to look for any
ROM-extensions. Those extensions will enable the system to work with the new
components. Those ROM-extensions can be placed both at the mainboard and on an
extension card (e.g. video card, SCSI controller). Those extensions can expand
or even replace BIOS functions (e.g. VGA card). To enable the POST-procedure to
detect the extensions, the first two byte of their memory will contain the
codes 55h and AAh. The following third byte contains the size of the ROM module
in blocks of 512 byte.
POST-procedure
-- messages on screen
What a user sees at a typical POST: