Infocom's Zork I now runs on an ICT 1301, a British business computer announced in 1960 and first delivered in 1962. That makes it, as far as I can find, the oldest computer design ever to run any version of Zork: four years older than the PDP-10 hardware the game was written on, and nine years older than the Intel 4004, the previous record for a retro Zork port.
Zork is one of the first adventure games. You explore the ruins of the Great Underground Empire by typing
commands in plain English, such as open mailbox or take lamp, and the game describes
what happens. It was written at MIT in 1977 on a PDP-10, and Infocom later split it into three games
for home computers. Zork I, the first of them, was published in 1980 and ran on almost every micro of the day.
Zork I now runs on the ICT 1301 too, on Virtual Flossie, the simulation of the very first 1301 delivered to a customer. The game is Infocom's own, unchanged: release 119 of Zork I, which Microsoft released under the MIT licence in November 2025. It is run by a new interpreter written in 1301 machine code. You play it on Flossie's Flexowriter typewriter, the game loads from magnetic tape, and you can save your progress to another tape.
| Computer | Introduced | Zork |
|---|---|---|
| ICT 1301 (Flossie) | Announced 1960, delivered 1962 | Zork I, this port, on the Virtual Flossie simulation |
| DEC PDP-10 | 1966 | The original 1977 Zork, its home machine |
| Intel 4004 | 1971 | Zork I, a 2025-26 hobby port on real hardware |
It runs on the simulation, not on the real Flossie, which is in storage at The National Museum of Computing. And a search can't prove there isn't something older: if you know of Zork running on an earlier machine, I'd like to hear about it.
Can you help? See the story of the real Flossie's amazing survival and more info at Welcome to Virtual Flossie. The mostly working machine (mainly due to the enormous efforts of the ICT 1301 Resurrection Project team) had to be relocated and was dismantled and donated to TNMOC to save it yet again! It's sitting in storage as it takes a huge amount of floor space which TNMOC just doesn't have enough of! The team and I would LOVE for this historic machine to be on display and being worked on again .. maybe we could see ZORK running on the real hardware some day! It would take an enormous amount of money and effort, but if you are or know someone with deep pockets, you never know!
ZORK I - The Great Underground Empire Infocom interactive fiction - a fantasy story Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986 Infocom, Inc. All rights reserved. ZORK is a registered trademark of Infocom, Inc. Release 119 / Serial number 880429 West of House You are standing in an open field west of a white house, with a boarded front door. There is a small mailbox here. *open mailbox Opening the small mailbox reveals a leaflet. *take leaflet Taken. *
The opening, as Flossie's Flexowriter types it. Your commands are in red. Zork's > prompt becomes * on the Flexowriter.
Zork loads from a magnetic tape, started by three punched cards, just as a program would have been run on the real machine. You need Virtual Flossie running in a modern browser on a PC or Mac.
You should see the Magnetic Tape Deck 1 start reading and all of the wonderful blinkenlights on Flossie flashing! The tape runs for about 30 seconds while the game is copied to the drums (the ICT 1301's version of hard disks), then the Flexowriter types the opening.
* prompt and press Enter. Escape starts the line again.save writes your game to the tape on drive 2. To keep it, click tape drive 2 and choose Save Tape (MTF).restore reads a saved game back: load the saved tape on drive 2 first.restart starts again from the beginning.If you want a bit more technical detail on what this is doing, click these titles below.
Initial Orders reads the cards in its "input of programs to I.A.S. only" mode, chosen by Manual Indicator 29. The leader card gives the first address, the entry point, the number of words and cards, and a check total. The program card holds three instructions for IAS 0000-0002. The trailer card makes Initial Orders check the count and the total, then jump to 0000.
The three instructions read the first block of the tape on drive 1 into IAS 1820, wait for it, and jump to it. That block is a 24-word loader which reads the rest of the tape: 179 blocks for the drums, then the interpreter itself, and finally a jump that starts the game.
The same three instructions can be entered from the console instead, in IAS 0000-0002:
| IAS | Word | What it does |
|---|---|---|
| 0000 | 390021 001820 | Read the first block from drive 1 into IAS 1820 |
| 0001 | 724002 004001 | Wait until it has been read |
| 0002 | 005820 000000 | Jump to the loader at 1820 |
For each word: Auto Manual to Manual and Hold CR; set the word on the Arithmetic Register switches and press its Set button;
set Control Register 1 to 410000 (then 410001, 410002) and press Set; press Start.
Then switch back to Circ + 1 and Auto, set Control Register 1 to 004000, press Set, and press Start.
Infocom wrote Zork for an imaginary computer, the Z-machine, so that the same game file could run on any real computer with a small interpreter. This port is such an interpreter, for the 1301. But the 1301 is nothing like the 8-bit micros Infocom wrote for:
| ICT 1301 (Flossie) | What Zork expects | |
|---|---|---|
| Word | 48 bits, held as 12 decimal digits | 8-bit bytes and 16-bit words |
| Arithmetic | Decimal, sterling, and hex through the Mill Switch | Binary |
| Main store | 2,000 words of core memory | About 70 KB of game memory |
| Backing store | Three drums of 12,000 words, read ten words at a time in about 18 ms | A floppy disk |
| Instructions | Two to a word; no index registers; shifts by whole digits only | 16-bit addresses, bitwise operations |
| Terminal | The Flexowriter, ten characters a second | A screen |
A preprocessor, run once on a modern computer, turns the Zork game file into the contents of Flossie's drums. It packs Zork's memory four bytes to a 1301 word, in 256-byte pages that each start on a drum decade, so that any page can be read or written with a single drum transfer. It converts all of the game's text into Flexowriter codes, so the 1301 never has to decode Infocom's compressed text. And it builds the tables the interpreter needs to find text and look up words in the dictionary.
The interpreter, in 1301 machine code, fetches each Z-machine instruction from the game, decodes it and carries it out: arithmetic, branches, calls and returns, the stack, the game's objects and their properties, printing, reading what you type, and saving and restoring. The drums end up holding the game's memory, about 9,700 words of text, the tables and the less-used parts of the interpreter: some 35,700 of their 36,000 words.
The hardest part was the store. Its 2,000 words have to hold the interpreter, Zork's stack, a cache of the game's memory and room to print. The first version needed about 2,300 words. The final one has nine to spare.
| IAS | Holds |
|---|---|
| 0010-1110 | The interpreter and its working values |
| 1120-1229 | Zork's stack (the deepest seen in play is 90 words) |
| 1230-1405 | Tables: one jump for each Z-machine instruction, and those for finding memory |
| 1410-1599 | Space for one overlay at a time |
| 1600-1879 | Four 256-byte pages of the game's memory |
| 1880-1999 | 80 text abbreviations, and buffers for the drum and for printing |
Six ideas made it fit, and the last also made it quick enough to play:
The Flexowriter types upper and lower case, and each change of case costs a shift code and a character time. The shift codes are already in place in the converted text, and the interpreter skips any shift the Flexowriter is already in: about 7% extra typing. Eighty abbreviations, each one word of the store, compress the text by a third. Lines are word-wrapped at 72 characters, so a sentence the game prints in pieces wraps as one.
Some of Zork's punctuation isn't available on the Flexowriter, so the text is adjusted: can't becomes cannot, the troll's axe becomes the trolls axe, quotation marks become asterisks, question and exclamation marks become full stops, and the > prompt becomes *.
The whole game, with its loader, fits on one magnetic tape of 193 blocks. The loader reads each block and looks at its first word: drum blocks begin with the very instruction that writes them to the drum, which the loader simply obeys; the interpreter's blocks begin with the address to copy them to; the last block is a jump that starts the game. Between blocks it waits for the tape to stop before using the drum, as the 1301's manual requires.
save writes 46 blocks to the tape on drive 2: Zork's stack and position, then the 45 pages of memory the game can
change. Virtual Flossie couldn't write magnetic tape before this project. It now models the half-inch tape system from the
1301's Programmers Reference Manual, with its write, backspace and cancel orders, timings, indicators and writing rings.
The opening takes about 50 seconds, and each move about 20 seconds of computing before Flossie starts typing the reply. Each Z-machine instruction takes about 570 instructions of the 1301, and about 40% of the time goes on drum transfers when a page of the game isn't in the store. Slow by today's standards, but no slower than a 1960s user at a teleprinter would have expected.
I have been fascinated by the ICT 1301, the amazing piece of computing history, for many years since I first came across it at TNMOC. As one of the UK's earliest successful business computers, it's an important stepping stone from Bletchley Park and Alan Turing's original steps towards computing and the modern PCs, computers and mobile devices we use today!
I started working on a virtual working simulation around 2002 when I realised that the real machine wasn't likely to be setup any time soon and I wanted to understand how this early transistorised computer functioned. Fortunately the ICT 1301 Resurrection Project who worked on the real Flossie when it was active stored and scanned a lot of the original manuals and most importantly, the code of the Inital Orders disk structure (kind of the ICT 1301's operating system) which allows it read punched cards and start working! It took well over a year to complete the main simulation to get it running some of the original code.
More recently this year, 2026, I've been working with Roger Holmes and some of the other original Galdor programmers to make the simulation more closely match the alterations that Galdor made to Flossie over the years and to add many more of the hardware components of the machine. I've added devices for the magnetic tape drives, the Freden Flexowriter typewriter interface plus many other features not on the original machine.
Once that was completed, I needed some way to really test out the simulation and the new tapes and typewriter and what better way than one of the original text adventures .. I had no idea of the rabbit hole (or rather dungeon corridor) I was about to embark into .. but it's been well worth the effort!
Martin Gillow Virtual Colossus
Infocom, for Zork I and the Z-machine, and Microsoft, for releasing Zork I under the MIT licence.
Roger Holmes (previous owner and programmer of Flossie), for checking the 1301 hardware behaviour and many many hours of email correspondance to get Virtual Flossie working as close to the original hardware as possible!
Stuart Fyfe and Galdor Computing, for information on the Flexowriter interface and its tapes.
The National Museum of Computing and the ICT 1301 Resurrection Project at
http://www.ict1301.co.uk/ for all of the help, documentation and recovery of some of Flossie's magnetic tapes.
The interpreter, preprocessor and tests were written with Claude (Anthropic).