Machine Characteristics - A20 Controls
Table of Contents

This is one of a number of machine-characteristics.

A20 Controls

What effect do the A20 control mechanisms have on different machines and do the machines correctly reflect the changes in the control bits? As can be seen in the table the status reported in the bits does not always correlate with the change made. In each case the effect is documented from the starting point of having both controls disabled. Values are in hexadecimal. KBC is the Keyboard controller's output port. SCPA is system control port A at 0x92. For both ports only bit 1 of that port is significant with respect to A20. Zero means not enabled, one means enabled.

Machine KBC Method (Using KBC Method)
K bits
(Using KBC Method)
A bits
SCPA Method (Using SCPA Method)
K bits
(Using SCPA Method)
A bits
BIOS Control
Dell Latitude XP 475D laptop. 80486 75MHz. Phoenix BIOS 1.10 Works C8-CA
1100_1000
1100_1010
00-00
0000_0000
0000_0000
Works C8-C8
1100_1000
1100_1000
00-02
0000_0000
0000_0010
Fails
ABIT AB-SM5-A. Pentium MMX 233MHz. Award Modular BIOS v4.51PG Works 49-4B
0100_1001
0100_1011
FF-FF
1111_1111
1111_1111
Fails 49-49
0100_1001
0100_1001
FF-FF
1111_1111
1111_1111
Fails
AOpen motherboard. Pentium 3 600MHz. Award BIOS 3.60 Works 49-49
0100_1001
0100_1001
00-00
0000_0000
0000_0000
Works 49-49
0100_1001
0100_1001
00-02
0000_0000
0000_0010
Fails
Viglen MPC-L. Geode 399MHz. ION A503 BIOS Works 4x-4B
0100_10x1
0100_1011
00-02
0000_0000
0000_0010
Works 49-49
0100_1001
0100_1001
00-02
0000_0000
0000_0010
Works and is reflected only in the SCPA bit (49-49 00-02)
Asus EEE 4G netbook. Celeron M ULV 630MHz. AMI ASUS 701 BIOS Works CF-CF
1100_1111
1100_1111
00-00
0000_0000
0000_0000
Works CF-CF
1100_1111
1100_1111
00-02
0000_0000
0000_0010
Fails
Gateway laptop. Dual-core Core 2 T5300 1.7GHz. Phoenix BIOS Works 49-4B
0100_1001
0100_1011
00-00
0000_0000
0000_0000
Works 49-49
0100_1001
0100_1001
00-02
0000_0000
0000_0010
Works and is reflected only in the KBC bit (49-4B 00-00)
Asus M2NPV-VM. Athlon X2 Dual-core 2.3GHz. Phoenix BIOS 1201 Works 01-01
0000_0001
0000_0001
00-02
0000_0000
0000_0010
Works 01-01
0000_0001
0000_0001
00-02
0000_0000
0000_0010
Fails
Jetway NC91. Dual-core Atom 1.6GHz. Phoenix-AwardBIOS Works xx-xx
xxxx_xxxx
xxxx_xxxx
00-00
0000_0000
0000_0000
Works xx-xx
xxxx_xxxx
xxxx_xxxx
00-02
0000_0000
0000_0010
Fails
GigaByte MA78LM-S2H AMD Phenom II X2 555 Works 09-0B
0000_1001
0000_1011
00-00
0000_0000
0000_0000
Works 09-09
0000_1001
0000_1001
00-02
0000_0000
0000_0010
Fails
MSI K9N Neo-F AMD X2 5600+ 2.8Ghz Works 4B-4B
0100_1011
0100_1011
00-02
0000_0000
0000_0010
Works 4B-4B
0100_1011
0100_1011
00-02
0000_0000
0000_0010
Works and is reflected only in the SCPA bit (4B-4B 00-02)

Notes

  • The columns show whether the control works (enables A20) or fails. The pairs of hex numbers and their binary equivalents are the effect on the KBC and SCPA bits. For example, the Dell in the first line shows that the KBC control works, when it does the KBC output port changes from 0xC8 (0b1100_1000) to 0xCA (0b1100_1010), and the SCPA port stays unchanged (00 changes to 00). When, instead, the SCPA control is invoked it works, has no effect on the KBC output port which stays at C8 but the SCPA register value changes from 00 to 02.
  • The ABIT machine can control the A20 gate only by the KBC. The SCPA port does not exist and returns 0xFF when read.
  • The machines do not consistently reflect changes made via the keyboard controller in the KBC's bits.
  • On some machines although A20 is enabled by the KBC control the effect shows in the SCPA bits (00-02 in the KBC control column).
  • On some machines although A20 is enabled by the KBC control neither the KBC nor the SCPA bits reflect the change.
  • The Viglen MPC-L has the KBC incorrectly reporting 4B at boot time (i.e. with the A20 gate bit set) but A20 is disabled. If the machine is first told to disable A20 via the KBC nothing changes. Only after A20 has been successfully enabled via the KBC does disabling A20 change the KBC output port from 4B to 49. This misreport is likely an effect of slightly faulty firmware-based emulation of KBC functions and is shown as 4x-4B in the table.
  • Where there is a BIOS function to change the A20 mask different choices are made by different BIOSes. The reports show that the Viglen MPC-L BIOS enables A20 via SCPA and the Gateway laptop BIOS enables A20 via the KBC.
  • The Jetway NC-91 machine times out waiting for KBC response. Its reports are shown as hex xx-xx, and the equivalent in binary, in the table.
  • The KBC bits of the MSI K9N Neo-F always report A20 enabled.

Notes on system reset

  • Although writing the lowest bit of the KBC output port can reset the system there is no consistency as to whether that bit reads as a zero or a one. Beware when writing it!
  • Writing the lowest bit of the KBC output port as a zero should reset the machine (but may hang some according to RBIL).
  • Writing the lowest bit of SCPA as a one should reset the machine. The polarity of this bit is the opposite of that in the KBC output port.
  • A better reset is to issue the command 0xFE to the keyboard controller, if present. This command instructs the KBC to pulse the reset line low for long enough to reset the machine and return it to a high state.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License