Path: utzoo!attcan!uunet!snorkelwacker!apple!altos!altos86!rcollins From: rcollins@altos86.Altos.COM (Robert Collins) Newsgroups: comp.sys.ibm.pc.misc Subject: Re: AT CMOS Fixed Disk Type Keywords: AT CMOS Disk Message-ID: <4084@altos86.Altos.COM> Date: 18 Sep 90 21:46:39 GMT References: <1990Sep18.100108.9119@ux1.cso.uiuc.edu> Reply-To: rcollins@altos86.UUCP (Robert Collins) Distribution: comp Organization: Altos Computer Systems, San Jose, CA Lines: 53 In article <1990Sep18.100108.9119@ux1.cso.uiuc.edu> dslg0849@uxa.cso.uiuc.edu (Daniel S. Lewart) writes: >I just managed to zap the CMOS on my IBM PC AT. In order to recover, I ran >SETUP from the Diagnostic disk. At one point, it asks me for the Fixed Disk >Type which is supposed to be in the range 1-47. Here are my questions: > >1) How can I figure out what the appropriate number is? * Open the computer up and get the drive manufacturer and model number. * Use that number to obtain how many cylinders, heads, and write precomp the drive uses. (no write precomp is -1, or FFFF) * Convert these numbers to hex. * Go into debug and look at F000:E401 (this is the hard disk parameter table. The format of the table is as follows: DW # OF CYLINDERS DB # OF HEADS DW 0 DW WRITE PRECOMP DB 0 DB CONTROL BYTE DB 3 dup (0) DW LANDING ZONE DB # SECTORS/CYLINDER DB RESERVED FOR FUTURE USE As you can figure from this description, each entry is 16 bytes. Therefore, the entry at F000:E401 maps to drive type 1. The entry at F000:E411 maps to drive type two. Etc. * Find the drive type that matches your manufacturers parameters. (just match the cylinders & heads on your IBM AT) * DRIVE TYPE = ((DRIVE_TABLE_ADDR - E401) / 10H) That should take care of you. >2) What does it mean? It is an index into the table I just described. >3) Is there a table of type values somewhere? Yes, it is at F000:E401. After you set the drive type, and boot your computer, look at the INT41 vector. INT41 is a pointer to the drive parameter table entry for device 80h, and INT46 is a pointer for device 81h. If you take the DWORD address at 0:4*41h (0:104h) you will notice it points to your DRIVE_TABLE_ADDR! Hope this helps -- "Worship the Lord your God, and serve him only." Mat. 4:10 Robert Collins UUCP: ...!sun!altos86!rcollins HOME: (408) 225-8002 WORK: (408) 432-6200 x4356