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:
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:
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:
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:
Disk interfaces can detect disk geometry several way:
So "auto_geom" works well if:
We have to distinguish between two "operating modes":
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:
In "expert" mode:
The UI should reflect the two mode:
e.g. in "basic" mode for the "Media->" should be one compact ("basic") menu:
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:
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.
Here is a patch, with some other little cleanup around fdd_init().
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.