Category Archives: Lanier Model 103

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.

Lanier Diaries, Part XI

Had a bit of a poke about and started looking at the circuitry that drives the video output.

Diagram

Inverter is driven from U5, a 7410, 3x triple-input NAND gate. Managed to clip the scope to each pin to see what it was doing. All three inputs have to be on (+5v) for the screen to draw.

Pin 9. A snapshot taken in storage mode. We have the telltale signature of video data.
pin 9

Pin 10. Sat flatline at 0v.
Pin 10

Pin 11. Looks like vertical retrace blanking.
Pin 11

So, we have valid, sane looking signal on two of the 3 pins.. let’s drive that flatline high and enable the throughput.
Soldered a wire to the pin:
Pin 10 override

Hooked it all back up, powered it up and stuck the other end of the wire in the +5v rail. Leaned round to the front to take a look…
Trash

Screen full of trash! Whatever’s in the video RAM at the time it was turned on. Hitting reset did nothing to the pattern.
Nicely defined characters, so the character ROM’s still good. Contrast on the screen needs adjustment.
closeup of trash

We are making progress. The video card in that case, is mostly alive.. the CPU isn’t giving it a clear instruction and it’s not initializing. Might just be bad RAM or a bad feedback somewheres.

Further investigation to follow. Stoked 🙂

Lanier Diaries, Part X

Things have been going in fits and starts. I’ve had some very helpful direction from a chap on the Vintage Computer Forum, which has led to a bit more troubleshooting.

Replaced some more capacitors that were bad.

caps

That got pretty much everything stable on the power supply. I cleaned up the main power connector pins and plug, that got the voltages to the boards stable also. Got the voltages set up to within 2% so that’s working properly.

Started troubleshooting to see if things were alive. Pulled the keyboard off and vacuumed out underneath it.

keyboard off

Took a look at the keys, put a meter to a few of them and got funny results.

underside of kbd

It’s a Micro Switch keyboard, manufactured by Honeywell. The reason for the odd readings is that the switches are operated by the Hall effect, magnetic sensors within the switches, with no moving parts or contacts other than the switch plunger itself.

keyboard

Had a poke about on the board, and the big controller chip appears to be alive- the keyboard seems to be a discrete device, and thoughts are it’s an RS232 style ASCII-encoded device. Makes sense to be.

Scope on the keyboard

Pressing keys makes various codes on the pins of the controller chip appear:

keyboard traces

Had a better look at the RAM and found the correct pinout for the chips. Looked at the Q (output) line. There’s definitely something happening (the camera on my phone appears to be dying):

Qout on CPU RAM

After this, attention turned to the monitor and video card, as it’s not really doing a whole lot.
The suggestion was to try and drive one of the video RAM lines high or low to see if it caused the generation of junk on the screen- this would cause the request for a lot of empty “space” characters to be drawn normally.. driving the line high or low would force different character codes and hopefully fill the screen with trash.
Drove the output high from Vcc (+5v).

Qout high

Result? Nada:

raster

Okay, so we can try driving the line low instead:

Qout low

Result? The same neat(ish) raster.

more raster

So, with raster, at least the V-sync and H-sync are operational. Poked about, got a nice happy V-sync:

v-sync

The input to the monitor, looking at the board from the back, left to right has the following inputs:

Ground | V-sync , Intensity , n/c , H-sync , n/c , Brightness COM , Brightness , Brightness inverted

Took a wire and put it from 5V to the brightness input that makes the dot on the screen bright. Up until now I did not know if the monitor was actually working- that is, if it was fed a signal, would it display said signal on the screen?

brightness force

Yes, it does.. and because it’s connected to the circuit board still, there’s a ghostly image on the screen also.

ghostly image

Traced back from the pins to the chip (7406, buffer inverter) and poked with the scope to see if there was anything on the input. Nothing much, just a high signal (expected), so grounded the input pin.

Got this on the screen:

ooooooooooo

Lots of squares! Very poor contrast (to be expected, due to the grounding of the pin), but I need to see if it’s actually coming from further back or if the chip, loaded down is making the image poor.

Junk on the screen is better than a blank screen.. it’s signs of life, and just means there’s troubleshooting ahead. It’s something to start from, at least!