2001-03-18 16:02:15

by Leandro Bernsmuller

[permalink] [raw]
Subject: floppy programming


Hi,

some body know if exist or is possible to do one
driver
to makes floppy drive use some type of "balanced" bits
distribution?
The idea is simple: format a disk doing inner tracks
with less bits than
in external tracks.
Maybe is better think in sectors and not bits
banlancing?

I want opinions about the idea, pleace.

Where can I find information about floppy drivers
programming, DMA setup,...?

Thanks,

Leandro

__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail.
http://personal.mail.yahoo.com/


2001-03-19 09:25:10

by Helge Hafting

[permalink] [raw]
Subject: Re: floppy programming

Leandro Bernsmuller wrote:
>
> Hi,
>
> some body know if exist or is possible to do one
> driver
> to makes floppy drive use some type of "balanced" bits
> distribution?
> The idea is simple: format a disk doing inner tracks
> with less bits than
> in external tracks.
> Maybe is better think in sectors and not bits
> banlancing?
>
> I want opinions about the idea, pleace.

Go ahead. Note that ordinary floppies store
the number of sectors per cylinder in the boot sector,
and this is used for easy conversion from
block number (from the fs) to head, cylinder
& sector (for the hardware driver)

You'll break this simple scheme, as you'll need
a table in the driver for how many sectors in track 0,
how many sectors in track 1, and so on up to
the maximum track which usually is 80 although
some floppy drives goes out to 83 or 89 or something.

>I want opinions about the idea, pleace.
>
>Where can I find information about floppy drivers
>programming, DMA setup,...?

Look at the existing floppy driver. Note that
you don't need info on DMA etc., as the driver
already will do all sorts of weird sector layouts.
(look at the manpages for superformat)
The only limitation is that the current driver
likes to use the same number of sectors per track
for all cylinders, but you can change that
using a lookup table.

I am not sure this will help you though, as
pc floppies have constant rotational speed
and I bleieve a constant write rate too.
So you cannot really squeeze more onto the
outer tracks without some kind of hardware
modification.

Well, maybe your drive
can gain a little extra on some cylinders if you
take variable head drag into consideration,
but you'll surely end up with a floppy that
fits one drive only if you go too close
to the rotational tolerances.


Helge Hafting

2001-03-19 14:28:12

by Alex Baretta

[permalink] [raw]
Subject: Re: floppy programming

Leandro Bernsmuller wrote:
>
> Hi,
>
> some body know if exist or is possible to do one
> driver
> to makes floppy drive use some type of "balanced" bits
> distribution?
> ...

I don't remember where I saw it, but I'm sure there is a program
which runs on Linux as well as Win32 that improves the data
capacity of floppies by using one of several possible strategies.
If I remember correctly it is capable of reaching close to 2.0 Mb
of useful space. I tried a search on the internet but was unable
to find it.

Before beginning to code, remember to look for what you need. If
it's anything close to reasonable, you have a nine out of ten
chance that someone, somewhere, has already done it for you.

If you actually find it, send me a link to its URL, please.


Alex

2001-03-19 14:44:53

by Martin Josefsson

[permalink] [raw]
Subject: Re: floppy programming

On Mon, 19 Mar 2001, Alex Baretta wrote:

> Leandro Bernsmuller wrote:
> >
> > Hi,
> >
> > some body know if exist or is possible to do one
> > driver
> > to makes floppy drive use some type of "balanced" bits
> > distribution?
> > ...
>
> I don't remember where I saw it, but I'm sure there is a program
> which runs on Linux as well as Win32 that improves the data
> capacity of floppies by using one of several possible strategies.
> If I remember correctly it is capable of reaching close to 2.0 Mb
> of useful space. I tried a search on the internet but was unable
> to find it.

IIRC it's called "2m".

> Before beginning to code, remember to look for what you need. If
> it's anything close to reasonable, you have a nine out of ten
> chance that someone, somewhere, has already done it for you.
>
> If you actually find it, send me a link to its URL, please.

