CRT Board BOM Updates

Uncategorized 1 Comment

I have corrected some mistakes in the bills of materials for the CRT driver boards (the files in GitHub have already been updated):

  • ScopePower U2 part number from TS271CN (DIP package) to TS271IDT (SOIC).
  • ScopePower R3 part number from VR37000003305JR500 (33 meg) to VR37000001005JR500 (10 meg).

If you already ordered parts, I apologize. The TS271CN is a great little op amp and the DIP package version will work fine in a breadboard. That’s what I will do with the ones I accidentally ordered. The 33 meg resistor is useful as a bleeder resistor if you build the post deflection acceleration module (to be posted soon).

Mel, Blackjack, and the LGP-30

Cleverness No Comments

A friend passed on the following articles regarding a rather famous hack:

The LGP-30 was an early computer manufactured in 1956 and sold by the Royal McBee division of the Royal Typewriter Company. It had 113 vacuum tubes, 1450 diodes, a magnetic drum memory, and an oscilloscope screen with a template marking the register bits (instead of the more traditional panel with blinking lights). Mel wrote a lot of code for this machine, including a blackjack demo program, entirely in raw machine code, taking advantage of various quirks in the machine to keep the program very compact.

The Jamtronix blog has a link to a purported paper tape dump of Mel’s program.

Foolishly I decided to figure out the paper tape dump. I succeeded, and it looks like it’s in a format that a bootloader was supposed to understand, but not the bootloader documented in the LGP-30 manual. So first I ran the raw file into a popcount routine to see what the most common letters were. It was a subset of the alphabet, but had all the numbers except for the number ‘1’.


Back then they did a few strange things. One of them was using the lowercase letter ‘L’ as the number 1. Right. Also, since the LGP-30 was hexadecimal, they used extra letters to represent numbers beyond 9, but instead of using a-f, they used fgjkqw.

Then the single quote ‘ is used as a record delimiter, and the letter ‘v’ at the beginning of the block of records identifies the track and sector where the data is to be loaded. Each block has 64 words, 8 per line (which fits perfectly in a single track on the magnetic drum memory). To save space, they omit leading zeros, so incoming characters of 4 bits each are shifted left 4 at a time. At the end of the block is a stray word whose purpose I cannot figure out. I suspect it’s a parity or checksum, but it doesn’t match a simple checksum of all the data.

This machine’s architecture is a clever nightmare. Self modifying code was encouraged and was the standard way to accomplish common tasks. For example, to branch to a subroutine, you do this:

1000: r 3050     <- Set up return address by writing PC+2 to the destination address of the instruction at 3050.
1001: u 3000     <- Unconditional branch to address 3000.
1002: ...        <- Magically we pop up back here!
3050  u 0000     <- Looks like a unconditional branch to location 0 right? No, it's just a placeholder address. Yay, we can do without a link register!

And Mel coded this up in machine code. Probably because the “assembly” mnemonics are not particularly helpful, he must have quickly memorized the opcodes themselves. And why did he use instructions as data? The machine doesn’t decode the upper 12 bits of a word, so if you didn’t use it, it was just wasted. Basically the architecture of the machine naturally led Mel down this slippery slope.

So you might think that Librascope/Royal McBee, based on customer feedback for this machine, must have simplified the design for a later machine, the RPC-4000. And you would be wrong–it’s even worse…

Anyway, here’s my disassembled version: blackjack.txt. The track number is listed first, once for every block. In each block, every line has the sector number first, followed by the instruction mnemonic, following by the track and sector numbers of the instruction’s target. After that are the raw bits. The first two instructions are clear instructions followed by an unconditional branch. This goes to track 49 sector 34. You can follow the instruction flow from there.

As for me, I’m going to stop now before I accidentally learn how to program the LGP-30.


P10 Dark Trace CRT – The Skiatron

Uncategorized 3 Comments

I have a little story to tell. Years ago, I met someone who had a very large collection of CRTs. He had everything from common 3BP1s all the way to rare little gems like the 1EP1 and some vintage prototype CRTs. He showed me an item in his collection which was a rectangular CRT with a P10 phosphor. Finding a CRT with the P10 phosphor is like finding a unicorn. P10 is not really a phosphor; it designates a screen coated with some sort of alkali-halide (potassium chloride) that darkens when hit with an electron beam–a scotophor. The darkening effect lasts until the coating is heated, and typical P10 CRTs have a built-in heater that erases whatever was recorded on the screen.

Anyway, a few years go by and I lose contact with the guy. Rumors are flying around, and it turns out that he has decided to sell his entire collection. Bits and pieces of it start showing up at auction houses and flea markets. Another friend of mine mentions that he picked up a lot of CRTs at an auction house and asked if I wanted to pick through it. While sorting through it, I recognized the rare beast and bought it on the spot.

P10 Dark Phosphor CRT

So I finally got the time to hook it up and try it out. There doesn’t seem to be any documentation. The part number is 06E024P10, made by Thomas Electronics. It works, but not particularly well. Since the pin connections are nonstandard and the electron gun has some extra elements, I’ve probably got it connected all wrong. Anyway, I was able to put some scribbles on the screen.

P10 Dark Phosphor Screen

Notice the dark purple areas. I am shining a lamp through an aperture in the top of the CRT.

P10 Dark Phosphor Screen

Looking through the aperture, you can see how the CRT has a standard green phosphor section on the top third. This might have been used to verify that the tube’s electron gun was in focus. It could also have been used for status information. Most likely this tube would have been used in an early form of storage oscilloscope for capturing single-shot high speed events, although most examples of P10 tubes were designed for radar displays.