This page is devoted to physical implementations of the Block I
and Block II AGCs, and their peripherals such as DSKYs. In
other words, to physical devices that you could build and keep in
your living room to impress friends and neighbors. Be the
first on your block to have one!
John Pultorak has
constructed a physical (not virtual), working model of a Block I AGC
out of 74LS-series low-power Schottky TTL devices. The model
works, and runs software which John has adapted from Colossus 249
software. John's unit even has the same general appearance as
the original Block I AGC prototype! Of course, Colossus 249
software is targeted for the Block II AGC rather than the Block I
AGC, but John did not then know of any existing Block I source code,
and indeed, even the Colossus 249 software listing he had at the
time was only a partial one rather than a complete program.
No manned mission ever flew with a Block I AGC. It was
originally intended that Apollo 1 and Apollo 2 would be Block I
missions; but I'm sure you know what happened to Apollo 1, and
Apollo 2 never took place. The unmanned missions AS-202
(sometimes referred to as Apollo 3, though it took place before
Apollo 1 would have), Apollo 4, and Apollo 6 did use Block I AGCs.
John has thoughtfully provided us at Virtual AGC with his schematic
diagrams, with adapted Block II software, and with his
cross-assembler, all of which are a bit tricky otherwise to get in
machine-readable form. He has also documented his project in
what I'll refer to as the Pultorak PDFs, which you may find a lot
of other places on the web, but which I provide here as well, since
why not? The following block quote is simply a duplicate of
what was on the sort-of-but-not-quite-discontinued klabs website:
Block I Apollo
Guidance Computer (AGC):
How to build one in your basement
Material developed and provided by John Pultorak, who is kind enough to put these
files into the public domain with no restrictions on their
This report describes my successful project to build a
working reproduction of the 1964 prototype for the Block I
Apollo Guidance Computer. The AGC is the flight computer for
the Apollo moon landings, with one unit in the command
module and one in the LEM.
I built it in my basement. It took me 4 years.
If you like, you can build one too. It will take you
less time, and yours will be better than mine.
I documented my project in 9 separate files:
Part 1 - Overview [8.1
MB]: Introduces the project. Part 2 - CTL Module [9.9
MB]: Design and construction of the control module. Part 3 - PROC Module
[6.7 MB]: Design and construction of the processing (CPU)
module. Part 4 - MEM Module [6.8
MB]: Design and construction of the memory module. Part 5 - IO Module [7.0
MB]: Design and construction of the diskplay/keyboard (DSKY)
module. Part 6 - Assembler [0.5
MB]: A cross-assembler for AGC software development. Part 7 - C++ Simulator
[5.2 MB]: A low-level simulator that runs assembled AGC
code. Part 8 - Flight Software
[2.8 MB]: My translation of portions of the COLOSSUS 249
flight software. Part 9 - Test &
Checkout [0.9 MB]: A suite of test programs in AGC assembly
Why build an AGC?
Early computers are interesting. Because they're
simple, you can (if you like) actually understand the entire
computer, from hardware to software.
The AGC is the most interesting early computer
because: it flew the first men to the moon and has
interesting architectural features.
How is this Related to Virtual AGC?
It's not. John's project is not an offshoot of the Virtual AGC
project, or vice-versa, and neither project uses materials created
by the other. But John's project is at an end, and he doesn't
want the hassle of maintaining a web presence for it, whereas
Virtual AGC is an ongoing project. (But see
our Block 1 page.) So as a courtesy, the Virtual AGC
website is going to host supplemental materials for the Pultorak
project that haven't worked their way into the other websites
AGC source code (flight software adapted for Block I and for John's
cross-assembler, test & checkout software, and so forth) is
provided in the Pultorak PDFs, but you have to have some means of
extracting them to use them for anything. Moreover, the PDFs
often provide assembly listings—i.e., reports generated by the
assembler—rather than pure source code. An assembly listing
isn't a legal assembly-language source-code file, so you can't
conveniently change and reassemble it. You can get a zipfile
containing the source code and some supplemental files (such as hex
files) by clicking
here (1 MB).
Unfortunately, the format accepted by John's cross-assembler isn't
compatible with yaYUL (or
vice-versa), so these source files cannot be assembled by yaYUL. They must be
assembled using John's cross-assembler.
Simulator Source Code
The C++ source code for John's PC-based cross-assembler and
simulator do appear in the Pultorak PDFs, but rather than
cutting-and-pasting you may find it more convenient to download a
zipfile by clicking
here (3.7 MB).
The Pultorak PDFs do provide schematic diagrams, but some readers
have commented that it is difficult to make out some of the details
in them. You can download a zipfile containing the complete
CAD files for the design by clicking
here (1.7 MB). The CAD files are in Circuitmaker format (*.ckt), but
even if you don't have a copy of Circuitmaker,
the zipfile may be worth downloading because it also contains:
WMF (Windows Metafile) versions of the schematics that are
more legible than those in the Pultorak PDFs; and
An Excel spreadsheet with a partlist for the design.
At the time John created these materials and first sent them to me,
Circuitmaker was available
commercially, and if you couldn't affort the full version of the
program you could either have downloaded the free but limited
"student" version of the software, or else you could download a full
but time-limited demo version of the program. Since that time,
however, the company which was selling Circuitmaker has apparently been acquired by Altium,
and the Circuitmaker program has been discontinued.
According to Altium's
website, the substantially more expensive Altium Designer product is
supposed to be able to import existing Circuitmaker schematics. I have no idea
whether this is true or not, though my past experiences in such
situations leads me to be suspicious about it. If anybody else
has tried it (and cares to convert John's schematics for me), please
let me know.
In order to run Circuitmaker,
you have to use Options/LibraryLocation (full or demo version) or
File/Preferences/DirectoriesAndFiles (student version) on the menu
to set the location of the "user library" (USER.LIB) that comes in
our zipfile. (After doing so, you will probably also have to
exit from Circuitmaker and
then re-run it, because Circuitmaker
will already have loaded the default USER.LIB into its internal
cache, and it won't reload it until being restarted.)
Otherwise, when you load the schematics they will have wires but no
electrical components on them. Incidentally, although Circuitmaker2000 is a Windows
program, both the student and demo versions run just fine under
Linux with CrossOver Office.
may run fine too under normal Wine,
but I haven't tried it.
One thing you will likely want to do with Circuitmaker is to create a netlist. Neither
the student nor demo versions of Circuitmaker
seem to want to admit the notion that a single IC can contain
multiple gates, and will therefore likely display an error prompt
asking if you want to "correct" this condition. If you say
"yes", Circuitmaker will
arbitrarily relabel the components within the schematic, so that
only one gate appears in each package. My advice would be to
say "no" (not to correct), as the only negative side-effect of doing
so appears to be that the netlist file will have duplicate entries
for the packages with multiple gates, but the wire-list will be
Integrated Development Environment (IDE)
Donna Polehn has created an GUI IDE (I think, Windows only)
based on the Pultorak Simulator and assembler, which you can find
to build it, you need C++Builder 6. I've not tried it, since
I don't personally have C++Builder 6 and don't normally run
Windows, but I expect it's interesting.
Donna tells us also that she has made a functional Block I using
the Terasic DE0 FPGA development board, as well as a custom FPGA
board. Those are available at the link listed above.
Vitoris's Block I and Block II AGC Project
The project of Dimitris ("Jim") Vitoris takes over where John
Pultorak's project stops. The project is still in its very
first stages, so please don't take any statements made here as
commitments! But the basic idea of the project is to be able
to create a physical implementation of a Block II AGC and DSKY,
which (unlike John Pultorak's Block I AGC above) can be constructed
by hobbyists, without requiring the immense skill needed to
construct a Pultorak AGC.
Here is a very uncertain
roadmap of the project. It may be that all of these phases
will be completed, or it may be that the project will stop where it
is now. Or perhaps some phases might be skipped. There
is no timetable. But however it goes, thanks Dimitris!
Conversion of John Pultorak's
Block I AGC design (schematics only!) to Eagle CAD, with
corrections and small improvements.
A clean restructuring of the
Block I design -- for example, with AGC, DSKY, and
monitoring busses separated into independent assemblies
rather than being a part of one large assembly.
Block II AGC design
(schematics and printed-circuit board layout!) using 74xxx
Size reduction of Block II
design, using surface-mount parts and FPGAs.
Further, final size reduction
of the Block II design, with added Virtual AGC
compatibility. (This would mean, for example, that one
of Dimitris's physical DSKY could be used with a PC running
The download is a zipfile containing the complete set of
materials that have been created by Dimitris so far.
Dimitris uses Eagle CAD for
this project (www.cadsoft.de).
Eagle is a cross-platform
program that is available for Linux, Windows, and Mac OS X.
While Eagle is a
proprietary program that costs money to purchase, there is a free
version that can be used with small designs. I have verified
that the free version does allow viewing of the phase A0 schematics
Once phase B0 and beyond are reached, it would be valuable to have
mechanical design and drawings of things such as DSKYs, enclosures,
front panels, and so forth, so that complete physical units can be
constructed. Any mechanical engineers who are interested
should contact me at the email address at the bottom of this
page. Mechanical design of a Block II DSKY in particular would
be useful, regardless of the how far Dimitris cares to advance his
Dimitris has also sent some photos of the physical device he is
The physical faceplate,
work in progress!
from which measurements can
be taken. A CorelDraw
file is also
Dimitris mentions that his best estimate of the faceplate dimensions
is 18.9 cm (7.44 in.) wide and 21.8 cm. (8.58 in.) high, and points
out that additional dimensions can be extract from the right-hand
Incidentally, Dimitris owns various bits and pieces of Block I
equipment, and here are some photos he was kind enough to send
Block I AGC Logic Module
Block I AGC Rope Memory
Block I DSKY Power Supply
Philip Schmidt's Block
I AGC Project
Philip Schmidt has also been kind enough to let us know about his Block I physical
implementation. You can see his write-up of what he's been
doing at his
own web-page. Phil tells me that he will eventually
provide all of the CAD files for his design (in Altium Designer format), but for
right now it's all PDFs while it's a work in progress.
Who's Building Them?
Of course, the great thing about these projects is that you can
start from them and build your own AGC or DSKY. If you have
done so, feel free to send me some photos and/or descriptions of
what you've built. Where is Heathkit when you
Alessandro Cinquemani of Aviano, Italy, has sent in the very nifty
photo (click to enlarge) seen below.
As I understand it, here we're seeing the DSKY and CTL modules,
which Alessandro built by following through on John Pultorak's
documentation. Alessandro is still working on the MEM and
PROC modules, but when the AGC is fully operational is
considering making actual circuit boards. Great job,
Alessandro has sent us a whole gallery of photo updates,
reluctantly down-sampled by me to save some space. He
tells us (2009-06-17) that he thinks he may be able to finish it
up in 3-4 months. Click'n'enjoy:
Bruno Muller has created a physical DSKY that interacts with
yaAGC via the NASSP plug-in for the Orbiter spacecraft
simulator. He has made a video and sent me the following
charming YouTube link:
My personal bias is that I'd prefer it if these materials were
available for use with a free and open-source CAD system rather than
proprietary systems such as Circuitmaker
and Eagle. The
subsequent discontinuation of the Circuitmaker
program (mentioned above) puts the problem in stark relief:
John Pultorak spent a lot of time creating these materials, and yet
within just a few years nobody will be able even to open the CAD
files he created. This website deals with things that happened
(as of this writing) 40 years ago, and I'd like the
information presented here to still be useful 40 years from now ...
or 400. But the CAD files have proven to have a shelf-life of
less than 5!
Such absurd situations should come as no surprise to anybody with
substantial experience in using electrical CAD systems.
Speaking from experience, every
proprietary electrical CAD program is eventually discontinued either
by virtue of acquisition of the manufacturer or else a strategic
decision by the manufacturer, and the schematic format is then
orphaned, usually even without any documentation. Yet I've
never encountered an electrical designer who had noticed this fact
or believed it was a problem; instead, CAD software is invariably
chosen on the basis of whatever features are most convenient to the
designer at that moment in time. Indeed, I've made such
selections myself, based on whatever software has the fastest or
best autorouter. But the autorouter relates only to PCB
layout, and has essentially no relation to schematic capture, which
could be done by a separate program from the PCB layout program
entirely. Schematic capture and PCB layout are interrelated only by
exchange of netlists and back-annotation info, and the notion that
the two must be integrated into one program is a fantasy promoted by
CAD manufacturers and swallowed en
masse by circuit designers. I'd venture the advice
that if you're going to use a proprietary CAD program, it's best to
use one that supports the Orcad
file format, and to archive your work in that format, since it's the
closest thing to a de facto
standard that exists at the present time.
It would be nice if an open-source CAD tools were used instead, so
that the schematics, PCB layouts, etc., would be freely editable by
everybody without purchasing a proprietary tool. If anybody
wants to convert the CAD files into a more open format, your help
would be welcomed. I highly recommend that the target
schematic-capture format should be that of the free open-source tool
gEDA. Of course, if
you absolutely insisted, we'd be happy to have Orcad, or any other format as
well! I've so far not found an automated tool to perform the
conversion of Circuitmaker
or Eagle to any other
format. (If you wanted to write a program that converted Circuitmaker or Eagle files to gEDA or some other format, I'm
sure that would be even more valuable than the conversion itself.)