Category Archives: Lanier Model 103

Processor and a monitoring panel (plus holiday oddments)

After the previous discovery that the -12V rail was collapsing under load, I read up on the datasheet for the 8080A processor. It states that the voltage rails must be brought up in a particular order (-5, +5, +12) and if the -5 is missing then there’s a very high chance of damaging the processor. The 8085 negated this and required a single, positive power source- the 8080 has strict requirements.
The 4116 RAM states that it should be brought up with the -5 first then the +5 and then the +12 but any of the rails missing should not cause damage to the chips. Bonus there.
So, I decided just to fling a processor at it. For $4 a pop, I decided that it was worth a shot, having fixed the power supply.

8080A

Same behavior upon power-up. At least I have a couple spares now.

repeating trash

Pulling the video RAM does show a different pattern on the screen so that at least is moderately positive- it initializes the memory in the same fashion each time it it switched on. Pulling the CPU and I/O cards and powering up the video card only liberates a solid beep, no crackling warbles.

voltmeter

Bought some little voltmeters from China- self-powered with internal self-regulated reference. They work from about 2.5 Volts all the way up to 30 which is impressive.

contrast

Also, bought some red transparent acrylic to serve as a mounting plate and to act as a contrast-improving device for the displays.

cut out

Marked up, cut with a hacksaw to size and sanded down smooth. Gently heated it up with my butane torch and bent it into a shape that stands up by itself.

measured

Measured up for the meter locations, drawing the positions on the front in Sharpie.

pva

Spread a thin layer of PVA glue on to each meter. It’s nice because it dries clear and doesn’t attack the plastics.

row of meters

Five meters stuck on and waiting for the glue to dry.

heat shrink

Trimmed the wires down to length and soldered on a length of multi-core wire, and using a spoon as a heat shield, added some heat shrink tubing to each join.

clips

Soldered some test leads onto the other end of the cable and marked them up as to which is which.

plugged in

Got everything hooked up onto the appropriate locations on the PSU.

meter on

With a few labels to show what’s what (and a couple others because I got carried away) the output of the PSU is monitored fully. Everything is in spec, all loaded down with all boards fitted. Now that I have this set up, I’m happier in the knowledge that everything is doing what it’s meant to in terms of power.

Next up, pulling it all out of the chassis to get the analyzer clipped on properly.

new light

Back to the house, I bought a new 4′ Lithonia light fixture to replace the junky Lights of America one that refused to light one tube and barely lit the other. Wired it up, fitted the old 25W tubes and flicked the switch. Nice bright light with instant start, too.

recapped tv

Recapped a TV for someone at work. The ventilation grilles at the back had become lodged with dust due to the location it was kept in (TV stand with no access to the sides) and as such, had cooked itself. Uprated the heat ratings of the replacements (all the originals were 85C, the new ones went in all 105C with a few in really warm locations at 135C) and ran it for an evening. Worked well.

Jeep

Traded the Challenger in against a new vehicle- Jeep Grand Cherokee. A bit more practical than ferrying the family around in a 2-door muscle car.

drip drip

Changed the ignition amplifier in the Renault and also a new distributor cap and arm, along with the crank position sensor. The CPS was at fault causing the non-running but the ignition amp appears to have been a bit marginal because it has a lot more torque now. Also, the power steering has stopped leaking and is holding fluid. The gearbox is leaking though, along with a weep of coolant onto the exhaust manifold that I need to find the source of because it smells when I start the car up. Other than that it is actually working moderately well.

Eighty-Eighty

I decided that I had wanted to give myself a little bit of mental exercise so I started work on the Lanier again.

Lanier on table

This began by dumping the thing on the table, pulling the CPU card out and trying to begin modeling its schematics in KiCAD. This is slow, problem-riddled (the board traces go back-front-back-front and are difficult to follow).

Made a decision to power it up after far too long sat up doing nothing. Pulled the PSU out and brought it up slowly on the Variac.

slowly, slowly

Same old nonsense, the thing didn’t do a whole lot of anything to begin with, a bit of a beep, floppy drive lights on. Hooked it up to my new logic analyzer on what looks to most likely be the bus on the backplane.

logic analyzer

There’s a bit of life, and the behavior begins to change. The floppy drives begin to clatter and rattle. I solder a bypass onto the video card to make the screen always show what’s on-screen (blanking bypass) and it’s got some nonsense changing here and there, occasionally filling the screen with alternating patterns.

logic traces

The logic traces look “dirty”, there’s a lot of glitches and the machine in general seems rather unhappy.

omooikkiakka

Some of the random content on the screen can be moderately amusing though.

Right around this point I was contacted by a guy in Ireland who used to service these things, still has one, schematics, discs and spares- everything I thought I’d never got for it. He says it’s a real early model with the screws holding the case on at the sides (probably circa 1975).
His suggestion was check the power supply, because random freaking-out type behavior is normally bad power.

power

