Organization of CMOS Memory - non-Clock The last two bytes in the first hexadecimal decade (hexade ?) were not specified in the PC/AT but may have the following use on some systems: 0Eh (PS/2) Diagnostic Status Byte Bit 7 - When set (1) indicates clock has lost power Bit 6 - (1) indicates incorrect checksum Bit 5 - (1) indicates that equipment configuration is incorrect power-on check requires that atleast one floppy be installed Bit 4 - (1) indicates error in memory size Bit 3 - (1) indicates that controller or disk drive failed initialization Bit 2 - (1) indicates that time is invalid Bit 1 - (1) indicates installed adaptors do not match configuration Bit 0 - (1) indicates a time-out while reading adaptor ID 0Eh (AMSTRAD) 6 BYTEs time and date machine last used 0Fh Reset Code (IBM PS/2 "Shutdown Status Byte") The second group of values extends from address 10h to 2Dh. The word at 2Eh-2Fh is a byte-wise summation of the values in these bytes. Most BIOSes will generate a CMOS Checksum error if this value is invalid however many programs ignore the checksum and report the apparent value. The current version of MSD reports my XT as having 20+ MB of extended memory. Where a definiton appears universal, no identification is made. Where the definition is thought to be specific to a manufacturer/model (AMI, AMSTRAD, IBM AT, IBM PS/2) the identification is enclosed in parens. The AMSTAD definitions appear to relate to 8088/8086 (PC and PC/XT class) mchines only. AT class machines appear to adhere to IBM PC/AT fornat. 10h - Floppy Drive Type Bits 7-4 - First Floppy Disk Drive Type 0h No Drive 1h 360 KB 5 1/4 Drive 2h 1.2 MB 5 1/4 Drive - note: not listed in PS/2 technical manual 3h 720 KB 3 1/2 Drive 4h 1.44 MB 3 1/2 Drive 5h-Fh unused (??? 5h: 2.88 Mb 3 1/2 Drive ???) Bits 3-0 Second Floppy Disk Drive Type (bit settings same as A) Hence a PC having a 5 1/4 1.2 Mb A: drive and a 1.44 Mb B: drive will have a value of 24h in byte 10h. With a single 1.44 drive: 40h. 11h - (IBM-PS/2) First Fixed Disk Drive Type Byte (00-FFh) Note: if IBM ESDI or SCSI drive controller is used, CMOS drive type will be zero (00 - no drive) and Int 13h will be directed to controller ROM. 11h - (AMI) Keyboard Typematic Data Bit 7 Enable Typematic (1 = On) Bits 6-5 Typematic Delay (wait before begin repeating) 00b 250 ms 01b 500 ms 10b 750 ms 11b 100 ms Bits 4-0 Typematic Rate char/sec e.g. 01010b = 12.0 cps 00000b - 300 01000b - 159 10000b - 75 11000b - 37 00001b - 267 01001b - 133 10001b - 67 11001b - 33 00010b - 240 01010b - 120 10010b - 60 11010b - 30 00011b - 218 01011b - 109 10011b - 55 11011b - 27 00100b - 200 01100b - 100 10100b - 50 11100b - 25 00101b - 185 01101b - 92 10101b - 46 11101b - 23 00110b - 171 01110b - 86 10110b - 43 11110b - 21 00111b - 160 01111b - 80 10111b - 40 11111b - 20 12h - (IBM PS/2) Second Fixed Disk Drive Type (00-FFh) - see 11h 12h - Hard Disk Data Bits 7-4 First Hard Disk Drive 00 No drive 01-0Eh Hard drive Type 1-14 0Fh Hard Disk Type 16-255 (actual Hard Drive Type is in CMOS RAM 1Ah) Bits 3-0 Second Hard Disk Drive Type (same as above except extrnded type will be found in 1Bh). A PC with a single type 2 (20 Mb ST-225) hard disk will have 20h in byte 12h Note: some PCs utilizing external disk controller ROMs will use type 0 to disable ROM BIOS (e.g. Zenith 248 with Plus HardCard). 13h (AMI) Advanced Setup Options Bit 7 Mouse Enabled (1 = On) Bit 6 Test Memory above 1 MB (1 = On) Bit 5 Memory Test Tick Sound (1 = On) Bit 4 Memory Parity Error Check (1 = On) Bit 3 Press to Disable Memory Test (1 = On) Bit 2 User-Defined Hard Disk (1 = Type 47 data area at address 0:300h) Bit 1 Wait for Message if Error (1 = On) Bit 0 Turn Num Lock On at boot (1 = On) 14h - Equipment Byte Bits 7-6 Number of Floppy Drives (system must have at least one) 00b 1 Drive 01b 2 Drives 10b ??? 3 Drives 11b ??? 4 Drives Bits 5-4 Monitor Type 00b Not CGA or MDA (observed for EGA & VGA) 01b 40x25 CGA 10b 80x25 CGA 11b MDA (Monochrome) Bit 3 Display Enabled (1 = On) (turned off to enable boot of rackmount) Bit 2 Keyboard Enabled (1 = On) (turned off to enable boot of rackmount) Bit 1 Math coprocessor Installed (1 = On) Bit 0 Floppy Drive Installed (1 = On) (turned off for rackmount boot) 14h - (AMSTRAD) BYTE user RAM checksum LSB of sum of all user bytes should be AAh 15h - Base Memory in K, Low Byte 15h - (AMSTRAD) WORD Enter key scancode/ASCII code default: 1C0Dh - emulates Return key 16h Base Memory in K, High Byte The value in 15h-16h should be the same as in 0:413h and that returned by Int 12h. A PC having 640k (280h) of conventional memory will return 80h in byte 15h and 02h in byte 16h. 17h - Extended Memory in K, Low Byte 17h - (AMSTRAD) WORD Forward delete key scancode/ASCII code default: 2207h - emulates ^G (bell/beep) 18h - Extended Memory in K, High Byte (some systems will only accommodate 15 Mb extended or 16 Mb total) Format is the same as in 15h-16h 19h - First Extended Hard Disk Drive Type (not in original AT specification but now nearly universally used except for PS/2). 0-Fh unused (would not require extension. Note: this has the effect making type 0Fh (15d) unavailable. 10h-FFh First Extended Hard Drive Type 16d-255d For most manufacturers the last drive type (typically either 47d or 49d) is "user defined" and parameters are stored elsewhere in the CMOS. 19h - (AMSTRAD) WORD Joystick fire button 1 scancode/ASCII code default: FFFFh - (no translation) 1Ah - Second Extended Hard Disk Drive Type (see 19h above) 1Bh - (AMI) First Hard Disk (type 47) user defined: # of Cylinders, LSB 1Bh - (AMSTRAD) WORD Joystick fire button 2 scancode/ASCII code default: FFFFh - (no translation) 1Bh - (PHOENIX) LSB of Word to 82335 RC1 roll compare register 1Ch - (AMI) First Hard Disk user defined: # of Cylinders, High Byte 1Ch - (PHOENIX) MSB of Word to 82335 RC1 roll compare register 1Dh - (AMI) First Hard Disk user defined: Number of Heads 1Dh - (AMSTRAD) WORD mouse button 1 scancode/ASCII code default: FFFFh - (no translation) 1Dh - (Zenith Z-200 monitor) Boot Drive Selection Bits 6-5 (0xx0 0000) 00 - MFM Monitor 01 - First floppy drive (A:) 10 - First fixed disk (C:) 11 - First floppy drive (A:). If not there then First fixed disk (C:) (this is the default). 1Dh - (PHOENIX) LSB of Word to 82335 RC2 roll compare register 1Eh - (AMI) First Hard Disk user defined: Write Precompensation Cylinder, Low Byte 1Eh - (PHOENIX) MSB of Word to 82335 RC2 roll compare register 1Fh - (AMI) First Hard Disk user defined: Write Precompensation Cylinder, High Byte 1Fh - (AMSTRAD) WORD mouse button 2 scancode/ASCII code default: FFFFh - (no translation) 20h - (AMI) First Hard Disk user defined: Control Byte (80h if # of heads is equal or greater than 8) 20h - (PHOENIX) First user defined hard disk (type 48) Cylinders LSB 21h - (AMI) First Hard Disk user defined: Landing Zone, Low Byte 21h - (AMSTRAD) BYTE mouse X scaling factor, default: 0Ah 21h - (PHOENIX) First user defined hard disk (type 48) Cylinders MSB 22h - (AMI) First Hard Disk user defined: Landing Zone, High Byte 22h - (AMSTRAD) BYTE mouse Y scaling factor default: 0Ah 22h - (PHOENIX) First user defined hard disk (type 48) of Heads 23h - (AMI) First Hard Disk user defined: # of Sectors per track 23h - (AMSTRAD) BYTE initial VDU mode and drive count default: 20h bit 7: enables extended serial flow control (NB this is buggy) bit 6: set if two floppy drives installed bits 5 & 4: (from Amstrad 1640 tech ref) 0 0 Internal video adapter 0 1 CGA card added; 40 x 25 mode 1 0 CGA card added; 80 x 25 mode 1 1 mono card added; 80 x 25 mode 23h - (PHOENIX) First user defined hard disk (type 48) Write Precomp. LSB 24h - (AMI) Second Hard Disk user defined: # of Cylinders, Low Byte 24h - (AMSTRAD) BYTE initial VDU character attribute, default: 7h 24h - (PHOENIX) First user defined hard disk (type 48) Write Precomp. MSB 25h - (AMI) Second Hard Disk user defined: # of Cylinders, High Byte 25h - (AMSTRAD) BYTE size of RAM disk in 2K blocks default: 0 - only used by the RAMDISK software supplied. 25h - (PHOENIX) First user defined hard disk (type 48) Parking zone LSB 26h - (AMI) Second Hard Disk user defined: Number of Heads 26h - (AMSTRAD) BYTE initial system UART setup byte default: E3h - format as for Int 14h fn 0 26h - (PHOENIX) First user defined hard disk (type 48) Parking zone MSB 27h - (AMI) Second Hard Disk user defined: Write Precompensation Cylinder, Low Byte 27h - (AMSTRAD) BYTE initial external UART setup byte default: E3h - format as for Int 14h fn 0 27h - (PHOENIX) First user defined hard disk (type 48) Sectors per track 28h - (AMI) Second Hard Disk user defined: Write Precompensation Cylinder, High Byte 28h - (HP Vectra) checksum over words 29h-2Dh 28h-3Fh (AMSTRAD) 24 BYTEs user applications default: zeroes 29h - (AMI) Second Hard Disk user defined: Control Byte (80h if # of heads is equal or greater than 8) 29h - (PHOENIX) LSB word to Intel 82335 CC0 compare register 2Ah - (AMI) Second Hard Disk user defined: Landing Zone, Low Byte 2Ah - (PHOENIX) MSB word to Intel 82335 CC0 compare register 2Bh - (AMI) Second Hard Disk user defined: Landing Zone, High Byte 2Bh - (PHOENIX) LSB word to Intel 82335 CC1 compare register 2Ch - (AMI) Second Hard Disk user defined: # of Sectors per track 2Ch - (COMPAQ) bit 6: 0 - numlock OFF on boot, 1 - numlock ON at boot 29h - (PHOENIX) MSB word to Intel 82335 CC1 compare register 2Dh - (AMI) Configuration Options Bit 7 Weitek Installed(1 = On) Bit 6 Floppy Drive Seek - turn off for fast boot Bit 5 Boot Order 0 - Drive C:, then A: 1 - Drive A:, then C: Bit 4 Boot Speed (0 - Low; 1 - High) Bit 3 External Cache Enable (1 = On) Bit 2 Internal Cache Enable (1 = On) Bit 1 Use Fast Gate A20 after boot (1 = On) Bit 0 Turbo Switch (1 = On) 2Dh - (PHOENIX) Checks for values AAh or CCh 2Eh - Standard CMOS Checksum, High Byte 2Fh - Standard CMOS Checksum, Low Byte 2Eh and 2Fh are as defined by the original IBM PC/AT specification and represent a byte-wise additive sum of the values in locations 10h-2Dh only, 00h-0Fh and 30h-33h are not included. This definition is used by most clone manufacturers including AMI, Compaq, Tandon, NEC, and Zenith. The IBM PS/2 line does not follow this standard with the range 19h-31h being undefined. 30h - Extended Memory in K, Low Byte 31h - Extended Memory in K, High Byte (??? this appears to mirror the value in bytes 17h-18h.) 32h - Century Byte (BCD value for the century - currently 19) 32h - (IBM-PS2) Configuration CRC low byte. CRC for range 10h-31h 33h - Information Flag Bit 7 128K (??? believe this indicates the presence of the special 128k memory expansion board for the AT to boost the "stock" 512k to 640k - all machines surveyed have this bit set) Bits 6-0 ??? 33h - (IBM PS/2) Configuration CRC high byte (see entry for 32h) 33h - (PHOENIX) Bit 4 (000x 0000) bit 4 from Intel CPU register CP0 34h - (AMI) Shadowing & Boot Password Bits 7-6 Password Selection 00b Disable 10b Reserved 01b Set 11b Boot Bit 5 C8000h Shadow ROM (Bit 1 = On) Bit 4 CC000h Shadow ROM (Bit 1 = On) Bit 3 D0000h Shadow ROM (Bit 1 = On) Bit 2 D4000h Shadow ROM (Bit 1 = On) Bit 1 D8000h Shadow ROM (Bit 1 = On) Bit 0 DC000h Shadow ROM (Bit 1 = On) 35h - (AMI) Shadowing Bit 7 E0000h Shadow ROM (Bit 1 = On) Bit 6 E4000h Shadow ROM (Bit 1 = On) Bit 5 E8000h Shadow ROM (Bit 1 = On) Bit 4 EC000h Shadow ROM (Bit 1 = On) Bit 3 F0000h Shadow ROM (Bit 1 = On) Bit 2 C0000h Shadow ROM (Bit 1 = On) Bit 1 C4000h Shadow ROM (Bit 1 = On) Bit 0 Reserved 35h - (PHOENIX) Second user defined hard disk (type 48) Cylinders LSB NOTE: used only when PS/2 style password is NOT in effect. 36h - (PHOENIX) Second user defined hard disk (type 48) Cylinders MSB NOTE: used only when PS/2 style password is NOT in effect. 37h - (IBM PS/2) Date Century Byte 37h - (PHOENIX) Second user defined hard disk (type 48) # of heads NOTE: used only when PS/2 style password is NOT in effect. 38h-3Dh (AMI) Encrypted Password 38h-3Fh ??? (IBM PS/2) Encrypted Password. Initialized to 00h in all bytes. Will accept from 1-7 scan codes. 38h - (PHOENIX) Second user defined hard disk (type 48) Write Precomp. LSB NOTE: used only when PS/2 style password is NOT in effect. 39h - (PHOENIX) Second user defined hard disk (type 48) Write Precomp. MSB NOTE: used only when PS/2 style password is NOT in effect. 3Ah - (PHOENIX) Second user defined hard disk (type 48) Parking Zone LSB NOTE: used only when PS/2 style password is NOT in effect. 3Bh - (PHOENIX) Second user defined hard disk (type 48) Parking Zone MSB NOTE: used only when PS/2 style password is NOT in effect. 3Ch - (PHOENIX) Second user defined hard disk (type 48) Sectors per track NOTE: used only when PS/2 style password is NOT in effect. 3Eh - (AMI) Extended CMOS Checksum, High Byte (includes 34h - 3Dh) 3Fh - (AMI) Extended CMOS Checksum, Low Byte (includes 34h - 3Dh) End of original 64 CMOS RAM bytes. Many modern chips now contain 128 bytes and the IBM PS/2 has provision for 2k of "Expansion CMOS". The AMI HI-FLEX description is below. If the chip does have only 64 bytes, addresses will wrap so that requests for bytes 40h-7Fh will return the same values as 00h-3Fh. 40h ??? 41h - (AMI) Bits 7-6 IOR/IOW Wait states Bits 5-4 16-bit DMA Wait States Bits 3-2 8-bit DMA Wait States Bit 1 EMR bit Bit 0 DMA Clock Source 42h-43h ??? 44h - (AMI) Bit 4 NMI Power Fail Warning Bit 3 NMI Local Bus Timeout 45h - (AMI) Bits 7-6 AT Bus 32-Bit Delay Bits 5-4 AT Bus 16-Bit Delay Bits 3-2 AT Bus 8-Bit Delay Bits 1-0 AT Bus I/O Delay 46h - (AMI) Bits 7-6 AT Bus 32 Bit Wait States Bits 5-4 AT Bus 16 Bit Wait States Bits 3-2 AT Bus 8 Bit Wait States Bits 1-0 AT Bus Clock Source 47h - 50h ??? 51h - (AMI) Bit 7 Bank 0/1 RAS Precharge Bit 6 Bank 0/1 Access Wait States Bits 3-2 Bank 0/1 Wait States 52h ??? 53h - (AMI) Bit 7 Bank 2/3 RAS Precharge Bit 6 Bank 2/3 Access Wait States Bits 3-2 Bank 2/3 Wait States 54h-7Fh ??? .