Map of CMOS of Zenith 433VLp Phoenix BIOS LAP486SX C513036 (#'s from sticker on back). Some information from Ralf Brown's CMOS.LST V1.25 (V46), but most of this is machine-specific. I have verified the operation of all these locations unless otherwise noted. Credits: [NZ]=Nicholas Zymaris, [RB]=Ralf Brown. Helpful tool: dump ASCII CMOS list then fc list1 list2 | find "location:" [>outfile] where location is the desired CMOS location and outfile is optional. Related information: If screen turns off after setting or checking the CMOS with the built-in Setup menu (Fn-ESC [Pop Up] or Ctrl-Alt-S), it can be turned on again by pressing Fn-F5 [Stand By] then Shift (or any other key) to leave Standby mode. Values for CMOS and memory locations and contents are in hex; even when the "h" is omitted; the only numbers here not in hex should be such things as model numbers, names of keys (F10 not FA, as is obvious), and similar things. By Nicholas Zymaris Previous version: V1.31 -- January 17, 1996 -- nzymaris@aol.com Current version: V1.32 -- January 21, 1998 -- nickz@idt.net (re: 77h, 7Fh) (The nickz@idt.net address is no longer valid; use nickz@eskimo.com instead) ----------------------------------------------------------------- 00: Seconds (BCD 00-59, Hex 00-3B) Note: Bit 7 is read only [RB] 01: Second Alarm (BCD 00-59, Hex 00-3B; "don't care" if C0-FF) [RB] 02: Minutes (BCD 00-59, Hex 00-3B) [RB] 03: Minute Alarm (BCD 00-59, Hex 00-3B; "don't care" if C0-FF)) [RB] 04: Hours (BCD 00-23, Hex 00-17 if 24 hr mode) [RB] (BCD 01-12, Hex 01-0C if 12 hr am) [RB] (BCD 81-92. Hex 81-8C if 12 hr pm) [RB] 05: Hour Alarm (same as hours; "don't care" if C0-FF)) [RB] Alarm will trigger when contents of all three Alarm byte registers (at 01, 03, and 05) match their companions. (Zenith alarm not yet verified) [RB] 06: Day of Week (01-07 Sunday=1) [RB] 07: Date of Month (BCD 01-31, Hex 01-1F) [RB] 08: Month (BCD 01-12, Hex 01-0C) [RB] 09: Year (BCD 00-99, Hex 00-63) [RB] low BCD "byte" only; reset (by clock interrupts?) to either 1990 or 2000 if invalid date entered (via either DOS' TIME command or direct CMOS access), depending on century byte (loc. 32h) [NZ] 0B: Bit 2: BCD/Hex selection for time/date registers (N/A for 07h) [RB] Bit 1: 12/24 hour selection for location 04. [RB] Default format on Zenith has alarms zeroed, e.g. 0: 38 Second 1: 0 2: 46 Minute 3: 0 4: 9 Hour 5: 0 6: 1 Day of week; 1=Sunday 7: 5 Date 8: 11 Mo 9: 95 Yr, low BCD "byte" 0C: Was 50h until after Prodigy error when it was 70; a cold boot restored it to 50. According to CMOS.LST V1.25 [RB] the bit set is the Alarm Interrupt flag, but unless such interrupts are enabled in loc. B, it has no effect. 0D: Valid CMOS RAM (similar to DEC PC350's Valid RAM and Time [VRT]) byte. 80=CMOS RAM valid; 00=invalid (e.g. low or dead battery). Always test this at end of CMOS addressing so port 70h is pointing at a safe location (Failure to do this may have screwed up location 33 before?) [RB,NZ] 0E: Default=0. Set to 40 on 10/17/95 by running a certain part of the ROM preceding the text strings for Setup, around the INT 10's (c. E000:AB00), from Debug. Did not impair booting of a diskette, but C: not recognized. CMOS.LST and PORTS.LST [RB] say this means C: failed initialization: "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" (c) [RB] While this info may be machine-dependent, it seems accurate -- both of my error 40's were hard-disk related, and it was simple to induce an error 20 by entering incorrect diskette information (e.g. 50 instead of 40 for diskette(s) type). (Actually, the 20 is accurate, but not the 40). 10: Diskette type: bits 7-4 indicate 1st drive; bits 3-0 indicate 2nd one. [RB] Verified on my system: I should have 40 (=one 1.44MB diskette) on my current system; if I put 44 then I get an error for "drive B" on boot but can still do a DIR B: as usual (DOS asks for the diskette to be inserted). Incorrect information here can leave an error 20 in location 0E. 11: Hard disk type? [RB] Default is FF; other values may work (e.g. 01) or make Setup complain and boot anyway. [NZ] 15: Base Memory in K, low byte (Default = 80; 02 80h=640d) [RB] 16: Base Memory in K, high byte (Default = 02; 02 80h=640d) [RB] 17: Extended Memory in K, low byte (Default = 00, same format as base memory). Locations 17:18h mirrored in 30:31h [RB]; I came to same conclusion about loc. 18h and 31h prior to consulting CMOS.LST, and wrote the entries for them in this list (but I thought it numbered by MB, which would be a problem for computers with, e.g. 512K extended memory). 18: Probably indicates amt. of extended memory: 0Ch when 3MB (4MB total), and 2Ch when 11MB (12MB total) (Shift 2 bits right and it is, in fact, 3 or 11). Apparently mirrored in location 31h. [NZ] 19: Hard disk: 2C=Auto (default); 2E=User define[d]; when setting back to Auto after a User-defined boot, Setup will say Drive table not used (if one is even using Setup, that is ;-)) and the table with cylinders, heads, etc. will go blank, but it will appear normally after booting. 1F: DF=Num Lock ON at Boot; FF=Num Lock OFF at Boot (default) [NZ(,RB?)] 2E: Standard two-byte (2E & 2F) CMOS checksum; of locations 10h to 2Dh only. [RB,NZ] 30: Extended Memory in K, low byte (Default = 00, same format as base memory). Locations 17:18h mirrored in 30:31h [RB]; I came to same conclusion about loc. 18h and 31h prior to consulting CMOS.LST, and wrote the entries for them in this list (but I thought it numbered by MB, which would be a problem for computers with, e.g. 512K extended memory). 31: Probably indicates amt. of extended memory: 0Ch when 3MB (4MB total), and 2Ch when 11MB (12MB total) (Shift 2 bits right and it is, in fact, 3 or 11). Apparently mirrored in location 18h. [NZ] 32: Century byte, in BCD (it's good that SOMEONE was looking ahead, unlike the designers of DEC POS) [RB] (Actually the BCD "high byte" of the year, i.e. now (1995) it is 19, rather than 20 which is the century number). 33: Should be F8. If FF, then keyboard and screen will not operate if system goes into rest mode -- pressing ON-OFF will turn on hard disk but no keys will work: not ON-OFF, not Reverse, not CTRL-ALT-DEL. Only RESET will work (press ON-OFF and lid switch simultaneously). If power saving is disabled, or if system is turned off (in On-Off mode), or only enters standby mode, this situation will not occur. RESET will make computer reboot normally, but the underlying problem is not fixed. Manually set back to F8 on 10/14/95 and problem resolved. May be due to running old CMOS list program which did not set port 70 to a safe location after reading it, so a subsequent program inadvertently wrote to loc. 33? [NZ] Default (after using F5 in Setup Page 1 to Load Default Values) is F8. 34: CPU Speed: B9=Fast (33 Mhz=default); B8=Slow. Will accept other values (e.g. B0=Slow) but correct them on bootup, apparently setting location 3A to FF then resetting 3A to 00 on the next boot (a flag?) If the value is much different from B8 or B9 (e.g. 0), Setup will give a checksum error, even though this location is not covered by the 2E-2F or 6E-6F checksums. (So find the other checksum!) 3A: Second User-defined HD Parking Zone MSB [RB] Normally 00; was FF (!) when checked after Prodigy error; reset to 00 by a cold software reboot; also was set to FF after testing Setup Page 2 CMOS settings; but Load Default Values (Setup Page 1) resets it to its default of 00. Perhaps this is a flag that Setup or POST found something amiss which it noted or corrected (e.g. a B0 in location 34 which is corrected to B8=Slow). 51: Auto-Standby Timer: E0=Disabled; En=Standby after n minutes (n=1..Fh). 52: Auto-Rest Timer: E0=Disabled; En=Rest after n*5 minutes (n=1..Fh). Maximum time is 75 (decimal) minutes (represented as EFh). 53: Fixed-Disk Standby Timer: E0=Disabled; En=Standby after n min. (n=1..12h). Maximum time is 18 (decimal) minutes; values over 0Fh carry (EFh, F0h, F2h). 54: LCD Timer: E0=Disabled (stay on); En=Turn off after n minutes (n=1..Fh). (After Load Default Values, locations 51-54 are all E0, disabled). (According to Zenith manual, disabled if Power Saving Mode [see location 55] is disabled, but it appears to operate independently of this setting). 55: Bit 7: Keyclick (at boot): 0=Off (default, which I prefer); 1=On. [NZ] Bit 0: Power Saving Mode: 0=Enabled; 1=Disabled (laptop stays on). Load Default Values sets to 7F (Power Saving Enabled though 51-54 are E0). (51-54 are E0) I.e.: PSM No PSM Keyclick FF FE No Keyclk 7F 7E 56: LCD Display (takes effect when rebooted): FE=Normal (default); FF=Expanded. 60: 00=Memory test on booting (default); 80=Bypass this test (Quick Boot). [NZ] 67: Bits 7,1: Apparently always set (though read/write), no known use. Bits 5,4: Parallel port: 00=LPT1: at 03BCh (default); 01=LPT2: at 0387h; 10=Parallel port disabled; 11=LPT1: at 03BCh, apparently. Bit 6: Parallel port: 0=Normal (Default); 1=Bidirection (e.g. for scanner). Bit 3: COM port (COM1:): 0=On, at port 03F8h; 1=Off. Bit 2: Warning beeps when lid closed: 1=Enabled; 0=Disabled. [NZ] Bit 0: Function of power switch: 0=On/Off; 1=Rest/Resume. [NZ] I.e.: Beeps No Beeps (Value in parens. has bit 3 set) On/Off C6 (86) C2 (82) Default=86 Rest/rsm C7 (87) C3 (83) 6E: Extended two-byte (6E & 6F) CMOS checksum; of locations 40h to 6Dh only. [NZ] 70: Normally A0; was 20 after a test boot on my emergency diskette with a 2MB RAM disk (6:45 AM 10/15/95) then restored when I reboot on C: [NZ]. Default (after using F5 in Setup Page 1 to Load Default Values) is A0. 10/17/95 4ish AM when hard drive became unreadable this was also 20, and was set to A0 after loading defaults in Setup. See location 0E. 28 after a real-mode boot and CPU test (iAPX, Norton 5.0) from A: (11/5) Was 80 on 1/17/96 after taking Zenith apart and then re-assembling it, where main (not CMOS) battery was out of unit for over 24 hours. 73: Normally 0. Can be set to 1 to Stand By or 2 to Suspend, just like Int 15h except slower. 4 (undocumented) will make screen blink briefly after the same delay as the other functions. In the Suspend code in ROM, BIOS writes 02h to this location after reading an FF from CMOS location 78h. When tracing through the code for Int 15h/AX=5307,BX=1,CX=2 (APM Suspend) using Debug, the system indeed suspends or stands by about 1 sec. after writing the 02h to this location. However, if this is done via the Debug I & O commands, via QBasic, or in an assembly-language program (without Int 15h), it takes 13 seconds. Default=0 (both 7/20 & 10/16//95). NOTE: Port ECh is used in recovery routine after suspend, which then leads to several returns that lead, more or less, to the original, suspended code. (Undocumented?) (Cf. location 78h). [NZ: 12/23/95] 75: Was 00 in July 1995; recently set to FF, remains so after Load Default Values (sometimes even set to FF when rebooting). In early Dec. '95 difficulty in rebooting (even from On-Off mode: needed to RESET (press power + lid switch) after not booting) it was 1 when examined; it was actually 2 when I ran C-CHNG.BAS program to set it back to zero. Note: today (12/6/95) battery died so I could not turn on computer with battery power, and turning the AC on gave an green then amber indicator for a few seconds (as is normal), then it changed to red (=can't accept charge). So I used bike light battery charger (14V, 220mA, no resistors used) for 2 minutes to recharge it enough for Zenith's charger to accept it (it did; battery voltage went up from 8V to 13-14V and charging current went down to 200mA). 2 min. split between the two terminals which accept a charge (the other 2 have a voltage but will not accept a charge (0mA on my meter). Was 02 on 1/17/96 after taking apart & re-assembling Zenith (cf. loc. 70h). 77: Was zero, set to FF after a reboot (via "reset button") after keyboard produced gibberish after a reboot when CMOS battery got low for the first time on Zenith (the power management options in Screen 2 (the 50's in CMOS) were OK when I went into Setup; I suspected the CMOS was low at once because as soon as I booted I noticed expanded LCD mode. Then the POST indeed said Real time clock failure and it was set to Jan. 1, 1990 0:00 in the setup screen before I reset it to Jan. 21, 1998 18:20-something. Never before noticed anything but zero in this location. Note: to boot the hard disk I just set it to Auto and the geometry was filled in correctly upon rebooting. [NZ: 21-Jan-1998] 78: Read by BIOS Power Management Routine, where it is set to FF, after which BIOS selects CMOS location 73 (which see). Default=0 (7/20&10/16) [NZ] 7F: FF or 0; not included in 2E or 6E checksums, no known function. Also tried putting 31h in there; no noticeable effect. Last location of CMOS. Set to 01 after 10/15/95 Prodigy error; cold software reboot --> FF. Set to FF on rebooting after changing CMOS, then reset to 00 on next boot? Default (after using F5 in Setup Page 1 to Load Default Values) is 0. Also was FF when this value noted in location 77h (q.v.) on 21-Jan-1998. [NZ: last sentence added 21-Jan-1998]