I pulled the PSU and checked the voltages present. Everything was where it was supposed to be. Plugged the boards back in and same problem. Started to probe voltages on-load and found that the -12V rail had dropped down to +0.4V which is rather odd. Put a light bulb across the rail- it flashed then went out. Pulled the video card out and the rail stayed stable.

Zener

The RAM in the machine was all 4116, which requires +12, +5 and -5V supplies to work. I had replaced the CPU board with 4164, which needs only +5 so that cuts down on heat and current requirements significantly. The video board still uses 4116 so would definitely not be working without -5, which is derived from the -12 rail. The circuit is rather simple, a diode to the -12V rail, through a 330 Ohm resistor and the other side of that held to a stable voltage by a 5.1V Zener diode. I pulled one leg of the Zener off, removed all the RAM chips and put the video card back in and powered the machine up. The screen filled with [] symbols, which was expected as the RAM is not present and all lines would remain at zero. The -12V rail stayed stable also so the Zener was suspect. I’ve had them fail in the past and turn into almost a dead short. Found a temporary replacement in my box of stuff (half the Wattage rating but OK for a temp try).
Back into the chassis and still the -12V rail collapses. Start tweaking the crowbar adjustment and manage to get it to an unhappy -11.5V before it would just trip out over and over. Turn the PSU over.. and the -15 rail, which the -12 comes from.. is the only line I’d not replaced the main filter capacitor on.

capacitor

It’s all leaky up top, the vent is showing signs of having vented out. Not good. That’s most likely going short, drawing too much current and when the boards are added to that draw, the over-current crowbar is kicking in and shutting the rail down.
I had a dig and find a 15000uF, 50V capacitor with clip lugs. Soldered that in on short flying leads and powered the PSU up. -12 rail is at 12.04V, -15 at 13.3 unloaded so I adjusted them and then hooked up the computer boards. Made a slight tweak to all the voltages and got them within 0.01V stable.

There’s still something that’s not happy because switched on cold it beeps (with a somewhat crackling warble modulating the beep) and the drives click. Once it’s been on for a while it begins to not beep any more and it still goes a bit haywire but at least now I know that the main supply is good. I need to order the correct screw-in capacitor and a higher Wattage Zener for the -5 rail supply on the video card, but this is positive progress.

Retr0bright pt. 2

Took a fair bit longer than anticipated because a) not much sunshine b) I got the mixture wrong c) very yellow

not so yellow

Not completely done but considerably better. I think the rest shall get a dunking and a sunbath. I do have a UV lamp but I don’t think it’s energetic enough to work.
Some people don’t like the whole Retr0bright thing because it detracts from the device. I don’t think so in this case. The keys are double-shot (the black is molded separately to the white, the black shows through, can’t wear off etc.) so there is a caution to be had in bleaching the black of the keys down to something more pale.
With the keys all white, it’ll look considerably better to my eyes. That’ll count for now.

Retr0bright

Mixed up a batch of Retr0bright and stuck a keycap in it outside in the sun, held down by a pair of tweezers (it’s plastic so floats in the solution)

retr0bright

Shall leave it outside for probably 30 minutes or so, it’s a on-and-off sunny day with a number of clouds.

If it works nicely I’ll do the rest on a slightly larger scale.

More Lanier

After the Qume printer took out the 5V rail on the Lanier’s PSU (The thing is powered from the computer rather than with its own power supply) I desoldered the failed transistor, replaced it with the last remaining one and powered back up:

five volts

Thankfully that worked.

Replaced everything into the chassis, as it was too heavy with everything in to carry. Even with the PSU, cards and floppy drives removed it was a strain to get it in and out of the car.

beep

Back up and where we were at before. Current plan is to replace the onboard 512 byte PROM that it boots from with a modified rig with a larger EEPROM, the extra address legs that the system doesn’t natively use to create pages of code available (16 thereof with the $4 EEPROM) which would be addressable via software. Shadow ROM.

Need to get some flip flops and a couple ZIF sockets and some breadboard and get this built. I’m excited to be able to see if it’ll begin to do sensible things.

Pop, crackle, fizz.

Continuation of the Lanier Diaries here, decided to bring the Lanier up gently on the Variac to see if the lack of printer was the cause of it not booting.

Did so, net result was the printer smoking up and taking the +5V power rail with it. Possibly the root cause of the initial failure.

burned qume

Took the Qume apart and cleaned it out. There were a few nuts and bolts rattling about inside on the circuit board. That might have been part of the reason also.

I shall henceforth be fitting fast-blow fuses to the 5V rail.

Lanier Diaries, Part XV

I’d placed an order for some replacement 4116 DRAM. Apparently these days it’s really hard to source so I took a looksee and found a couple guides that show how to use 4164 (more common) DRAM in the same sockets.

Some 4164 was ordered from Jameco Electronics in California.

DRAM

This guide, called “4116 to 4164” was the one I used to convert the 4164 to be able to be used in a 4116 socket. The 4116 has one less address line so the RAS/CAS allows for 4x the amount of memory in the 4164- we just don’t use one address line (tie it high) and connect up only the ground and +5V, compared to the +12, +5 and -5 supplies the 4116 needs.

