||Well, this has been an interesting day.
I expected to have one significant announcement today, and
instead have two of them. First,
It is, unfortunately, unclear if the code can ever be run in the AGC simulator or not, but I'll think about it for a while before saying "no".
Second, and perhaps more importantly even though I haven't chosen to color it red, I was wrong in one very significant way about Francois Rautenbach's extractions of the rope-memory contents, and that is that it was not from Apollo 6 (Solarium 055) as I said, but rather is the Corona program from the AS-202 ("Apollo 3") mission, which we do not have already, and have no other prospects for acquiring. Moreover, it is simply in the form of stored electrical waveforms rather than a file of numbers representing the values stored at various memory locations. But perhaps it could be converted, and perhaps the Corona binary can be reverse-engineered back into the form of source code, which we will do if at all possible and present it here. So stay tuned.
||The discussion of CPU utilization in the Raspberry Pi build
instructions has been updated to include the Pi 3,
which has a much-lower utilization than the Pi B+, which was
the only model previously discussed.
||A number of goofy hyperlinks fixed.
||The download page now has Raspberry Pi
pre-built binaries on it, as well as installation
instructions and build instructions for Raspberry Pi,
contributed by Laszlo Morocz and Scott Sumner. Thanks,
Laszlo and Scott!
||The download page has been updated so that it
now provides not only the old Linux installer (which is
known not to work with some newer Linux versions like Linux
Mint 17.3 and Ubuntu 14.04), but also a newer
installer, specifically built for Linux Mint 17.3, and
therefore hopefully working for Ubuntu 14.04 or later as
well. Sadly, I'm not set up to test it as thoroughly
as I used to be on every platform under the sun! There
are also updated build-instructions. The code reflects
corresponding updates to the GitHub repository.
||Well ... anyone who has looked at this will
notice that this website hasn't been updated in 4
years! The updates today are more to see if I still can
update the site after all this time, rather than anything
substantive. Perhaps more will follow. I
apologize to everyone who has sent me to-do's in the
meantime. They haven't been forgotten, merely
neglected, if that's of any consolation to anybody.
Today's changes are simply:
||Gemini: More bug fixes
to the OBC assembler program, yaASM. I think it's pretty close to
100% correct now. I've also created an OBC CPU
emulator called yaOBC,
which is also pretty close to 100% functional, except there
are presently no physical or emulated peripheral devices to
attach to the CPU yet, so it's purely an emulation of the
CPU in isolation. There is, however, a primitive
command-line based debugger interface included, from which
you can view or edit memory, run the OBC program, single
step, set breakpoints at instructions or data locations in
memory, etc. The source code for these is in
subversion, and executables
for the programs can be downloaded from here.
||Gemini assembler: I
realized somewhat belatedly that I hadn't accounted for
overlaying program modules in memory. this has been
fixed by changing the syntax of the CODE
and DATA directives in OBC
assembly language slightly. Both the yaASM program itself and
the write-ups on the Gemini page have been fixed.
||All things Gemini:
||I've been very lax about
updating this site, and so have a pretty large backlog of
stuff to deal with that people have sent me and that has
just been sitting on my to-do list. Sorry about
that! First, a status report:
||In the document library,
provided the multi-page fold-out flowcharts of the Gemini
catch-up and rendezvous simulation program as separate
single-page images. Also, added several documents
related to the IBM 704/7090/7094 systems that I found useful
in porting the program to make it buildable with gcc. (The porting
isn't yet complete, in that I'm still working on various of
the assembly-language subroutines.)
||On the Gemini page, corrected
"Ferney Hough" to "Dal G. Ferneyhough, Jr." Also,
added a photo of Gene Mertz
et al., and some additional recollections from
||Mike Jetzer pointed out that
all of the links to the Apollo press kits on the
document-library page were wrong. (Thanks,
Mike!) That has been fixed.
||Have made most of the PDFs in the Document Library searchable by adding a background OCR'd text layer. I say "most" because I tried to do all of them, but may have missed a few. If so, I'll catch them later. Have continued the process of adding bookmark panes and metadata (title, author, etc.) to them, but that's a much slower process since it's entirely manual.|
||Re-photographed and re-posted Fred Martin's Colossus 237 program listing. Not that I thought there was anything wrong with what I had, but because I still had the listing in hand and had acquired a better camera. The new photos have much better contrast (the background is lighter and the text is darker), so it's a good improvement.|
||Since there's now a site-search bar, I think it's appropriate to make sure that all of the PDFs in the Document Library have embedded metadata (such as title & author), sidebars with bookmarks to the various sections of the doc (where appropriate), and background OCR to make them searchable (where the document characteristics are compatible with Adobe Acrobat's OCR capability). Obviously it will take a good long while to fix up all of the PDFs, and even longer for Google to reindex them, but I'm making a start on it as of today.|
||Added a site-search bar to
the top of every page. It's swell!
||Added several "Apollo
Experience Reports" to the Document
Library, including reports on the "programers" (yes,
that's the real spelling) which were the automated stand-ins
for crewmen on the unmanned missions Apollo 4, Apollo 5, and
||Added a Gemini spacecraft computer page,
even though it's empty right now, and added documentation
(all scarfed from the Meadville
Space Center website) of the Gemini spacecraft
computer to our Document Library.
This is partly sheer compulsiveness, but also partially
because John Pultorak has pointed out that the LVDC must be descended from the
Gemini computer, simply because of some very deep
similarities between them.
||Added a "how to digitize" page to
||Integrated an LVDC page into the website.
It's a work in progress, but it has enough info on it now,
and enough corrections and improvements from the
corresponding wikipedia article, that it's starting to
||I no longer observe the
persistent FreeBSD problems I mentioned at the bottom of
yesterday's post, even though I haven't fixed them. I
wonder if perhaps FreeBSD doesn't have to be be rebooted
after building Virtual AGC or something wacky like
that. At any rate, today the FreeBSD native build
seems to be 100% functional and virtualy identical in
behavior to the other builds.
||Added scans of the Apollo 8
Flight Plan (sections
1-2 and sections
3-5), contributed by Fred Martin.
||Added some new documents (memo
describing the detailed method originally used to find
approximations for solar ephemerides data suitable for use
by the AGC. Thanks to Bill Robertson, one of the
||Stephan Hotto has sent along
a bug-fix the LM-Simulator program. The bug was found
by Riley Rainey. Thanks to both!
||(SVN only at the moment,
since no development snapshot released yet.) Building
on Onno's syntax-highlighting ideas, yaYUL and yaLEMAP now have an
--html command-line switch which allows them to directly
create HTML of their assembly listings. These are not
only colorized, but also have hyperlinking from wherever
symbols (such as constants or line labels) are used back to
the points where they are defined. The HTML forms of
the listings are available from the yaAGS,
Luminary, Colossus, and links pages.
||On the download page, added a
section about networking problems, to cover problems which
have been observed with Fedora 11, as well as to summarize
potential problems I was already aware of on other
systems. Thanks to Onno Hommes for reporting the
Fedora 11 problem and fix.
||On the "volunteering" page,
I've added a lot of material about proofing tasks (octal
listings and program
comments) that I wouldn't mind accepting help
with. Those tasks were previously mentioned, I think,
but were basically left to the imagination.
I doubt that would justify a new download at this point, unless you're trying to do native Win32 builds and they're failing.
||I've reposted all of the
Comanche 055 (Apollo 11 CM) page images, having processed
them with reduced contrast from previously. The page
images are somewhat less pretty than before, in that the
backround color is darker and much less uniform, but the
text is more legible in the lower-left quadrants of many of
the pages. Although I've not updated the source-code
tarball, around half of the page images have been converted
to source-code files available in the subversion
repository. Work on conversion of Luminary 099
(Apollo LM) page images to source code has not yet begun.
The hardcopy from which these images were taken is from the Charles Stark Draper Historical Collection, MIT Museum, Cambridge, MA. The digital scans were produced by Paul Fjeld. Many thanks to Debbie Douglas of the MIT Museum for having the great foresight to arrange for these images to be made available to us, and to Paul Fjeld for performing the dreary work of creating the digital page images! More on this later.
||The FreeBSD native build is
now working again, to the extent that I'm able to check
it. The build instructions for it have changed a
||The VirtualAGC main screen
has been reworked to take up less space. This is
principally necessary on screens which are 1024×768 and have
a large dock or toolbar at the top or bottom of the
screen. However, I like the new layout better anyway
as it seems more logical to me. There is no functional
||I have had reports of the ACA
(hand-controller) simulation not working on some versions of
Mac OS X, so I have made a change. Instead of always
using the yaACA3
simulation program (which superceded the earlier yaACA simulation program
for snapshots 20090331 and later), the VirtualAGC GUI front-end
now allows for using yaACA
and yaACA3 somewhat
interchangeably. Basically, it will use yaACA3 unless it notices
that yaACA has been
configured, and then it will use yaACA instead. The yaACA program has also
been tricked up similarly to the yaACA3 program in that it now automatically
saves its joystick-related switches to a configuration file,
so that they become the defaults at the next run. Read about it in detail
if you have experienced a non-functional joystick.
(And don't send me any jokes about that, please!)
||I fixed the FreeBSD bugs
mentioned yesterday, and am now willing to say that Virtual
AGC works in FreeBSD. Instructions for building from
source on FreeBSD have been added to the download page. I'd
be lying, though, if I said it was thoroughly tested.
Unfortunately, I only have FreeBSD running in a virtual
machine, and the marriage of FreeBSD (PC-BSD) to VirtualBox
has not proved a happy one for me, so my ability to test the
the FreeBSD installation is very crude. When I say
Virtual AGC "works", I mean that I can run VirtualAGC, that I can
start the simulation, that I can put in verbs and nouns on
the DSKY and it does what I expect it to do, that I can see
telemetry downlinks, and that I can perform digital
uplinks. If anyone wants to send me more data, I'd be
happy to see it, but I've done all I expect to do on the
FreeBSD side in the absence of feedback.
As far as substantive changes are concerned, I fixed a couple of makefile bugs which prevented Virtual AGC from building on FreeBSD. It now builds—and works, as far as basic functionality is concerned—but fails after certain directory manipulations are made, so it still needs some tweaking. However, I've added some build instructions for it on the download page.
||As far as the website itself
is concerned, various people have sent me interesting and
useful stuff which I've added. I won't detail those
things here, except to say "Thank you!" to Dimitris Vitoris,
Mirko Mattioli, and Onno Hommes. Some important corrections have been
made to material on the the website itself, thanks to
||yaDSKY and yaDEDA
have been superceded by rewritten replacements yaDSKY2 and yaDEDA2 to improve
portability and distributability. Moreover, there is a
completely new yaTelemetry
program to replace the Digital-Downlink-monitoring
functionality previously kludged into yaDSKY (but missing from
||There's now a GUI front-end
that conveniently ties all of the Virtual AGC bits and
pieces together that were previously provided only
incompletely and relatively unsatisfactorily through a few
very simplified command-line scripts. I call this
front-end program VirtualAGC.
This program will additionally have convenient installers
for Linux, Windows, and Mac OS X, which is something which
has been lacking up to now. At the same time, I've
fixed the problem that (as previously installed by Virtual
AGC) Stephan Hotto's LM_Simulator
module didn't have its various very-useful help screens.
||The current development
snapshot fixes a bug which has existed since 2007-03-16 in
the development snapshots, but not in any of the binary
downloads (since I've not posted new versions of the binary
downloads in that time period). The bug, very simply,
is that the LM_Simulator
module would abort if used in a CM simulation, even though
it would work in an LM simulation. The upshot of this
is that if you tried to start a CM simulation using any of
the provided scripts (SimColossus249,
SimArtemis072, or SimArtemis072_lite) then
the simulation would abort with an error message. I
suspect that some folks have complained to me about this and
that I blew them off with an explanation that there was
something misconfigured about their computers. If you
complained and I ignored it, I apologize.
Development of Virtual AGC has been on hold for a while, but I expect it to pick up again soon, with a vengeance. (For everyone who has sent me stuff with which to update the website and it has seemingly fallen into a black hole, I'll finally be adding your updates!) So watch this space.
||Added a nifty photo
Alessandro Cinquemani has sent in of the Pultorak-style
AGC/DSKY he is constructing.
I've completed all the subassemblies, which are now in their final form except for the DSKY. I plan to make it a 3 PCB unit; 1 PCB for the mainboard/keyboard, 1 for the LED display/caution & status lights and 1 for the interface daughterboard.That's necessary because the keys I'll use (RS 336-191) are a little tall and I'll have to elevate the displays. Also I plan to design my DSKY in such a way that it can be used in any revision I plan to make by just exchanging it's I/O daughterboard. You'll find that there are 5 new elements in this revision:
The MCAs are the separated monitoring busses and control switches from each A0 module. The MC is the main power distribution hub,
panel illumination controller and using it you can power down any or all the monitoring panels at will.
I have attached together with the A1 schematics the following:
As before these schematics should NOT be considered final and may contain errors. Looking forward for your comments and suggestions!
||Stephan Hotto has sent
version 1.0 of LM_Simulator,
both in source code and in the Windows "stand-alone"
executable version, with the following notes:
||I have found a backdoor into
HRST website, and modified the links page
accordingly. However, I'll still continue to host the
documents, because it gives me a chance to improve them.
||As mentioned earlier, MIT's
Dibner Institute, whose website (HRST) formerly hosted most
of the scans of historical AGC documents on which Virtual
AGC is based, has closed and its website is gone. I have
decided to begin hosting the documents formerly available
from HRST, with improvements to some of them, here at
Virtual AGC. Some of the
documents---particularly the assembly listings---have been
improved from the versions formerly at HRST; others will be
improved in the future. It may take a while to find
and fix all of the now-broken links, so if you find any of
them let me know.
||Okay ... I haven't updated
the development snapshot or website since dev snapshot
20060110, mostly from laziness. Agood thing, too,
because since then a very nasty bug had been introduced into
yaAGC, but I
couldn't find it or fix it because I was falsely blaming the
symptoms on the LM_Simulator
changes. Hooray for laziness! But yaAGC is now
If you're iffy about installing the new dev snapshot, here's the executive summary of changes since 20060110:
||Busy Stephan has sent still
update, as follows:
||Stephan has sent another LM_Simulator update,
which he describes as follows:
Now the FDAI shows the correct 8-ball angles - currently with a limitation to:
Yaw: 0Deg \B190Deg
Pitch: 0Deg \B190Deg
Roll: Anyway limited by the Gimbal Lock condition at 0Deg \B185Deg
The functionality of the DAP and the dynamic model as well as the displayed FDAI angles can be verified by using the "Crew Defined Maneuver Routine V49". By initiating this routine you must provide the desired destination IMU Gimbal Angles, subsequently the AGC presents you with the associated FDAI angles it steers the LM to (please refer to the Tutorial). Because of the above mentioned limitation those FDAI angles should be in the defined range. [By the "tutorial", Stephan means the Contributed/LM_Simulator/tutorial.txt, which you'll get by downloading the development snapshot of Virtual AGC.]
The CPU load maximum lies around 20% on an Intel Core Duo 2.13GHz processor.
||Here's a sort of omnibus
update that takes into account stuff people have been
sending me over the last year or so. I apologize to
anybody who sent me something I've forgotten about!
Additionally, Stephan tells us:
The DAP is now stable around all axes and even the "DAP V49 Crew Defined Maneuver" routine steers the LM exactly into the right orientation.
There was a major bug in the IMU coordination transformation that caused the DAP instabilities.
Furthermore, to handle single RCS jet events it was necessary to transform the U,V jet system into the P,Q,R pilot axes.
The whole dynamical model of the LM is now based on the equations used for the DAP state estimator. This approach makes the model very precise and comparable to the real thing.
To assure the right AGC initialization it is necessary to stick to the following pre-conditions and steps:
||Have added the
SimArtemis072_lite startup script, have tried out Artemis072
in Win32, and have hopefully updated all of the web-pages to
properly reference Artemis072.
Unfortunately, it may be quite a long time before the source code for Artemis072 is available, so we'll just have to live with having only the executable for a while.
||All data entry and proofing
for the Artemis 072 (Colossus 3) executable has been
completed, and some startup scripts have been added for
it. I haven't yet made the necessary mods to the
webpages yet to explain how to use it, nor have I gotten the
chance yet to try it in Windows. Tomorrow,
hopefully. In the meantime: Start the simulation
using the script "SimArtemis072". (I'm really only
posting it today just in case I happen to die overnight,
which I presume is unlikely.)
||I now have in hand the
complete listing of the Colossus 3 (Artemis 072) executable
used in the CM of Apollo 15-17. Thanks to D. Thrust
for providing the scans! It will take me some time to
convert it into machine-readable form so that it can be
executed by the AGC simulator, but I will proceed with it as
quickly as possible. I don't yet have much of the
Colossus 3 assembly-language source code, but hopefully it
will make an appearance as well, in due time.
||Well, I seem to have hit the
jackpot this week, in terms of getting into contact with
some of the original AGC programmers. Eileen Hughes
has sent me the first names of several
programmers---including her own---while Jonathan Addelston
has written to tell me that I was spelling his name
wrong. Sorry about that! The acknowledgement
list on the home page has been corrected.
||I've been holding onto some
changes for a while, so let's hope I manage to remember them
all. The reason I was holding on is that I have seen
some segfaults in yaAGC
when manipulating the RHC. However, now that I am
trying to fix them, they've magically disappeared. (If
you experience such problems, please send me the files
called "core" and "LM.core". Thanks!)
The downside is that you can no longer use any command-line parameters with the batch files. I've tried to make intelligent choices as to which command-line switches you might want, but if I'm wrong you need to edit one or another of the files SimLuminary131.xeq, SimLuminary131_lite.xeq, SimColossus249.xeq, or SimColossus249_lite.xeq. (These ".xeq" files contain the lists of files, along with their command-line parameters, that are run by WinAGC.exe.) Even then, there are some things you can't accomplish, such as running yaAGC or yaAGC in --debug mode. If you want to do that, I'd suggest setting the environment variable NOWINAGC=yes before running the startup scripts, as this will restore the batch files to their pre-WinAGC glory.
Another downside is that that Allegro and Tcl/Tk are now really requirements rather than options, although I've not had a chance to update the instructions yet. The reason is that the startup scripts will abort if yaACA and LM_Simulator cannot be run, rather than ignoring it. (I must say, though, that you really want to run both of these things, although admittedly yaACA isn't of much use without a "3D game controller" --- i.e., a joystick. Therefore, buy a joystick.) If you absolutely don't want to run these programs, or cannot for some reason, edit the appropriate ".xeq" file and prefix the yaACA and/or LM_Simulator lines by the character '#' (without quotes, of course).
The simulation reaches the correct Delta Velocity of about 2400m/s (about 8000ft/s) after using the complete fuel. The start values I'm using are obtained from the Lunar Module Wikipidia page and the pad load file.
||Well, I now like yaDSKY's ability to
display downlink lists so much that I've split off that
ability from the "--test-uplink" command-line switch, and
added it to a new "--test-downlink" command-line
switch. In fact, "--test-downlink" is used by default
in the SimLuminary131
startup scripts. Of course, the ability to completely
display all downlink lists isn't quite available.
However, the erasable dump downlist is still available, and
the AGS initialization/update downlist is complete.
||yaAGS: Finally have a sensible DVP instruction, I
think. (A rational person could still disagree with
this assessment, I suppose, so you're still invited to
examine the DVP
code in aea_engine.c to offer your opinion.) However,
I've noticed some anomalous behavior that I didn't notice
before, in that the DEDA will freeze up, or readouts will
occur that I can't figure out any way to stop, but it
doesn't seem to have anything particularly to do with the DVP
instruction. Typically, this will be readout of
address 555, which begins spontaneously, and which I can't
||Have now worked out the
details needed for the digital uplink, and have described
them in a new "Fictitious I/O Channel" section on the
developer page. However, I haven't yet implemented it
in yaAGC. (No
new new yaAGC
features are needed for the digital downlink, though I admit
I'm unclear yet on the mechanism used to transfer state
vectors between the CMC and LGC.)
||yaAGC: Implemented, I hope, the
behavior of counter-registers CDUXCMD, CDUYCMD, CDUZCMD (and
associated drive-enable bits in output channel 14) needed
for continuing development of the IMU --- in this case, of
IMU coarse alignment. Modified the description on the
developer page of the description of channel 14 needed to
use this feature, as well as the description of the CDUxCMD
registers in the assembly-language manual page.
(Thanks to Stephan Hotto and Markus Joachim for pointing out
this problem and describing the fixes.)
||In yaAGS, I've implemented the DVP instruction
according to an algorithm sent to me by Julian Webb.
(Thanks, Julian!) I'm bound to say that there are a
number of things that don't make sense about it to me, but
it does manage to pass the self-test (which no algorithm I
invented was able to do). Anyone who feels competent
to do so is invited to examine the DVP instruction in
the function aea_engine
of the source file aea_engine.c, and give me your insights
on the matter. Otherwise, though, yaAGS now passes the
built-in self-test (see, for example, p. 115 of Flight
Program 8), and may therefore be cautiously considered as
working. Probably there are plenty of problems with it
that will surface slowly in the coming months.
||Lots of work on yaAGS, but mainly in the
form of improving debugging (fixing i/o-channel addresses,
editing of memory locations, backtraces, etc.).
executes an undefined instruction in displaying to the DEDA,
but I haven't figured out yet how that happens.
||"Finished" coding yaAGS. It doesn't
work, of course. I'll start figuring out why tomorrow.
||On the links page, updated the status of the integration of Virtual AGC with the Orbiter simulator again, after receiving some additional info from Markus Joachim.|
||Allan Klumpp has told me that
there is a descrepancy between the the software version
quoted on the Luminary page for
Apollo 15-17 vs. his personal recollections and
in-hand documentation. I've added notes to that
effect, along with disclaimers on the Colossus and Luminary pages to
indicate that I'm not certain how accurate the software
configuration information is.
||On the yaAGS page, added a link
to the complete LM/AGS Design Survey document at klabs.org,
whereas only the block diagrams from that doc are available
locally here on the Virtual AGC site.
||Minor corrections on
developer and language-manual pages. And a few
additions to the faq page.
||Finished up the API
documentation. Probably still needs a little work,
such as verifying the sample programs listed, but looks
|2005-05-18||Finally began filling in some
of the Virtual AGC Library API stuff on the developer's page
since, I was surprised to find, some people are actually
interested in it. Still needs a lot of work, but does
actually contain some useful information.
||The developer page
now contains a pretty complete discription of the extensions
to the socket protocol which will be needed to implement
yaAGS, yaDEDA, and peripherals, and to allow interaction of
yaAGS with yaAGC. Communication of yaAGC with yaDSKY
and other projected peripherals remains unchanged from
before. I was afraid there would be a lot more fuss
and muss with this than there really was.
||PR #30 (socket interface to
"unprogrammed" counter sequences completely inoperative) has
been fixed in yaAGC,
and a special mode (--debug-counter-mode) has been added to
yaDSKY so that
there's a way for debugging purposes of sending known
counter-commands to yaAGC
and observing the effect.
||I discovered that while
yesterday's Linux binaries do work on a variety of systems
(like SuSE 9.0 & 9.1, Ubuntu 5.04, and Fedora Core 1),
they don't work on older systems (like RedHat 7.3).
With some luck, the Linux binaries I've put up today will
work on a wider variety of systems.
||There are now pre-built
Virtual AGC binaries for Linux on the download page.
This has been a long time coming ... which is a shame, since
it turned out to be pretty easy to create them. On the
other hand, I don't guarantee the binaries work on every
platform, though they've worked so far on all of the
platforms I've tried. Your mileage may vary.
||A lot of changes related to
PR #28 have been made. These changes relate only to
building the program on Win32, which was broken.
Various compiler warnings under Linux have also been fixed,
but there's no actual functional change.
||At the request of Markus
Joachim, I have added a "special exception" (as
allowed/required by the GPL) to the license of the source
files yaAGC/yaAGC/*.[ch], allowing linkage to the non-GPL'd
Orbiter SDK libraries. This has been done to allow
distribution of plug-ins relying on yaAGC source code for
the Orbiter spacecraft simulator.
||Added the AGS Performance and
Interface Specifications document to the AGS page. (Thanks to John
Pultorak and Davis Peticolas.) We've decided not to
provide one of the docs that was originally listed, so
||In yaAGC, managed to get rid of the annoying
effect (which appeared only in Linux) whereby stopping yaAGC before stopping yaDSKY resulted in an
operating-system timeout of a couple of minutes before the
port could be reused (and hence before the simulation could
||The AGS Flight Equations
document scan has been added to the AGS page.
|2005-01-27||The Mac OS X build
instructions have been simplified a little, and completely
tested on a pristine Mac OS X 10.2.8 system.
||On the links page, there are
now some scans of
tables relating to spacecraft interior and exterior
lighting, thanks to Paul Fjeld.
||I finally have Virtual AGC
running on pre-Panther versions of Mac OS X -- or at least I
have it running on Jaguar. The instructions are on the
download page. My only
problem, it turns out, was finding the right version of X11.
||The scan of the AGS FP6 Operating Manual has
been added, as usual thanks to John Pultorak and Davis
||Data entry for AGS Flight
Program 8 source code is complete, but no debugging has been
done on it yet.
||yaLEMAP, in so far as the sample code is
concerned, is fully working. I know that there are a
couple of things appearing in the flight code that I haven't
dealt with yet, because they don't appear to be documented.
||Continued refinement of AGS
page text. The yaLEMAP
program is coming along nicely; it can produce a correct
symbol table and a partial assembly of the sample AGS
program from the appendix of the AGS programmer's manual.
||Paul Fjeld has supplied
various factual corrections and some amusing anecdotes for
the AGS page. Also, John Pultorak has scanned yet
another of Davis Peticolas's documents, the AGS simulator
user guide. There is a skeleton program now for the
AGS cross-assembler, yaLEMAP,
but it's not much yet.
||Thanks to Davis Peticolas and
John Pultorak, various new AGS document scans are available,
including the complete assembly listing for Flight Program 8
and the program specification for Flight Program 6 (Apollo
11). The utility program binLEMAP for keying in AGS binaries has also
been added. The source code and binary
(SampleCodeAGS.s and SampleCodeAGS.binsource) for the sample
program in Appendix A of the AGS programmer's manual have
been added, but will only be of interest in wringing out the
cross-assembler, which doesn't yet exist.
||Bunch of website changes,
related to the impending availability of AGS (Abort Guidance
System) material. In fact, the AGS programming-manual
is now available on the new "yaAGS et
al." page, thanks to Davis Peticolas and John
Pultorak. This page and the Pultorak page have now
been added to the title block, rather than forcing you to
find them on the links page.
||Changed from Pultorak link (see item below) to a complete page. The page contains a lot of supplemental materials which John has sent me, but which you can't get out of his PDFs, such as the original CAD files from the schematic capture, source-code files which you don't need to cut-and-paste, a part list, and so on.|
|2004-12-19||Added a link to John Pultorak's site
on the links page. (Adding a
link normally wouldn't be newsworthy, but the guy has spent
4 years building his own Block I AGC and gives us the
complete plans for it. Does it get any
||Made available a lot of
replacement scans Gary Neff (thanks Gary!) has sent me for
50 garbled pages in the MIT-hosted Colossus 249 assembly
listing. You can get these from the Colossus page. These will
help to clean up a few holes in the Colossus source code,
though I've not yet made those fixes. (Fortunately,
there are not many such places.) Eventually I intend
to merge Gary's scans with a cleaned-up MIT-based scan, so
that the scanned assembly listing will become much more
readable, though (again) I've not yet done so.
||Fixed a website link on the Luminary page.
(Thanks to Christian Bucher for pointing out the error.)
||Added some additional hints
to the Mac OS X build instructions, thanks to Greg Dunn.
By the way, some folk have wondered why the pace of updates has dropped off. I'm a bit burned out and am taking a little rest. Don't worry, though, I'll snap back soon (I hope), especially if anybody finds an alternate version of Luminary or Colossus for me to work with. :-)
||Drastically reduced the size
of some of the new scanned documents: Excerpts from
CSM 112-114 System Handbook reduced from 120M to a "mere"
20M; LM 7 pad-loads reduced from 5M to 1M. Sorry for
the inconvenience to anybody that downloaded them
earlier. (Note that the earlier downloads were
grayscale rather than b&w, and therefore may be very
slightly more legible.)
||Pages 30-50 of Hugh
Blair-Smith's "memo #9", covering AGC microcode have been
provided in text (as opposed to scanned) form on the links
page. This material has been typed and contributed by
none other than Hugh Blair-Smith himself! Several
large schematic foldouts from the Apollo LM System Handbook for Apollo 17
have been added also, Contributed by Fabrizio Bernardini.
||The G&C section of the Apollo CSM System Handbook
for CSM-112 through CSM-114 has been added to the links
page. (Contributed by Fabrizio Bernardini.)
||Additional docs added to the
links page. These include the LM-7 (Apollo 13)
pad-loads -- i.e., the values for the AGC erasable
memory. (Contributed by Paul Fjeld.)
||yaUniverse: Is now capable of
numerically integrating the motions of the heavenly bodies
and spacecraft under gravitational influences. The
previous concept of using fully-tabulated heavenly-body
ephemeris data for the heavenly bodies has now been
discarded because of the large downloads required, and hence
the separate ephemeris downloads have been removed from the
download page. The greatly abbreviated ephemeris files
needed for testing and for determination of initial
positions and velocities of heavenly bodies are now included
directly in the development snapshot.
manual: Updated/added descriptions of various
||yaACA: The proof-of-concept now builds
(and hence works) in Win32. It still does not
communicate with yaAGC.
||yaACA: Just a start. More of a
proof-of-concept that a hand-controller can be used.
All it does so far is to display the pitch, yaw, and roll
axes of the hand-controller, but at least it does it.
I haven't connected it to yaAGC
yet, and have only gotten it to work in Linux.
||The Win32 zipfile from
20040905 is corrupted. (Thanks to D. C. Shoemaker for
pointing this out.) I have now reverted to the
20040819 Win32 zipfile, which is perfectly fine except that
some now-known bugs in Colossus249.bin have not been
fixed. Download the development snapshot to get a
fully-correct version of Colossus. (I find myself
temporarily in the position of not being able to create a
zipfile. Sorry for the inconvenience.)
||Colossus249 source code: Source code through page 1037 (out of 1505) of the scan 1701.pdf is now available.|
||Colossus249 source code: Source code through page 1011 (out of 1505) of the scan 1701.pdf is now available.|
||Colossus249 source code: Source code through page 951 (out of 1505) of the scan 1701.pdf is now available.|
||Colossus249 source code: Source code through page 746 (out of 1505) of the scan 1701.pdf is now available.|
||Colossus249 source code: Source code through page 289 (out of 1505) of the scan 1701.pdf is now available.|
||Colossus249 source code: Source code through page 167 (out of 1505) of the scan 1701.pdf is now available.|
||Colossus249 source code: Source
code through page 128 (out of 1505) of the scan 1701.pdf is
||Colossus249 source code: Resumed data
entry. Source code through page 36 (out of 1505) of
the scan 1701.pdf is now available.
||yaAGC: Apparently I had forgotten to
--port=N command-line switch, so it wasn't possible to run
two instances of yaAGC
simultaneouly --- or at least not to run them and expect
both to connect to peripherals. (After daily snapshot
||Found complementary errors in
bank 02 of Colossus249
binary. (Lest anybody be suspicious as to how
complementary errors could have been found in both Colossus249 and in Luminary131 --- see
changes for 07/02/04 --- and wonder how many more of them
are lurking, I'd like to point out the following fact:
the banks in which complementary errors were found were
happened to be banks that I proofed before I honed my
proofing technique. So while I was somewhat surprised
to find these errors, I was not astounded to find
them. All of the remaining banks were proofed somewhat
||Website changes: Lots
of screenshots added on the home page. Also, added
Frank O'Brien's amusing correction to the FAQ page.
||The Win32 version now builds
again, and is known to run (at least on Windows XP).
The system is also known to work in a distributed
configuration (with yaAGC
on one computer, either Linux or Win32, and yaDSKY on another
computer, either Linux or Win32). Minor cleanups of
the website have also been made.
||I've now had my first look at
the executable for Julian Webb's sim. In order to run
the validation suite on Julian's sim, I've created a
conversion program called webb2burkey-rope,
in the Luminary131 directory, which converts the core-rope
files between Julian's format and mine.
||There was major code rework
done in yaAGC, with
the intention of making the L register (and possibly other
registers) 16 bits. The new code seems to work exactly
as well as the old code, in that stuff which worked before
still works, and stuff which didn't work before still
doesn't. The validation test does fail the D--LCHK
test now, as it ought to (considering the nature of the
changes). There are numerous comments concerning this
change that will have to propagate into the spec (language
manual), but which haven't done so yet.
Also, the LOG command was added to --debug mode.
||Added a new utility program
which simulates some (but not all of the "control pulses" of
the CPU --- i.e., the microcode). From experimenting
with this and from discussions with Julian Webb, it seems
probable that at least the L register (and possibly all
erasable memory) will have to be made 16-bits. This
means that instructions like "CA L" and "CS L" don't presently work properly
when overflow is involved.
... Or else, it means that the description of control-pulses in Blair-Smith is not entirely accurate. It contradicts some later docs (like Smally), so this is possible. Must think more deeply ....
||yaAGC --debug mode: Enlarged the
number of allowed breakpoints (watchpoints, patterns)
dramatically (from 32 to 256), in order to account for the
possibility of trapping upon executing a lot of different
instruction-type patterns. Allowed for nesting
FROMFILE commands. Fixed it so that COREDUMP and
FROMFILE don't automatically convert filenames to upper
case. Added scripts (usable by FROMFILE) for every
instruction type. Debug-mode commands beginning
with the character '#' are now discarded. Added a lot
more flags to the PATTERN command.
||yaAGC --debug mode: The concept of a
"PATTERN" has now been defined. This is like a
breakpoint, but halts upon finding a pattern in the
instruction code rather than at an address. The
FROMFILE command has also been defined, in order to take
debugging commands from a file rather than the
keyboard. I hope to use these in conjunction
with each other, to track down the remaining broken
||In yaAGC --debug mode, fixed the sign of an
octal value displayed by GETOCT.
||The Win32 version compiles
again (at least on Windows 98), but the Win32 version of yaAGC is broken.
||yaAGC: Fixed a couple of problems with
instruction: If the accumulator was +0 or -0 and the
other factor was not, then neither the accumulator nor the L
register was updated to contain the product. Also, if
the factors were non-zero but of the opposite sign, the
product was messed up.
||yaAGC: Added primitive watchpoint
capability to the --debug mode.
documentation tweaks (de-inhibiting of interrupts for GOJ or EDRUPT). yaAGC: Fixed TCAA, ZL, and ZQ
instructions. Closed up some conditions previously
resulting in the zero register (7) being overwritten with a
non-zero value. yaDSKY: Digit ND2 wasn't being
displayed --- instead, it was overwriting ND1.
||yaAGC: In --debug mode, now continues
to try to service client (yaDSKY)
connects or disconnects while waiting for keyboard input at
||yaAGC: In --debug mode, the BREAK and
DELETE commands didn't work properly in and around
superbanks, nor did the breakpoints themselves. The
wrong datatypes (unsigned vs. signed) were used for the EB,
FB, and BB registers in some places, causing the automatic
mirroring of BB into FB/EB to fail. The unused bits of
FB, EB, and BB were removed also.
||yaAGC: Fixed indexed instructions for
negative indices. Also, the instruction executing
had been taken from the BBRUPT register, whereas it should
have been taken from BRUPT.
||Instruction set in yaAGC now essentially
rewritten against v0.50. Still not fully working, but
seems more convincing than before.
||Finished drafting everything
I want to say in the assembly-language manual about how
machine code is processed. This is v0.50.
||Finished documenting all of
the "basic" instructions (as opposed to the "extracode"
instructions), except that a few of the implied-address-code
instructions remain to be done.
||Continued documenting the AGC
instruction set. So far I have CCS, DAS, EXTEND, INHINT,
RELINT, RESUME, RETURN, TC, TCF, XLQ, XXALQ, but DAS still needs a
few loose ends tied up.
||Continued updating counter
descriptions in the assembly-language manual.
||Added quite a lot of text to
the assembly-language manual, under the CPU
architecture section. (I think I really need to
finish most of this manual before proceeding further with
the emulator, because it's simply too hard to keep trying to
pull this info out of the original Apollo docs. I need
to pull the info from the Apollo docs into my own definitive
description of how the AGC works, so that my definitive
description can act as a set of requirements.) The send/recv protocol
has also been modified so that it includes "counter pulse"
inputs to the CPU in addition to i/o-channel data, and the
assembly-language manual has a new (but incomplete) section
on the "unprogrammed sequences" associated with these
||yaAGC: Now update the Z register to
c(Z)+1 prior to decoding the instruction.
||yaAGC: Made major fixes to the AD and
TS instructions, but there's still a lot more to do along
the same lines, I think.
||yaAGC: On the basis of some comments
in Luminary131 source code, output channel 7 now retains
bits 5-7 rather than just bit 7. Timers TIME5 and
TIME6 and their interrupts have now been implemented
(including the T6RUPT enable in output channel 013), though
I don't have enough info about these timers to know if I've
done it correctly. The interrupt for keypad input from
the DSKY is now implemented, and seems to work (and the ISR
reads back the right code from the input channel). (I
haven't included the PRO key in it, and don't know if I'm
||The 'snapshot' target in the
makefile has now been modified so that future development
snapshots will have datastamps in the names. From now
on, new development snapshots won't overwrite old ones.
||yaAGC: Added INTOFF, MASKON, and
MASKOFF commands to the --debug mode; INTERRUPT was
changed to INTON. Implemented timer registers SCALER1,
SCALER2, TIME1, TIME2, TIME3, and TIME4, as well as the
interrupts for TIME3 and TIME4.
||yaAGC: The interrupt-vector/RESUME
mechanism added yesterday was a little over-zealous, in that
it automatically saved and restored the A, L, Q, and BB
registers (in ARUPT, LRUPT, QRUPT, and BBRUPT); actually,
the interrupt-service code is supposed to do this if it
wants it done. My RESUME instruction was also broken,
as it continued to be decoded as INDEX 017. I've
changed the --debug mode's backtrace mechanism a little, in
that a RESUME instruction removes all of the backtrace-table
entries for the ISR. (Otherwise, the backtrace table
would become completely full with ISR stuff, and we'd never
be able to use backtraces to debug non-interrupt code.
||yaAGC: Many instructions (particularly
DTCB and DTCF) which arithmetically modified the Z register
were broken. (I'm not sure they're all fixed now, but
a lot of them are.) The interrupt mechanism has now
been implemented, though no events have yet been configured
to trigger interrupts. The --debug mode now has the
commands INTERRUPTS and INTERRUPT to (respectively) view the
interrupt-request flags and to set an interrupt-request
flag. The BACKTRACES command also accounts for
branches due to interrupts.
||The 'configure' script now
allows the command-line switches "--help" and "--prefix", so
that installation can be done to any directory.
||yaAGC: Fixed addressing of
superbanks. Fixed the --debug mode EDIT command, which
I apparently broke yesterday. The emulation actually
manages to get to the AGC self-check code now, though it
doesn't seem to work right.
ability added to yaAGC
snapshot.) Fixed synchronization of BB, FB, and EB
registers in --debug editing. Also fixed faulty
display in --debug of addresses in superbanks.
||Various issues related to the
virtual i/o channels were fixed: yaAGC's handling of i/o
channels was incorrect, in that it internally used the wrong
numeric format for them, so none of them worked properly;
moreover, while yaAGC
read the virtual input port, it never actually wrote to the
virtual output port (except in --debug-dsky mode). As
a separate issue, both yaAGC's
handling of the PRO key was wrong, in that the wrong bitflag
was used for it. It looks like i/o channels are now
handled correctly, not only in normal mode, but in --debug
mode and in --debug-dsky mode. In experimenting with
this, I noticed that it is impossible in --debug mode to
ever find the PRO key pressed by checking "edit c32",
because the PRO key sets this bit when the yaDSKY key is pressed,
and then clears the bit when released. Therefore,
using "edit c32" will always find the bitflag associated
with PRO cleared. But you can see that it works if you
debug yaAGC itself
||yaAGC's --debug mode now has a command
("getoct") for converting numeric values to/from the AGC's
||Made various changes to make
the --debug mode of yaAGC
||'make install' now copies
*.ini, Luminary131.bin, and Colossus249.bin to the
installation directory (which is hard-coded as
/usr/local/bin, so it's not totally perfect).
and yaDSKY will now
look in the installation directory for files specified with
the --cfg and --core switches, if not found in the current
directory. (These suggestions are due to Christian
Bucher.) Also, yaAGC
had not been displaying error messages when the file for
--cfg wasn't found, and this has been corrected. The
instruction "DXCH L", which is not unambiguously defined by
the docs, has changed in a way that conforms to comments in
the Luminary131 source. (Refer to address 33,03514, p.
888.) Fixed a potential divide-by-0 in the DV
instruction, but my impression is that my DV instruction
right now is completely wrong anyhow.
||Continued working on yaAGC. Some fixes
to INDEX, to CCS A, and to CCS with comparison values of
-1. Added S and N as synonyms for STEP and NEXT in the
||Continued working on yaAGC. Fixed some
bugs in AD, DCA, and CS.
||Fixed problem reports 3, 4,
and 5. Thanks to Christian Bucher for pointing
out the problems.
||Lot of links broken.
Thanks to Christian Bucher for pointing this out.
Hopefully I got them all.
NARA-Southwest finding-aids links.
||Added a bunch of CDROM-only
links for NARA-Southwest finding-aids I've created.
||Added scans of Skylab and
Apollo-Soyuz training "data cards", and the report The Apollo 11 Adventure,
to the links page. Various corrections to the web
pages as well.
||The Luminary 1C (Rev. 131)
GSOP document is now complete and online---about 2300 pages,
45M. Merry Christmas!
||The Colossus 1A (Rev. 249)
"guidance system operation plan" (GSOP) document is now
complete---and about 1840 pages, 43M in size.
||Changed the documents
mentioned in the item below to PDFs (rather than TIFFs), and
added section 3 and half of section 4 to the Colossus "operations
||On the links page, I've begun adding scans of documentation not available elsewhere on the Internet, or else previously available only in a corrupted form. So far, I've added multi-page TIFFs of the AGC4 Basic Training Manual, the Preliminary MOD 3C Programmers Manual, and sections 1 and 2 of the Guidance System Operations Plan for Manned CM Earth Orbital and Lunar Missions Using Program Colossus 1 (Rev. 237) and Program Colossus 1A (Rev. 249).|
||Mr. Gary Neff has provided
some scans of a page in Luminary
131 and two pages in Colossus
249 which had previously provided obstacles to validating
the Luminary source
code and the Colossus
core-rope image. The small amount of
source code has been added to the file P20-P25.s.
||For yaAGC debug-mode, have
added the ability to interactively halt execution, in
Linux. I don't know if this works in *BSD or in MacOS
X, but I know that it doesn't work in Win32.
||yaAGC now supports all instructions;
however, it is still only minimally debugged. Erasable
memory and i/o-channel space now overlap properly. The
--debug mode has now been beefed up with a core-dump option
for erasable memory and i/o channels, so that execution of
the AGC program can be later resumed at a specific
point. Have now written the memory-map section for the
||Lots and lots of improvements
Many more instructions implemented, bugs fixed, more
debugging commands added. Still not really working
yet, though. A detailed explanation of the new
debugging mode has been added to the yaAGC page.
||Resumed work on yaAGC. The CPU
timing has now been corrected (previously it just ran as
fast as it could go). Added a primitive debugging mode
in which you can look at the AGC registers, single-step
through the AGC code, see disassembled AGC instructions,
||The Colossus 249 binary is
now completely reconstructed, and presumably ready for
use! (I.e., whenever yaAGC
is actually ready.)
||Colossus249 binary: All banks are now
completely proofed. However: Because the bugger
word for bank 35 was missing from the PDF, I've constructed
the bugger word on the assumption that the rest of my
proofed data is correct. Also, bank 36 requires more
demanding reconstruction (at location 36,2734), which I've
not yet completed.
||Colossus249 binary: Bank 43 (octal)
has now been proofed. Banks 35-42 have all been
through a first-proof, but none of them are error-free
yet. I've invented a technique (described in
Colossus249.binsource) through which it may be possible to make
bank 36 error-free, which has previously been thought
impossible without additional scans (see bug report #1).
||Colossus249 binary: Bank 34 (octal) now proofed.|
||Colossus249 binary: Bank 32,33 (octal) now proofed.|
||Colossus249 binary: Bank 27,30,31 (octal) now proofed.|
||Colossus249 binary: Banks 23,24,25,26 (octal) now proofed.|
||Colossus249 binary: Bank 22 (octal) now proofed.|
||Colossus249 binary: Banks 20,21 (octal) now proofed.|
||Colossus249 binary: Banks 16,17 (octal) now proofed.|
||Colossus249 binary: Bank 15 (octal) now proofed.|
||Colossus249 binary: Bank 14 (octal) now proofed.|
||Added an Acknowledgements section to the home page. Colossus249 binary: Bank 13 (octal) now proofed.|
||Colossus249 binary: Bank 12 (octal) now proofed.|
||Colossus249 binary: Banks 10,11 (octal) now proofed.|
||Colossus249 binary: Bank 7 now
||Colossus249 binary: Banks 4,5,6 now
proofed. Added the CheckDec utility program.
There's now a Makefile under Luminary131, which builds
Oct2Bin, CheckDec, and the Luminary131 binary.
||Colossus249 binary: Banks 0,1 now
||Fixed a bunch of web links.
||Colossus249 binary: Bank 3 now
||Colossus249 binary: Now complete, but
not proofed. There are unrecoverable problems with it,
not solvable by proofing, in that the "bugger word" from
bank 35 and the values at addresses 2634 and 2734 of bank 36
||Colossus249 binary: Banks 7-32 (octal) are now in place, but not proofed.|
||Colossus249 binary: Banks 0-6 are now
in place, but only bank 2 has been proofed.
||Instead of providing separate
instructions and methods for building each of the
executables, a single set of scripts/makefiles/instructions
is now provided to build/install all of the executables as a
single batch job.
||yaDSKY and yaAGC
now actually work the same in Win32 as in Linux (and,
indeed, can be mixed-and-matched).
||yaDSKY and yaAGC
now build in Win32, and run. (However, the socket
communications don't work well enough for them to be fully
||yaDSKY indicator lights have been modified,
so that instead of all being amber when lit, they are mostly
white when lit instead. (Only TEMP, GIMBAL LOCK, PROG,
RESTART, TRACKER, ALT, and VEL are amber now.) A lot
of descriptive text has been added to the website in the
form of a "howto" for building glade/gtk+
programs under Windows, with the idea of eventually having
Win32 versions of yaDSKY
and possibly Mac OS X versions at some point.
||Oct2Bin has been changed to make it a lot
clearer whether messages are errors or just information.
||Luminary131 binary (Luminary131.bin and/or
Luminary131.binsource) now completely proofed and
(presumably) ready for action! Of course, until yaAGC (or yaYUL) is ready, it's
not good for much.
||29 (of 36) memory banks of the Luminary131 binary now proofed.|
||26 (of 36) memory banks of the Luminary131 binary now proofed.|
|09/02/2003||21 (of 36) memory banks of
binary now proofed.
||Now have the complete Luminary131 binary, but
only the first 15 banks (out of a total of 36) are
proofed. The other banks are known to contain errors.
||Now have some (small) chunks
of Luminary131 and
binary. Download page completely rewritten, so that
now there are some sensible downloads.
||To the best of my knowledge,
yaDSKY is now fully
operational. Not all of the output-channel bits
controlling the indicator lamps have been identified yet,
but these will be added to configuration files LM.ini,
CM.ini, CM0.ini (which are complete except for this
information) rather than to yaDSKY itself. The "--debug-dsky" mode
has been added to yaAGC
to allow testing of yaDSKY.
||The web pages are now
up-to-date with all of the info I've systematized from the
original Apollo docs.
.... I spent an enormous amount of effort on the
project for the first couple of months, but completely
burned myself out before getting any results that I felt
like inflicting on the geek community, and have had to veg
out since then to recover. At this point, I have the
||Got the idea for this project, whilst watching the movie Apollo 13.|