Contents ======== * PC BIOS hard disk parameter tables * Format of the table * 1st Reference * 3rd Reference * Olivetti-386sx16 * IBM * IBM PC 330 (6577) * AMI-286 * Phoenix-A368SX * Phoenix 286 ROM BIOS Version 3.01 * Award-486 * Compaq Deskpro 386 * The number of sectors per track * Hard disk capacities over the years * Capacity Limits PC BIOS hard disk parameter tables ================================== In ancient times one had to specify the parameters of one's MFM or RLL disk to the BIOS, or add them as user-defined type (often type 47 or 48). Often, the table with these parameters is found at 0xe400 (0162000). Below the results found for five different BIOSes and two programs to investigate other machines. See also: * dump.awk, which writes the BIOS area to dump.hex * dtable.awk, which prints the BIOS disk type table from dump.hex Adapted FROM: Format of the table =================== The table is a series of 16-byte entries with the following structure. struct hdtype { short cylinders; char heads; /* XT: 1-8, * AT: 1-16, * ESDI: 1-32 */ short reduced_write_current_starting_cyl; /* XT only */ short pre_compensation_starting_cyl; char max_ECC_data_burst_length; /* XT only */ char control; /* AT and later */ /* bit 7: 1 - do not retry on access error * bit 6: 1 - do not retry on ECC error * bit 5: 1 - there is a bad block map past the last cylinder * bit 4: 0 * bit 3: 1 - more than 8 heads on the drive * bit 2: 0 - no reset * bit 1: 0 - disable IRQ * bit 0: 0 */ char normal_timeout; /* XT only */ char formatting_timeout; /* XT only */ char drive_check_timeout; /* XT only */ short landing_zone; /* AT and later */ char sectors_per_track; /* AT and later */ char unused; }; Unused fields are zero. The pointer to the parameters for drive 0 is found at the location for interrupt 0x41, at 0x0104. The pointer to the parameters for drive 1 is found at the location for interrupt 0x46, at 0x0118. SCSI and ESDI drives do not use this table, and have drive type 0. Adapted FROM: 1st Reference ============= With the IBM AT and early AT clones, CHS figures never appeared on the screen. Armed with the CHS figures (and other figures [e.g. WPC]) you would consult the technical manual for your computer. That would give you a drive type number to enter via your SETUP.EXE For the first 23 drive types, most clones emulated the 23 drive types defined in the IBM AT (that helped the clone makers to justify their "100% IBM compatible" statement). Thus try using a drive type using the following IBM AT list: The first version of the IBM/AT had a ROM BIOS that supported 15 drive types: Type Cyl Hd WPC Ctrl LZ Sec Cap (Mb) ---- ---- -- ----- ---- ---- --- -------- 1 306 4 128 00h 305 17 10.2 2 615 4 300 00h 615 17 20.4 3 615 6 300 00h 615 17 30.6 4 940 8 512 00h 940 17 62.4 5 940 6 512 00h 940 17 46.8 6 615 4 65535 00h 615 17 20.4 7 462 8 256 00h 511 17 30.7 8 733 5 65535 00h 733 17 30.4 9 900 15 65535 08h 901 17 112 10 820 3 65535 00h 820 17 20.4 11 855 5 65535 00h 855 17 35.5 12 855 7 65535 00h 855 17 49.7 13 306 8 128 00h 319 17 20.3 14 733 7 65535 00h 733 17 42.6 15 0 0 0 00h 0 0 Reserved The second version of the IBM/AT extended the support to 22 different types: Type Cyl Hd WPC Ctrl LZ Sec Cap (Mb) ---- ---- -- ----- ---- ---- --- -------- 16 612 4 0 00h 663 17 20.3 17 977 5 300 00h 977 17 40.6 18 977 7 65535 00h 977 17 56.8 19 1024 7 512 00h 1023 17 59.5 20 733 5 300 00h 732 17 30.4 21 733 7 300 00h 732 17 42.6 22 733 5 300 00h 733 17 30.4 The third and final version of the IBM/AT extended the support to 23 different types: Type Cyl Hd WPC Ctrl LZ Sec Cap (Mb) ---- ---- -- ----- ---- ---- --- -------- 23 306 4 0 00h 336 17 10.2 From: 3rd Reference ============= Type Hd Sec Cyl Pre-comp LZ Cap (Mb) ---- -- --- ---- -------- ---- -------- 1 4 17 306 128 305 10 2 4 17 615 300 615 21 3 6 17 615 300 615 32 4 8 17 940 512 940 65 5 6 17 940 512 940 65 6 4 17 615 no 615 21 7 8 17 462 256 511 32 8 5 17 733 no 733 31 9 15 17 900 no 901 117 10 3 17 820 no 820 21 11 5 17 855 no 855 37 12 7 17 855 no 855 52 13 8 17 306 128 319 21 14 7 17 733 no 733 44 16 4 17 612 all 663 21 17 5 17 977 300 977 42 18 7 17 977 no 977 59 19 7 17 1024 512 1023 62 20 5 17 733 300 732 31 21 7 17 733 300 732 44 22 5 17 733 300 733 31 23 4 17 306 all 336 10 24 5 17 977 no 976 42 26 7 17 1024 no 1023 62 27 11 17 1024 no 1023 98 28 15 17 1024 no 1023 133 29 8 17 1024 no 1023 71 30 11 17 1024 no 1023 98 32 9 17 925 no 926 72 33 10 17 1024 no 1023 89 34 12 17 1024 no 1023 106 35 13 17 1024 no 1023 115 36 14 17 1024 no 1023 124 37 2 17 1024 no 1023 17 38 16 17 1024 no 1023 142 40 6 17 820 no 820 42 41 5 17 1024 1024 1023 44 42 8 17 615 512 615 42 43 7 17 1186 no 1186 72 From: Olivetti-386sx16 ================ Type Cyl. Head Sect. Write Land p-comp Zone ------------------------------------- 1 306 4 17 128 305 2 615 4 17 256 700 3 925 5 17 128 924 4 697 5 17 128 696 5 1024 9 17 -1 1023 6 820 6 17 256 819 7 615 8 17 128 664 8 981 5 17 -1 980 9 981 5 17 128 980 10 1024 6 17 -1 1023 11 925 7 17 128 924 12 1024 8 17 -1 1023 13 925 9 17 128 924 14 1024 5 17 -1 1023 15 -- reserved -- 16 612 4 17 128 656 17 612 4 17 -1 663 18 820 6 17 -1 819 19 872 6 17 0 871 20 612 4 17 0 663 21 820 6 26 -1 819 22 820 6 26 128 819 23 615 8 26 384 664 24 820 10 34 -1 822 25 1021 8 34 -1 1023 26 1021 4 34 -1 1023 27 823 10 17 512 822 28 615 8 17 512 614 29 615 8 26 512 614 30 981 5 26 -1 980 31 635 4 33 -1 639 32 615 4 17 -1 614 33 776 8 33 -1 775 34 745 4 28 -1 744 35 965 5 17 -1 964 36 805 4 26 -1 804 37 776 8 33 -1 775 38 -- not used or user defined -- From: IBM === The original AT BIOS (01/10/84) has types 1-14. Later versions also have types 16-N with N=23 (AT, 11/15/85) or N=24 (XT), or N=33, or N=44, At the end of the table one usually had one or two or three user-defined types. Type Cyl. Head Sect. Write Land p-comp Zone ------------------------------------- 1 306 4 17 128 305 2 615 4 17 300 615 3 615 6 17 300 615 4 940 8 17 512 940 5 940 6 17 512 940 6 615 4 17 -1 615 7 462 8 17 256 511 8 733 5 17 -1 733 9 900 15 17 -1 901 10 820 3 17 -1 820 11 855 5 17 -1 855 12 855 7 17 -1 855 13 306 8 17 128 319 14 733 7 17 -1 733 15 -- reserved -- 16 612 4 17 0 663 17 977 5 17 300 977 18 977 7 17 -1 977 19 1024 7 17 512 1023 20 733 5 17 300 732 21 733 7 17 300 732 22 733 5 17 300 733 23 306 4 17 0 336 24 612 4 17 305 663 25 306 4 17 -1 340 26 612 4 17 -1 670 27 698 7 17 300 732 28 976 5 17 488 977 29 306 4 17 0 340 30 611 4 17 306 663 31 732 7 17 300 732 32 1023 5 17 -1 1023 33 614 4 25 -1 663 34 775 2 27 -1 900 35 921 2 33 -1 1000 36 402 4 26 -1 460 37 580 6 26 -1 640 38 845 2 36 -1 1023 39 769 3 36 -1 1023 40 531 4 39 -1 532 41 577 2 36 -1 1023 42 654 2 32 -1 674 43 923 5 36 -1 1023 44 531 8 39 -1 532 45 -- not used or user defined -- 46 -- not used or user defined -- 47 -- not used or user defined -- From: IBM PC 330 (6577) ================= dtable.awk output from a 1999 era IBM PC. Type Cyl. Head Sect. Write Land Cap (MB) p-comp Zone ----------------------------------------------- 1 306 4 17 128 305 10 2 615 4 17 300 615 20 3 615 6 17 300 615 30 4 940 8 17 512 940 62 5 940 6 17 512 940 46 6 615 4 17 -1 615 20 7 462 8 17 256 511 30 8 733 5 17 -1 733 30 9 900 15 17 -1 901 112 10 820 3 17 -1 820 20 11 855 5 17 -1 855 35 12 855 7 17 -1 855 49 13 306 8 17 128 319 20 14 733 7 17 -1 733 42 15 -- not used or user defined -- 16 612 4 17 0 663 20 17 977 5 17 300 977 40 18 977 7 17 -1 977 56 19 1024 7 17 512 1023 59 20 733 5 17 300 732 30 21 733 7 17 300 732 42 22 733 5 17 300 733 30 23 1024 5 17 -1 1023 42 24 925 9 17 -1 925 69 25 699 7 17 256 700 40 26 1024 4 17 -1 1023 34 27 1024 5 17 -1 1023 42 28 1024 8 17 -1 1023 68 29 512 8 17 256 512 34 30 615 2 17 615 615 10 31 989 5 17 0 989 41 32 1020 15 17 -1 1024 127 33 615 4 26 -1 615 31 34 820 6 26 -1 820 62 35 1024 9 17 1024 1024 76 36 1024 5 17 512 1024 42 37 1024 5 26 512 1024 65 38 823 10 17 256 824 68 39 615 4 17 128 664 20 40 496 246 17 3588 0 1012 41 917 15 17 -1 918 114 42 1023 15 17 -1 1024 127 43 823 10 17 512 823 68 44 1027 255 63 0 3 8056 45 -- not used or user defined -- 46 -- not used or user defined -- 47 -- not used or user defined -- AMI-286 ======= Type Cyl. Head Sect. Write Land p-comp Zone ------------------------------------- 1 306 4 17 128 305 2 615 4 17 300 615 3 615 6 17 300 615 4 940 8 17 512 940 5 940 6 17 512 940 6 615 4 17 -1 615 7 462 8 17 256 511 8 733 5 17 -1 733 9 900 15 17 -1 901 10 820 3 17 -1 820 11 855 5 17 -1 855 12 855 7 17 -1 855 13 306 8 17 128 319 14 733 7 17 -1 733 15 -- reserved -- 16 612 4 17 0 663 17 977 5 17 300 977 18 977 7 17 -1 977 19 1024 7 17 512 1023 20 733 5 17 300 732 21 733 7 17 300 732 22 733 5 17 300 733 23 306 4 17 0 336 24 925 7 17 0 925 25 925 9 17 -1 925 26 754 7 17 754 754 27 754 11 17 -1 754 28 699 7 17 256 699 29 823 10 17 -1 823 30 918 7 17 918 918 31 1024 11 17 -1 1024 32 1024 15 17 -1 1024 33 1024 5 17 1024 1024 34 612 2 17 128 612 35 1024 9 17 -1 1024 36 1024 8 17 512 1024 37 615 8 17 128 615 38 987 3 17 987 987 39 987 7 17 987 987 40 820 6 17 820 820 41 977 5 17 977 977 42 981 5 17 981 981 43 830 7 17 512 830 44 830 10 17 -1 830 45 917 15 17 -1 918 46 1224 15 17 -1 1223 47 -- not used or user defined -- From: Phoenix-A368SX ============== Type Cyl. Head Sect. Write Land p-comp Zone ------------------------------------- 1 306 4 17 128 305 2 615 4 17 300 615 3 615 6 17 300 615 4 940 8 17 512 940 5 940 6 17 512 940 6 615 4 17 -1 615 7 462 8 17 256 511 8 733 5 17 -1 733 9 900 15 17 -1 901 10 820 3 17 -1 820 11 855 5 17 -1 855 12 855 7 17 -1 855 13 306 8 17 128 319 14 733 7 17 -1 733 15 -- reserved -- 16 612 4 17 0 663 17 977 5 17 300 977 18 977 7 17 -1 977 19 1024 7 17 512 1023 20 733 5 17 300 732 21 733 7 17 300 732 22 733 5 17 300 733 23 306 4 17 0 336 24 1004 12 17 -1 1005 25 683 16 38 -1 684 26 1024 4 17 -1 1023 27 1024 5 17 -1 1023 28 1024 8 17 -1 1023 29 762 8 39 -1 763 30 814 9 32 -1 815 31 989 5 17 0 989 32 1020 15 17 -1 1024 33 968 10 34 -1 969 34 873 13 36 -1 874 35 1024 9 17 1024 1024 36 1024 5 17 512 1024 37 1024 5 26 512 1024 38 823 10 17 256 824 39 980 10 17 -1 981 40 615 8 17 128 664 41 917 15 17 -1 918 42 1023 15 17 -1 1024 43 823 10 17 512 823 44 820 6 17 -1 820 45 1024 5 17 -1 1023 46 925 9 17 -1 925 47 699 7 17 256 700 48 -- user defined -- From: Phoenix 286 ROM BIOS Version 3.01 ================================= Type Cyl. Head Sect. Write Land p-comp Zone ------------------------------------- 1 306 4 17 128 305 2 615 4 17 300 638 3 615 6 17 300 615 4 940 8 17 512 940 5 940 6 17 512 940 6 615 4 17 -1 615 7 462 8 17 256 511 8 733 5 17 -1 733 9 900 15 17 -1 901 10 820 3 17 -1 820 11 855 5 17 -1 855 12 855 7 17 -1 855 13 306 8 17 128 319 14 733 7 17 -1 733 15 0 0 0 0 0 16 612 4 17 0 633 17 977 5 17 300 977 18 977 7 17 -1 977 19 1024 7 17 512 1023 20 733 5 17 300 732 21 733 7 17 300 733 22 733 5 17 300 733 23 0 0 0 0 0 ... 35 0 0 0 0 0 36 1024 5 17 512 1024 37 830 10 17 -1 830 38 823 10 17 256 824 39 615 4 17 128 664 40 615 8 17 128 664 41 917 15 17 -1 918 42 1023 15 17 -1 1024 43 823 10 17 512 823 44 820 6 17 -1 820 45 1024 8 17 -1 1024 46 925 9 17 -1 925 47 1024 5 17 -1 1024 From: Award-486 ========= Type Cyl. Head Sect Write Land Example p-comp Zone Models ------------------------------------------------------------------ 1 306 4 17 128 305 TEAC SD510, MMI 112, 5412 2 615 4 17 300 615 Seagate ST225, ST4026 3 615 6 17 300 615 4 940 8 17 512 940 5 940 6 17 512 940 6 615 4 17 -1 615 Seagate ST125, Tandon TM262 7 462 8 17 256 511 8 733 5 17 -1 733 Tandon TM 703 9 900 15 17 -1 901 10 820 3 17 -1 820 11 855 5 17 -1 855 12 855 7 17 -1 855 13 306 8 17 128 319 Disctron 526, MMI M125 14 733 7 17 -1 733 15 -- reserved -- 16 612 4 17 0 663 Microscience HH725, Syquest 3250, 3425 17 977 5 17 300 977 18 977 7 17 -1 977 19 1024 7 17 512 1023 20 733 5 17 300 732 21 733 7 17 300 732 22 733 5 17 300 733 Seagate ST4038 23 306 4 17 0 336 24 977 5 17 -1 976 Seagate ST4051 25 1024 9 17 -1 1023 Seagate ST4096 26 1224 7 17 -1 1223 Maxtor 2085 27 1224 11 17 -1 1223 Maxtor 2140, Priam S14 28 1224 15 17 -1 1223 Maxtor 2190, Priam S19 29 1024 8 17 -1 1023 Maxtor 1085, Micropolis 1325 30 1024 11 17 -1 1023 Maxtor 1105, 1120, 4780 31 918 11 17 -1 1023 Maxtor 1170 32 925 9 17 -1 926 CDC 9415 33 1024 10 17 -1 1023 34 1024 12 17 -1 1023 35 1024 13 17 -1 1023 36 1024 14 17 -1 1023 37 1024 2 17 -1 1023 38 1024 16 17 -1 1023 39 918 15 17 -1 1023 Maxtor 1140, 4380 40 820 6 17 -1 820 Seagate ST251 41 1024 5 17 -1 1023 Seagate 4053, Miniscribe 3053/6053 42 1024 5 26 -1 1023 Miniscribe 3053/6053 RLL 43 809 6 17 -1 852 Miniscribe 3650 44 809 6 26 -1 852 Miniscribe 3675 RLL 45 776 8 33 -1 775 Conner CP3104 46 684 16 38 -1 685 Conner CP3204 47 -- user defined -- From: Compaq Deskpro 386 ================== Type Cyl. Head Sect. Write Land p-comp Zone ------------------------------------- 1 306 4 17 128 305 2 615 4 17 128 638 3 615 6 17 128 615 4 1024 8 17 512 1023 5 940 6 17 512 939 6 697 5 17 128 696 7 462 8 17 256 511 8 925 5 17 128 924 9 900 15 17 -1 899 10 980 5 17 -1 980 11 925 7 17 128 924 12 925 9 17 128 924 13 612 8 17 256 611 14 980 4 17 128 980 15 -- reserved -- 16 612 4 17 0 612 17 980 5 17 128 980 18 966 6 17 128 966 19 1023 8 17 -1 1023 20 733 5 17 256 732 21 733 7 17 256 732 22 805 6 17 -1 805 23 924 8 17 -1 924 24 966 14 17 -1 966 25 966 16 17 -1 966 26 1023 14 17 -1 1023 27 966 10 17 -1 966 28 748 16 17 -1 748 29 805 6 26 -1 805 30 615 4 25 128 615 31 615 8 25 128 615 32 905 9 25 128 905 33 748 8 34 -1 748 34 966 7 34 -1 966 35 966 8 34 -1 966 36 966 9 34 -1 966 37 966 5 34 -1 966 38 611 16 63 -1 611 39 1023 11 33 -1 1023 40 1023 15 34 -1 1023 41 1023 15 33 -1 1023 42 1023 16 63 -1 1023 43 805 4 26 -1 805 44 805 2 26 -1 805 45 748 8 33 -1 748 46 748 6 33 -1 748 47 966 5 25 128 966 From: The number of sectors per track =============================== We look at the number of sectors per track for these old drives, and give examples from the seagate archive. Almost all MFM drives have 17 sectors per track, like the prototypical ST506, with 512 bytes per sector. The st419 had 32 sectors per track (geometry C/H/S=306/6/32, total capacity 15.0 MB). Maybe also 26 occurs. Almost all RLL drives have 26 sectors per track with 512 bytes per sector. (And these may well be the same drives that have 17 sectors per track with MFM; indeed, RLL is a denser recording technique.) The st225r had 31 sectors per track (geometry C/H/S=667/2/31, total capacity 21.2 MB), just like the st250r (with 4 heads, twice as large). Also 25 occurs. ESDI drives can be soft sectored or hard sectored dependent upon the controller used. Hard sectored controllers use 34 sectors per track and soft sectored controllers can use 34, 35 or 36 sectors per track. The drive must be jumpered for hard/soft sectoring to match the constraints of the controller. (Here we see the first traces of the "translation" disease: For systems with BIOS types that only support 17 sectors per track, the controller may be jumpered for translation mode. In ESDI translation mode, the controller converts the drive to a 17 sectors per track drive by logically doubling the number of physical heads.) A few other values occur: 53 (e.g. the Seagate st4766e or the Maxtor 9780E)), 54 (e.g. the st2182e), 63 (e.g. the st4767e), 71 (e.g. the Maxtor XT 8800E). Also 26 and 72 occur. IDE (ATA) drives usually have a variable number of sectors per track and here we see that one has to use a geometry that is unrelated to the actual hardware. Sometimes only a single geometry (specified by the manufacturer) will work; usually any geometry that multiplies to the right total capacity will be OK. Thus, we see a great variety of values for the number of sectors per track here, and it is not always clear in which cases this is an obligatory value. Examples: 16 (e.g. the st9100ag), 17 (e.g. the st325ax), 24 (e.g. the st9190ag), 27 (e.g. the st280a), 28 (e.g. the Maxtor 8051A), 29 (e.g. the st1162a), 32 (e.g. the st9051a), 34 (e.g. the st3195a), 35 (e.g. the st3283a), 36 (e.g. the st1239a), 38 (e.g. the st3211a), 47 (e.g. the st9150ag), 50 (e.g. the st3291a), 51 (e.g. the st9385ag), 52 (e.g. the st9240ag), 53 (e.g. the st3271a), 55 (e.g. the st2274a), 56 (e.g. the st2383a), 59 (e.g. the st9550ag), 60 (e.g. the st9300ag), 61 (e.g. the st1401a), 62 (e.g. the st3385a), 63 (e.g. the st3270a). Of course, all modern drives use 63 sectors per track. From: Hard disk capacities over the years =================================== Year: 1983 to 1986 Capacity: 10 to 20 MB Notes: MFM encoding. Hard disk was connected to a hard disk controller card (8-bit ISA). "Hard cards" arrived late 1985 (hard disk physically mounted on a long controller card in the ISA slot). First IDE interface created in 1986 (ATA-1). Year: 1987 to 1989 Capacity: 20 to 65 MB Notes: MFM or RLL encoding. Hard disk was connected to a hard disk controller card (8-bit or 16-bit ISA). Year: 1990 Capacity: 20 to 85 MB Notes: MFM or RLL encoding is still common, but some IDE drives start to arrive. Year: 1991 Capacity: 40 to 120 MB Notes: ATA (IDE) hard disks become more commonplace. Year: 1992 Capacity: 40 to 160 MB Notes: IDE hard disks taking over. MFM/RLL not seen anymore. Year: 1993 Capacity: 40 to 300 MB Notes: IDE hard disks supporting ATA Mode 4 standard. Motherboards start to appear with embedded IDE sockets, so no need for a separate host adapter card using up an expansion slot. Year: 1994 Capacity: 300 to 500 MB Notes: EIDE (Enhanced IDE) arrives - some manufacturers make their own versions called "Fast ATA" or "Fast ATA-2". Year: 1995 Capacity: 300 MB to 1 GB Notes: Motherboards now almost universally come as standard with IDE sockets. Year: 1996 Capacity: 300 MB to 1.5 GB Notes: Introduced LBA (Logical Block Addressing) for larger drives up to 8.4 GB Year: 1997 Capacity: 300 MB to 2 GB Notes: ATA-3 arrived, with 16.6 Mbps (megabits per second). Hard disks started to arrive with S.M.A.R.T. for hard disk health monitoring. From: Capacity Limits =============== Limit Cyl Hd Sec Maximum Capacity --------------- ------ --- --- ------------------------ BIOS 1,024 255 63 7.84 GB, aka "8 GB" ATA Interface 65,536 16 255 127.5 GB, aka "128 GB" Hard Disk 1,024 16 63 504 MB DOS 2.x 16 MB DOS 3.x 32 MB partition size DOS 4.0 to 6.22 2 GB DOS 7.1 124.5 GB From: