Skip to content

PDP-8 Mystery Cache

Hidden : 4/13/2020
Difficulty:
4.5 out of 5
Terrain:
1.5 out of 5

Size: Size:   micro (micro)

Join now to view geocache location details. It's free!

Watch

How Geocaching Works

Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.

Geocache Description:


PDP-8

The PDP-8 is a 12-bit minicomputer that was produced by Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units being sold over the model's lifetime. The earliest model, informally known as a "Straight-8", was introduced in 1965 priced at $18,500 (equivalent to $150k+ in today's money). It was the first computer to be sold for under $20k making it the best-selling computer at that time.

As it is a low-cost design, the architecture is minimal: a single 12-bit accumulator (AC), a 12-bit instruction pointer (PC), a single bit link (carry) register (L) and an optional Multiplier Quotient (MQ) register. Each instruction is 12-bits in length and has a three bit operation code, which gives (sort of) 8 possible instructions. One of the instructions supports microcoded operations (a combination of bits which initiate various operations) giving roughly 34 extra instructions.

The PDP-8 is readily emulated, as its instruction set is much simpler than modern architectures. Several software simulations of a PDP-8 are available on the Internet. Some of them are able to correctly execute DEC's operating systems and diagnostic software. 

Early PDP-8 models came with 4096 12-bit words of memory, a teletype printer with paper-tape reader/punch. There was no operating system, just a front panel with switches. Booting a system began with the most basic front-panel entry of raw binary machine code.

Running Programs

To run a program you would either toggle it using the front-panel switches, or load it from paper tape. Small programs may be loaded manually, one instruction at a time. Larger programs are usually delivered on tape, to be loaded by a binary loader.

To load a program, you would place the BIN format paper tape of your program into the reader. For instance, you might have written a program in PAL-8 assembly langugage and used an assembler (read from paper tape of course) to punch a BIN format paper tape image of your assembled source code. 

The BIN Loader starting address is 7777, so load that into the PC and start it. Once the paper tape has been read, the BIN Loader will halt. The program is now loaded into memory and can be run (typically from location 0200, specified on the tape).

OK, but how would you load the BIN Loader in the first place? The answer is ... from paper tape. smiley 

But I need the BIN Loader to load tapes, I hear you cry. Enter: the RIM Loader!

The RIM Loader is just a few instructions that can be toggled manually. It is just about smart enough to read the BIN Loader from paper tape, in RIM format. That's its only job!

As a bonus, most machines were equipped with core memory, meaning information would stay in memory during a power-off. Once you've got the BIN Loader into core memory, it stays there until overwritten.

RIM Loader

As the machine is completely "empty" when powered on, without a BIOS on ROM to boot it up, it has to be taught how to operate. The first step is to have it read a paper tape.

The RIM Loader consists of 16 instructions that have to be loaded by hand, using the front panel switches. 

7756:6032 KCC The first instruction 6032 (KCC - Keyboard Clear and read Character) goes into location 7756, at the top page of the 4 kW memory.  You would set the switch register to 111 111 101 110 (7756 in octal) and then load that into the program counter (PC). Then you would set the switch register to 110 000 011 010 (6032 in octal) and deposit that into memory. That is one instruction loaded!
7757:6031 KSF The PC increments automatically, so just go ahead and deposit 6031 (KSF - Keyboard Skip if Flag). Lather, rinse, repeat ... There is no room for mistakes.
7760:5357 JMP (7757)  
7761:6036 KRB  
7762:7106 BSW, RAL, CLL  
7763:7006 BSW, RAL  
7764:7510 SKP, SPA  
7765:5357 JMP (7757)  
7766:7006 BSW, RAL  
7767:6031 KSF  
7770:5367 JMP (7767)  
7771:6034 KRS  
7772:7420 SNL  
7773:3776 DCA I (7776)  
7774:3376 DCA (7776)  
7775:5356 JMP (7756)  

BIN Loader

With the small RIM Loader in memory, you can use that to load the more robust BIN Loader from paper tape. The BIN Loader is a much longer program you really don’t want to load by hand.

Place the BIN Loader (RIM format) paper tape into the teletype paper tape reader.

Load the starting address 7756 into the PC, then press continue to run the program. Because the RIM loader needs to be as short as possible, it does not exit gracefully. You have to stop it manually when you see the tape is through ...

The BIN Loader is now loaded into memory. It occupies addresses 7617-7752 and address 7777. Use it to load whatever program you want!

The Cache!

Now that you know everything about the PDP-8, it is time to solve this mystery.

The only clue is this old printout, possibly from the early 70's. A true wizard of the time, would just eyeball the code and tell you what it is supposed to do. 

If a paper tape had been available, it would have been a matter of minutes to fire up your PDP-8 with the attached ASR 33 teletype and run it using the BIN Loader. 

Too bad the the tape is not available! You'll have to trust the source ...



You can validate your puzzle solution with certitude.

Additional Hints (Decrypt)

[myst] Yrnea CQC-8 nffrzoyl be bognva n (iveghny) znpuvar. [cache] Gurer zvtug or n uvag va Pregvghqr.

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)