Three machines, three paradigms, twenty years.
Before microprocessors, before personal computers, before the language wars — there were machines that you programmed by wiring patch cords, machines you programmed in hand-counted characters of memory, and machines you programmed by typing two-digit verbs and nouns at a panel of glowing green digits. This is a working catalog of three of them.
This catalog exists partly as preservation. These systems represent a period when computers were physical, constrained, and deeply human — and when many important contributions disappeared into the companies and programs that employed the people who built them. Some of the work represented here connects directly to my own family history and to the generation of engineers who carried computing from unit-record machinery into the space age.
At a glance.
Three machines built within four years of one another, deployed for utterly different purposes, and operated by means of three completely incompatible mental models. The interesting comparisons are not in the speed of the silicon (the 1004 had no silicon) but in what counts as a program.
| Specification | UNIVAC 1004SPERRY-RAND · 1962 | UNIVAC 1005SPERRY-RAND · 1966 | Apollo Guidance ComputerMIT IL / RAYTHEON · 1966 |
|---|---|---|---|
| Class | Unit-record processor | Stored-program data processor | Real-time avionics computer |
| Programming model | 31-step removable plugboard | SAAL assembly · 21 instructions | Verb / Noun grammar via DSKY |
| Instruction-addressable memory | None — programs are the wiring | 961 6-bit characters (magnetic core) | 2K erasable + 36K core-rope ROM |
| Word size | 6-bit BCD character | 6-bit BCD character | 16 bits (15 data + 1 parity) |
| Number system | BCD decimal | BCD decimal | One's-complement binary |
| Card I/O | 80-col @ 400 r/m, 150 p/m | 80-col @ 400 r/m, 150 p/m | None |
| 132-col drum @ 400 lpm | 132-col drum @ 400 lpm | None | |
| Operator interface | Console switches, hopper, plugboard | Console + SAAL source listing | DSKY: 12 lamps, 6 displays, 19 keys |
| Typical workload | Payroll, billing, inventory | Replaced 1004 in same shops | Guidance, navigation, control |
| Production / use | Thousands · 1962–early 1970s | Thousands · 1966–mid 1970s | ~75 built · 11 manned missions |
| The thing about it | You program it with wires. | You program it with characters. | You operate it with verbs. |
UNIVAC 1004programmed by wiring
The 1004 is not really a computer in any modern sense. It has no software, no instruction set, and no memory in which to hold either. And yet, through most of the 1960s, it computed payroll for the United States Army, processed inventory for Westinghouse, and printed insurance statements for Mutual of Omaha. To program the 1004 was to wire it.
A removable plugboard accepted patch cords that connected card-column readers to accumulator counters, comparison registers to selector flip-flops, and printer columns to whatever data source the operator had chosen to route there. A program of thirty-one steps was a particular pattern of cords. To run a different application, you removed the board and slotted in another, pre-wired one — a program library was a literal cabinet of plug-boards.
Programs were objects, not text. To swap one out, you used your hands.
The emulator preserves this conceptual model exactly. There is no source-code editor. Instead, a thirty-one-row table represents the plug-board: each row is one program step with selectors for source, operation, destination, condition, and what to do next (advance to the next step, jump, eject a card, print a line, halt). A live bezier-curve overlay draws the active wire on every machine cycle so you can watch the patch take effect.
Six worked sample plug-boards demonstrate the idioms a 1004 operator actually used: list cards, sum a numeric column, print a multi-field invoice, accumulate group totals, compute a payroll via repeated-add multiplication, and emit a header / detail / trailer report — all without leaving the thirty-one steps.
What you can do in the emulator
- i.Wire your own plug-board. Define up to eight named fields by their card, print, and punch column ranges. Then patch the thirty-one steps row by row.
- ii.Step the machine one card-cycle at a time. Watch the active source-to-destination wire light up; observe counters accumulate; track selector flip-flops as the program decides what to do.
- iii.Load any of six samples.
ECHO·TOTAL·MULTI·GROUPS·PAYROLL·FORMAT— each demonstrates a real 1962-vintage idiom. - iv.Use the digit-emitter hubs and counter-zero conditions to multiply by repeated add — there is no
MULinstruction; payroll computes40 × 25as forty additions of25.
UNIVAC 1005programmed in characters
The 1005 is what happens when a unit-record machine grows up. UNIVAC kept the 1004's eighty-column card I/O, its drum printer, its six-bit BCD character set, and its familiar console — and then they replaced the plug-board with nine hundred and sixty-one characters of magnetic-core memory and a stored-program processor that understood twenty-one instructions.
For the first time on this product line, you could write programs in a real assembly
language. SAAL — the Sperry-Rand Assembly Language — gave its users the
familiar mnemonics: MOV for move, ADD and SUB,
CMP for compare, BR for branch, BRC and
BRZ for conditional branches. There were registers, there were labels,
there were comments. After ten thousand wires patched into a thousand 1004 plug-boards,
suddenly there was source code.
Storage was tight enough that programmers worked in characters rather than bytes. An entire production payroll might fit in 600 characters of core.
The emulator gives you the whole stack: a SAAL source editor with syntax highlighting, a working assembler that produces a memory listing, a character-addressable virtual machine, and a step debugger that walks the listing one instruction at a time. The same six-bit BCD encoding the 1004 used; the same card hopper, drum printer, and punched output stacker. You write your program in source, you assemble it, you run it on the cards in the hopper, and you read the output the printer drum produced.
Six verified samples ship with the emulator: HELLO writes a greeting;
ECHO lists every card; ADDEM sums a numeric field;
COUNT tallies the deck; SORTEM implements an in-memory
bubble sort across cards; PAYROLL reads hours-and-rate cards and prints
a gross-pay register. Each program fits in well under a hundred characters of source.
What you can do in the emulator
- i.Edit and assemble SAAL. Twenty-one instructions, four registers, character-addressable memory. Errors are reported with the source line.
- ii.Step a program one instruction at a time. Inspect every register, every memory character, the card hopper, the print drum, and the output stacker as the machine cycles.
- iii.Load and study six worked programs.
HELLO·ECHO·ADDEM·COUNT·SORTEM·PAYROLL. - iv.Compare against the 1004. Many of these workloads were carried directly from 1004 plug-boards onto the 1005's source listings. Loading the same task in both emulators shows the paradigm shift in miniature.
Apollo Guidance Computerprogrammed by verb & noun
The Apollo Guidance Computer is the most famous computer ever built — it landed humans on the Moon. But what astronauts actually touched was the DSKY: a brushed-aluminum panel with twelve indicator lamps, a row of two-digit displays, three signed five-digit register fields, and a calculator-style keyboard of nineteen square keys. The DSKY did not require its operators to know anything about the AGC's instruction set — and most of them did not. It spoke a different language entirely.
That language was a Verb / Noun grammar. VERB 06 NOUN 17 ENTR meant
display the spacecraft's current attitude. VERB 16 NOUN 36 ENTR
meant continuously monitor the mission timer. VERB 37 ENTR 11 ENTR
meant load major program eleven, the Earth-orbit insertion monitor. The astronaut's
operator's manual was, in effect, a vocabulary of pairs.
VERB described the action. NOUN described the data. The astronaut's manual was a vocabulary of pairs.
This emulator reconstructs the Block II flight DSKY — the version flown from Apollo 7
onward. Authentic 530-nanometer electroluminescent green seven-segment digits,
rendered in SVG with the appropriate glow. Period-correct lamp coloring (red TEMP
and GIMBAL LOCK; amber PROG and RESTART; white for the rest).
A faithful nineteen-key pad with the iconic action-key colors: gold for PRO,
green for ENTR, red for RSET.
Eight major programs are implemented behaviorally, including the lunar-descent
sequence P63 → P64 → P66. The headline feature is a scripted Apollo 11
descent demo that fires the legendary 1202 program alarm at the moment the
real one did, on schedule, in the actual sequence. Press RSET to
acknowledge it — just as Steve Bales did when he called “Go!” from
Mission Control — and the descent continues to landing.
What you can do in the emulator
- i.Test all twelve indicators and every digit. Type
VERB 35 ENTRfor the lamp test — every segment, every lamp lit at once. - ii.Operate the AGC by Verb / Noun. Eleven verbs and seven nouns are wired up, including monitor mode (
V16) and component load (V21–V25). - iii.Run major programs.
P00idle,P01pre-launch,P11Earth-orbit insertion monitor (liveV16N62with rising velocity and altitude),P63 → P64 → P66lunar descent. - iv.Run the Apollo 11 descent demo. A ninety-second scripted simulation of the lunar landing sequence, complete with the 1202 alarm at T+12 s and a second 1201 alarm in the approach phase. Acknowledge with
RSETand watch the Eagle land.
How to operate each one.
The emulators run entirely in your browser. There is nothing to install, nothing to log in to, no telemetry, and no server to talk to. Each is a single self-contained HTML file. But because the three machines have nothing in common operationally, each demands a slightly different first-time procedure.
UNIVAC 1004
Start with the ECHO sample — it is the smallest plug-board (two steps) and prints every card in the hopper. Load Sample, then Run, and watch the patch-cord overlay light up as each card-cycle runs. Then load PAYROLL and watch the inner loop: the same wire fires forty times to multiply hours by rate.
UNIVAC 1005
Open the HELLO sample. Assemble turns SAAL source into a memory listing; Run executes it; Step walks one instruction. The right-hand panel shows the entire 961-character memory live; you can see exactly where your program lives and how it changes counters and the print buffer.
Apollo Guidance Computer
Type V35E first — that lights every lamp and digit at once and confirms
the panel is alive. Then V37E 11E to run Program 11 and see live boost
numbers. When you are ready for the showpiece, click Demo: Apollo 11 Lunar
Descent and watch the 1202 alarm fire on cue.