27th January 2023
Happy New Year everyone! Well - a belated Happy New Year anyway as it's almost February already - crikey! I hope everyone had a chance to tinker with their favourite vintage computers over the Christmas period.
Not ROMX related, but I was able to get some repair work done, which was good. One repair was the main board out of a Commodore 1084S monitor. The main board, neck board and PSU board were sent to me. Looking at the board I'd say that the monitor had been dropped - the phenolic PCB material used on these low cost single sided boards is brittle, and the board had a massive crack in the flyback transformer area, spanning across several tracks. Since the flyback transformer is pretty much the heaviest component on the board, a drop will cause the board to flex in that area, and FR-1/2 phenolic material can break - copper traces and all. The traces were repaired and the boards fired up in one of the 1084 chassis I have and tested with Sammy Lightfoot - all good.
My next repair was a Platinum Apple IIe that I managed to damage when experimenting with peripheral cards. The computer would not boot from the floppy controller and behaved as if the floppy controller was not present. On power-up it beeped, displayed "Apple //e" and dropped straight to the command prompt.
Hoping I hadn't killed a custom chip, I began testing the slot control signals such as IO Select, Device Select, IO Strobe using a logic probe and performing address listings from the monitor to toggle the various pins. They all behaved correctly.
I noticed however that when listing the memory contents from address C600 (floppy controller in slot 6), I was getting intermittent corruption on 2 bits of the upper nibble. ie the upper nibble was changing. Sometimes the listing would look ok, and then when repeating the same list command the upper nibble on a few of the bytes had changed. A8 to 88 for example.
Clearly the main data bus was ok - as I wouldn't have been able to boot up to the Apple //e prompt if not, thus the prime suspect was the 74LS245 octal bus transceiver used to interface the main data bus with the peripheral slot data bus.
Fortunately this chip is socketed - Apple clearly knew that this would be in the firing line, and made it easy to swap out.
After replacing the chip, the problem was resolved - all working perfectly. The physical location of the chip varies slightly depending on motherboard revision, but you will find it either at position B1 or B2 on the board. An easy fix.
Back to ROMX, I had a customer send a Unitron clone to me for repair and installation of ROMX. The machine had failed after hot plugging a peripheral card (Unitron don't put an LED on the board to warn that power is present) and it wouldn't boot anymore - just a blank screen. He had replaced a few of the bus drivers to no avail, and suspected ROM or CPU. On receiving the machine I probed all the clocks and busses on the scope and everything looked good so I pulled the F8 ROM and dumped it - it was totally corrupted. This was unexpected but appeared to be the issue. ROMX to the rescue!
Getting the Unitron to work with ROMX wasn't as easy as expected! From a chip layout perspective, the Unitron motherboard is almost identical to a Rev 7 RFI Apple board, with a few substitutions and a 74LS02 quad NOR gate added at position E2. I assumed that they would be using this to invert the slot Inhibit signal to make it compatible with the 2716 EPROM (on an Apple the INH signal is wired to pin 18 on the ROM sockets and this input is active high on the 9316 masked ROMs that Apple used, but active low on 2716 EPROMs).
ROMX expects an active high input - when the line is pulled low it inhibits the ROMs. I thought it would be a simple matter of pulling the 74LS02 from the socket and jumpering the signal at the socket such that the signal passes straight from input to output without inversion - this didn't work. After pulling the motherboard and buzzing it out, it was found that Unitron handle the Inhibit signal very differently. They actually use 2 of the gates in the 74LS02 and wire in a couple of address lines to qualify INH for D000-FFFF only, and then wire the output to pin 5 of the 74LS138 at position F12. Pin 18 on the ROM's is grounded. The 74LS02 was returned to its socket.
On ROMX we dont use pin 5 on the 74LS138 socket - Apple wire pins 4 and 5 together as Phi1, and we (fortunately) chose to pick up that signal on pin 4. We expect INH to be present on pin 18 of the ROM socket, but since that is grounded on the Unitron then ROMX hardware mods are required. Namely pin 18 was removed from the module, and then a wire run on the underside across to Pin 5 of what would be the F12 74LS138. The black wire is hard to see but it's there :
Finally a CPLD code change was made to invert INH, and with that the Unitron was brought back to life! The faulty F8 ROM was left in the socket as all the onboard ROMs are disabled anyway when ROMX is present.
The next challenge however was the text ROM.
I quickly discovered that Unitron used a different text ROM bit mapping to Apple, so it was a matter of figuring out their layout and customising the flash image to suit. After experimentation, this is what I found to be the text ROM to video display bit mapping that Unitron used to store character data (the letter 'U' from Pigfont used as an example) :
It took a bit of file manipulation (I ended up creating a binary file for bit 1, a binary file for bit 2, and a binary file for bits 3 to 7, and then wrote a utility to OR the 3 files together!), but I was able to create a flash image that works with the Unitron and supports all the additional fonts we added (16 fonts in total).
After all this, I revisited the ROMX+ layout and decided that I would add a second switch to the underside of the board. This new switch allows you to select whether the Inhibit signal is wired to F12 pin 5, or pin 18 of the ROM socket (the NORMAL position). That, in conjunciton with the polarity inversion switch, will hopefully now cover off most clones!