Categories of XT-class 'MFM' hard disk controllers


By 'XT-class', I mean an 8-bit controller designed specifically for the IBM XT (which includes clones of the IBM XT).
By 'MFM', I mean the Seagate ST-506/ST-412 interface.

Below, by 'geometry', I mean the count of cylinders, count of heads, count of sectors per track.  For example, the Seagate ST-225 drive has a geometry of 615/4/17.

If you are unfamiliar with the subject matter, remove any preconceived idea you have about controllers being able to ask hard drives for identity or geometry information.  That kind of functionality does not exist in the ST-506/ST-412 interface.


Single-Geometry Controller

'Single-geometry controller' is a term that I use here to describe controllers that support only one drive geometry, and that geometry is fixed.

The first hard disk controller that IBM supplied in the IBM 5160 (IBM XT) was a single-geometry controller.  It could only support a geometry of 306/4/17.  The subject controller is the 'Variation #1' one shown at here.

A drive of a larger geometry can be used, but the controller will still only use the geometry it supports.  For example, a drive of geometry 614/4/17 attached to a 306/4/17 controller will result in only 306 of the drive's 614 cylinders getting used.

The supported geometry is stored on a ROM on the controller, and that it why it is fixed.


Multi-Geometry Controller

'Multi-geometry controller' is a term that I use here to describe controllers that support more than one fixed drive geometry.

Jumper selection

An example of this is Western Digital's WD10004A-WX1 controller.  The four geometries that it supports are 612/4/17; 306/4/17; 615/2/17; 615/4/17, and the one to be used is selected by jumpers on the controller.

Another example is the Longshine LCS-6210C controller, a controller that supports sixteen fixed geometries, and the one to be used is selected by jumpers on the controller.

Jumperless

An example of this is Seagate's ST11R controller, one with a revision v1.5 BIOS ROM.  There are no jumpers nor switches.  Low-level formatting is accomplished by executing the low-level formatting code in the controller's BIOS ROM.  The low-level formatting code will show a menu of seven Seagate drives (photo), and you indicate which one is attached to the controller.  During the low-level formatting, the BIOS ROM will researve a track for itself and write your selection information there. The controller's BIOS ROM reads that information at boot time.


Dynamic Controller

Also known as 'auto-configure', which is misleading, because it suggests that configuration is automatic, which it is not.

Great flexibility, because you get to specify the geometry of the drive to the controller.  Low-level formatting is accomplished by executing the low-level formatting code in the controller's BIOS ROM.  The low-level formatting code will prompt you for geometry information about the attached drive.

An example of this is Transteque's HC-100 controller.  There are no jumpers nor switches.  Low-level formatting is accomplished by executing the low-level formatting code in the controller's BIOS ROM.  The low-level formatting code will ask you questions about the attached hard drive, questions such as, "NUMBER OF HEADS? (1 TO 8)", "NUMBER OF CYLINDERS? (1 TO 1024)", etc.

Another example is the Konan KDC-230.

The low-level formatting code in the BIOS ROM needs to store that geometry information somewhere, and the norm is a track on the drive that the BIOS ROM reserved for itself.