Home 

IBM 5170  -  POST  -  Codes


"POST codes" are bytes output to I/O port 80h at various checkpoints of the Power-On Self Test (POST).  These codes can be monitored on a POST card.

The following assumes that your IBM 5170 has not had its IBM BIOS swapped out for a non-IBM BIOS.

The code is output to the POST card just before the test/procedure occurs.  For example, if the POST card stops at 01, then that means that something went wrong during the '80286 register test' test.

The table below shows the first 35 checkpoint codes, which are the checkpoints that happen up to, and including, video initialisation.

Codes 02 and 03 vary according to the revision of BIOS.  Click here for a way to identify which revision of BIOS your IBM 5170 has.



  01/10/84  BIOS 06/10/85  BIOS 11/15/85  BIOS     Comment
01 80286 register test 80286 register test 80286 register test  
02 Verify shutdown byte in 146818 RTC chip Verify checksum of BIOS ROMs Verify checksum of BIOS ROMs  For 01/10/84 BIOS, see note 6
03 Verify checksum of BIOS ROMs Verify shutdown byte in 146818 RTC chip Verify shutdown byte in 146818 RTC chip  
04 8254 PIT channel 1 - 'all bits on' test 8254 PIT channel 1 - 'all bits on' test 8254 PIT channel 1 - 'all bits on' test  Channel 1 of the 8254 timer chip's 3 channels (0/1/2)
05 8254 PIT channel 1 - 'all bits off' test 8254 PIT channel 1 - 'all bits off' test 8254 PIT channel 1 - 'all bits off' test  
06 8237 DMA #1 - initialization and test 8237 DMA #1 - initialization and test 8237 DMA #1 - initialization and test  The first of the two DMA chips (the one in socket U111)
07 1. 8237 DMA #2 - initialization and test
2. 8254 PIT channel 1 - initialization
1. 8237 DMA #2 - initialization and test
2. 8254 PIT channel 1 - initialization
1. 8237 DMA #2 - initialization and test
2. 8254 PIT channel 1 - initialization

 See note 7 for info on channel 1 initialization
08 DMA page register test DMA page register test DMA page register test  
09 Memory refresh test Memory refresh test Memory refresh test  Verify that dynamic RAM refresh is happening
0A 8042/8742 - Soft reset 8042/8742 - Soft reset 8042/8742 - Soft reset  Issue a soft reset to the motherboard's keyboard controller
0B 8042/8742 - Self test 8042/8742 - Self test 8042/8742 - Self test  Get the motherboard's keyboard controller to do a self test
0C "   "   "   "   "   " "   "   "   "   "   " "   "   "   "   "   "  
0D 8042/8742 - additional tests 8042/8742 - additional tests 8042/8742 - additional tests  
0E If a warm boot, zero first 64K of base memory If a warm boot, zero first 64K of base memory If a warm boot, zero first 64K of base memory  No verification done
0F/DD Test first 64K of base memory Test first 64K of base memory Test first 64K of base memory  On failure, continuously output the POST code of DD  (see here)
10  
11 Speed test Speed test  See note 1
12 1. 80286 - additional tests
2. Initialise 8259 PIC #1
1. 80286 - additional tests
2. Initialise 8259 PIC #1
1. 80286 - additional tests
2. Initialise 8259 PIC #1
 
13 Initialise 8259 PIC #2 Initialise 8259 PIC #2 Initialise 8259 PIC #2  
14 Set up temporary interrupt vectors Set up temporary interrupt vectors Set up temporary interrupt vectors  
15 Set BIOS call interrupt vectors Set BIOS call interrupt vectors Set BIOS call interrupt vectors  
16 / 17 1. 146818 RTC chip - ask if battery is low
2. 146818 RTC chip - verify checksum
1. 146818 RTC chip - ask if battery is low
2. 146818 RTC chip - verify checksum
1. 146818 RTC chip - ask if battery is low
2. 146818 RTC chip - verify checksum
 * POST code 17 is only output if battery is low
 * Checksum of RAM bytes 14d to 45d within 146818
18 Disable parity checking of RAM Disable parity checking of RAM Disable parity checking of RAM  Preparation for later
19 Put 80286 into protected mode Put 80286 into protected mode Put 80286 into protected mode  
1A Verify that 80286 in protected mode Verify that 80286 in protected mode Verify that 80286 in protected mode  
1B Determine size of base memory Determine size of base memory Determine size of base memory  See note 2
1C Set/reset the 512/640K RAM flag Set/reset the 512/640K RAM flag Set/reset the 512/640K RAM flag  
1D Determine size of extended memory Determine size of extended memory Determine size of extended memory  See note 3
1E Store extended memory size Store extended memory size Store extended memory size  See note 4
1F Test address lines 19 to 23 Test address lines 19 to 23 Test address lines 19 to 23  
20 Exit from protected mode Exit from protected mode Exit from protected mode  
21 Initialise any MDA/CGA video card Initialise any MDA/CGA video card Initialise any MDA/CGA video card  
22 MDA/CGA - Video line test MDA/CGA - Video line test MDA/CGA - Video line test  
23 Process any 'advanced' video card Process any 'advanced' video card Process any 'advanced' video card  See note 5
... ... ... ...  
... ... ... ...  
... ... ... ...  


DD See 'OF/DD' above See 'OF/DD' above See 'OF/DD' above  



Note 1 Verify that motherboard 'speed' is within certain bounds.
Added by IBM to stop the overclocking (via crystal) that owners commonly did to early 5170's.
On failure, before halting the CPU, the POST also beeps the speaker: 1 long beep followed by 1 short beep
   
Note 2 Sizing only.  First 64K of base memory was tested at checkpoint 0F.  Remainder of base memory gets tested at checkpoint 2F.
   
Note 3 Executed in protected mode.  Sizing only.  Extended memory gets tested at checkpoint 2F.
   
Note 4 Stored in the MC146818 RTC chip
   
Note 5 Video cards that contain a BIOS ROM.  The EGA card is an example.  The ROM is executed (i.e. card initialises itself).
   
Note 6 Failure of the 'Verify shutdown byte' test often occurs when BOTH of the following are true:
* Motherboard has the 01/10/84 BIOS
* Motherboard inadvertently powered using an XT-class power supply, rather an an AT-class one.
   
Note 7 Initialise channel #1 of 8254 timer chip, setting a divisor of 18.  That results in one output pulse per approx. 15 µs.   See here.