Machine Characteristics - A20 Controls
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.
page revision: 4, last edited: 08 Aug 2018 16:35