DiskArbiter: dual diskette controller to single FDD pair off-bus adapter.
Richard Thwaites, December 2011.
Purpose:
Maintainers and restorers of 8-bit and 16-bit systems may have systems that rely wholly on floppy disk drives for storage and have limited capabilities to connect with other systems. 8inch and 5 1/4inch drives have no standard diskette configuration and even nominally compatible disks may not read well in a target system. This hinders exchange of data between systems by disk transfer. However, the 34-pin Shugart-style hardware connection to physical disk drives is closely compatible across most systems regardless of diskette configuration or format.
DiskArbiter provides an additional standard 34-pin FDD header on a system hosting working Shugart-standard drives, or on a standalone disk drive cabinet. A second controller (eg a standard PC/AT floppy drive cable) can be plugged into that header on the outside of the case. Both the "host" controller ( eg S100, Tandy, any legacy system or drive expansion unit) and the "guest" system ( eg PC) can be attached to the pair of drives AT THE SAME TIME, enabling transfer of files to and from diskette and any other storage on the guest system.
My motive to build this adapter was the ability to quickly and easily access software on the vast Walnut Creek CDRom Archive and the like, hosted on a modern PC, and making files available to my S100 system running only 360K 5.25" floppies in a unique format.
Functional description:
DiskArbiter ensures that only one of the two controllers has access to the diskette system at any given moment. When a controller initiates a disk access instruction, the MOTOR ON signal (MON= pin16) tells the drive logic to start the drive motors. So long as a drive motor is running, MON is held low by the drive logic. While MON from one controller is active, the other controller attempting access will detect a DISK NOT READY state. The BIOS managing that second controller will hold the disk access instruction in a retry loop. When MON times out at the end of an access procedure and the signal goes high, the second controller will regain access to the drives and will proceed with its instruction.
The guest machine must have a BIOS capable of addressing the type of drive that is connected to DiskArbiter, and the guest system must be running software capable of addressing the format of the diskette(s) in the host system. Dave Dunfield’s ImageDisk, and the 22Disk utility have both been tested to work reliably for the prototype system. Other multi-format diskette programs should also work because DiskArbiter is transparent to BIOS.
Logical description
The schematic shows how DiskArbiter is based on the tri-state logic of the 74LS244 chip. When Controller A sends the MOTOR ON (MON) signal through P1 to initiate access to drive A or B, that signal is also passed through a 7404 inverter to switch off all the output gates associated with P2 (Controller B). The internal logic of the drives holds that MON signal active (LOW), through P3, for as long as necessary to complete the current instructions from Controller A. When MON times out and goes off (HIGH), then Controller B may access the drives, in which case the MON signal from P2 goes low, and all gates buffering Controller A are blocked.
The 74LS244 provides 2 x Output Enable pins, 1 and 19. Each controls the output of 4 gates. A TTL high on those pins blocks (“tri-states”) the output of the relevant gates. This conveniently allows for 8 signals from each controller (P1 and P2) and 4 signals from the FDD (P3) to be selectively blocked using 3 x 74LS244 chips and 1 x 74LS04 inverter.
Configuration
My prototype schematic configures the guest input P2 for a standard AT cable without the "twist". If preferred, P2 could be wired to exchange pins 12 and 14 to represent a "twist" header, could be wired as a second Shugart-standard controller identical to P1.
If the adapter was to be used for some reason only with AT-standard controllers, then P1 should be wired the same way as P2.
If more flexible assignments are required, pins 10,12,14 and 16 could be routed through a few DIP switches for congfiguration, but that is beyond my current or anticipated requirement.
Illustrations in this Directory
The first shows the DiskArbiter board in the first slot of my S100 bus, with the system FDC card next to it. The 34-pin cable from the pair of drives goes to the lower header (P3) in the middle of the DiskArbiter board, and the top center header (P1) links DiskArbiter to the host FDC. The top left header (P2) is extended to the external header on the rear of the cabinet.
The second picture shows the connection of a guest (PC) to the external FDD header on the rear of the host (S100) cabinet.
Third is the "ratsnest" view of the solder side of the card. To help with visual tracing, I pulled individual strands from rainbow-style 16-way flat cable. Color assignments. Are not systematic but generally same color will follow a signal end to end via the IC gates. The VCC and power GND busses are on the component side of the board, except for the pullup circuit (5v through 180 Resistors) that is needed for every input line of the adapter.
Fourth is an example of how KiCad can be used to test the wiring complexity of a project at the prototype stage. Components can be moved around on a virtual PCB with the connections all visible and animated. This helped me position components most conveniently for the type of construction – in this case, point-to-point soldering.
Comments (0)