[comp.sys.ibm.pc.misc] AT CMOS Fixed Disk Type

dslg0849@uxa.cso.uiuc.edu (Daniel S. Lewart) (09/18/90)

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?
2) What does it mean?
3) Is there a table of type values somewhere?
4) How can I tell when my CMOS battery is dead without opening things up?

Thank you,
Daniel Lewart

rcollins@altos86.Altos.COM (Robert Collins) (09/19/90)

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

dslg0849@uxa.cso.uiuc.edu (Daniel S. Lewart) (09/19/90)

My PC AT has completely recovered thanks to the following people:
	Conway Yee
	Kevin Martin
	Michael Volow
	Robert Collins

Here is some info in addition to Robert Collins' excellent post:

1) The hard disk has a sticker with the disk type stamped on it.

2) There is a useful file in the simtel20/wuarchive archives which prints
   out the hard disk parameter table:

   Directory PD1:<MSDOS.DSKUTL>
   DRVTYPES.ARC  B    5968  880324  Display drive types your AT recognizes