More than 2 FDDs on a PC (was Archiving software)

Dave Dunfield dave04a at dunfield.com
Sun Dec 18 01:18:10 CST 2005


> > 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



More information about the cctalk mailing list