eric@chronon.UUCP (Eric Black) (05/01/86)
People have asked how the expansion floppy for the Amiga works, why can't you have more than one, how do you add more than that,... Attached is a how-to article describing the way the floppies work, and how I added df2: and df3: to my system. It's a bit long, but meaty, and (I hope) fairly understandable. AMIGA Expansion: Adding a Third and Fourth Floppy Disk (c) Copyright 1986 Eric D. Black (pass it around freely, just leave my name attached) The floppy drives supplied by Commodore are NEC FD1035. I have successfully used Toshiba FDD-4403AQK-02. They are available for approximately $100 each from various sources (I got mine at Halted Specialties in Sunnyvale for $99). They are plug-compatible with the NEC units. In fact, when I first got them, I removed the NEC drive from my Amiga 1010 expansion drive and tried them in its place with complete success. The Toshiba drives are much quieter than my NEC drives; in fact, the disk validation process is nearly silent. My expansion drives (a total of four floppies on my system) have been in operation for about three weeks now with no problems. The electronic part is fairly easy, and the mechanical aspect is also quite easy if you don't worry about shielding and RFI (if you start seeing garbage on your TV screen, can't hear radio stations any more, or receive threats from neighbors, you better shield it thoroughly) -- I won't go into that here. I didn't shield mine, but I live out in the woods and have no neighbors to complain. The drives have two connectors, one a 34-pin 3M-style pin header for control and data, the other a 4-pin connector for power. Mating connectors should be available from various sources. The 3M connector is easy, but I kludged up power connections just using connector pins for subminiature-D connectors, a practice I DO NOT recommend, and intend to remedy as soon as I find suitable connector bodies [using one side row of a 3M-style connector should work]. Power connections are to each drive according to the capacity of the power supply; the internal supply on the Amiga can handle ONLY the internal drive and ONE external floppy. Other drives (i.e. df2: and df3:) must have their own power supply, which they can share if it has the capacity (5V @ 0.8A, 12V @ 0.34A). The 4-pin power connector gets 5V on pin 1, 12V on pin 4, and ground on pins 2 & 3. The 34-pin data/control connector gets most of its signals directly from the 23-pin daisy-chain connector. A few come from a simple 2-chip drive select interface circuit. Disk drives are daisy-chained using 23-pin subminiature-D connectors (similar to the 25-pin connectors used for RS-232). Female connectors (DB23S) provide signals to the NEXT drive in the chain (the connector on the back of the Amiga is female). Nearly all signals on the 23-pin connector go straight through to the next drive. Those that don't are power (this forces you to provide external power for all drives after the first Page 1 Adding a Third and Fourth Floppy Disk expansion drive) and the unary drive select lines; these are shifted one place down so that each succeeding drive on the chain is automatically assigned the next drive number. The pins connected directly from DB23P (male, daisy-chain IN) to DB23S (female, daisy chain OUT) are: Pin Signal 1 RDY* 2 DKRD* 3-7 Ground 10 DRESB* 11 CHNG* 13 SIDEB* 14 WPRO* 15 TK0* 16 DKWEB* 17 DKWDB* 18 STEPB* 19 DIRB 22 INDEX* (the * indicates active-low signals). The drive select pins which are down-shifted one place by each drive are: Pin Signal 9 SEL2B* 20 SEL3B* 21 SEL1B* (i.e. pin 20 coming in goes out on pin 9, pin 9 coming in goes out on pin 21, pin 21 coming in goes to the drive interface circuit). The following pins on the DB23P (daisy-chain IN) connect directly to the 34-pin connector on the disk drive (all odd-numbered pins on the 34-pin are connected to ground): Page 2 Adding a Third and Fourth Floppy Disk DB23P 34-pin Signal 1 34 RDY (also connected to circuit below) 2 30 DKRD* 11 2 CHNG* 13 32 SIDEB* 14 28 WPRO* 15 26 TK0* 16 24 DKWEB* 17 22 DKWDB* 18 20 STEPB* 19 18 DIRB 21 10 SEL1B* (also connected to circuit below) 22 8 INDEX* As far as I can tell, pin 10 (DRESB*) is passed directly on to the next drive, but is not used by 3.5" external drives. It may be used by the 5.25" drives. The interface circuit is basically a latch (flip-flop) and high-current driver. When the drive is selected, the latch loads the state of the motor control line; thus, if the drive is selected with the motor on, then de-selected, the motor keeps running (and up to speed). To stop the motor, the drive must be selected with the motor control line off. This function is accomplished with a 74LS74 D latch and a 53238P 2-input NAND open-collector buffer/driver. The latter part used by Commodore turns out to be available only from Mitsubishi in Japan, and I have not yet been able to find a suitable single-chip substitute which is commonly available here. The highest current rating I can find for a standard quad NAND driver chip is 60ma, and 180ma is required here. My solution -- use an ordinary 74LS00 quad NAND gate and a 74LS06 hex inverter for the logic functions required, and discrete transistors for the current handling (hey, this is a homebrew project, right?). Three IC's, four 2N2905 general purpose NPN transistors (you can use the ubiquitous 2N2222), and a few random resistors is all it takes to handle two disk drives. My circuit is built to handle two drives, all in one package. Since 23-pin D connectors are hard to find right now, I made the design assumption that my expansion drives are always the last on the daisy-chain, i.e. I don't have to find a DB23S for another disk to plug into. DB23P (male) connectors are easily made from 25-pin connectors: with pin-insertion types, just don't insert the two pins at one end (13 and 25); with solder-type connectors, snip off those two pins. Carefully "mash" the now-empty end of the shell so that it clears the standoff/tie-down studs. You may need a connector or two to practice on... Be aware that the pins formerly numbered 14-24 are now pins 13-23! Female connectors may be made from 25-pin connectors using a file or grinder. Page 3 Adding a Third and Fourth Floppy Disk A description of the circuit follows (it's not easy to represent a schematic diagram with a character display; gee, wouldn't an ASCII-compatible graphics command stream be handy right here? Pretty soon I'll be able to do this by including the NAPLPS data stream to paint a picture on your Amiga screen... Oh, WELL...). This description should be easily understood by techies -- draw it out! Schematic diagrams are also available from me by mail; send a SASE and wait -- drawing it is faster! I hope to lay out a PC board for this, it's pretty simple, but haven't yet, and my unit is wire-wrapped. If there is interest, I may be convinced to make such an item available at reasonable cost... DB23P pin 8 (MTRXD*) goes to the D inputs of the latch (pins 2 and 11 of the 74LS74), with a 1K pullup to VCC. Latch presets and clears (pins 1, 4, 10 and 13) are pulled high (disabled). DB23P pin 21 (SEL1B*) goes through an inverter (pin 1), the output of which (pin 2) goes to the latch clock (pin 3) and one input of a NAND gate (pin 1). The other input of that NAND gate (pin 2) comes from the Q (non-inverting) output of the latch (pin 5). The output (pin 3) goes to another inverter (74LS06 pin 3), thence (pin 4) to the 10K series base resistor of a 2N2905 NPN driver transistor. The emitter is tied to ground, the collector goes to the RDY* line of the disk drive (pin 34 of the 34-pin connector). The Q* (inverting) output of the latch (pin 4) goes to the series base resistor of a second NPN driver transistor, whose emitter is also tied to ground, and whose collector goes to the MTR0D* and LED* drive signals, pins 4 and 16 on the 34-pin connector. An analogous circuit takes care of the second drive, using the other half of the 74LS74, another NAND gate, and two more inverters. That's it! Be sure to pull up all unused inputs, as well as logic inputs taken directly from the daisy-chain connector. If you find and use a suitable open-collector NAND gate, be careful to use pullups when feeding that OC output to another logic input (and let me know what part you used!). The discrete tran- sistor circuit described here is not fancy, but it gets the job done. NOTE that each floppy drive takes about 50K bytes of memory for track buffering and other overhead; you may find that you can't always afford the 100K for these additional two drives There may be a software way to tell the Exec to add or delete the drives without rebooting, but I don't know it yet. Page 4 Adding a Third and Fourth Floppy Disk If you build an expansion floppy unit for yourself, please let me know about it ({sun,pyramid,hplabs,amdcad}!chronon!eric). Conversely, if you would be interested in obtaining a small PC board with the necessary interface circuitry (maybe even cables and connectors, who knows?), let me know that. Having more floppy drives sure does cut down on disk swapping, but I've found that 512K is not enough (what an understatement!), and am constructing an expansion memory unit for myself. Initial plans are to ignore the auto-config protocol (Kickstart 1.1 doesn't do that, anyway), and just put a suitable command in :s/Startup-Sequence to tell Exec about the additional memory, but eventually I would like it to auto-config. I'll let y'all know how it goes. Special thanks to Rick Frasier (now mips!rick) for helping sort all this out! Page 5 -- Eric Black "Garbage In, Gospel Out" UUCP: {sun,pyramid,hplabs,amdcad}!chronon!eric WELL: eblack BIX: eblack