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

Christian Corti cc at corti-net.de
Sun Dec 18 04:29:22 CST 2005


Let's turn the discussion back to the technical aspects, for now they are 
more interesting than the question about open source...

On Sat, 17 Dec 2005, Dave Dunfield wrote:
> ImageDisk already has an option to specify the FDC hardware address,
> however I do not have a system with two controllers, so I have not gone
> any further toward supporting dual FDCs. What do I need to do to "shut
> down" the primary FDC - it is just a matter of setting bit 3 in the Digital
> output register (See description below).

Yes, clear bit 3 and set bit 2. I do this with a sequence like
  MOV DX, 3F2h
  MOV AL, 4
  OUT DX, AL

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

> From the information you posted, I gather that the logical extension
> to this is:

   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.

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

Christian


More information about the cctalk mailing list