If this is the
case, you could try poking this bit with a debugger, and then
running ImageDisk with an optioh of "IO=372" for the secondary controller
address. If this works, let me know and I'll include an option to disable the
primary controller.
If I understood you correctly you rely on the BIOS to service the
interrupt. This might work, but I recommend using an own interrupt
routine. This means setting bit 7 in location 40:3e (for the BIOS) and
sending EOI to the PICs, 20h to port 0a0h for IRQs greater than 7, and 20h
to port 20h for all interrupts. At least this works for me.
Actually, I was full of excrement - Once I dug back into the guts of the floppy
code to look at making these changes, I discovered that I had already put in my
own interrupt handler some time ago... So I don't use BIOS of anything! (I did
use the BIOS interrupt handler in the early stages)
7 = 1 Enable drive 3 motor
6 = 1 Enable drive 2 motor
5 = 1 Enable drive 1 motor
4 = 1 Enable drive 0 motor
3 = 0 Enable diskette interupts and DMA
2 = 0 Controller reset
1 = 0 Select drive 0-1 11 = Drive 3
1 Select drive 2-3 ie: 10 = Drive 2
0 = 0 Select drive 0-2 01 = Drive 1
1 Select drive 1-3 00 = Drive 0
Is this correct?
Yes.
Also from digging into my sources, I discovered that the docs I have
describing Bit-3 are wrong as the sense of the bit is inverted to what
is shown - this is consistant with your description above.
Again - I do
not have such a controller, so it would be very hard
for me to test and maintain the software - If I make the changes
to support this, are you (or anyone) willing to test it?
Yes, of course.
In order to explain why I have an 8" drive permanently connected to my PC:
I also have an IBM 5110 with floppy drive and the only means at the
beginning to transfer data and programs to this machine was by floppy
(I've written a kermit in the meantime). So I started writing a program to
do file based I/O on IBM diskettes (3740 or System/34 format), this means
a mixture of FM, MFM, and different sector sizes on the same disk. And all
this for the secondary FDC, too, because I didn't want to give up my
standard 3.5" and 5.25" HD drives on A: and B:. My program still has some
bugs and needs cleanup, but I will release it if there is real interest.
I also have a lot of disks for the 5110, and I wanted to archive then
using TeleDisk, but TeleDisk is so slow when it comes to e.g. 26
sectors/track, because it needs at least one revolution per sector for
analysis and reading. I've incorporated a simple image function into my
program but it doesn't provide information about interleave, errors etc.
Now here is where ImageDisk might come in!
If your PC is fast enough, ImageDisk will read the track in a single
revolution, however it will take additional revolutions for re-analysis
when the track format changes. Also, for tightly spaced sectors, it
may not be able to read them fast enough, which results in one
revolution per sector. A useful trick in this case is to read them with
a different interleave than the disk is physically formatted - for example,
if the disks are formatted 1:1, then reading them 2:1 will allow one extra
sector to pass between reads (two revolutions total) - The resulting
image will indicate 2:1 interleave (however the sector numbering
will be correct for 2:1) and can be used "as is", or you can use
IMDU to re-interleave it back to 1:1 - but these steps are only
necessary if you are reading a lot of disks and your PC can't
keep up at 1:1 interleave.
Regards,
Dave
--
dave04a (at) Dave Dunfield
dunfield (dot) Firmware development services & tools:
www.dunfield.com
com Collector of vintage computing equipment:
http://www.parse.com/~ddunfield/museum/index.html