Fit them in place:

4164 in 4116 sockets

Powered up and BEEEEEEEEEEEEEEEEE, same result.

Continuation of troubleshooting to follow.

Lanier Diaries, Part XIV

Big update. Little picture.

Arduino set up to dump PROM

Set up my Arduino to dump the boot PROM of the Lanier.

Wrote a cheap-n-cheerful program to extract it:

#include

// Ugly 512-byte PROM dump for TBP1842 512 x 8 Prom.

void setup() {
pinMode(2,OUTPUT); // A0 - chip 1
pinMode(3,OUTPUT); // A1 - chip 2
pinMode(4,OUTPUT); // A2 - chip 3
pinMode(5,OUTPUT); // A3 - chip 4
pinMode(6,OUTPUT); // A4 - chip 5
pinMode(7,OUTPUT); // A5 - chip 16
pinMode(8,OUTPUT); // A6 - chip 17
pinMode(9,OUTPUT); // A7 - chip 18
pinMode(10,OUTPUT); // A8 - chip 19
pinMode(11,INPUT); // D0 - chip 6
pinMode(12,INPUT); // D1 - chip 7
pinMode(13,OUTPUT); // #CS - chip 15 (Drives an LED n the Arduino also)
pinMode(A0,INPUT); // D2 - chip 8
pinMode(A1,INPUT); // D3 - chip 9
pinMode(A2,INPUT); // D4 - chip 11
pinMode(A3,INPUT); // D5 - chip 12
pinMode(A4,INPUT); // D6 - chip 13
pinMode(A5,INPUT); // D7 - chip 14
digitalWrite(2,LOW); // Set the Arduino without pull-up (LOW)
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,HIGH); // Start out with #CS disabled (HIGH).
digitalWrite(A0,LOW);
digitalWrite(A1,LOW);
digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
digitalWrite(A4,LOW);
digitalWrite(A5,LOW);

Serial.begin(115200); // Serial port output speed to PC
}

void loop() {
uint32_t addr = 0; // Initialize address at 000000000.
delay(1000); // Wait 1000 millisecond for everything to stabilize
Serial.println(""); // Print a carriage return to screen
while (addr < 512) { // Maximum address set (512 byte max) digitalWrite(10,bitRead(addr,8)); // Set A8 digitalWrite(9,bitRead(addr,7)); // Set A7 digitalWrite(8,bitRead(addr,6)); // Set A6 digitalWrite(7,bitRead(addr,5)); // Set A5 digitalWrite(6,bitRead(addr,4)); // Set A4 digitalWrite(5,bitRead(addr,3)); // Set A3 digitalWrite(4,bitRead(addr,2)); // Set A2 digitalWrite(3,bitRead(addr,1)); // Set A1 digitalWrite(2,bitRead(addr,0)); // Set A0 Serial.print(digitalRead(10)); // Print A8 to screen Serial.print(digitalRead(9)); // Print A7 to screen Serial.print(digitalRead(8)); // Print A6 to screen Serial.print(digitalRead(7)); // Print A5 to screen Serial.print(digitalRead(6)); // Print A4 to screen Serial.print(digitalRead(5)); // Print A3 to screen Serial.print(digitalRead(4)); // Print A2 to screen Serial.print(digitalRead(3)); // Print A1 to screen Serial.print(digitalRead(2)); // Print A0 to screen Serial.print(" "); // Print a space digitalWrite(13,LOW); // Enable chip select delay(100); // Wait 100 ms for the line to settle Serial.print(digitalRead(A5)); // Read state of D7 and print to screen Serial.print(digitalRead(A4)); // Read state of D6 and print to screen Serial.print(digitalRead(A3)); // Read state of D5 and print to screen Serial.print(digitalRead(A2)); // Read state of D4 and print to screen Serial.print(digitalRead(A1)); // Read state of D3 and print to screen Serial.print(digitalRead(A0)); // Read state of D2 and print to screen Serial.print(digitalRead(12)); // Read state of D1 and print to screen Serial.print(digitalRead(11)); // Read state of D0 and print to screen Serial.println(""); // Print carriage return to screen digitalWrite(13,HIGH); // Disable chip select addr++; // Move on to next address } // Loop to beginning of "while" statement digitalWrite(13,HIGH); // Once the while loop has finished, disable chip select while (1) { // Infinite loop (halt) } }

Which resulted in the following output:
Lanier PROM boot code

Which is good, as it begins with a few sane instructions. I have another set of eyeballs on it right now, someone who knows 8080 assembly better than I.

Lanier Diaries, Part XIII

Started tracing out two likely looking address decoders (last post).
From there, I traced back up from the PROM chip this morning.

prom lines

Slowly getting places. The idea being to be able to remove the PROM chip that the system boots from, stick in its place a debug board that can be hooked up to a PC, to feed instructions and diagnostics code from.

Who knows, might be able to get this to run CP/M relatively well.

Making a serial interface for it would be most excellent.