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