In mid 2015 I was lucky enough to acquire a Northstar Horizon computer from a fellow collector who was disposing of his equipment.
After seeing my father work with MDL (MicroProcessor Developments Limited of Pah Road, Auckland, New Zealand) S-100 bus machines at the Auckland University Medical School back in the early 1980's, I had always wanted to restore an S-100 bus machine.
It may also have been something to do with this guy who appeared frequently in Byte Magazine in 1979 - having gear like that to write software sounded so cool back in 1979!
Shugart MiniFloppy Advertisement from Byte July 1979 - featuring a Northstar Horizon
I believe that this Northstar Horizon was used by the New Zealand Northstar agents "Anderson Digital Equipment" as a support/test machine. It is in stock Horizon configuration with a ZPB Z80 CPU board, HRAM-64 Dynamic Memory board and MDS Floppy Disk Controller board. It came with a large pile of manuals with "Anderson Digital Equipment" labels. Only a single floppy disk drive is installed in the case and a small panel with a push button and switch is installed where the second drive would normally be.
The Northstar Horizon with the ZPB Z80 CPU board in the extender....
Tracing the wiring showed that the push button was an extension of the back panel reset switch. For a test machine that would make sense being a lot easier to access.
The switch is used to enable or disable the PROM option installed on the Z80 CPU board. The installed PROM was a 2708 containing the Northstar HDT "Horizon Debug Tool" monitor program. With the switch in "PROM Enabled" position the machine would boot into the HDT monitor and in "PROM Disabled" it would attempt to execute boot code at 0xE800. In a Northstar this is commonly the boot code of the MDS Floppy Disk Controller. I know all this now... but it took some time to get there.
ZPB Z80 CPU, HRAM-64 and MDS Floppy Controller Boards in the Northstar Horizon
The first test step was to confirm the main power supply worked. I had no idea if this was in 110V or 240V configuration or the state of the large capacitors. Reforming the capacitors and then slow powerup with a variac confirmed that the power supply worked and the transformer was wired for 240V. That was the easy part.....
Powering up the Horizon with only the Z80 CPU board installed (the documentation said that the HDT ROM did not require RAM on the machine.) and a terminal connected to the left serial port (commonly the console) I expected some activity on the terminal but got nothing.
The first check was to use the logic probe to check for activity on the Z80 CPU. This showed activity on /MREQ and /IORQ so the Z80 wasn't dead. Time to check the serial ports....
The Horizon serial ports are driven by two Intel 8251 UART on the motherboard. Checking the /CS pin (pin 11) on the 8251's showed activity which I assumed would be the HDT polling the UART's for received characters. The DTR lines (pin 24) were pulled low which is required for the 8251 to transmit data (subject to the loaded configuration). The clock inputs into the 8251 were correct for 9600 baud. Everything looked right.... but no output to the terminal.
At this point the Z80 seemed to be running but that was all I really knew. There were plenty of questions:
Was the HDT ROM OK?
Did HDT really work with no RAM in the machine?
Was there a problem with the Z80 CPU board?
Was there a problem with the Motherboard?
Had I not understood the Northstar manual and got the serial configuration wrong?
Faced with this many questions I went down the track of removing unknows. The first was the HDT ROM.
Having never seen HDT before I didn't really know what to expect. Executing known code seemed a good way to start the debugging so I wrote a small text program in Z80 assembler that would send 'A' continually to the left serial port and 'B' continually to the right serial port.
Writing the code wasn't difficult but getting it onto the Z80 board was a roadblock. The PROM option on the ZPB Z80 board uses a 2708 EPROM. The 2708 is an early generation part and requires +5V, -5V and +12V (higher for programming). My cheap chinese programmer (a Genius G540) won't even read a 2708 let alone program one.
I still want to solve the reading problem to get a dump of the HDT code (I can't find this archived anywhere on the net) but worked around the problem by building an adaptor for a 28C16 EEPROM.
28C16 EEPROM in 2708 Adaptor
With the 28C16 installed I could see activity on the /CS pin (pin 11) of both 8251 which confirmed my code was reading or writing to the correct IO port and that some of the address decoding on the motherboard was working but still no output from the TxD pin (pin 19) on either.
The test code configured the 8251 to require DTR low to transmit data, checked that DTR (pin 11) was low which it was.
Further probing of the 8251 pins showed unexpected activity on the RESET pin (pin 21) of both 8251 which sent me back to the schematics for further research.
The Northstar motherboard will reset the 8251 on first power up using the S100 Bus /POC line (bus pin 99) but can also be reset in software by writing 0x00 to Z80 IO Port 6.
I knew my software wasn't writing to IO Port 6 so I spent some time studying the motherboard schematic and checking signals with the logic probe.
The 8251 reset line is driven from the output a 74LS132 NAND gate at board position 8D.
The pin 8 output of the 74LS132 showed continuous activity.
The S100 /POC input to pin 9 of the 74LS132 was stable (as expected).
The "software controlled reset" to pin 10 of the 74LS132 showed continuous activity (not expected).
The "software controlled reset" is decoded by a 74LS138 at board position 9B and output on pin 15 connecting to pin 10 on the 74LS132.
The 74LS138 should drive pin 15 low only when the byte written to Z80 IO Port 6 is in the block 0x00 - 0x0F (which my test code was not doing).
74LS138 -> 74LS132 -> UART RESET
At this point I was suspecting the 74LS138 but wanted to be sure before I went to the effort of removing the motherboard from the case and heading off to the local Jaycar store to pick up a replacement part.
I connected the Saleae Logic analyser (a great tool for retrocomputing repairs) to the board and triggered on the pin 15 output going low.
The capture shown below confirmed that the 74LS138 seemed to be at fault.
The value on the data bus was in the range 0x00 - 0x0F the Y0 output on pin 15 should not be going low.
Note: The rows use Northstar schematic notiation so U4 = 74LS138 A2, U5 = 74LS138 A1 and U6 = 74LS138 A0, E6 = 74LS138 G1, E5 = 74LS138 G2B and E6 = 74LS138 G2A.
Saleae Logic Analysis of 74LS138 at board position 9B
Replacing the 74LS138 stopped the activity on the 8251 RESET pins and solved the serial port problem. After replacement and with the test code running, each serial port would send the stream of 'A' and 'B' characters.
Reinstalling the HDT ROM confirmed that also worked with the power on prompt displayed on the console.
It is quite impressive that the machine required only a single part changed. There is a label on the motherboard suggesting the last service was in 1981.
Next step..... testing the Northstar HRAM-64 memory board.
Replacement 74LS138 in board position 9B