[comp.sys.att] Modifying PC6300 Hard Disk Parameter Table

Joseph_Joe_McManus@cup.portal.com (12/10/87)

                            Customizing the AT&T PC-6300
                         to use Unsupported Hard Disk Drives



Joseph F. McManus
AT&T Bell Laboratories
Rm 2A-05
1600 Osgood St.
North Andover, MA  01845
ihnp4!mvubs!mfj

December 9, 1987

     This document describes modifications that I made to the hard disk
drive parameter table in the 1.43 version of the EPROMS of an AT&T PC-6300.
I wanted to install a CDC Wren II 94155-86 hard disk drive which has 925
cylinders and 9 heads. This procedure requires access to a device which
will read, edit and then burn the EPROMS.

     In the AT&T PC-6300, two 8K by 8-bit 2764 chips provide 16K bytes of
EPROM which physically occupy addresses FC000 to FFFFF.  The hard disk
drive parameter table starts at address FCF9F or to use the standard DOS
format, FC00:0F9F.  The table contains 16 entries, each of which is 16
bytes long.  Below is the table as seen from debug.  At debug's '-' prompt
type d for display then the address FC00:0F9F then L100 do display 100H or
256 decimal bytes as shown.

C> debug
- d FC00:0F9F L100
FC00:0F90                                               B9                  .
FC00:0FA0  02 05 80 00 00 00 0B 05-0C 87 28 00 00 00 00 64   ..........(....d
FC00:0FB0  02 04 00 01 00 01 0B 05-0C 5A 28 00 00 00 00 64   .........Z(....d
FC00:0FC0  02 04 64 02 64 02 0B 05-0C 5A 28 00 00 00 00 32   ..d.d....Z(....2
FC00:0FD0  01 04 32 01 80 00 0B 05-0C 2D 28 00 00 00 00 64   ..2......-(....d
FC00:0FE0  02 04 80 00 80 00 0B 05-0C 5A 28 00 00 00 00 B9   .........Z(.....
FC00:0FF0  02 05 80 00 00 00 0B 05-0C 87 28 00 00 00 00 64   ..........(....d
FC00:1000  02 04 00 01 00 01 0B 05-0C 5A 28 00 00 00 00 64   .........Z(....d
FC00:1010  02 04 80 00 80 00 0B 05-0C 5A 28 00 00 00 00 80   .........Z(.....
FC00:1020  02 04 00 01 00 01 0B 05-0C 5A 28 00 00 00 00 00   .........Z(.....
FC00:1030  04 05 00 02 00 02 0B 05-0C CB 28 00 00 00 00 D5   ..........(.....
FC00:1040  03 05 D5 03 D5 03 0B 05-0C BD 28 00 00 00 00 D5   ..........(.....
FC00:1050  03 05 D5 03 80 00 0B 05-0C FF 28 00 00 00 00 9D   ..........(.....
FC00:1060  03 07 9D 03 00 00 0B 05-0C FF 28 00 00 00 00 00   ..........(.....
FC00:1070  04 08 00 04 00 04 0B 05-0C FF 28 00 00 00 00 34   ..........(....4
FC00:1080  03 06 34 03 00 01 0B 05-0C C8 28 00 00 00 00 32   ..4.......(....2
FC00:1090  01 04 32 01 80 00 0B 05-0C 2D 28 00 00 00 00      ..2......-(....



















     The meaning of each byte in an entry is explained in the next table:

Byte Meaning

0,1  Number of Cylinders.(low byte, high byte IE. B9,02 = 02B9H or 667 cylinders)
2    Number of Heads.
3,4  Cylinder to Start Reduced Write Current. (low byte, high byte)
5,6  Cylinder to Start Write Precomp. (low byte, high byte)
7    Max Correctable Burst Error Length.
8    CCB Option Byte.
9    Standard Timeout Value.
A    Format Timeout Value.
B    Check Drive Timeout Value.
C,D,E,F   Reserved.  Should be all zeros.



     The entry that starts at FC00:105F is for a CDC Wren II model 94155-67
which has 925 cylinders and 7 heads (039DH = 925 Decimal). What I needed to
do was to change the byte at FC00:1061 from 07 to 09.  Also, when the AT&T
PC-6300 is booted, a checksum is calculated by summing all the bytes in the
PROMS and if they don't add up to a certain value the ROM check fails.  So
since I was adding 2 to one byte, I must subtract 2 from another.  The
entry at FC00:108F is a duplicate of the entry at FC00:0FCF so I could
change the byte at FC00:1091 from 04 to 02 and the checksum would pass.

     In the PC-6300, the even addresses are in the "L" EPROM and the odd
addresses are in the "H" EPROM.  The bytes that I wanted to change were in
odd addresses so I just needed to change the "H" EPROM.  To find the
locations in the EPROM of those bytes I divided the offsets by 2.  1061H /
2 = 830H and 1091H / 2 = 848H.  I pulled the "H" EPROM from my 6300 used a
DATA I/O Universal PROM Programmer to read the EPROM, I then edited
addresses 830H and 848H, then burned a new EPROM.

     The next step was to set the dip switches on the controller card to
the proper setting.  The controller has a bank of 8 switches used for
selecting which entry in the drive parameter table to use.  The controller
is capable of controlling 2 hard drives so 4 switches are used for your
first drive and four for your second.  Positions 3,4,7,8 are for drive 1
and positions 1,2,5,6 are for drive 2.  The following table shows the
switch settings and formatted capacity of all the entries of the table.
The capacity is calculated using the default 17 sectors of 512 bytes each
per cylinder per head.























                                        SWITCH
                              Formatted 3 4 7 8 ->drive 1
Entry     Heads     Cylinders Capacity  1 2 5 6 ->drive 2
  0         5          697      30M     C C C C
  1         4          612      20M     O C C C
  2         4          612      20M     C O C C
  3         4          306      10M     O O C C
  4         4          612      20M     C C O C
  5         5          697      30M     O C O C
  6         4          612      20M     C O O C
  7         4          612      20M     O O O C
  8         4          640      22M     C C C O
  9         5         1024      45M     O C C O
  A         5          981      40M     C O C O
  B         5          981      40M     O O C O
  C         9          925      70M     C C O O
  D         8         1024      70M     O C O O
  E         6          820      40M     C O O O
  F         2          306       5M     O O O O


     When I installed the new EPROM in my PC, the low level format program
recognized the drive as a 69 megabyte unit with 9 heads and 925 cylinders.
I then used AT&T's MS-DOS 3.2 to fdisk and format the drive as 3 logical
drives: two 32 Meg partitions and a 5 meg partition.