System/1 Build Log
An ongoing chronology of System/1's construction, and any other related musings.
23rd December, 2017 - On the dangers of foolish shortcuts
Just a quick wrap-up post this time, as I haven't really made much progress recently. Earlier in the month I took advantage of being snowed-in overnight at my parents' place to get around to drawing up the last few sections of the serial board schematic, which includes the configuration register and other details of the system-side connection now that I have a finished design for the interface board. However, it wasn't until this evening that I finally sat down to cross-check the schematic against the prototype on the breadboards.
For reasons that now escape me, I had decided at the end of November to build the interface board before the serial board. Perhaps this was simply due to lack of breadboard space to test the design, or perhaps because the serial board was the more complex of the two and I figured it would make sense to leave building that one until I had a host connection ready through which to test it. Either way, I went ahead with interface board construction straight from the draft schematic; were I a better writer, one would be forgiven for thinking this paragraph was an example of foreshadowing, but as I'm not the better term might be comeuppance.
The construction process itself proved pretty painless, although I did have to take a break part-way through to order fresh supplies of solderable enamel wire. Slightly taken-aback by the price of an assorted 4-pack at my usual supplier, I found a specialist wire vendor on eBay offering the same part number for just over half the price; when it arrived, it transpired that the bobbins were slightly too large to fit in the wiring pencil, so it was off to borrow my mother's sewing machine to wind some onto one of the empty bobbins that did fit. On the plus side, the new wire does seem to solder more easily than the old; I'm not sure whether this indicates it's not actually the RoadRunner-original part, whether it's a manufacturing variance, or whether I simply mistook one of the very-similar enamel colours when trying to match the one I'd started the board with. I'm pretty sure the different colours have slightly different soldering properties, although it could just be my imagination...
At any rate, once I had the board soldered up and cleaned off in the ultrasonic bath (good job I remembered to use sealed-for-washing versions of the DIP switches on it!), I plugged it into the memory bus for a bit of testing via the front-panel controls. The various control signals on the device ports appeared to be responding as expected, which was a good start, but I couldn't read the bank of configuration switches at the expected location. Some fiddling around revealed that I could read them properly if any one switch was turned on, but any two would make it read unreliably and three or more would result in none of them reading at all. After some thought I came to the conclusion that I'd made a daft mistake right at the end of the design process — I'd replaced an AND gate with a wired version consisting of a pull-up resistor and a pair of diodes in order to reduce the chip count and make things fit on the board more easily. The output of this gate was fed to the DIP switches via a set of diodes (to prevent the switches connecting data bits together); when the gate output goes high, any switches that are turned on will bring the corresponding data lines high. Unfortunately I'd neglected to think through how this interacts with the pull-down resistors on the data bus, which happened to be of the same value as the pull-up because those are what I had on hand in 8-resistor-wide packages. Neglecting the voltage drop across the diodes for simplicity's sake, this means that with one switch turned on the voltage on the bus line is half the supply voltage (the pull-up and pull-down forming the two halves of a voltage divider); with two, it drops to a third (two pull-downs in parallel as the bottom half of the divider), etc. — no wonder they aren't reading reliably!
The most practical way to fix this isn't immediately obvious: replacing that wired-AND with a proper gate would definitely be the most sensible option, but the only spaces where the extra chip can fit look a bit awkward (one due to wiring in the area, the other due to mechanical considerations — it's so close to the edge that it might foul the card guides when the board is installed). Replacing the pull-up with a stronger one that can overpower the worst-case 8-pull-downs-in-parallel and hold the voltage high enough to read reliably risks also overpowering the output drivers of the gates that would be pulling the signal low most of the time, so that's definitely the least sensible option. In between those two extremes is replacing the pull-downs, which would be rather fiddly — physically they straddle the data bus on either side of the IDE connector, so desoldering them and soldering in replacements would put other signal wiring in the area at risk of accidental disturbance. It might just be possible to clip the resistor networks off the board from the component side and piggy-back replacements onto the buffer ICs, though, so I'll have to give this some more thought before I decide on a plan of attack.
In the meantime I thought I'd have a quick go at talking to an IDE device, just to wrap up the testing for the time being, so I dug out a CompactFlash-to-IDE adapter and the first CompactFlash card I could find. This happened to be an IBM Microdrive, because if I'm going to do something stupid I figure I might as well do it in style; slotting it into the adapter and powering up the system resulted in no discernable activity. This seemed fairly reasonable, as I expect the drive only spins up when it needs to, so I sent it an Identify Device command via the front panel memory access controls and was just adjusting them to read the status word back when there was a sharp tick from my bench power supply and the vaguest hint of that all-too-familiar smell of unhappy electronics. After hurriedly yanking the power cables out of the PSU I managed to convince myself that I may have imagined the smell, especially since nothing looks obviously distressed and the Microdrive still works in other machines, but either way I was now thoroughly cheesed off with the entire escapade and tossed the interface board to one side until I can test things out in a somewhat less haphazard (and grumpy) fashion.
With the Christmas break on the doorstep, I think I'm going to put my feet up and try not to think about computers of any stripe until the new year. Cheers!