Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Jan 1996 13:15:22 +0200
From:      Dmitry Kohmanyuk <dk@dog.farm.org>
To:        joerg_wunsch@uriah.heep.sax.de (Joerg Wunsch)
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: HELP!!! THIS IS AN EMERGENCY (fwd)
Message-ID:  <199601061115.NAA12788@dog>

next in thread | raw e-mail | index | archive | help
In article <inj.4-30ec46df-3893@bee.cs.kiev.ua> you wrote:
> > c = 10 bits = 2^10 = 1024.  Not 65536.

> This is the BIOS-visible part.  BSD can go beyond this, even for disks
> where the first part must be accessible to the BIOS (like boot disks).

ooh, but when I have >=1024 c disk with non-BSD occupying the first part
of it, I still _cannot_ boot BSD without installing some lame s/w like 
diskmanager (which I hate to use and don't have anyway - and I have LBA
drive and LBA IDE controller).

Or is there LBA support in the works?

Or should I still answer "no" to people with big drives asking can FreeBSD 
do the same as OS/2 (e.g.) does?

> No.  Register 0x1f6 does only use bits 0 through 3 for head addressing
> (16 heads), bit 4 selects the primary/secondary drive, bits 5/6 select
> the sector size, bit 7 is used for ECC usage.  (van Gilluwe, p 525).

> Both are irrelevant for us, since they belong to DOS.

> The INT 0x13 interface traditionally used 10 bits for cylinder
> numbers, and an entire byte for head numbers, though the hardware
> registers limit the head number to 0..15.

hmm, not so precisely. Any AWARD or AMI BIOS since '93 (or '94?) supports
the 12-bit cylinder addressing.  Read Ralf Brown's Interrupt List for details.
or I would just quote it here:


--------B-1302-------------------------------
INT 13 - DISK - READ SECTOR(S) INTO MEMORY
        AH = 02h
        AL = number of sectors to read (must be nonzero)
        CH = low eight bits of cylinder number
        CL = sector number 1-63 (bits 0-5)
             high two bits of cylinder (bits 6-7, hard disk only)
        DH = head number
        DL = drive number (bit 7 set for hard disk)
        ES:BX -> data buffer
Return: CF set on error
            if AH = 11h (corrected ECC error), AL = burst length
        CF clear if successful
        AH = status (see #0138)
        AL = number of sectors transferred
Notes:  errors on a floppy may be due to the motor failing to spin up quickly
          enough; the read should be retried at least three times, resetting
          the disk with AH=00h between attempts
        the IBM AT BIOS and many other BIOSes use only the low four bits of
          DH (head number) since the WD-1003 controller which is the standard
          AT controller (and the controller that IDE emulates) only supports
          16 heads
        AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
          than 1024 cylinders by placing bits 10 and 11 of the cylinder number
          into bits 6 and 7 of DH
SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1"
-


> van Gilluwe claims that the topmost two bits of %dh could be used as
> an extended cylinder number.  Dunno which BIOSes support this.

--
"Emacs is a fine O/S, but I still prefer UNIX."
			    - Tom Christiansen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601061115.NAA12788>