/Martin


2001-03-19 14:39:13

by Richard B. Johnson

[permalink] [raw]
Subject: Re: floppy programming

On Sun, 18 Mar 2001, Leandro Bernsmuller wrote:

>
> Hi,
>
> some body know if exist or is possible to do one
> driver
> to makes floppy drive use some type of "balanced" bits
> distribution?
> The idea is simple: format a disk doing inner tracks
> with less bits than
> in external tracks.
> Maybe is better think in sectors and not bits
> banlancing?
>
> I want opinions about the idea, pleace.
>
> Where can I find information about floppy drivers
> programming, DMA setup,...?
>
> Thanks,

You need to look at data-books to see how the floppy controllers
actually work (NEC uPD765A/uPD765B). You can format tracks with
different numbers of sectors. However, when you read such a drive
you are stuck unless you have stored (somewhere) information about
the number of sectors each track contains. Otherwise, you have no
way of converting a logical offset into the correct head/cylinder/
sector. You need to have set the correct head, to the correct
cylinder before you attempt to read a sector.

Incidentally, for some dumb reason, sectors are numbered from 1
instead of 0. This adds code, not necessary, if sectors were
zero-based like all the other parameters.

The bit-rate can be set to 500/300/250/150/125 kb/s, but it's
not continuously variable. The bit-rate that will work with a drive
is dependent upon the characteristics of the head and the media.

The head inductance is resonated with circuit capacitance at the
bit-rate at which it is to be used. This means that a 300 kb/s
drive will not function at 500 kb/s.

The 'problem' you describe is as old as magnetic media itself. It
is a problem of "areal density". Spiral recording helps to some
extent. Basically, there is only one track, it spirals from the
outside to the inside. The spacing between sectors is adjusted
automatically because the on-media areal density increases as
the head(s) move towards the center of rotation (hub). You can't
do this with a floppy controller because the heads "step" to
discrete positions.

Cheers,
Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips).

"Memory is like gasoline. You use it up when you are running. Of
course you get it all back when you reboot..."; Actual explanation
obtained from the Micro$oft help desk.


2001-03-19 16:55:30

by Joshua Jore

[permalink] [raw]
Subject: Re: floppy programming

Actually... that sounds like zone bit recording. As I understand it, that
sort of thing is handled by the floppy controller and isn't under the
purview of the OS. Anyhoo, what really got me on this, is I understand
there will be some new floppy drives out soon that'll do this sort of
thing by default. It allows ~33MB of data on a 1.44MB floppy. (let's just
forget how often disks bo bad here)

Pretty cool if can do it w/o changing the hardware.

Josh

