Menu

#325 Didaktik 80 cannot detect proper FDD type

future
open
nobody
5
2015-05-12
2015-05-12
No

Omikron's report:

When I put new empty disk to drive A, format it by FORMAT "a:test" it
results to 360KB disk even if 80 tracks DS drive is selected in Options.

We should consider the following:
we have three objects which all have independent parameters:
1. FDD: it could be 1 or 2 sided and can do 40+ or 80+ track - determined by fuse
2. existing disk image: it could be 1 or 2 sided, 40+ or 80+ cylinders - determined by the image itself
3. new disk image: same as "2." - determined by fuse from "Disk options"

We have options for "FDDs" (Options->Disk Options...) only: Disabled, SS40, DS40, SS80, DS80. And there is a "hidden" parameter: auto_geom which used to adapt the FDD's parameters to the opened DISK image. If this is on, then FDD "geometry" can change when a disk image loaded. This is a convenience feature: to make "world" easier for FUSE users.

Now only +3's first drive deals with the (huge and nice and sophisticated ;) DISK (or FDD?) options... :-( All others initialised with auto_geom = 1

Back to the problem(s):
Fuse (without a disk loaded) initialise "auto_geom" FDDs with 42-track capability.
So, D80 detect a 42 track disk drive.
"Media->Disk->...->Insert New" adds a disk according Options->Disk Options settings of this drive.
Now disk drive change their geometry to disk geometry (e.g. 2 heads, 83 tracks)
But Didaktik FORMAT disk as a 40 track (DS-SD)...

My suggestion for a clearer situation:

We should
"Options->Disk options" should be "Options->Disk drive options"
We extend with an "Auto" item which means auto_geom = 1:
So we can select drive geometry as one of:

  • Disabled
  • Auto
  • SS SD
  • DS SD
  • SS DD
  • DS DD

The geometry of a new disk should be selected from a list at the time of insert.

We need two list, one for when disk drive geometry is auto:

  • SS SD
  • DS SD
  • SS DD
  • DS DD

Note: This is a "tricky" list, because SD and DD really disk drive parameters ;-).
Note 2: I don't know how Russians clones' Beta interfaces cooperate with HD drives??? (so may we add DD HD - IMHO there was no SS HD disk on the market)

..and one for when disk drive geometry not auto:

  • Auto
  • SS
  • DS

But this alone is not a solution to the problem!

Let's see:

Disk interfaces need to know about drive and disk parameters.
drive geometry can be detected several way:

  • hardcoded (may +3, Opus?)
  • user supplied and stored on system disk (+D, Disciple)
  • auto detect (Beta128, Didaktik)

Disk interfaces can detect disk geometry several way:

  • hardcoded (...)
  • guess from drive parameters (...)
  • read from disk itself (Beta128?, Didaktik)

So "auto_geom" works well if:

  • inserted disk geometry exactly that what disk interface waiting for (even hardcoded, or detected parameters)
  • interface can read the right geometry from disk, (and does not deal with the detected drive geometry)

We have to distinguish between two "operating modes":

  1. We have users, who just want to load a disk image and use it...
  2. We have users, who want to insert empty disks and format it and want to do any other tricky things

Looks like in "operating mode" #1 the "auto_geom" feature not faild (or not as many times to somebody report it)
But in "operating mode" #2 the "auto_geom" feature sometimes fails if we insert a new "unformatted" disk. (Hmm... may "+3 disk need preformatted media" is a similar issue???)

So, there should be an option to easily switch from "basic" usage to "expert".
In "basic" mode:

  • only enabled 1 disk interface at once
  • only have minimal drives (e.g. 1 or 2 drive for every interface, only 1 or two microdrive ...)
  • disk drives work in "smart" mode:
    • appropriate predefined geometry of drives
    • "auto_geom" if open existing disk image
    • appropriate predefined media if "insert new", and there is no "disk geometry selection dialog"
    • auto insert feature (if speccy try to use an empty drive, fuse automagically insert a blank disk)

In "expert" mode:

  • we can do "extreme" things (e.g. more than 1 disk interface, etc...
  • we have maximum number of drives
  • we can "freely" tune drive and new disk parameters

The UI should reflect the two mode:
e.g. in "basic" mode for the "Media->" should be one compact ("basic") menu:

  • Tape...
  • Microdrive 1
  • Microdrive 2
  • Disk A
  • Disk B
  • IDE
  • Cartridge

or something like...

In "expert" mode the "old" menu structure is o.k. (or we make an "Expert" menu, where all "non-basic" menu points stay.

It would be nice, if we can hide (not just disable) menu items (may it easier for GTK/Win32 than Widget)... so we can do a more "adaptive" menu system.

O.k. I know, I run a little ahead... ;-)

IMHO the following may be an acceptable solution as first step:

  • We use the "old" "Disk Options" (as disk drive/disk options)
  • We add a new option "Auto drive geometry" which do "auto_geom" when user inserts an existing disk (this is a global option for all disk drives)
  • (We add a new option "Auto insert disk" which do "auto insert" as decribed before.)

Note:
About SD vs DD disks:
The DD and SD is really a disk drive parameter: DD drive has narrower head and their stepping mechanic has 2x more position than a SD drive. But media used in it the same! So all SD floppy will be DD in a DD drive.

HD is an another beast, because that case the drive and the disk are both different.
When SD -> DD is an effect of denser tracks (48 TPI -> 96 TPI), than DD -> HD is effect of denser bits (~52000 BPT -> ~100000 BPT). So HD disks have different magnetic coating than SD/DD.

Related

Patches: #333

Discussion

  • Gergely Szasz

    Gergely Szasz - 2015-05-12

    Here is a patch, with some other little cleanup around fdd_init().

     
  • Fredrick Meunier

    In my opinion auto_geom should at least match the disc configuration and preferably not be the default.

    Spectrum software does not expect the hardware platform it is running on to change under it and the disk drive is part of that configuration.

    In my opinion no hardware changes should apply without a reboot. That also is closer to the recently re-requested VM style approach to fuse machine configuration.

    Changing the underlying configuration is also very confusing to the user, particularly anyone who will not have read the long list of behaviours you outline in this issue.

     

Log in to post a comment.