Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 May 1997 00:12:44 +0200
From:      j@uriah.heep.sax.de (J Wunsch)
To:        hackers@FreeBSD.ORG
Subject:   Re: DXF?? format disk
Message-ID:  <19970505001244.IY36391@uriah.heep.sax.de>
In-Reply-To: <199705041911.MAA14427@phaeton.artisoft.com>; from Terry Lambert on May 4, 1997 12:11:56 -0700
References:  <Pine.BSF.3.95q.970504144724.29459B-100000@phoenix.its.rpi.edu> <199705041911.MAA14427@phaeton.artisoft.com>

next in thread | previous in thread | raw e-mail | index | archive | help
As Terry Lambert wrote:

> If they have this density, then they are playing with the encoding
> and sync marks.
> 
> It is likely that this is "read-only" for most PC hardware, since it
> would rely on reduced write head width to get the magnetic domains
> small enough that they would still be discretely discernable on read.

<Terry obfuscation and speculation mode off>

It's far simpler.  The OS/2 distribution is using a non-uniform
geometry.  With equally sized sectors, you have to waste quite a
number of bytes in the gap 3.  (The `extra density' formats FreeBSD is
currently supporting use an interleave of 1:2, so each other sector is
actually gap 3, but this is getting risky regarding interchangeability
between drives with different speeds.)  The OS/2 trick is to use a
non-uniform number of bytes per sector.  The raw capacity of one track
of a 2 MB floppy is 100000 bits, or 12500 bytes.  The total space
consumption for a uniform sector distribution is:

	146 + N * (62 + M + gap3) + gap4

(N = # of sectors, M = # of bytes per sector)

With some minimal values for gap3 (~ 10) and gap4 (~ 50), you get:

(12250 - 146 - 50) / (512 + 62 + 10) => 20 => 20 * 0.5 KB * 160 = 1600 KB
(12250 - 146 - 50) / (1024 + 62 + 10) => 10 => 10 * 1 KB * 160 = 1600 KB
(12250 - 146 - 50) / (2048 + 62 + 10) => 5 => 5 * 2 KB * 160 = 1600 KB

(FreeBSD's highest density even fits 21 0.5 KB sectors.)

With a non-uniform sector distribution you get however:

146 + 50 + 1 * (512 + 62 + 10) + 1 * (1024 + 62 + 10) + 5 * (2048 + 62 + 10)
= 12476 < 12500

This gives you 5 * 2 KB + 1 KB + 0.5 KB = 11.5 KB per track, or 1840
KB per disk (for 80 cylinders).  As you can see, this is close to the
theoretical maximum.  OS/2 wasted a few percent by using a `generic'
18 * 0.5 KB first track that fakes a single large file in a pretended
FAT filesystem.

Unlike Terry's speculations, this can all be done with a stinking
NEC765 FDC, but it requires weird formatting and a driver that can
handle writing it.  I'm not really in the mood to do this much work on
the driver myself, i've already got QIC-150 tapes to carry my bits
around. :-)  They are cheaper (for me, of course), faster, and more
reliable...

-- 
cheers, J"org

joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)



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