___SIG___
$_='while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t=map{$_%16or$t^=$c^=(
$m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t^=(72,@z=(64,72,$a^=12*($_%16
-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271);if((@a=unx"C*",$_)[20]&48){$h
=5;$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$
d=unxV,xb25,$_;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=$t&($d>>12^$d>>4^
$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9,$_=$t[$_]^
(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval

On Sun, 18 Mar 2001, Leandro Bernsmuller wrote:

>
> Hi,
>
> some body know if exist or is possible to do one
> driver
> to makes floppy drive use some type of "balanced" bits
> distribution?
> The idea is simple: format a disk doing inner tracks
> with less bits than
> in external tracks.
> Maybe is better think in sectors and not bits
> banlancing?
>
> I want opinions about the idea, pleace.
>
> Where can I find information about floppy drivers
> programming, DMA setup,...?
>
> Thanks,
>
> Leandro
>
> __________________________________________________
> Do You Yahoo!?
> Get email at your own domain with Yahoo! Mail.
> http://personal.mail.yahoo.com/
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>

2001-03-23 16:32:49

by David Balazic

[permalink] [raw]
Subject: Re: floppy programming

Leandro Bernsmuller ([email protected])

> Hi,
>
> some body know if exist or is possible to do one
> driver
> to makes floppy drive use some type of "balanced" bits
> distribution?
> The idea is simple: format a disk doing inner tracks
> with less bits than
> in external tracks.
> Maybe is better think in sectors and not bits
> banlancing?
>
> I want opinions about the idea, pleace.
>
> Where can I find information about floppy drivers
> programming, DMA setup,...?

The floppy controller on PC is a rather "intelligent"
piece and there is not much to tweak.

It can't even read Amiga floppies, which are not that different.

The amiga controller on the other side is pretty "dumb" and you
can do tricks there ( I wrote a program/driver that could put
1120 kB on DD floppy ; theoretically 2240 kB on HD , but I never tried that )

But it can't change the data density either.

So IMO , you can't do anything useful on PC hardware.

Actually you could instruct the controller to use 18 sectors on inner
tracks and foe example 20 on outer , but then you could just use 20 on all
tracks, which is actually done by people. Even linux supports them, look into
the floppy driver and it's documentation.


P.S.: Most of the replies you got on LKML are irrelevant or wrong :
Helge Hafting ([email protected]) wrote :

> Go ahead. Note that ordinary floppies store
> the number of sectors per cylinder in the boot sector,
> and this is used for easy conversion from
> block number (from the fs) to head, cylinder
> & sector (for the hardware driver)

Irrelevant. The file system ( or any other user of the data )
will only see a sequence of blocks, no matter how they are
physically organized.
All modern hard disks use this technique ( "zone bit recording"
or "variable bit recording" , CDs use it too ) and
even DOS works with them :-)

> You'll break this simple scheme, as you'll need
> a table in the driver for how many sectors in track 0,
> how many sectors in track 1, and so on up to
> the maximum track which usually is 80 although
> some floppy drives goes out to 83 or 89 or something.

You could just always use the same layout ( 18 sectors
on tracks 0-10 , 19 on 11 to 25 , etc ... )
Or sacrify a sector to store a layout ( which would off course
be invisible to anything , but your driver )



Richard B. Johnson ([email protected]) wrote :

> You need to look at data-books to see how the floppy controllers
> actually work (NEC uPD765A/uPD765B). You can format tracks with
> different numbers of sectors. However, when you read such a drive
> you are stuck unless you have stored (somewhere) information about
> the number of sectors each track contains. Otherwise, you have no
> way of converting a logical offset into the correct head/cylinder/
> sector. You need to have set the correct head, to the correct
> cylinder before you attempt to read a sector.
>
> Incidentally, for some dumb reason, sectors are numbered from 1
> instead of 0. This adds code, not necessary, if sectors were
> zero-based like all the other parameters.

Irrelevant. Handled by the driver , if needed at all.

> The bit-rate can be set to 500/300/250/150/125 kb/s, but it's
> not continuously variable. The bit-rate that will work with a drive
> is dependent upon the characteristics of the head and the media.
>
> The head inductance is resonated with circuit capacitance at the
> bit-rate at which it is to be used. This means that a 300 kb/s
> drive will not function at 500 kb/s.
>
> The 'problem' you describe is as old as magnetic media itself. It
> is a problem of "areal density". Spiral recording helps to some
> extent. Basically, there is only one track, it spirals from the
> outside to the inside. The spacing between sectors is adjusted
> automatically because the on-media areal density increases as
> the head(s) move towards the center of rotation (hub).

The same can be done with concentrical cylinders and is done
with all modern hard drives and was done also on the Commodore 64
5.25 inch floppies ( at least they used different number of sectors
per track , I don't know if the actual bit density was variable or not )

> You can't
> do this with a floppy controller because the heads "step" to
> discrete positions.

So you do it with "classic" concentrical tracks.

--
David Balazic
--------------
"Be excellent to each other." - Bill & Ted
- - - - - - - - - - - - - - - - - - - - - -