Sunday, 13 October 2013

Building a Board

Building a Board

The initial prototype was hand-wired on a piece of prototyping board. The next version was built on a Adafruit Prototyping Pi Plate and wired up with jumpers. I chose jumpers because I wanted the flexibility to use the same board as a floppy drive controller like the Catweasel project eventually. I will describe the Adafruit board as it's likely to be easier to build than the hand-wired version.

Step 1

Drive Cable Connector
Remove (or if you buy as a kit, don't install) the four pin connector at the end of the board beside the adafruit logo. and install a 34-pin male connector. e.g. Digikey OR903-ND or equivalent. The original TRS-80 had card edge connectors on the drive cable but a pin edge connector is much more convenient for connecting to the Adafruit plate. The slot at the is used to orient the ribbon cable, but since there is only space for a ribbon exiting upwards it is almost impossible to plug in the ribbon cable incorrectly.

I chose to solder the connector to the board. I don't think there would be room underneath the plate to wire wrap this connector. I put a single row female connector beside the header as I wanted to use jumpers. You may want to hard-wire the board if you want a permanent solution.

Cable Connector Soldering

The row of pins nearest the end of the plate contains only ground signals so every pin on that row is connected together and then attached to the nearby ground pin. The other row is connected to the female header on my board but you could choose to solder it directly to the 74LS06 pins instead.

Step 2

The project only requires two 74LS06 ICs and fortunately there is just enough room for two 14-pin IC sockets on the plate. I have put pin 1 of the IC sockets at the end of the board furthest away from the cable socket. The sockets must be positioned so that the pins on the left and right go into the rows of interconnected holes on the right and left sides of the prototype area. As there is a bit more clearance underneath it might be possible to use wire-wrap sockets, but check first before trying this. I chose to solder the sockets to the plate and mount some female headers beside the sockets.

Back of Board
This picture of the back of the board shows the sockets and pin headers soldered in as well as some of the ground and +5 volt power supply lines. (One of the power supply lines is on the other side of the board.) I put two female pin headers on each side of the ICs to allow connecting pull-up resistors and the logic analyzer.

The 74LS06 has ground on pin 7 and 5 volts on pin 14. These need to be connected to the ground and +5 volt supply on the Adafruit board. Each 74LS06 has 6 gates which input on 'A' and output on 'B'. The gates invert the input signals but the software is already written with this in mind. Every signal from the TRS-80 to the Pi is passed through a gate on the 74LS06. This protects the Pi from the 5 volt TTL signal as we use the internal Pi pull-up resistors to provide a suitable input voltage and the 74LS06 is also able to generate a suitable TTL output from the Pi GPIO output signals.

Pull-up Resistors

Pull-up Resistors

As mentioned in a previous post, the TRS-80 Expansion Interface has 150 ohm pull-up resistors on the Read Data, Write Protect, Index Pulse and Track Zero lines. All the other lines must be terminated on the floppy drive or, in this case, but the emulator board. Only one set of termination resistors should be attached to external devices. I suggest you put a jumper between the termination resistors on the Adafruit board and the +5 volt connector so you can enable/disable termination. The picture shows a suitable location for pull-up resistors between the cable connector and the header which connects to the Pi. I use jumper wires to connect each termination resistor but you may choose to hard-wire them and add a single jumper to +5 volts to enable/disable them all.


There is no schematic yet, but a dedicated hobbyist should be able to wire it up from the information provided in these blog posts. Every signal coming from the TRS-80 Expansion Interface goes to an input (labelled 'A') on one of the 74LS06 ICs. Each input should also be connected to a 150 ohm pull-up resistor unless you have an actual floppy drive connected to the cable which is already terminated. The other side of the gate is connected to the corresponding GPIO pin.

Each of the four outputs (Read Data, Write Protect, Index Pulse and Track Zero) to the TRS-80 is connected to an output (labelled 'B') on one of the 74LS06 ICs. The other side of the gate (labelled 'A') for the outputs is connected to the corresponding GPIO pin which is configured as an input. The Expansion Interface already has pull-up resistors for those lines so no additional pull-up is required.