LGP-30
The LGP-30 (Librascope General Purpose, model 30; Librascope / General Precision, 1956) was designed by Stan Frankel — a Manhattan-Project and ENIAC veteran — and marketed by Royal McBee. This is an original implementation, written from scratch for emulators.org. A deliberately minimal machine of about 113 vacuum tubes, it used a single magnetic drum for all of memory and the working registers, sixteen one-address orders, and a Flexowriter typewriter for the whole of input and output — small and cheap enough for one person to run, a landmark low-cost computer. This core models the drum of 31-bit words (64 tracks of 64 sectors = 4096 words) with the Accumulator A, Counter C and Instruction register R, the sixteen orders named by the Flexowriter letters Frankel assigned them (z b y r i d n m p e u t h c a s), and Flexowriter output.
It boots with a program already running: a HELLO WORLD demo typed onto the paper, five Flexowriter characters packed into each 31-bit word and printed one at a time by the print order while the accumulator shifts between characters. The whole machine — the accumulator, the counter, the instruction register and every drum word — is exposed to the shared debugger, so you can single-step the fetch-execute cycle, set breakpoints on a drum address, watch a drum word for writes, and read the program back as a disassembly of the sixteen LGP-30 orders. A second configuration counts down 9 8 7 … 0, subtracting one from a drum counter each pass and testing the accumulator sign to close the loop. An on-screen console gives Run, Stop, Step and Reset with a Flexowriter keyboard whose letters type onto the paper and feed the input order. (Authored timing simplification: the real LGP-30 is bit-serial, each order waiting for the drum to bring its operand sector under the heads; this core steps at word level, one order per step, while still advancing the drum sector so the rotation and the optimum-coding idea stay visible.)
Runs on: Web browser
LGP-30 Online Emulator
Play LGP-30 using JavaScript directly in your browser.
Controls
Configurations
| Configuration | Emulator | Machine | OS | Legal | |
|---|---|---|---|---|---|
| Flexowriter hello | LGP-30 | LGP-30 | open | Open ⛶ | |
| Countdown | LGP-30 | LGP-30 | open | Open ⛶ |
Chips
Notes
Architecture
The LGP-30 (Librascope / General Precision, 1956) was designed by Stan Frankel — a Manhattan-Project and ENIAC veteran — as a deliberately minimal machine: about 113 vacuum tubes, a single magnetic drum for all of memory and the working registers, sixteen one-address orders, and a Flexowriter typewriter for the whole of input and output. Marketed by Royal McBee, it was small and cheap enough for one person to run — a landmark low-cost computer. This authored core reproduces its defining ideas:
- Drum memory of 31-bit words. 64 tracks of 64 sectors each = 4096 words; a word is addressed by (track, sector). The three registers — Accumulator
A, CounterCand Instruction registerR— were themselves single-word recirculating tracks on the real drum. - Sixteen one-address orders. Each named by the Flexowriter letter Frankel gave its 4-bit code, so a program reads as letters: bring, add, subtract, hold and clear stores, jump and sign-test, multiply (upper/lower), divide, extract (AND), store/return address (for self-modifying indexing), input, print and stop. The Counter is an ordinary incrementing program counter — "optimum coding" was the art of placing operands at the drum sector the heads reach next, surfaced here as the rotating drum position.
- Flexowriter I/O. The
p(print) order drives a typewriter: it types the Flexowriter character in the top six bits of the accumulator and shifts left six, so five orders type the five characters of a word; a formatted variant types the accumulator as a decimal number. Thei(input) order reads a keyboard character into the accumulator. Output is typed onto the paper at the right.
A 31-bit instruction word packs the 4-bit order (bits 12–15), a 6-bit track (bits 18–23) and a 6-bit sector (bits 24–29); the operand address is track×64 + sector. The shared lgp30 decoder turns each word back into these forms in the disassembly, so you can watch the fetch-execute cycle one order at a time. (Authored timing simplification: the real LGP-30 is bit-serial, each order waiting for the drum to bring its operand sector under the heads; this core steps at word level — one order per step — while still advancing the drum sector so the rotation and the optimum-coding idea stay real and visible.)