Hide 2024 change notes?
2024-10-09
Bill Miller has sent over one of the missing volumes of the "Shuttle Flight Operations Manual" (namely 8A, "Main Propulsion Systems"), so I've added it to the Shuttle Library.  Thanks, Bill!
2024-10-01
Mark Schulman has sent me a document called "Saturn V Step-by-Step", written by himself (thanks, Mark!), which I've posted to the document library.  It's based on the very interesting notion of a complete timeline — within the limits of reason — of the "life" of a Saturn V rocket, with the Apollo 11 mission as the baseline but with notable events from other missions described as well.  The first events on the timeline are the CM system tests, about 9 months prior to launch, while the final event is the S-IVB impact on the lunar surface.  But just saying that doesn't do much justice to the level of detail.  Some events I noticed, for example, include the specific programs running on the AGC and the time at which the LVDC is shut down.  There's about 70 pages of timeline overall.

The document isn't actually a great fit for the Virtual AGC library, simply because we only provide archival documents that are unchanging and can be preserved as-is for eternity.  Whereas Mark's document will presumably change over time, and our library isn't really set up for the possibility that documents are evolving on an ongoing basis.  Nevertheless, Mark wanted to provide it to the world, in a way that could allow him to get some expert feedback on it, and posting it seemed to be the most straightforward means at my disposal to help with that.  Alas, I cannot provide any useful feedback myself, since I'm not an expert on the Saturn rocket in any sense, but I know that some of you are.

The rest of you, enjoy!
2024-09-11
I don't really have any "news" to report today, but just want to blow off some steam about what I'm working on now.  Which is appropriate for an anniversary of 9/11, I guess.    And for the fact that in some ways this page is more of a blog than a change log. 

A couple of weeks ago I reported that the HAL/S compiler for the Space Shuttle's flight software had reached at least a preliminary level of usability.  But I also mentioned that to be really useful, you'd also need a linker for IBM AP-101S object files and an emulator for the AP-101S CPU.  (Recall that the Space Shuttle's "general purpose computers" were IBM model AP-101B at first, and then later on were model AP-101S.)  What I failed to mention is that in addition to source code in the HAL/S higher-level language, there's also a lot of Shuttle flight software written in AP-101 assembly language, and thus you'd also need an AP-101 assembler in addition to the HAL/S compiler.

Well, given that I've written assemblers for the Apollo AGC, AGC, and LVDC, I thought I could knock out an AP-101B/S assembler in short order.

Wrong!  Wrong, wrong, wrong, wrong!

While no documentation for the AP-101B/S assembler has survived (let alone its source code!), in so far as I'm aware, I came to the conclusion that the assembly language is based very closely on IBM's assembler for System/360 Basic Assembly Language (BAL).  Yes, the CPU instructions are somewhat different, but I'm referring to the language syntax, pseudo-operations, and so forth.  In fact, I suspect that the original AP-101 assembler was probably created by simply replacing the code-generation portions of the System/360 assembler, and leaving the scanning and parsing portions intact.  That's not immediately helpful to me, of course, since I don't have a copy of the System/360 assembler's source code, nor could I use it if I had it since it would be in copyright limbo.  Besides which, such an assembler would likely run only an IBM 360 or similar.  On the other hand, multiple versions of the documentation for the System/360 assembler are floating around online (copyright or not), and can essentially be used as-is, even if we cannot repost copyrighted documents here at Virtual AGC.  Beautiful!  The most up-to-date version I'm aware of is this 1972 version.

The problem is that this assembly language is monstrous.  Not the CPU instructions per se, but the fact that it's a macro language that has multiple characteristics that make it awful to parse.  In fact, I can't get my head around how to parse it, and every time I do seem to do so, I realize 5 minutes later that I'm just kidding myself because there's some special case I had forgotten about or didn't know about in the first place invalidates whatever approach I had concocted.

Normally, this wouldn't be terribly concerning, because macro features of an assembly language are often used only minimally, as an afterthought.  For example, the LVDC assembly language (for the Apollo Saturn rocket) is a macro language, but a nice, gentle one, with macros seldom appearing in LVDC flight software.  Not so for the Space Shuttle flight software!  Its coders must have been steeped in System/360 assembly language lore, and used every feature of that macro language, everywhere.  You'd be hard pressed to find a single flight-software assembly-language file that didn't depend intimately on its macros.  Macros have to be considered right up front in implementing an assembler, not as an afterthought.  More than half of the assembly-language manual is devoted just to macros.

I'm tempted to continue this rant, but I think you get the idea:  There might be some delays involved in creating this assembler, which by the way, I call ASM101S.  There's a surprisingly-well organized page describing it and what I'm doing it with, but who knows how long it will be before that page is anything other than "under construction" or the assembler itself is just a useless shadow of its final version?
2024-08-26
A couple of documents were added to the main library, and a couple more to the Shuttle library, all kindly sent to me by Gavin Eadie.  (Thanks, Gavin!)  All were different revisions of documents we already had — well, with a couple provisos I won't bore you with — so perhaps we've saturated the market on documents!  (  I jest:  We haven't.)  Gavin tells me that Draper Labs simply sent them to him on request.  Alas, that was a long time ago, and the times have changed so much that there's no chance whatever of that happening these days, or perhaps ever again.  So I guess that sometimes the Good Old Days really were better than today.  Not all that often, but sometimes, in some ways.
2024-08-21
For quite some time now I've been working compilers for the HAL/S computer language.  Indeed, for the last six months or so I've been working on no less than my third attempt, having abandoned the first two attempts when they were useful but still incomplete in one way or the other.  Recall that while HAL/S is basically a dead language now, it is the principal language in which the Space Shuttle flight software was written.  And while we have the source code for the original HAL/S compiler used for the Space Shuttle, that source code is written in an extended version of XPL, which itself is a dead computer language.  So in order to compile the HAL/S compiler, I first needed to step back and write an XPL compiler.  Or more accurately, a compiler for the extended but largely undocumented version of the XPL language in which the HAL/S compiler is written.

Today, I'm announcing the first release of that XPL compiler (which I call XCOM-I) and the HAL/S compiler (which I call HALSFC), both of which can be run on Linux, Mac OS, or Windows.  Their dedicated pages give installation and usage instructions, as well as my usual too-much-of-everything descriptions of what's going on:
The Shuttle page has been reworked somewhat as well, to accommodate this new situation.

Neither compiler is perfect, there are known bugs, and HALSFC is still missing a couple of compiler passes that deal with simulation data, but I'm quite pleased with both compilers nevertheless.

Don't get terribly excited about this — as if anyone would! — until you understand the limitations.  XCOM-I should be usable as a general XPL compiler, true; it's a Python program that's basically an XPL-to-C translator, so it can be used on any platform having Python and a reasonably-compatible C compiler.  However HALSFC, while also running on Linux/Mac/Windows, nevertheless faithfully duplicates the functionality of the original HAL/S compiler.  Which means that HALSFC outputs IBM AP-101S object-code files.  (Recall that the onboard computers of the Shuttle were model AP-101S.)  So unless you simply want to examine the object code created by the HAL/S compiler, you'd also need an AP-101S linker and emulator.  A compiler alone isn't enough.  But give us time!  Rome wasn't built in a day, or even a year.
2024-08-18
Still more docs for the library, from Mike again.  Quite a meaty selection.
  • Revisions A and B of the LM-1 Systems Handbook. We previously only had the change pages for revision C in the library; so with these additions we go from having one partial revision to three full revisions. Revision A pertains to the original manned configuration of LM-1, and revisions B and C correspond to the unmanned Apollo 5 configuration. The revision A scan was sent to us by dak4482 (thanks!).
  • Volumes 1 and 2 of the CSM-014 Apollo Operations Handbook. As far as I can tell this is our first complete volume 2 for a Block I spacecraft.
  • The CSM-103 (Apollo 8) Systems Handbook
  • A new scan of the LM-6 (Apollo 12) Apollo Operations Handbook. We've had a mediocre scan of this document in the library for a long time; this one should be much better.
  • Apollo 17 LM Console Handbook. This is the first LM Console Handbook we've gotten our hands on, and it's a very interesting document. Particularly relevant to VirtualAGC is the PGNS section starting on pdf page 113.
  • LSB Notes of Interest, dated June 1970. Not a handbook in itself, but these notes were included as a section in the LM Systems Handbook. Lots of interesting notes (go figure!) about the LM.
2024-08-14
Mike Stewart sent over a few new documents for our library page.  As usual, here's his excellent summary:
  • Engineering Analysis of the CSM-109 Apollo 13 Mission
  • Saturn IB/V - Instrument Unit Technical Manual - Navigation, Guidance, and Control System Description
  • CSM ECS Study Guide
  • Saturn Workshop Internal Configuration - this document shows all of the various panels and their locations in Skylab
  • CSM/LM Spacecraft Operational Data Book Volume VI: CSM Experiments Data Book for J-Missions
  • AS-201 Mission Rules

The 2nd item is really just a single volume of the multi-volume IU Technical Manual, but from my point of view it is far and away the most-import document in this latest stash.  While we've already had other volumes of the IU Technical Manual in our library, this is the first of them that contains significant information regarding the LVDC, its flight program, and its relationship to the launch vehicle.  There are flowcharts.  There are explanations of various items you find in the flight software.  See chapters V and VI in particular.  For any of you trying to wade through the LVDC flight program source code, this should be a real help.

2024-07-03
Having noticed the non-shocking fact that our GitHub software repository has so much stuff in it that no novice could navigate it, I've added a "brief" tour of it to the FAQ page.  Whether it's brief enough to actually be of assistance to anybody is questionable.
2024-07-01
  • Added 38 documents to the main library, all of them astrionics memos from 1965 through 1969, related to the Saturn launch vehicle, and of course its computing system.  I say that they're all "memos", but a few are really substantial (unnumbered) documents enclosed in memos.  Mike sent me these nearly 3 months ago, and I've just been so busy that I simply lost track of how much time had passed while I sat on them.  Sorry!
  • Added 3 documents I got (today!) to the Shuttle library.  These documents all relate largely or entirely to what are called Simulation Data Files (SDF).

Surprisingly, that's actually all tied together.  The reason I've been too busy to look at the Astrionics memos I mentioned is that I've been completely consumed by Shuttle-related work I've been doing.  As I've mentioned in other updates here, I've been working on a compiler (which I call XCOM-I) for the XPL programming language as it was extended in an undocumented fashion by a company called Intermetrics.  The reason is that Intermetrics wrote a compiler for a computer language called HAL/S in this extended form of XPL.  That HAL/S compiler, called HAL/S-FC, was needed to compile the flight software for the Space Shuttle, since that flight software was written in HAL/S.

And the reason I have time today for those memos is that just yesterday I reached a milestone on XCOM-I:  Not only can it now compile HAL/S-FC, but HAL/S-FC can itself compile HAL/S programs, and produce object code from them!  Or at least, it can compile the one HAL/S test program I throw at it.  The HAL/S test program I throw at it is called HELLO.hal, and I'll let you guess what it does.  Unfortunately, even though HAL/S-FC can compile HELLO.hal, what you get out of that process is (of course!) a program that runs only on one of the Space Shuttle's IBM AP-101S computers, not on your personal computer.  And lacking any way to run AP-101S programs at the moment, there's therefore no way yet to actually run the compiled HELLO program.  The same would be true, of course, if I compiled the Space Shuttle's flight software.  But progress is being made, one step at a time!  I'm hoping that Dan Weaver, who as I've mentioned before has written a very nice IBM 360 simulator, will be writing a (very similar) AP-101S simulator.  At that point, we could run the compiled HELLO or other compiled HAL/S program and really start cooking!

As to why any of that is relevant, as promised, to the SDF-related documentation added to the Shuttle library today ... well, that's another mouthful-and-a-half of explanation.  HAL/S-FC, the HAL/S compiler, actually consists of seven separate "passes" or "phases", each of which is a stand-alone program.  The seven stand-alone programs are run in succession to perform a complete compilation.  Of course, you the user don't really have to worry about all that nonsense if you're not interested in it, since you simply experience HAL/S as a single command, and that command worries about all of the details of fitting the separate passes together.

Nevertheless, when I say that XCOM-I can compile HAL/S-FC, I mean that it can compile each of the seven separate programs comprising HAL/S-FC.  The AP-101S object code is not spit out until the fifth pass, which is called PASS2.  (Go figure!)  That leaves two compiler passes (called PASS3 and PASS4) which I haven't run yet.  PASS3 and PASS4 are entirely devoted to production of Simulation Data Files (SDF).  SDFs were what were used as input to the digital simulation system that simulated running the Shuttle flight software.  They're quite fancy.  I'm told by the author of PASS3 and PASS4, Craig Schulenberg, that never has any other compiler of any kind produced such complete data in support of simulation.

My own desired next step in the compiler development is to run the compiler passes related to SDF generation.  Simultaneously the SDF documents appear in the Shuttle library.  Nifty!  Kismet!  Whether that's truly what I do next is TBD, but that's my whim at the moment.

By the way, this is all being written up on the XPL page of the website, basically in real time as I'm working on it.  Which means that it's a poorly-organized mess at the moment.  Still, it's there if anybody wants to read it.  I hope that it won't be too much longer before the compiler is debugged to the point where I can bless it as completely working, and proceed to put the documentation in order.  Of course, wishes don't always come true.  And anyone who's familiar with my writing style — just take a gander at this blog entry! — will realize that it still may not be very readable once I've reorganized it.  But at least it will be more readable than it is now.  I hope.

2024-05-24
I updated the Block I mini-tutorial to demo running the SOLARIUM (and SUNRISE) self-tests.
2024-05-21
Mike released the reconstruction of MANCHE72R3 today.  That's the software for the Command Module AGC flown on Apollo 13.  It inherits the same Cosmic Spoonerism — like that term? — suffered by the Comanche 72 reconstruction I mentioned a couple of days ago:  I.e., it has a couple of places where a couple of instructions can be swapped without damaging either the functionality or the memory-bank checksums, and without any guidance from other related software versions to tell us which order is more-likely to be the correct one.  Ultimately, the Cosmic Spoonerism isn't something to worry about, but resolving it requires somehow getting additional info which we don't have now.  At any rate, both versions are now written up on the Colossus page, and properly incorporated in the document library, as well as being supported in the VirtualAGC GUI.

Of less interest to anybody but me, I expect, I've just hit a nice little milestone with the XPL/I compiler — I call it XCOM-I — I've been working on.  You may recall that I'm doing that so that I can eventually use XCOM-I to compile the Intermetrics compiler (HAL/S-FC) for the HAL/S computer language in which Space Shuttle flight software was written, and then use HAL/S-FC to compile the flight software itself.  Not that I'm anywhere close to that!  But the milestone is that I'm now able to "bootstrap" one of the old XPL compilers from back in the day.  Not Intermetrics's XPL compiler, mind you, because the source code for that one has been lost.  Rather, for an XPL compiler I call XCOM45, last built (as far as I know) in 1976 at the State University of New York.  By "bootstrapping", I refer to a process used by programmers who write a compiler for a particular computer language in that same language, and want to use that compiler to build its own source code.  Obviously you can't do that on day one, since you can't build anything from literally nothing, so there's a series of intervening steps needed to build a more-and-more competent compiler that eventually can compile itself.  That's "bootstrapping".  In the case of my milestone, the bootstrapping steps look like this:
  1. Use XCOM-I (my XPL/I compiler) to compile the source code for XCOM45, giving me an executable version of XCOM45 that runs on my Linux computer.  Call that version XCOM45-linux.
  2. Use XCOM45-linux to again compile the source code for XCOM45.  Since the original XCOM45 ran on an IBM 360 computer, this gives us an IBM 360 version of XCOM45.  Call that version XCOM45-360.
  3. Use XCOM45-360, running in an IBM 360 simulator, to compile the source code for XCOM45 yet again.  This gives us yet another IBM 360 version of XCOM45.  Call that version XCOM45-360A.
  4. If all went well, XCOM45-360 and XCOM45-360A should be byte-for-byte identical ... and they are.  Voilà!  XCOM45 can compile itself, 100% accurately.  But more importantly for us, XCOM-I must have been working pretty well to make that happen.

If you have read that description closely — and who wouldn't have wanted to do that? — it barely mentions an important fact that I've neglected up to now in this blog, which is that our software repository now contains a very lightweight IBM 360 simulator called sim360.  This was not written by me, or anyone at Virtual AGC, but was instead written by Dan Weaver and barely mentioned on his own website.  (See if you can find sim360 on the website.  Give yourself a cookie as a reward if you can.)  There are several reasons it's significant for us:  A not inconsiderable advantage it has over full-scale IBM 360 simulators such as Hercules is that you don't have to know anything about operating an IBM 360 to use it.  Nor does it require any potentially-copyrighted software from (say) IBM that would prevent integrating it with open-source software.  But perhaps best of all, it's so lightweight that it probably technically can be incorporated into (say) Orbiter or the VirtualAGC GUI relatively easily, and can be adapted (if any adaptation is needed) to run IBM AP-101S code rather than IBM 360 code.  Admittedly I'm looking down the road a bit, but it seems to me as though sim360 provides a superior technical path to running Space Shuttle flight software in a spaceflight simulator.  As for the legality of that path (or any path) under ITAR, I make no claims.

2024-05-19
The reconstruction of the source code for Comanche 72 is now in the software repository.  It has a few more uncertainties than usual, in the sense that there are some alternate instruction sequences that have identical functionality while unfortunately also having identical memory-bank checksums.  That being the case, it's hard to say that one of the alternatives is more likely to be valid than the other.  The problem, as observed in the movies, is Choice.  While I don't think these alternatives are anything to worry about particularly, I'll give it a few more days of simmering in the background before writing up any extended description.  For now, I'll just say that this is not exactly the version which flew on Apollo 13 — that version was Comanche 72/3 — but it's definitely zeroing on the flown version.
2024-05-14
Well, that went freakishly fast!  Mike has sent over the reconstructed source code for Comanche 67, so it's also available to you now in our software repository.  And I've changed yesterday's write-up of Colossus 67 accordingly.
Aside:  Ego compelled me to at least roughly try to figure out how close my own reconstruction effort in advance of having dumps from physical memory modules had been.  Counting just the substantive changes — i.e., things which would have affected the core-rope image stored in the memory modules, vs things that would not have, like changes to program comments or global spelling changes for program labels — and counting only the number of source-code files containing differences between Mike's and mine, I find 68 files with no differences, 16 with differences, and 1 about which I'm undecided.  Of course, not all of these files are of comparable sizes or complexities.  Nor did I count how many of them were unchanged relative to Comanche 55 (Apollo 11).  In other words, I got 80% of the files right and 20% not-so-right.  Which means ... well, precisely zip.  I'll give myself a blue ribbon for participation.
Separately, Neil Fraser and Charles Chapman have sent in some corrections for the AGC Assembly Language and Colossus pages respectively, which I've now incorporated.  Thanks, guys!
2024-05-13
I've finished the write-up for Comanche 67 in its current (i.e., no-source-code) state, as well as providing support for it in the VirtualAGC GUI wrapper.
2024-05-12
I haven't gotten around yet to the document-library backlog I mentioned last time.  Sorry to everyone who has sent me stuff to take care of, but I assure you it hasn't been forgotten!  I've been so laser-focused on the XPL/I compiler I mentioned previously that it's been hard for me to even look to the right or the left.  I blink and whole days have vanished.

However ... Mike has sent me the core-rope dumps for Comanche 67, i.e., the command-module AGC software for Apollo 12, and there's no way I could reasonably put off taking note of it.  Long-time readers may recall that I had spent a considerable amount of effort myself on trying to reconstruct Comanche 67 — indeed, you can still see my now-obsoleted effort in the comanche067 branch of our software repository — before giving up on it as beyond my capacity, and indeed perhaps beyond anyone else's capacity either.  Still, I had made some not-insignificant progress before doing so, and it will turn out to be interesting (only to me, I suppose) to see how successful I had been with the changes I did make.

Speaking of which, having Comanche 67 is useful not merely in that it's one of the (few) remaining AGC flight-software versions that had still been missing, but also in that it's potentially a useful missing link in reconstructing Comanche 72 (Apollo 13), which is yet another of the missing versions.  Mind you, I'm not promising that; I'm just saying it's an interesting possibility, given the tremendous success Mike has had in reconstructing missing versions (yay!), even if I have not (boo!).

But that's leaping too far ahead.  For today, note that all I've done so far is to post the full Comanche 67 binary file, so that anyone who's sufficiently knowledgeable and energetic can run it in our AGC emulator immediately.  And I've added the dumps of the individual rope modules to our Rope-Module Dump Library, which admittedly is of only academic interest when you have the full, known-correct binary in hand.

There's still much to be done, though, such as writing up the details on the Colossus page, making Comanche 67 available in our VirtualAGC GUI wrapper for the AGC emulation, and of course, reconstructing the source code!  Ego would lead me to hope that the source code of my attempted reconstruction might help out there.  But I doubt that that would fit in with Mike's workflow anyway, and likely he'll do a better job without it unless he uses a little of it to salve my tortured-poet ego. 

But I digress.  This is a significant acquisition, and I wanted to get it out into your hands as quickly as I could!  Many congratulations to Mike Stewart and thanks to the anonymous collector who gave him access to the rope modules.
2024-04-28
I once again have a backlog of material people have sent me, which I haven't gotten around to posting in the library yet.  Real Soon Now, I hope.

I've been fully occupied with HAL/S compilation (for Space Shuttle flight software) the past couple of months, which partially explains the delay.  Anyone reading these postings with a view toward what I was doing (versus less-me-centered Virtual AGC developments) may have noticed that I've been concerned with HAL/S compilation for about the last 18 months.  It's a hard nut to crack, and I've been through several abortive but non-negligible attempts to crack it.  First I developed a HAL/S compiler that could be used also as an interactive HAL/S interpreter or emulator; it was quite useful, but never got to the point of supporting 100% of HAL/S's features before I stopped work on it for maintenance-difficulty reasons.  Then I decided to port the original HAL/S compiler (HAL/S-FC), which was written in the mysterious, obsolete language XPL/I, to Python, so that it could be run on modern computer systems; I succeeded, but only for the 1st pass (of the compiler's 7 passes), and stopped working on it because the effort for the first pass had been so great that I couldn't bear the thought of porting any more of the passes.

Now I'm working on yet a third approach, and I'm feeling quite good about it because I passed a major milestone on it this morning.  As I say, the original HAL/S compiler was written in the XPL/I language.  Actually, everybody (including Intermetrics, which wrote the software) says that it was written in XPL, but it's not really true.  There was indeed a computer language called XPL which was defined in a book called A Compiler Generator by McKeeman et al.; the book also contained the complete listing for its XPL compiler (XCOM).  But the truth is that Intermetrics had extended the language, so a standard XPL compiler couldn't compile it any longer, and in particular couldn't compile HAL/S-FC.  Intermetrics instead had their own separate compiler for it.  Intermetrics continued to call this extended language "XPL", but I insist on calling it "XPL/I" to make the distinction clear:  An XPL/I compiler can compile HAL/S-FC, but a mere XPL compiler cannot, and there are no surviving XPL/I compilers that anybody I've talked to is aware of.

What I've been working on lately is an XPL/I compiler, which I call XCOM-I.  It can still compile standard XPL, but the goal is to compile full XPL/I.  XCOM-I itself is written in Python and translates XPL/I to C, and hence is completely portable.  The milestone XCOM-I reached this morning was to compile the original XPL compiler (XCOM) listed in A Compiler Generator, and then to use that original XCOM to compile some other XPL programs (listed in A Compiler Generator also) into correct IBM System/360 object-code.  It was a hard-won milestone, and while it isn't as good as compiling HAL/S-FC itself would be, I'm still happy!

In celebration, I've updated the Shuttle page accordingly, and in particular have made visible a page about XCOM-I that I've been working on in the background for a while.

I would observe that HAL/S-FC can compile HAL/S to either IBM System/360 object code or else to IBM AP-101S (i.e., Shuttle GPC) object code, both of which are based on IBM Basic Assembly Language (BAL).  Therefore, it seems likely that the eventual technical path to emulating execution of the Shuttle flight software, and in particular to integrating it into spacecraft-simulator software, will be to emulate execution of IBM BAL.  A BAL-to-C translator would be even better, I think.  It would mean that Space Shuttle flight software could technically be integrated into spacecraft-simulation systems simply by incorporating its C code ... assuming, of course, that that weren't a regulatory issue vis-à-vis ITAR.  Though the fact that the C code couldn't possibly execute on an AP-101S, and could be completely obfuscated versus the relative clarity of BAL code, would speak in its favor ITAR-wise (I assume).
2024-03-22
Fixed several bad hyperlinks.  Thanks to Rob Schofield for pointing out the problem.
2024-03-06
Mike Stewart has finished reconstructing the AGC source code for the Skylark 48 program (missions Skylab 2, Skylab 3, Skylab 4, and Apollo-Soyuz Test Program ASTP) from the dumps of the physical Skylab 2 core-rope memory modules he had managed to acquire a bit over a month ago.  I've written it up accordingly on our Colossus page, but here's a direct link to the syntax-highlighted version of the source code.

Among other material used in the reconstruction — such as the Artemis 72 source code, the TRW "programmed guidance equations" document, and so on — is something I've added today to the document library as the "Skylark Erasable Memory Map", even though it actually has no title (or any other metadata) associated with it.
2024-03-05
I guess that being swamped with such a huge number of documents from the backlog I finished processing yesterday made me a bit more careless than usual.  For one thing, I failed to note that the COLOSSUS MEMO #48 added a few days ago was not part of the backlog, but had been sent separately by James Pelster.  Thanks, James!  As for the backlog itself, that had come from the large document caches accumulated by Cooper Lushbaugh and Don Schmidt, so thanks are due to them as well for creating these caches.  Of course, the fact that the documents were in these secondary caches means that I don't really know where most of the individual documents came in the first place, and thus cannot credit whoever preserved them and/or scanned them.  An exception is that Don mentions having gotten documents from the Tomayko collection at Wichita State University's library, and if you look at the recently-added documents you'll find that some of them have been stamped or watermarked as belonging to that collection.  James Tomayko, as you may recall, among many other things wrote the ubiquitous NASA history called Computers in Spaceflight, and apparently many of the reference materials he cited in that book ended up in the Wichita State archive.  Maddeningly, the one reference he cited (IR-60-7, "HAL/S-360 Compiler System Specification") that I really need didn't end up in the archive. 

But I digress!  Today, I've added a new document sent along indirectly by Ryan Callaway (thanks, Ryan!), namely the "Lunar Module Pilots Handbook", which despite its title, is a curious compilation of "procedures and notes ... which should be studied by Grumman personne1 to better acquaint themselves with the Lunar Module Spacecraft".
2024-03-04
I finished up incorporating the document backlogs to the Shuttle library and the lesser updates to the main document library.  I.e., the pending document-queue is at least temporarily empty now.  But in the process of doing that, I found out that the libraries had accumulated ~250 PDFs lacking a text-search layer.  So I've added those text-search layers to (hopefully) all of the PDFs on the site that had been lacking them.  Unfortunately, since those previously-unsearchable PDFs have all been modified, the "recent additions" section of the library pages now shows them as newly added to the libraries, even though many of them were in fact added some time ago.  Sorry about that, but there's nothing much I can do about it at this point.
2024-03-01
Continued reduction of the backlog of the Shuttle library.  Just one addition to the main document library, namely the formerly-missing COLOSSUS MEMO #48.
2024-02-28
Continued reduction of the backlog of the the Shuttle library and the main document library as described in the preceding entry.
2024-02-23
As part of the reduction in the document backlog I mentioned a couple of days ago, several new documents have been added to the Shuttle library and a smaller number to the main document library.  (Doesn't seem like much, I know, but I have to examine and reject about 20 documents for each document I add to one or the other of the libraries, and I have about 10K documents left in the queue.  In other words, it's a bit labor-intensive.  This process will continue for some time.)
2024-02-21
I've been directed (thanks, Don Schmidt!) to a large cache of mostly Shuttle-related documents.  I'm looking at processing these for our Shuttle Library, while at the same time resuming processing of the already-existing backlog of Shuttle documents that has been on hold for the last 9 months or so.  In addition to containing lots of documents that aren't particularly on-target for our goals here — after all, Virtual AGC is concerned basically with Shuttle flight software, rather than being comprehensive Space Shuttle site! — this new cache also has a lot of overlap with content already in the library.  Getting a workflow going on this that avoids cluttering the library with endless reams of duplicated documents is challenging, but I'm making progress.  Today I'm just posting the first 11 docs I've looked at
2024-02-12
I found out today that the email address (info@sandroid.org) given here on our website has been non-functional for over a month.  So if you have attempted to contact me/us and got no response ... well, I apologize for the inconvenience, but whatever email you sent me has vanished like the wind.  Please resend and try not to think bad thoughts about me.  Or just resend and keep thinking bad thoughts, whichever you prefer.
Aside:  Apparently, there's a newish policy, in which when you renew your domain every year, you have to validate the identity information given to the registrar.  As opposed to the last 20 years or so, when you didn't have to do any of that.  At least for my service, the validation process involves an exchange of emails to my personal email account, and the validation emails to my personal email address never arrive.  Which I had no way to even know about, since I didn't know I was supposed to get any validation emails anyway.  Not responding to the emails results in the domain being "locked" or "suspended", so that even though you've paid for the domain renewal, the domain simply doesn't work.  Hence no website for that domain, and no emails to it either.  Fun, huh?  And since my paycheck doesn't depend on any of this, I'm unlikely to discover the problem for quite a while; about 5 weeks of lost service in this case.
2024-01-29
The Skylark 48 ropes mentioned in my last post, I'm told, have now been flown in Orbiter/NASSP with both successful rendezvous (between the CM and the Soyuz) and successful reentry.  (Thanks, Nik Beug!)  Although you have to take that statement with a slight grain of salt, because it appears that the simulation had (past tense) a discrepancy in the timing of the landing radar interrupt, which had been apparent as only a minor issue in Artemis (Apollo 15-17) simulations, but had become a major issue in Skylark.  Fortunately (thanks Mike Stewart!), this was fixable in our AGC emulation.  But the upshot is that you only want to fly Skylark with the latest version of our AGC emulator code (yaAGC), now in the GitHub repository as of today, since earlier versions will experience major issues.  Similarly if you want to fly Artemis simulations, except that the only problem you'll experience in Artemis with the older code is apparently the occasional annoyance of an ignorable 1210 error.
Aside:  Here's a hint to anyone thinking about creating their own open-source project:  Maintenance is a bitch!  In my case, I rarely hear of issues until literally decades after I wrote the code having those issues in them, at which point I'm scarcely qualified to fix them.  (And that's putting it charitably.  After all that time, the code may as well have been written by a deranged stranger.)  My advice is to get a team like Mike and Nik your side, so that you won't have to hear about the problems until they're already fixed.  Good luck with that, by the way.  Just my 2¢.
2024-01-25
We now have core-rope memory dumps of the SKYLARK 48 program.  As you may recall, SKYLARK 48 was the AGC software used in the Skylab 2, Skylab 3, Skylab 4, and Apollo-Soyuz Test Program (ASTP) missions.  Pretty sweet!  It's getting to the point where there are very few missions for which we don't have the corresponding AGC software.  You can see the full write-up, including the credits, on our Colossus page.

As usual when we've gotten AGC software via physically dumping memory modules, we don't automatically get the software source code.  Rather, the source code needs to be recovered via a process that may or may not succeed, but that hopefully will in the near future.  In the meantime, what the dumps do give is executable code, so you can run SKYLARK 48 right now in our AGC emulator.  Presumably it will also be available at some point in the full Orbiter/NASSP simulator, but I suppose that will also take some time to unfold.
2024-01-14
Since I've posted nothing substantive about Space Shuttle flight software in a while, I suppose I should give you an update on the progress towards presenting it to you in some useful fashion.  There's good news and not-so-good news, though I think the good outweighs the not-so-good.  There are three somewhat-independent aspects:
  1. Actual original flight-software source code and/or object code.  I now have some of the source code and all of the GPC (IBM AP-101S) object code in hand, in some version which I don't care to specify at the moment.  Does that sound a bit weak and wishy-washy, given my normal tendency to bombard you with every detail and every speculation that crosses my fevered brain?  You're right, it is!  The problem is that I've received this material on condition that I preserve it and can personally access it for compiler development, but that I not show it to anybody else.  Or at least, not yet.  Nor do I have any timetable on when I will be able to make to do so.  Moreover, this confidentiality obligation is on top of whatever ITAR restrictions may limit distribution.  Besides which, I can't even get any legal action started on the ITAR front until I'm given permission to show the source code to the attorneys.  Why have I teasing you like this, given that I can't give you access to any of it?  I still think it's good news.  I have reason to believe that I will be able to make the material available at some point — at least if you're a "U.S. Person" for ITAR purposes — even if I don't know when that will be.  And I think that I would want to know about it if I were the one reading this update rather than writing it. 
  2. HAL/S compiler/emulator development for compiling/running the flight software source code.  Anyone who has been following my posts on the topic will recall that there have been two independent but somewhat-complementary lines of attack:  first, a completely-homegrown HAL/S compiler/interpreter/emulator; and second, a port of the original HAL/S compiler from its now completely-obsolete XPL language into the modern Python language.  Each of these approaches is partially working and partially unimplemented.  But both are on hold at the moment, due mainly to the fact that their development is very exhausting; I've simply burnt myself out on it.  Plus, the compilers aren't entirely useful without the missing portions of the flight-software source code I'm still awaiting.  So I'm taking a break from HAL/S compiler development right now.
  3. Distribution roadmap.  The question looming over all of this is how to distribute executable flight software in some manner that's useful for use in spacecraft simulators such as Orbiter, if there are ITAR restrictions?  Personally, I would argue that if object code is distributed in a form that cannot be executed on the original Space Shuttle software, and cannot be reverse engineered in such a way as to make it so-executable, then it should be fine.  For example, the original HAL/S compiler was able to compile flight software into object code either for an AP-101S target or for an IBM 360 target, and IBM 360 object code would seem to me to be ITAR compliant.  However, not everyone agrees with me.  It has occurred to me, though, that ultimately it's not my responsibility nor that of the Virtual AGC Project to distribute code that's executable on a spacecraft simulator anyway.  If/when I'm at liberty to distribute the flight-software source code to ITAR-qualified individuals who are involved in spacecraft simulation, they can use they can use their own judgement to produce object code they deem distributable without ITAR rish, or not.  In other words, it's largely Somebody Else's Problem.

On a different note, Mike has sent along a new stash of Apollo documents, which I've added to the main document library.  As usual, here's his summary:

  • LM-3 Apollo Operations Handbook, Volume II. This goes along with the Volume I that we've had a scan of for a while now. Interestingly, it appears to be written for an early-ish version of Sundance; it describes usage of program P05 to exit standby mode. The standby-exiting logic was made automatic before Sundance actually flew.
  • Apollo Operations Handbook, Block II Spacecraft, Volume I, from April 1970. This is a somewhat later revision than our current (mostly poor-quality) scans. This one should be much more readable. Even though it's only from mid-1970, it already has changes anticipated for the J-missions incorporated.
  • Apollo SCS Training Manual, Block II from Honeywell. This document goes into a lot of deep detail on the operation of the Block II Stabilization and Control System — more, I think, than any other that we currently know about.
  • Apollo Portable Life Support Systems booklet from Hamilton Standard. We already have scans of a very similar booklet whose title includes "... and Oxygen Purge Systems". Despite the shorter title, this booklet is actually a later revision that covers more of the system.
Hide 2023 change notes?
2023-12-25
Mike has sent over some dumps of SUNSPOT rope-memory modules, courtesy of Dr. Nick Gessler.  You'll recall that SUNSPOT (thought to be version 247) was the Command Module's AGC software for Apollo 1, and it has long been near the top of my wish list.  Unfortunately, these modules were not from version 247, but rather from the initial release of SUNSPOT ... and we're not sure specifically what that version was, numerically, due to the lack of surviving documentation.  But it certainly significantly precedes 247.  Worse, only 5 of the 6 rope-memory modules were available, and those are in significantly worse condition than all of the other rope-memory modules Mike has worked with before.  (Not Nick's fault, since the modules were that way when he got them.  In case you're wondering how bad these are, visualize actual holes, through which wiring and components are visible!)  So not all of the data on those 5 modules will be recoverable.  But Mike will work his magic, and I fully expect we'll eventually get 3 or more modules worth of data from them.  It'll take quite a while, though, so don't put your life on hold waiting for it.  At any rate, you can follow Mike's ongoing log of the data-recovery effort, or read my pre-digested version of it in the Rope-Module Dump Library's notes.

To all of which you may say "so what?", to which Mike also gives us an answer:
Despite the missing module B23 and data loss from the other five, what we do have is fascinating and there's a lot to learn from it. For one, it has the same SXT-ON switch checking code as described in the memo "Programming Changes from AS-202 to AS-501", exactly like Corona:
image.png
This means that this version of Sunspot was meant for Block I Series 0 systems.... and this is possibly a major contributing factor for one of the later releases of Sunspot, which would have actually flown with a Series 100 system.

Sunspot also, like Corona, contains the mysterious Midcourse Navigation Game. Except in Sunspot, it's not broken dead code. Its issues have been fixed and it is now tied into four new extended verbs, V64 through V67.

There's also a lot of changes in PINBALL that mirror what we see in Colossus. Which means a lot of those things are not Block II changes, but rather were introduced in Block I for Sunspot and ported over. It's pretty remarkable seeing Block I implementations of these things.
I haven't updated the Colossus page with any of this info as of yet, given that we don't fully know what we have here, but hopefully that too will come, in the fullness of time.
2023-11-25
Okay, I think the problems mentioned in yesterday's "afterthought" have been fixed up now, so the mission-specific documents on the Shuttle Library page are starting to look pretty good to me.
2023-11-24
There has been a problem for some time on the Shuttle Library page in terms of the way it placed individual documents into the flight-specific sections.  For example, it may have placed documents not directly relevant to flight STS-26 into the STS-26 section on the library page.  While I knew about this, I wasn't motivated to try and fix it until I started getting complaints about it.  I noticed too that it wasn't printing the exact titles on the sections that I thought I had arranged for; for example, the title of the STS-26 section should have been "Flight STS-51-F (STS-26)" rather than the mere "Flight STS-26" that was actually being printed.  While the Shuttle Library page is still not perfect by any means, I think it has been improved a lot in these regards, and I hope my fixes will be enough of a bandaid for now ... though it's possible that the next few days might see some fixes for my fixes, and so on.  You can thank Bill Miller for refocusing my attention on the issue.  Bill also sent along the STS-79 Post-Mission Report, which has now been posted on the library page, and apparently completes our set of mission reports (sans the STS-51-L Challenger disaster, for which I'm told that a normal post-mission report wasn't produced).
Afterthought:  It's curious that I chose STS-26 as an example, since I see belatedly that it still mixes together documents from STS-26 proper vs STS-51-F due to miscategorization, as does STS-27.  Well, there's always tomorrow for fixing that!
2023-11-19
Removed the hyperlink from our Shuttle page that had pointed to Johnson Space Center's FOIA archive of flight data files, since that archive itself seems to have gone the way of the dodo.  As NASA's websites often do!  Perhaps the info previously on that page will reappear again someday, in the twinkling of an eye when you least expect it.  And then again, perhaps not.  Thanks to Bill Miller for pointing out that the archive had gone extinct.  My admittedly-fuzzy recollection is that it's no great loss; nevertheless, I wish I had downloaded its contents before it vanished.

Oh, and I removed the link to the SourceForge project called Space Shuttle Ultra (SSU), as it seems to have disappeared as well.  It was a Space Shuttle add-on for the Orbiter spaceflight simulation system.  It seems to have been announced a little over a year ago on the Orbiter forum that the SSU project was dead, so I guess I must have just been behind the times in posting a link to it.  Incidentally, there was a recommended alternative mentioned there, namely the SSV project, though as far as I can tell SSV lacks the small reference library of Shuttle documents sported by SSU.  Again, I wish I had downloaded its complete contents as well!  R.I.P., SSU.
2023-11-17
2023-11-15
6 new Apollo documents have been posted to the document library.  Mike's summaries:
  • Skylab Command Module Primary Guidance Navigation and Control System Student Study Guide - System Mechanization — This is re-release, with a decent bit of rewriting and updates, of the equivalent Apollo CM study guide I sent in a while back.
  • AGS Verification Testing for LM-4, Volume I - Test Plan — This is about testing for FP-4.
  • Abort Guidance System Flight Program 2 Customer Acceptance Readiness Review (CARR) — This memo contains as an attachment the entirety of "LM AGS Guidance Software Final Design Report, Flight Program No. 2 (Unmanned B Mission Only)". This attachment is much more interesting and useful than the CARR planning memo it's attached to, with lots of flowcharts of FP-2.
  • Minutes of Meeting, ASTP, CSM-111 Critical Design Review, DM-DS Preliminary Design Review — PDR/CDR material for ASTP, documenting all of the CM changes and requirements for the mission.
  • Apollo Navigational Star Chart — a cute brochure from Kollsman that shows all of their hardware contributions to the PGNCS, and has a star chart showing all of the stars used for navigation.
  • G34-909101, GSE Functional Integrated System Schematics, Spacecraft 101, ETR LC 34 — These schematics show all of the connections, down to the pin number, between the command module and LC 34. Lots of good details in here specifically about how ACE-S/C was hooked up to the spacecraft.

I've tweaked the description of AGS Flight Program versioning somewhat from seeing these documents.

2023-11-12
1 new Shuttle document and 7 new Apollo documents have been posted to the libraries.  Here are Mike's assessments of them:
  • VL70-730102 - Orbiter OV-102 Display and Control Panel Configuration. This is an engineering drawing from Rockwell showing the panel configuration for Columbia.
  • Saturn S-IVB-512 Stage Flight Evaluation Report
  • ND-1021037, Apollo Guidance & Navigation Equipment Familiarization Manual, Chapter 5, Computer Subsystem — a somewhat short but good introduction to the Block I Series 0 computer design
  • Skylab I & II Program Description — this is another one of the AC/Delco books that we have listed in our document library as "Apollo 15 Manual", "Apollo 16 Manual", etc. This one's all about Skylark. Apparently "Program Description" is the proper name for these things, because unlike the Apollo books, the Skylab/ASTP ones have their titles printed on the spine.
  • A set of LEM structural sketches, mostly for LM-4. These are excerpts from a big binder I found that also includes sketches for a bunch of Grumman aircraft.
  • Apollo Portable Life Support and Oxygen Purge Systems — this is another little booklet from Hamilton Standard, to go along with the LM Environmental Control Subsystem one I sent a scan of a bit back.
  • Apollo 10 Thermodynamic Analysis for LM Landing Radar Antenna Assembly
  • ACE-S/C Description Manual
2023-11-10
I've gotten a handful of materials related peripherally or directly to the HAL/S compiler development that I described in yesterday's post, and I've posted them to the Shuttle library page.
  • Slides and supplementary material for a course called "Basic HAL/S Programming".
  • Slides for a course called "AP-101S Assembly Language Introduction".
  • Slides for a course called "AP-101S Patch Fundamentals".
  • "HAL/S Compiler Test Results Report".

My personal experience with slide-show presentations is that seeing the slides outside the context of the presentation is often worthless, since the meat of the presentation is usually the words from the presenter's mouth rather than the eye candy on the slides.  However, that's not true of the first two courses mentioned above, and they're actually valuable stand-alone resources ... particularly the "Basic HAL/S Programming" course that's so relevant to what I'm working on now.  It's quite a substantial addition to our little collection of HAL/S programmer training materials, and should be either the first or second stop for anybody interested in learning about HAL/S.  (The other stop being Ryer's book, Programming in HAL/S, which incidentally I've been updating with comments of my own which I hope are helpful. I notice that my annotations don't show up in Chrome or Firefox, even if I turn enable the annotation settings.  I suppose that may be a blessing to some of you.   But if you want to actually view my annotations, you may have to download the document and experiment to find a PDF viewer that shows annotations.)

I mentioned some months back that I had again acquired a big backlog of documents for the Shuttle library.  I haven't forgotten them, but I haven't had any time to process them or even look at them yet, because they're not really relevant to HAL/S or its compiler.

2023-11-09
As I mentioned in my last post, which was a month ago but seems like a year, all of my personal effort recently has been devoted to getting the original compiler for Space Shuttle flight software into a form in which we can use it nowadays ourselves. 

You'll recall that the Shuttle's flight software (known as PASS and BFS) was written in a now-obsolete programming language called HAL/S — for which, as far as I know, there are no longer any surviving functioning compilers.  Or at least, none running on common types of computer systems available to common folk such as ourselves.  We do have the complete source code for that original compiler, which was called HAL/S-FC.  But that source code is primarily written in an even-more obsolete programming language called XPL, which also has no available functioning compilers, combined at some crucial points with IBM 360 assembly language (known as BAL).  And even worse, it was a mostly-undocumented "enhanced" form of XPL, so even if you somehow managed to get a standard XPL compiler, it still wouldn't compile the source code for HAL/S-FC.

My workaround for these little deficiencies has been to port the original HAL/S-FC's XPL source code to a modern programming language, namely Python 3, that anybody can run on any common computer system, such as Windows, Mac OS, or Linux.  I won't claim that this has been an easy task.  There have been, and continue to be, many hurdles along this path.  If I had known just how many, I might have elected not to attempt it at all.

But I'm pleased to say that a nice little milestone has been reached:  The ported HAL/S-FC can now compile without error every syntactically-correct HAL/S source-code file available to me.

You have to take that assessment with a grain of salt, since it merely means that there are no compile-time error messages.  That's not a guarantee that whatever object code the compiler generates is correct.  Nor should it be taken to imply that we can actually run any of that code after compilation.  Nor that we actually have much HAL/S source code to try it on; almost all HAL/S source code we have has been scraped from contemporary documentation rather than from actual flight software.  But first things first!  It's a step forward, and much much nicer than the hundreds of compiler errors I was getting even very recently.

The Shuttle page has been updated with explanations on this topic, including instructions for installing and using the ported HAL/S compiler.

Expect that there will be lots more to come on this topic in the future as I continue trying to overcome the hurdles.
2023-10-11
So ... I notice that it has been a couple of months since I posted anything here.  It's not that nothing has been happening — though I suppose the significance of whatever has been happening is subjective — rather that I've been so involved in it that there hasn't been much time for anything else.

But first things first!  Mike has sent over a wad of new LVDC-related documents, some of which are very important.  You can quickly find these new docs in the "Recent Additions" section of the library page, but here's the summary:
  • Those of you who follow the LVDC action will know that the "Equation Defining Document" (EDD) is the principal documentation for the LVDC's flight program, but that up to now we've had only Parts I and II of Revision A of the Saturn IB portion of the EDD.  We've now added Revisions C, D, and K, though unfortunately only the changed pages.  Most significant, though, is that we now also have complete Parts III and IV of Revision K.  Revision K, by the way, is for the Apollo-Soyuz Test Program (ASTP) mission.  Taken altogether, that's hopefully the complete Saturn IB EDD, more or less.  Alas, we still have no Saturn V version of the EDD.
  • We now have documentation of the LVDC Preflight Program, not to mention several revisions of the software-verification plan for it, though unfortunately no source code.  Given that up to now we've had only inferences about the Preflight Program, without any documentation or indeed any admission from any of the original developers that they even knew anything whatsoever about it, that's a huge leap forward.  This information is from the "Generalized Flight Program" (GFP) era, though, and there's reason to believe that the Preflight Program may have been simplified somewhat in that era, vs what it had been in the earlier period when each LVDC Flight Program was more customized.  Thus this Preflight Program documentation is useful in relation to our LVDC Flight Program software listings for AS-512 and AS-513, but less so — and perhaps considerably so — for the AS-206RAM Flight Program.
  • We have documentation for ASTEC and ACAPE programs ... which is significant, but which I admit requires some explanation.  "ASTEC" stands for "Aerospace System Test and Evaluation Complex", and essentially comprises the ground test equipment related to the LVDC.  The Programmable Test Controller (PTC) is one component of this collection of equipment.  I can't claim to have fully digested this new document, unless skimming it briefly so that I can meaninglessly parrot to acronyms qualifies as digesting it.  But if I understand correctly, the ASTEC or ACAPE program ran on the PTC, which was in turn attached to an LVDA and an LVDC running the Preflight Program.  ASTEC or ACAPE were each used to test or debug the simultaneously-running Preflight Program.  I don't know that my PTC simulator supports this configuration — actually, I sure it doesn't at the moment — but since we lack source code for ASTEC and ACAPE, that's not yet an urgent problem.  The new document has only flowcharts for ASTEC and ACAPE.

Another quick note about the new EDD documents mentioned above:  You may recall that about 3 months ago I was excited by the notion that LVDC Flight Program flowcharts could be regenerated by mysterious markings in the AS-512 and AS-513 source code, and that I had worked myself up the point of writing software to generate these flowcharts and to publish them. (See the 2023-07-27 entry below.)  Well, part of the reason I was motivated to do that is because we didn't have Part III of the EDD, because Part III does indeed contain flowcharts.  Now that we do have Part III, we have the exciting prospect of discovering how misguided or how prescient I was.  Well, perhaps "exciting" isn't exactly the word I'm looking for.  "Terrifying" is perhaps what I should be going for. 

I should clarify that I have not made a flowchart comparison before writing this, and am looking at it right now, in real time, as I'm writing this ... and the verdict is that the flowcharts don't look extremely similar.  On the other hand, there's some obvious resemblance.  Part of the problem, I'm sure, is that in comparing my Saturn V flowcharts to these Saturn IB flowcharts, we're not seeing apples-to-apples; even the names of the subroutines may differ.  In other words, maybe the flowcharts shouldn't match.  Well, who knows? Here's a cherry-picked result from the ACCELEROMETER READ subroutine that makes my flowcharts look especially good; but don't imagine this is a typical example.  An excerpt from my automated flowchart is on the left, and one from IBM's document is on the right.  It's heartening, I think, that where the text is comparable, it matches.

 

With the new LVDC documents out of the way, let me explain the delay in posting messages for the last couple of months.

To dredge up ancient history, you may recall (see the 2023-02-15 entry below) that I had been developing from scratch a compiler, interpreter, and emulator for the HAL/S computer language in which the Space Shuttle's primary flight software ("PFS" or "PASS") and backup flight software ("BFS") were written, and that I had been making good progress on it.  However, when we were flooded with new LVDC software listings for the AS-512 (Apollo 17) and AS-513 (Skylab 1) missions, there was so much work involved in transcribing these listings and in fixing up our LVDC assembler to assemble them, I had to put the new HAL/S compiler on hold for until a couple of months ago.  In other words, I switched over completely from Space Shuttle work to Apollo LVDC work.

In the meanwhile (see the 2023-04-16 entry below), we had received the complete source code for the original HAL/S compiler, of which before we had had only a part.  So when my work on the LVDC wound down, I rethought the idea of completing my own HAL/S compiler.  Or perhaps more accurately, decided to postpone it.  It seemed to me after the passage of several months that perhaps my compiler had grown to be too cumbersome and difficult to maintain and extend.  Perhaps, I thought, it might be better to port the original HAL/S compiler from the intractable language in which it was written, XPL, to a modern language like Python.  And indeed, that's what I've been doing ever since.  The progress is good, but it's slow-going and I'm not even close to running any of the code it compiles.  That's why I haven't been posting about it incessantly.  I'll let you know when there's more to know.

Our LVDC page has also been updated with a lot of this information.  As you can imagine, the "Flight Program Flowcharts" has been significantly modified.  Besides which, since the new Preflight Program documentation contains software flowcharts as well — had I mentioned that? — a new "Preflight Program Flowcharts" section has been added as well.

Incidentally, our Space Shuttle page has not been updated with anything about the port of the original HAL/S compiler as of yet, but perhaps it will be in the not-too-distant future.
2023-08-17
I did a lot of rewriting in the LVDC page's section "Saturn Interaction With the AGC".  It should be a lot clearer and more accurate now concerning the circumstances, specific missions, and extent to which the AGC could theoretically have been used to control the various stages of the Saturn launch vehicle.  This was in response to a theoretical notion about implementing the communication between the AGC and the LVDC in yaAGC and yaLVDC.  The short answer is:  There never was any such communication.  The long answer, in case you're wondering, is the same as the short answer.  But the question itself still resulted in improved commentary, I hope, so it was still worthwhile asking it.
2023-08-16
More updates to the LVDC page, having to do with telemetry and DCS.
2023-08-15
  • A new stash of ~150 Shuttle documents has arrived from Cooper, but I haven't even looked at them yet, let alone posted any.  The upshot is that my Shuttle-document backlog is glutted again, so presumably I'll be migrating the new backlog gradually into the Shuttle Library in the next few days or weeks.
  • James Pelster has fixed up some bugs in our Block I DSKY emulation, which he discovered while working on his own Block I AGC software emulation.  Thanks, James!  Emulations rock ... at least if you're going to use them to correct my software bugs for me. 
  • Mike has sent along a couple of AGC-related documents too, both of which are now in the main Document Library.  Here are Mike's own assessments:
  • Revision A of the LM-2 Apollo Operations Handbook, Volume II. We already have a scan of the basic revision; this revision changes no pages other than the table of contents, but it adds the entirety of section 9, which the basic revision totally omitted.
  • Revision B of the LM PGNCS Study Guide, Computer Utility Programs. We already have a very poor-quality, OCR-corrupted scan of the basic revision. There's no change log, but this revision B appears to be an almost complete rewrite; it is based off of a Sundance 202 program listing, while the original was based off of Sunburst 14. Notably, it gives us pretty good documentation for a lot of later software features, including what appears to be quite good coverage of the display interface routines, which is something we didn't have before.
  • Nik has pointed out a couple of documents that may be relevant to the LVDC Digital Command System (DCS) work I'm doing right now, at Colin Mackellar's tribute site devoted the Honeysuckle Creek Tracking Station in Australia, so those docs have been pulled into the main Document Library as well.  (Which reminds me that I need to go and rewatch The Dish.  It's nominally about Parkes rather than Honeysuckle Creek, though the Wikipedia article says it does appropriate some stuff that really happened at Honeysuckle Creek.  Highly recommended in any case.)
2023-08-14
LVDC telemetry display utility has been improved considerably, to the extent that it's probably now a lot more useful than the AGC telemetry display facility we've had for these many years ... not to mention being a lot more-easily portable across platforms.  It almost makes me want to go back and fix up the AGC telemetry displays.  Almost.  However, it still doesn't look like the actual displays available back in the day in mission control, and won't for a very long time, if ever.
2023-08-13
2023-08-12
Significant overhaul (not yet completed) of sections of the LVDC page that discuss various means of seeing the LVDC emulation in operation in spite of the LVDC being essentially a black box.
2023-08-10
I've finished up adding backlog of documents (~100) to the Shuttle Library, I think.  And even if I'm wrong about that, I really really want to be right about it, so I'm unlikely to discover on my own that I'm wrong.  Mission Accomplished!  Most of the newly-posted documents relate to Flight Readiness Reviews of one variety or another.

Which isn't to say that there aren't other Shuttle documents in play, just that of the ones I've been given so far, I've posted all of the ones I could convince myself were at least marginally relevant.
2023-08-08
Provided some clarification on the LVDC page about the presence of instructions in residual memory sectors, and about the relationship between the LVDC's EXM instruction to data-memory modules vs instruction-memory modules.
2023-08-06
Pepped up the LVDC page's "Doing Something With the LVDC" section a bit.  In particular, it now shows the results for the AS-513 Flight Program in addition to the results it already had for AS-512.
2023-08-05
Nik Beug had a nifty idea a while back, which we've finally been able to put into effect.  He pointed out that according to the contemporary LVDC documentation, the LVDC Flight Program — which he, alas, has not been able to see personally, due to potential ITAR restrictions! — had a sort of flight-simulation mode built into it.  In that flight-simulation mode, it was possible to detach the LVDC from the peripheral devices in the Saturn rocket but let it pretend it was still attached to them, by performing its own simulation of the physics.

For example, when you put the Flight Program into this flight-simulation mode, the LVDC could basically perform a complete simulation, all by itself, of the Saturn rocket blasting off and going into orbit, without the hassle of simulating any of the other associated hardware, such as the LVDA or the analog Flight Computer.  The original developers, I suppose, used this feature to test the Flight Program, but we can use it to test our LVDC CPU emulator.

Besides which, it's a nice demonstration that LVDC usage, which is otherwise difficult to demonstrate.  Remember that unlike (say) the AGC, the LVDC has no user interface ... it's just a black box, in all respects other than its actual color!  So seeing it do anything at all has so far generally been an exercise in patience and stubbornness.

But no longer!  Nik's simulation idea has now been made to work, and I've written up a preliminary discussion for you of how to do it.  The discussion is "preliminary", because it's very new at this point, and I don't necessarily have every detail correct just yet.  (In fact, I got a message to that effect in the very process of typing the preceding sentence!)  But it certainly does appear to work, and it's not all that difficult to do.
2023-08-04
Added 50+ more documents to the Shuttle Library.  There are around 120 left in the queue, but I simply can't bring myself to look at even one more of them at the moment.  So I'm afraid they'll have to remain in the queue for a while.  [Note to self for future reference: All uploaded, but just not added to the database. Still to do:  Presentations/ and most of FRR/ except FRR/Baseline/.]
2023-08-03
There were some updates to the LVDC page, clarifying (I hope) some of the relationship between the LVDC Flight Program and Preflight Program.

200+ additional documents were added to the Shuttle Library.  These again have range of topics, though the majority are mission reports for individual STS-xxx missions.  There are, however, some low-level documents related to the Shuttle's General Purpose Computer (GPC) and to historical matters related to the HAL/S and GOAL languages.
2023-08-02
Added ~50 more documents to the Shuttle Library.  They are mostly minutes of meetings from something called the "Ascent/Entry Flight Techniques Board".  Many of the digitizations of these meeting-minutes aren't great, though small in size and fortunately legible enough; some I've fixed, though many others will simply have to retain their non-greatness until I have more (or some) spare time and energy to deal with them.  The library itself has also been restructured a bit more, to introduce new sections where there are a lot of documents for them, and to combine some sections combined with other sections that are closely related, due to having few or no documents for them.  And don't take the new STS-xxx sections from yesterday too seriously just yet, because the categorization as to which documents are associated with which Shuttle flights isn't that great yet.
2023-08-01
Another 125 documents added to the Shuttle Library.  Many of these related to crew training, mission control, and reviews of various types.

The Shuttle Library page has also been refactored a little, so that there are now individual sections for each of the shuttle missions.  I think some additional refactoring to introduce new sections will also be in order, but I haven't looked into it as of yet.
2023-07-31
I've updated more of the Shuttle Library from the accumulated backlog sent in by Cooper Lushbaugh over the last 6 months or so.  That's an additional 450+ documents.  The topics of these documents and those added yesterday are wide-ranging, though I suppose it's fair to say that many of them are operational in nature, and none relate directly to the internals of the Shuttle's various computer systems or their software.  For example, there are lots of flight checklists and flight plans.  Their value insofar as elucidating the flight software is concerned is probably mostly related to understanding usage and version changes.  But if there's one thing I've learned throughout the course of the Virtual AGC Project, it's that documents you imagined had no relevance were disturbingly likely to provide essential information.

Meanwhile, Shuttle veteran Bill Miller has pointed out that while our library's previous 2-volume Space Shuttle Missions Summary was incomplete, stopping as it did at STS-131, the complete document (through STS-135) was in fact available elsewhere.  So the full document has now been added to the library. 

Bill has also pointed out that while my distinction on the Shuttle page between PASS (Primary Avionics System Software) and PFS (Primary Flight Software) may perhaps have been technically correct, it nevertheless ignored the common usage of those terms.  Namely, that the term PASS is generally used in preference to PFS even when PFS may be technically the correct choice.  Given that that has been my experience as well, I've adjusted the Shuttle page to accommodate the common usage and phased out most uses of PFS.
2023-07-30
Given that I've finished up the immediately-pending LVDC work I had been engaged in (i.e., transcription, assembler fixes, flowcharts, and syntax highlighting), I've now exited from LVDC work for the time being.  Instead, I'm now trying to knock down addition to the library of the vast backlog of Shuttle documents I've been given, but which have been languishing in my to-do list.  150+ documents have thus been added to the Shuttle Library just now, but that's only the tip of the iceberg.  After that particular iceberg has melted, hopefully I can go back to working on the Shuttle HAL/S compiler; but just now that still seems comfortably far off.

That's not to say that there's no LVDC work still in progress.  Via hardware simulation, Mike has discovered a number of bugs in my implementation of the LVDC CPU emulator and has been patiently fixing them, so you'll see updates to that in the software repository, if you follow such things.  And more may come.  The bugs have been primarily in the area of CPU startup, and the MPY, MPH, DIV, and EXM instructions.  Good thing Mike has my back on that one!  As you may recall, he fixed a number of bugs in the AGC emulator via the same technique.  But the difference in the AGC case was that we actually had a not-terrible (though not entirely complete either) set of AGC electrical schematics back then.  And now have essentially a complete set of AGC schematics for many different revisions of the hardware.  Whereas we have no such thing for the LVDC.  So in the absence of electrical schematics, how has Mike managed a usable hardware simulation capable of cross-checking the behavior of the software emulation? 

Well, our primary documentation about the LVDC is the "Laboratory Maintenance Instructions: Saturn V Launch Vehicle Digital Computer, Simplex Models" (vol 1 and vol 2), which in spite of the title can be used more like a theory-operation-document if you read it in the right spirit.  And as such, if you're diligent enough, from the description and the bits of circuitry pictured within, you can apparently cobble together enough of the LVDC circuitry to emulate its behavior.  Personally, I never would even have guessed it was possible to do that ... though given that for the AGC we have various supplemental theory-of-operation documents like ND-1021041 and ND-1021042 that would let us do that for the AGC if we didn't already have actual schematics, I don't suppose I should be too surprised.  Nevertheless I am.  Good job!
2023-07-27
Concerning LVDC flowcharts ....  I've mentioned these obliquely in the last couple of weeks, without giving any substantive detail before now.  Here's the story:  The AS-512 (Apollo 17) and AS-512 (Skylab 1) LVDC software listings — which for the upteenth time, may or may not be restricted by ITAR from being presented publicly here — have certain mysterious markings in column 71 of the punch-cards.  Column 71 happens to be the last column of the program-comments field of LVDC source-code lines.  These markings are undocumented, unsurprisingly, since we have essentially no documentation about LVDC assembly language, and so the markings' purpose and usage rules were not apparent to us.  After thinking about these markings for a couple of months, I formed the notion that they could be used to produce mid-level flowcharts of the LVDC source code.  To test this notion, I subsequently wrote flowchart-generator software to convert the AS-512 and AS-513 LVDC source code into flowcharts.  Whether or not the resulting flowcharts provide any meaningful representation of the software, or indeed whether they are useful in any sense at all, remains to be seen.

In calling these flowchart "mid-level", I mean that they expose the flow of control within the corresponding software, but they do not provide any calculational details that would let you go in the reverse direction to re-create the software from just the flowcharts.  If you want an analogy, instead of software source code, imagine the engineering design of an automobile, say a BMW X3.  These flowcharts, in automobile terms, tell you that the BMW X3 has an "engine" and a "battery" and a "carburetor", and so on, fitting together in certain ways.  All of which may or may not be true; but working backwards from that isn't enough to even create a working automobile, let alone a BMW X3 specifically, because it still doesn't tell you how you make an "engine" or any of the other component parts.

At any rate, partially on that basis, I conclude that whatever the ITAR status of the LVDC software source code, there's no reason whatever to suppose that these newly-generated flowcharts are subject to any export controls.  The LVDC page's new AS-512 and AS-513 Flowcharts section has thus been updated with all this info and with all of the new AS-512 and AS-513 flowcharts.  You can decide for yourself whether they're of any value or not, though of course if you want to decide on their accuracy you'll have to follow the instructions to get access to the LVDC flight program source code, and to perform the manual effort of comparing the flowcharts to the code. 

I'm sure there are lots and lots of errors in the flowcharts, but I don't personally have the time and inclination to pursue them at this time any more than I have already.  At least not sans feedback by you, my dear readers.
2023-07-26
Began fleshing out the Flowcharts section of the LVDC page.
2023-07-22
Our modern LVDC assembler now has the capability (like the AGC and AGS assemblers before it) to produce assembly listings in colorized, syntax-highlighted HTML, viewable in web browsers like Chrome, Firefox, or the other guys.  It's pretty swell, though as usual, unless you've asked me to qualify you as a "U.S. Person" for viewing ITAR-restricted material, I still am not in a position to be able to show you any LVDC flight software, syntax highlighted or not.  The PTC ADAPT Self-Test Program, however, as non-flight software, has been reassembled and thus has a nifty syntax-highlighted listing and I've updated the LVDC page accordingly.  Recall that the PTC (Programmable Test Controller) ground-support equipment contained a modified LVDC processor, and thus essentially ran LVDC programs ... albeit with some differences.

Speaking of the PTC, by the way, I recently had a conversation with one of the original LVDC developers who was lamenting the inadequate documentation they were presented with in trying to create new LVDC flight program versions by adapting the preceding versions.  He tells me that they often had to resort to running the legacy code on the PTC, single-stepping and setting breakpoints and what-not, just to figure out what the code was even doing.  Which I'm perfectly sympathetic to, given how difficult it sometimes is to figure out legacy code ... and pretty frightened by as well, if you think about the astronauts needing to ride a rocket programmed under those circumstances.  That's life on the bleeding edge for you!
2023-07-17
  • Added the Apollo 11 LM Systems Activation Checklist to the document library.
  • Added an incomplete rough draft of a tutorial on LVDC software flowcharts.  This is a notion I don't want to talk about just yet, but for which I have high hopes.
2023-07-13
Reconstructed AGC source code is now available for the Aurora 88 program, for which we've so far had only the octals dumped from physical memory modules.  Aurora 88, you may recall, was standard checkout/acceptance software for the LM Guidance & Navigation system.  But during the reconstruction of the software, Mike discovered several other novel features it has that are reflective not only of the flow of the software-development process back in the day, but also of LM equipment that didn't survive the selection process and thus wasn't used in flown missions.  I refer specifically to the LEM Optical Rendezvous System (LORS).  Check it out!

The Aurora 88 reconstruction also afforded Mike the opportunity to make a couple of minor corrections to the Sundial E AGC software reconstruction announced a couple of weeks ago.  The syntax-highlighted version of the source code has been accordingly updated.
2023-07-07
The LVDC assembler has been updated to reduce (but not fully eliminate) most of the decimal-rounding errors that I mentioned yesterday are encountered sometimes (but rarely) when assembling the AS-512 and AS-513 flight programs.  (The total number of rounding errors has been reduced from 30 to 6.)
2023-07-06
The LVDC page has now been updated, principally with respect to the manner in which "constants" are handled by the assembler.  This happens to mark a milestone, in that the LVDC assembler has also been updated, to the point that — if certain provisos are accepted as reasonable — the AS-513 LVDC flight program now assembles without error and without octal mismatches.  Given that AS-512, AS-206RAM, and PTC ADAPT SELF-TEST had already assembled without error or mismatch, this implies that the LVDC assembler is now fully working.  At least, until the next LVDC program is found and exhibits funky new features not supported by the assembler as-is when we try to assemble it.  Hopefully the probability of that happening is reduced, even if it can never be exactly zero.  And I should clarify that my present goal is just production of the correct object code when valid LVDC source code is input.  There are plenty of other respects in which the LVDC assembler isn't great, such as not being very robust when confronted with certain types of LVDC programming errors.  Given my disturbingly-finite capabilities, however, those other respects are also problems for some other day.

The provisos I mentioned above are either serious or negligible, depending on your point of view, and are two in number:
  • A few WORK directives need to be added to the LVDC source code to provide information to the assembler that I wish the assembler could deduce for itself.  WORK directives are my own invention, and don't exist in the original LVDC assembly language.  PTC ADAPT SELF-TEST and AS-206RAM need no such added directives, fortunately, but I was forced to add two of them to AS-512 and three of them to AS-513.  Most of them I actually know how to get rid of, I think, but so far the cost of the programming effort to do so just isn't worth it to me.
  • There is a mismatch between the way the original assembler and the modern assembler round decimal numbers, so that for a very small percentage of decimal constants, the original and modern assemblers disagree in the least significant bit in the octal object code.  I'm inclined to regard these discrepancies as due to bugs in the original assembler's arithmetic, but trying to offload blame from myself back onto 1960's and 1970's IBM FSD is pointless: The modern assembler is supposed to mimic the original, and as long as it can't mimic this rounding bug (if it is indeed a bug), the modern assembler cannot be fully complete.  There are 19 of these rounding errors in AS-512 and 11 in AS-513, out of 1000+ decimals, but there are none in AS-206RAM or PTC ADAPT SELF-TEST.  At the moment, the modern assembler simply has a command-line switch (--fuzzy) that avoids reporting these as errors, thus letting you ignore them.
Whether, how, or when these issues will be fixed remains nebulous.

What all of the negative blather above fails to celebrate is the positive news that the transcriptions of the AS-512 and AS-513 flight programs to source code and to octal listings can now be regarded as complete and debugged.  Obviously!  Or else there would be mismatches between the assembled code and the transcribed object code, and I just told you there aren't any.  Of course, the surety of correctness extends only to the data and code transformed to executable object code, and not to the program comments in those source-code files.  I'm sure that there are many errors in program comments still awaiting discovery!
2023-07-04
On the LVDC page, some "new" features of in the LVDC assembly language (namely, rare syntactical forms or behaviors of "=H'...", "IF", "ORG", and "DOG" found only in AS-513 source code) have been covered.
2023-07-01
As I mentioned a week or so ago, we're in the process of releasing reconstructed source code for various AGC programs that we've previously released only as octal dumps of their physical core-rope memory modules.  All of these program share characteristics of correct assembly, of not being quite as perfect as we'd like, and of nevertheless being good enough that we think they're useful as-is.  We'd hate for them to be lost through our own negligence in not making them available.  Not to mention the fact that the more eyeballs are on them, the greater the probability that they can be improved over time.  The lacunae, as usual, are sections that don't correspond closely enough to any other available assembly listing that we can guess symbolic labels, program comments, or certain other technical aspects of the code.  Those suspect sections are a bit hard to find.  As usual, we have Mike Stewart to thank for the reconstruction effort.

At any rate, today's release is the reconstructed AGC source code for Sundial E.  Recall that Sundial E was the acceptance/test program used for the guidance & navigation system, as well as the mission software for 2TV-1, a sequence of four crewed (but ground) missions for thermal/vacuum testing of the CSM.
2023-06-29
Four docs having to do with reentry or rendezvous for several Apollo missions were added to the library.  (Thanks, Cooper.)  Continuing on the theme of the last entry in this log, I guess that means there were re-doings a-transpiring.  (Ouch!  Sorry ... but not really.)
2023-06-22
Big doings a-transpiring today!  Well, that's a bit of a misstatement.  I guess it would be more accurate to day that like everybody involved in engineering design, we're often fighting a battle between what's too imperfect to release versus what's too significant not to release.  Or as it's sometimes said, not letting the perfect be the enemy of the good.  So I'm announcing several items today that fall somewhat under that rather vague umbrella of worthiness if not necessarily perfection.
  • As you may recall, a few months back Mike Stewart was able to get dumps of core-rope memory modules for the Block I AGC programs Sunrise 45 and Sunrise 69, which were system-test programs used (among other things) for acceptance tests of Block I guidance-system equipment.  Mike was able to fairly-quickly provide us with a reconstruction of Sunrise 45 source-code, although Sunrise 69 proved somewhat more challenging to a then-depleted Mike (I guess even he must have his limits) and thus has been languishing for quite a while.  But the time is now ripe, even if the Sunrise 69 source code itself may still be a bit green, and so it's finally being made available today.  There may be a few more ad hoc program labels in it that mightn't exactly match the original code than usual, but rest assured that the source code assembles correctly and is considerably better than nothing if you want to study the code!  The "new" source code is now in our software repository, and you can see our usual colorized, syntax-highlighted version of it by looking at the improved Sunrise 69 write-up on the Colossus page.
  • Similar comments can be made about the source code for Corona 261, which was the Block I flight software for the unmanned AS-202 mission, the very first Apollo mission flown with a working AGC.  Core-rope memory modules were dumped a while back, but a source-code reconstruction wasn't instantly at hand.  On the other hand, why should we have expected an instant reconstruction?  As it happens, part of the reason for the short delay is that the dump of the physical memory modules was a more-difficult affair than usual, and the uncertainty that the dump was exact was greater than usual, even though we thought it was very-likely correct.  So Mike felt he had to make renewed efforts to see if the dump needed correction.  Those efforts are now concluded, and we do indeed believe that the original dump was fine.  Reconstructed Corona source code is thus now available, and you can either download it from the software repository, or view the colorized version of it provided with the improved Corona 261 write-up on the Colossus page.
  • The initial transcription of the LVDC flight software for mission AS-512 (Apollo 17) was completed about a month ago, but in such cases there's always the suspicion that there may be typos in it ... bugs.  As it turns out, there were.  Lots of them!  There are a number of techniques for correcting such bugs, such as lots and lots of proof-reading.  Well, we didn't do that!  I'm sorry to say that for whatever reason — possibly the potential ITAR restrictions on "export" of this software — the pool of potential volunteers for such LVDC-related activities is far smaller than what I've experienced in the past for similar AGC-related activities.  In other words, the rate of progress is far slower because the workload rests on fewer shoulders.  That's my excuse.  As it happens, though, the best technique we have for debugging such source-code transcriptions is not proof-reading, but rather assembly of the source code and (automated) checking that the octal listing produced by the assembler is identical to the octal listing transcribed from the original printout.  That process is now complete, and so I regard the AS-512 transcription as debugged.  Any of you who have been given a link to the LVDC assembly listings by demonstrating you're legally qualified to view them can access that transcribed source code in the git repository at that link.  A handful of corrections were also made to the transcribed octal listing, so if attempts to run AS-512 code in the LVDC CPU emulator failed in the past, perhaps they might succeed now.  Of course, this particular debugging technique cannot detect errors in program comments, so those must either be tolerated or eventually corrected by other means.
  • The assembler-aided debugging for the AS-512 LVDC flight program was delayed for about a month because the LVDC assembler I wrote for processing the AS-206RAM flight program no longer fully worked as-is for AS-512.  For one thing, a number of new syntactic features had been added to the LVDC assembly language in the intervening years (1972 vs 1967), and those had to be supported in the assembler.  But that was the least of my concerns!  Unlike AGC or AGS assembly language, where what you see is what you get, the LVDC assembler performs a number of activities behind the scenes that are not explicitly tied to the source code.  The upshot of that is that there's a lot of object code and allocated memory after an LVDC assembly that was generated entirely by the assembler itself.  Since the aim of the the modern LVDC assembler system is to produce object code that agrees 100% with the original LVDC assembler, it's necessary not only to figure out what all of that extra stuff is, but to generate the extra stuff in exactly the same way.  And since there is no documentation available to us about LVDC assembly language or the original LVDC assembler, figuring all that out is not only tricky ... it may even be a fool's errand.  Today, though, I'm tentatively saying that the modern assembler has been updated and is working, subject to provisions discussed below.  At the very least, it can be used with AS-512 source code, AS-206RAM source code, and PTC ADAPT Self-Test Program source code.  Unlike LVDC flight software, the modern LVDC assembler is not regarded as potentially in thrall to ITAR, so you can get it in the software repository and see updated usage instructions on the LVDC page.

As I mentioned, there are certain provisos in saying that the modern LVDC assembler now "works".  In fact, there are three quirks that you have to live with if you want to assemble AS-512 source code.  They aren't terribly bad, but they're annoying and I hope to eliminate them.  At some point.  Two of the quirks are addressed inserting a WORK ROOF or WORK BLOCK directive, altogether one of each, into the source code; while those are too technical to discuss here, you can read about them on the LVDC page if you like.  The third quirk is that in AS-512 there's a handful of locations — well, 19 of them, so that's nearly two handfuls and two footfuls — at which the original assembler rounded floating-point or fixed-point decimal numbers in a way that I cannot understand, with the result that (from my perspective) they are wrong in the least-significant bit.  Understand that I'm referring to literally thousands of locations in AS-206RAM and AS-512 at which such rounding is occurring, so this rounding error rarely happened ... but it happened sometimes.  Personally, I think this was a (probably-undetected) bug in the original assembler, perhaps related to insufficient arithmetical precision in the computer running the assembler program.  But that's not really a mitigating factor:  The modern assembler needs to reproduce the bugs of the original, no questions asked, rather than stubbornly attempting to be "correct".  Thus in the end, saying that the modern assembler "works" depends on how much you're willing to discount these 2 workarounds and 19 rounding discrepancies!

2023-06-21
The LVDC transcription guidelines have been updated with respect to the way page titles will be handled in transcribing AS-513, and into how I intend to rework the existing AS-512 and AS-206RAM transcriptions.
2023-06-19
Updated the WORK ROOF directive to the description of LVDC assembly language in order to mimic some otherwise mysterious behavior (probably a bug, or at least an oversight) of the original LVDC assembler.
2023-06-18
Rejiggered the specification of the SYN pseudo-op in the LVDC assembly language
2023-06-17
  • Four documents added to the library.  (Thanks, Cooper.)
2023-06-16
  • Added a new document (thanks, Mike) to the library, related to the equipment for handling telemetry data.
  • Added the WORK directive to the description of LVDC assembly language.  That's my own invention, hopefully temporary, for instructing the assembler to take various actions for which I haven't yet worked out an appropriate theory of operation or algorithmic basis for letting the assembler decide for itself.  Here's an example:  The original LVDC assembler, it appears to me, did not always correctly round fractional decimal values in converting them to binary, so those values may not agree with ones assembled by the modern assembler; until I work out why, I can temporarily add WORK directives to the AS-512 or AS-513 source code to enforce the appropriate (or inappropriate from my point of view) rounding by the modern assembler.  After I eventually do figure it out, I can recode the modern assembler to act the same way as the original assembler, and remove the WORK directives.
2023-06-15
Updated the description of the TABLE directive in LVDC assembly language.  Also, added the hopefully-temporary WORK directive of my own invention.
2023-06-13
Added an NAA document called "Mechanical Document Interpretation" to the library.  While it's a general-purpose document (within the context of NAA's drawing system), it does cover a lot of specifics about NAA drawings for Apollo.

The LVDC page has been updated to include descriptions of the LIT and ENDLIT pseudo-ops.

Time sure flies!  I've been buried so deeply in reworking the LVDC assembler to handle the Apollo 17 (AS-512) and Skylab 1 (AS-513) LVDC source code, that I haven't noticed how long it's taking.  And it takes a lot, because not only were a number of new syntactic features added to the LVDC assembly language between AS-206RAM (for which I had designed the modern assembler) and AS-512/513, but also the assembler does various things differently under the surface.  And of course, my requirements for our assembler demand that it produce not merely assembled code that works, but precisely the same assembled code as the original assembler.  Meaning that I have to figure out these invisible differences in how the original assembler worked, using as clues only the assembly listings it produced.  Since there's no documentation available for the original assembler, that leaves me having to go about it scientifically:  observe a difference, hypothesize what the assembler thought it was doing at the time, implement a similar change ... and then try, try again if it doesn't work identically.  Tricky!  It's going well, but there are lots of mysteries left before I'm done and can go back the working on the Space Shuttle's HAL/S compiler system.

To give you an example of the kinds of difficulties I mean, consider the DEC pseudo-op, which in LVDC assembly language (and many other assembly languages like AGC) lets you give the assembler a decimal number that it converts to a binary representation and stores at the current location in memory.  For example, in LVDC (or AGC) assembly language,
MY2    DEC     2.0B27
means to store the machine's binary representation of the number 2.0 at the current memory location, which it also labels with the symbol MY2.  (Don't worry about the B27 if you don't know what it means but it relates to the fact that the LVDC uses a 26-bit representation for numbers.)  In AS-206RAM and AS-512, there are about 250 and 500 of these DEC statements altogether.  In four of those in AS-512, the original assembler produced what I and my assembler think was the wrong least significant bit.  In other words, there is a rounding error.  746 successes and 4 failures would sound pretty good in most situation ... except that in this situation it adds up to 100% failure!  And why is the rounding wrong anyway?  Is it me?  Was the original assembler buggy?  Dial me up next Tuesday, and perhaps I'll be able to tell you.  But this little rounding bugaboo is not the last of my problems with the LVDC assembler.
023-06-06
  • Five new documents added to the library:  A newer revision of the Apollo 14 Lunar Module Systems Handbook, an Apollo 13 Mission Techniques doc, and several Apollo Experience Reports.  (Thanks, Mike and Cooper!)
  • Some fixes on the LVDC page (changes to the D and P formats in the description of FORM).
2023-06-05
  • Both volumes of the LM-4 (Apollo 10) Operations Handbook has been added to the document library, though unfortunately one of the volumes has only changed pages.  Admittedly, the changes are perhaps 40% of the book.
  • Some fixes on the LVDC page (description of BLOCK).
2023-06-03
More of the same as yesterday.
2023-06-02
I've made various updates to descriptions of LVDC assembly-language, mainly relevant to macros and their expansions.
2023-05-31
  • A couple of early versions of the primary reference document about the S-IVB Instrumentation Unit were added to the library.
  • A link to the Vostok Supersite was added to the FAQ page.
2023-05-30
  • Updated the Gemini page, showing of the various computation modules evolved on a software version ("math flow") basis.  (Thanks, Amy Collins!)
  • Added a couple of documents to the document library.
  • And a couple of new documents for the Shuttle library as well.  But no, that doesn't mean I'm at the point of trying to clear up the backlog of Shuttle documents I'm sitting on or that I know about; it was just more convenient for me at this moment to add these particular documents to the library than to add them to the backlog.
2023-05-29
I've finished adding the document backlog to the document library.  Well ... virtually the entire backlog, as there's a handful of documents left over that I'm dubious about posting, and which for that reason I've held back for now.  Perhaps I'll still end up adding them sometime.  Or not.  But my point is that the document backlog is mostly taken care of for now.  I've also added the promised searchable-text layers to the recent documents that were lacking them.  Unfortunately, the large backlog of Shuttle documents is yet another matter.  Processing of those documents remains on hold, as all of my Shuttle-related activity does, pending resolution of my current LVDC-related workload.  Which is not imminent by any means.
2023-05-28
  • Added 16 more documents from my backlog to the library.  They're a real miscellany, without any overarching theme, from Gemini through Apollo through F-8 digital fly-by-wire, so I won't try to be more specific about them here.
  • Added dedicated Skylab 1 and RTCC sections to the document library.
2023-05-27
  • The document library now includes a volume of the ASTP Operational Data Book (thanks Mike!), as well as 19 additional files from my backlog.  All of the latter are RTCC requirements for various types of processing for specific missions and situations (such as Earth-orbit insertion for Apollo 10 and 11).
  • The "Official Virtual AGC GitHub repository" link on the FAQ page was pointing off into la-la land ... without winning me any Oscars in the process.  Fixed now.  It had been unchanged since I first put it there, years and years ago, and since it had never been reported until now, I guess that question hadn't been asked all that frequently.  (Thanks Chris Speidel!)
2023-05-26
  • Added 8 documents to the library from my backlog queue, generally having to do with RTCC, MCC, and MSFN.  There's a lot of info in some of these documents about the "universal command system" (UCS) digital data (and its formats) being passed around the network.  But admittedly, I've not really been aware of UCS until recently — i.e., I don't know much about it — so I don't guarantee that the info is new or unique.
  • Various updates to descriptions of LVDC assembly-language pseudo-ops, including REQ, BLOCK, new variants of ORG, and new variants of FORM and invocations of forms.  Some but not all of these have already been implemented in the assembler itself.
  • Eliminated some long-obsolete materials that had been unexpectedly lurking as unlinked-to phantoms on the web-server but which could still be accessed from a search engine like Google.  There's probably even more stuff like that, but ... well, the website is really big now, so they're really hard to find.  (Thanks to Matt McKrell!)
2023-05-24
Added 5 documents to the library.  These relate to interconnections and signals of the Saturn IVB stage's Instrumentation Unit (IU) (thanks Mike!), and to mission control (MCC), as well as yet another Operations Handbook, this time for the Skylab mission's CSM  (thanks Cooper!)
2023-05-23 Incidentally, some of the documents I've been adding to the document library in the last week or so could stand some improvements like decent page orientations, or (most importantly) searchable text layers.  I'll get around to that at some point, but I'll just have to owe it to you for now.

Meanwhile, Cooper (thanks!) has sent over yet another tranche of Apollo documents for the library, and this time I really (truly!) am going to take my time processing them.  However, a few caught my eye and so I've gone ahead and added them to the library immediately.  The ones that caught my eye are a pair of documents related to the mission control center (MCC) in Houston. 

The first is a general MCC familiarization guide from 1967, part of whose information we already had in abridged form.  It contains (among other things) a facility map, building-by-building floor-plans, descriptions plus pictures of the equipment therein for identification purposes, high-level block diagrams interrelating these things, schema of the data flow between them, and documentation trees of all the associated manuals for such equipment.  There are lots of documents listed in the documentation tree, and we have few (or perhaps none) of them.

More interesting from my standpoint is the MCC Operational Configuration for Apollo 15.  For want of a better explanation, it's primarily an explanation of what data is available at each of the 100+ consoles, in detailed enough form that you could make a reasonable simulation of the consoles as long as you didn't insist on correct coloring and overall scale.  Because who doesn't love a good simulation? 

To give you an example, Console no. 37 is "AGC/CMC Support", the image of which I've reproduced in a tiny form at the upper right, but which you can obviously see full size in the document itself.  I've highlighted one small area in green, which the document refers to as "LOC 3", and zoomed in on that area in the image at the lower right (unfortunately featuring my mouse cursor as well).  Later on in the document, the interpretations of each of the 36 indicators in LOC 3 (as well as every indicator in all of the other LOCs of the console I haven't zoomed in on, and for every other console as well) are listed, of which here are a few:
  • 01 Upper, color=amber: CH OVRIDE
  • 01 Lower, color=green: SCS CONT
  • 02 Upper, color=red: CMC WARN
  • ...
  • 18 Lower, color=red: P01 ENBL

Pretty nifty, no?  The only drawback is that the document doesn't tell us what slogans like "CH OVRIDE" may mean, nor what's displayed on the two CRT monitors (LOC 6 and LOC 7), so we need to look elsewhere ... oh well, too bad, so sad!  Some of that stuff is pretty obvious, though, and perhaps some of the remainder is in the many, many missing manuals of the documentation tree that I mentioned above.

A slightly-different scan (bigger grayscale vs the older, smaller B&W) of the Lunar Module Abort Guidance System Design Survey document has been added as well.  Perhaps it's better than the old one, perhaps not.

2023-05-20
Well, I decided to go ahead and finish up processing the document tranche I mentioned yesterday as something I had intended to take my time with, so 26 new documents (or alternate scans of existing docs) have been added to the Document Library.  It simply resulted in my pulling out less of my remaining hair than continuing to make the changes to the LVDC assembler needed to deal with the LVDC AS-512 flight program, which is what I had intended to spend my day on ... and will now have to return to since I no longer have an excuse to keep me away from it.
2023-05-19
Added seven docs to the Document Library, all sections or volumes or revisions of the Apollo Operations Handbook that we didn't have previously.  (Thanks, Cooper Lushbaugh!)  There are more documents in this tranche that I just don't have time to deal with right now, though not additional Apollo Operations Handbooks, that presumably I'll be posting over some undetermined time-frame in the near future.  From my standpoint, the most-notable additions today related to Apollo 1 and Apollo 7, but obviously tastes vary.
2023-05-18
Last year I gave a 15-minute video presentation about the Virtual AGC Project for Software Heritage's software-preservation-focused SWHAP Days conference.  Or at least that's what the talk was supposed to be about, but I had only a small fraction of the time I would have needed to cover the entire Virtual AGC Project, so the video's scope is actually considerably trimmed-down to make it as concise and interesting as I could manage in the time available.  Which is a good thing really, since it's difficult enough to sit through 15 minutes of my highly-scripted droning, let alone the several hours of winging it that I would likely have used up if not constrained.  At any rate, I notice that Software Heritage has now put the conference materials online, so you can watch the video yourself from the link above, if you're so-inclined, or else from the hyperlink I've added to the FAQ page.  Do select the 1080p resolution and full-screen display, if you know how to do that on YouTube.  And really, my droning isn't as bad as all that.  I hope!
2023-05-17
Added another version of the Command Module Operations Handbook to the document library.  Mike points out that:
It purports to be the first release of the document, and may be more applicable to early missions (especially Apollo 7) than the copies we currently have.
Which is welcome, considering that we continue to suffer from a severe Apollo 7 (and Apollo 1) deficiency.  Of course, software would be better. 
2023-05-16
Various documents were added to the document library:
  • A 1963 document called the "Apollo System Specification", which is just what it sounds like.  For example, section 4.4.5.3.4 tells that "[the LEM's] general purpose digital machine shall
    have the capability of performing all LEM guidance problem computations, vehicle sequencing, and timing trajectory, and shall conduct diagnostic tests of itself and checkout routines of
    other LEM subsystems".  (Thanks to Cooper Lushbaugh.)
  • Ten or so "Apollo Mission Techniques" documents.  (Thanks to Cooper Lushbaugh.)
  • A complete sample program in the MAC computer language (see below).  (Thanks to Mike Stewart.)
  • A bunch of Tindallgrams (see below).

MAC (MIT Algebraic Compiler) was a computer language somewhat like FORTRAN (though fancier in some ways) that theoretically would have been useful for scientific computing.  Apparently, MIL/IL tested out potential AGC algorithms by coding them and running them in MAC before coding them for the AGC.  I've often heard about it in the past, but basically haven't thought about it too much.  Lately, though, we've gotten a fair amount of very early code written in MAC (not yet posted here!), so in preparation for dealing with that MAC code I've been looking into it a little bit.  When my understanding is more complete, I'll probably write it up for the site in my typical wordy, overblown style, but I haven't done so yet; that's probably why this post is so long!  (The "sample MAC program" I'm posting today, by the way, isn't the incoming MAC code I mean, as it's not even from Apollo.)

At any rate, I was shocked to realize that for all I've heard about it, up to this point we (the Virtual AGC Project) haven't had any code in MAC or any documentation about MAC other than superficial references to it.  Moreover, I've found no available information online about MAC that's deeper than the "this computer language used to exist" variety.  Of course, googling for "mac", as you may imagine, does not produce incredibly helpful results; thanks a lot, Apple!  Fortunately, the language itself appears (at least superficially) to be quite easy to understand even without documentation, particularly now that I've been steeped in the HAL/S language used for the Space Shuttle flight software ... but I'd still prefer to have the documentation.  And it's not as if the MAC language is secret or proprietary. It's simply that nobody ever seemed to bother.  Which is a shame, considering that (as I say) we have incoming code actually written in it!

With that said, we have found some MAC documentation.  But the news about it isn't rosy:  Everything I've found so far is trapped in the MIT Library, and as near as I can tell, the MIT Library doesn't let anyone look at MIT Library materials except MIT staff, students, and faculty.  And sometimes, if you're really lucky, researchers from affiliated institutions.  What happens in the MIT Library stays in the MIT Library.  As one of the non-elite myself, I therefore have no means of accessing any of these materials.  Nor do I have any such elite folks on a string to go and fetch such material for me.  The Library does have a searchable database, though, so they can have a giggle while dangling a list of the materials I can't access over my outstretched arms.  For example, here are some of the juicy items you find:

  • "The MAC Algebraic Language System", by Hal Laning and James Miller (1970), 23 pages, MIT/IL report R-681.
  • "The MAC Primer", by Henry B. Brainerd (1966), 39 pages, MIT/IL doc E-2044.  It relates to using MAC on the Honeywell computer that MIT/IL used before switching over to IBM computers.
  • "The MAC-360 Primer", also by Brainerd (1969), 63 pages, MIT/IL doc E-2393.  It's the IBM-based document that superseded E-2044.
  • ... and others

But enough of that!  Regarding Tindallgrams, while I've mentioned them briefly somewhere on the site, I don't think I've posted any of them, or at least not many.  At any rate, a lot of folks consider them very useful sources of information.  ALSJ has posted a lot of them that apparently came from the UHCL archives, so there isn't too much need for reposting them here.  But I'm nothing if not compulsive (or is it obsessive?), and some of the UHCL/ALSJ files are lacking a searchable text layer, so now that this gap in the Tindallgram race has been pointed out to me, I naturally need to OCR where necessary and repost!  Apparently, Bill Tindall wrote around 1100 of these memos for Gemini and Apollo, and what I'm posting today is a half-dozen PDFs of a portion of them.  Not that anything is being intentionally excluded, you understand, but merely that only a portion of the memos seem to have survived.  There's now a dedicated "Tindallgrams" section in the document library.

Finally, the initial transcription of the AS-512 LVDC flight program has been completed.  Thank you to all participants!  However, neither has it been proof-read for typos nor has it been debugged via assembly (and comparison of the assembly to the separately-transcribed octal listing).  I expect — or perhaps more accurately, dread — that the assembler will itself require updates as the debugging process proceeds.  At any rate, that's next on my agenda, beginning tomorrow and continuing until who knows when?  My expectation is that the AS-513 LVDC flight program can be cut-and-pasted from the AS-512 LVDC flight program to a great extent, so I don't anticipate any work to begin on the AS-513 flight-program transcription until the AS-512 source code has been rendered as error-free as possible.

I do expect to make some improvements to the LVDC assembler along the way:  principally, giving it an option for producing color-coded, syntax-highlighted, hyperlinked, HTML assembly listings, much as the AGC and AGS assemblers have already been doing for many, many years now.  I skipped this feature the first time around, when the LVDC assembler was only used for the AS-206RAM flight program, because fear of ITAR prevented me from "exporting" the nifty HTML assembly listings online and thus it didn't seem to be worth the effort.  But someday I hope I can post the the LVDC software online, and even in the near term while I'm afraid to do so, souped-up assembly listings turn out to be such a very helpful study tool that I prefer not to do without them.  I've become addicted to the syntax highlighting ever since I saw the LVDC color-coding scheme Mike created for the vim text editor, even though I've not been using vim myself for my contributions to the transcribed source code.

2023-05-15
It was pointed out to me that the "Virtual AGC Software Landscape" diagram that appears at the very top of our home page hasn't been updated in a while, and that we now have additional binary and/or source-code versions of several items listed (or sometimes not even listed) in that diagram.  So I've updated it, at least in so far as the specific problems pointed out to me are concerned ... I think.  Unfortunately, there are various visual decorations in the diagram whose interpretations I didn't write down anywhere, and it's no longer clear exactly what I had in mind with many of them!  For example, why are some software versions accompanied by smiley faces and some not?  Why are some versions boldfaced and some not?  I don't know. The diagram may need to be rethought and revisited at some point, if even its creator can't grasp all of the nuances.  But at least for now, I'm calling it updated.
2023-05-13
Mike Stewart has sent along a new document for the library, for which his synopsis is as follows:
[A] new study guide ... — CM PGNCS System Mechanization. It is extremely good and I'm very excited about it. The last ~140 pages are focused on the AGC. Compared to ND-1021042 and ND-1021043, it has less schematics but it does a significantly better job of explaining how and why — so it is a great companion for those documents. It would have been suuuper useful to have during the AGC restoration or while I was building the rope reader.
But that's usually the way it is, isn't it?  By the time you fully understand anything significant, the knowledge is obsolete.  Though the fact that Apollo is not a moving target any longer is pretty useful for a project like Virtual AGC.  There's no new thing under the sun in so far as Apollo is concerned, and being lazy, that's the way I like it!
2023-05-11
  • The transcription effort for the AS-512 LVDC flight program has not yet finished, but the window for volunteering to assist has now closed.  Thanks to everyone who has assisted!
  • Nik Beug has made a terrific video of essentially an entire simulated AS-202 mission, using the newly-available Corona 261 software and the Orbiter spaceflight-simulation system with a special Block I branch of the NASSP add-on.  Watch it!
2023-05-10
Added a newer version, at least of Volume 2, of the Apollo 16/17 CSM Operations Handbook to the document library.
2023-05-04
Added a doc to the document library.
2023-05-03
  • Corrected some oversights in my Corona 261 descriptions added yesterday.
  • Corrected (I hope!) the misspelling in several places of Larry McGlynn's name.  Sorry about that, Larry!  My brain knew your name, but my fingers didn't.
  • On the Colossus page, rewrote the description of the Solarium 55 to indicate that it had been used for both Apollo 4 and Apollo 6.  We've known this for a long time, but the text on the Colossus page (and elsewhere on this site) had doggedly continued with our original erroneous assertion that Solarium 54 had been used for Apollo 4.  Hopefully this is now fixed everywhere; probably not, but hopefully.
2023-05-02
  • The LVDC transcription guidelines have continued to be updated, and the transcription effort for the LVDC AS-512 (Apollo 17) flight program has continued apace, though I've not bothered to report on it in this space.  If you happen to be interested in the progress, there's a spreadsheet that tracks the transcription.  The short answer is that it's proceeding well, without difficulty other than expenditure of time and effort.  After the transcription is completed, which isn't something very close to happening at the moment, I'm sure that there will be updates to the LVDC assembler required, at which point we'll be able to debug the transcribed source code and octal listing.  But that's probably thinking too far ahead.
  • Speaking of things that I haven't been reporting on, there's a huge backlog of Space Shuttle documentation sitting in my inbox that I haven't gotten around even to looking at because of the time being spent instead on the LVDC software.  I mention it only because one might wonder why there has been a transition from continual Shuttle-Library additions to the present dearth. 
  • Longtime readers may recall that we got flustered a few years back with the notion that the AGC software for the AS-202 mission might become available.  You may also recall that AS-202 was the first flown mission with an AGC — albeit Block I — and hence this software (Corona 261 by name) was the first ever flown AGC software.  Well, it has taken a while (seven years!), but we finally have it in hand.  Not the source code, mind you, but a dump of the executable from the physical memory modules.  Thanks to collector Jimmie Loocke, the owner of the modules, and to Mike Stewart, as usual, for dumping them.  It's great to finally get that particular monkey off of our back!  Of course, given the nature of this sad, old world, in which things seldom work out perfectly, there were more than the usual number of difficulties in performing this dump, so we're not yet entirely sure it's 100% accurate even though its memory-bank checksums are perfect.  On the other hand, there's every expectation both that the source code will be recoverable, and that the process of doing so will uncover errors in the dump.  So life's not all bad.  In the meantime, you can run Corona 261 as it is right now in either the VirtualAGC GUI or in Orbiter+NASSP, though I'm not in a position to explain the latter any farther than that.  At any rate, you can read more on our Colossus page.
2023-04-18
Some updates to the LVDC-transcription guidelines.
2023-04-16
The remaining source code for the original (Shuttle era) HAL/S compiler, known as HAL/S-FC, has now made itself available, and has been added to our source tree.  (See also the README at that link.)  Recall that the HAL/S compiler was written in the high-level language known as XPL, or at least a modified form of XPL, with some code in BAL (IBM Basic Assembly Language).

For anyone who has looked at the partial HAL/S-FC listing that was all we had previously, note that for technical reasons I won't bore you with I've changed its folder name from HAL-S-FC-REL32V0 to PASS.REL32V0.  The "new" code comprises passes 2, 3, and 4 of the compiler, whereas before we only had some significant portions (but apparently not all) of pass 1.  I'm not entirely sure what all the new passes do in detail, but I'm pretty sure that the portions we had before got no farther than syntactical parsing, whereas we now have code-generation and optimization.  Part of the problem in discussing it without having the opportunity to review the code in detail is that the documentation for the compiler system does not discuss it in terms of "passes" (1, 2, 3, and 4), but rather in terms of "phases" (1, 1.5, 2, and 3).  So your guess as to how these passes and phases correspond to each other is as good as mine at this point.  ... Though having said that, an email has just rolled in that sheds some light, so I may come back to this issue later with some more-enlightening comments.

Please inform me if you notice any oddities in these files.  Some semi-automated conversions were needed (at least, in my less-than-humble opinion) to massage them from the form in which they were provided to me into the form in which you see them, and I'd certainly like to know if I managed to mess up the conversion somehow.

Incidentally, if some industrious person wants to work out syntax highlighting for HAL/S (*.hal), XPL (*.xpl), and/or BAL (*.bal) source code for our GitHub repository, I certainly wouldn't look askance.  I'd love to have it, but I suspect we'll be waiting indefinitely for it if I have to work it out myself.  Yes, I know we have no flight software in HAL/S as the situation stands right now, but there's lots of other HAL/S source code there, geared at learning HAL/S, and learners can certainly benefit from syntax highlighting.

Actually, I could say much the same for LVDC syntax highlighting (see the transcription guidelines for vim-based LVDC syntax highlighting), but it would be depressing to do so when I can't actually post much LVDC source code to GitHub to benefit from such hypothetical syntax highlighting. 
2023-04-15
Anyone following the LVDC-related news on this site is aware that due to ongoing uncertainty about the status of LVDC software under the U.S. regulations known as ITAR, we are presently restricting access to such software to those who are interested enough (and able) to individually present us with credentials demonstrating that they legally qualify as "U.S. persons".  What that unfortunately means as well is that there are no links to the software on this site, and no updates in this change-log about whatever progress is being made on the internal processing we must do here with such software, to transcribe it into source-code form, assemble it, run it in emulation, etc.  But I figure it's important to have some way to communicate such progress to those who have not (or cannot) go through the demeaning process of proving they are "worthy" by accident of birth to look at the sacred software itself.  So I'm toying with the idea of writing about the progress here, but doing so in grayed-out blocks, like so:

Restricted-access LVDC-software news: 
  • Both the AS-512 and AS-513 flight-program "octals" (i.e., the executable machine code) have been transcribed and are available in the local git repository.  While they've been through one or two proofing passes each, they're still not regarded as error-free.  Both are estimated (by statistical methods) to still contain on the order of 3 undetected/uncorrected errors, and to need one additional proofing pass each to reach an estimated ~0.1 errors.  Of course, they may be error-free in spite of that right now, and in any case may be run in emulation to a certain extent right now.  Recall, though, that there are conditions under which these Flight Programs make calls to the so-called Preflight Program, which is not present, so even if error-free these programs could only be emulated to a certain extent before the absence of the Preflight Program became problematic.
  • Two of the 77 source-code files for AS-512 have been transcribed, namely SECOND OPPORTUNITY INITIALIZE and GFP EXECUTIVE CONTROL PROGRAM, and are present in the git repository.
  • None of the 70 source-code files for AS-513 have been transcribed.  It's possible that the two AS-512 files so-far transcribed are identical or substantially identical to their AS-513 namesakes, but I'm not aware of it one way or the other.
  • And just for completeness, though it hasn't been "news" for over three years, our original AS-206RAM flight program had its octals and all 23 of its source-code files transcribed into the git repository long ago.

Alas, all Space Shuttle work is on hold as long as I'm involved in this LVDC processing.

2023-04-14
The LVDC-transcription guidelines posted yesterday were updated in regard to demonstrating U.S. citizenship and the use of LibreOffice for transcribing.
2023-04-13
We are currently in the process of transcribing the LVDC flight-program source code for AS-512 and AS-513.  If you'd like to assist, read our guidelines to see what's involved and whether or not you're legally eligible to participate.
2023-04-05
The Apollo 14 (AS-509) Operational Trajectory document has been added to the library.  What's notable about this, in light of the recent activity in terms of acquiring LVDC source code, and particularly AS-512 source code, is that the document includes a table of all the LVDC software presets, referenced not only by variable name but by memory address.  Where this contrasts with preset-tables in launch-vehicle operational trajectories we presently have for other missions is that the other such documents don't include the memory addresses.  The presence of the addresses means that we can compare these Apollo 14 LVDC addresses to the Apollo 17 LVDC addresses in source code, and find that they are largely or even entirely identical.  (Admittedly, this has only been spot-checked so far.)  That gives us not only a measure of how the LVDC flight software was changing in the interval from Apollo 14 through 17, but more importantly, it means that many of the Apollo 14 LVDC presets can be directly applied to an Apollo 17 mission.  Of course, "true" LVDC is not yet integrated into (say) Orbiter NASSP, though as I understand it, the presettings may still be of current relevance to relevant spaceflight-simulation systems in spite of that.
2023-03-31
Big LVDC news:  Assembly listings for the LVDC Flight Programs of the Apollo 17 (AS-512) and Skylab 1 (AS-513) missions have suddenly become available!  Besides that, we've gotten a large printout of a Saturn IB test run for the Skylab 3 (AS-207) mission.  Read all about it here.

Well, when I say "suddenly" ... for you, perhaps; for me, it has been ongoing for the last 6 months, and has therefore seemed fraught with uncertainty and as slow as molasses.  Not that it's anything I've achieved personally, you understand; naturally, Mike Stewart has been deeply involved, and hopefully I'll be able to provide fuller credits later when some of the dust has settled.  But as they say, that makes no never mind now.  The LVDC page in general has thus been the recipient of substantial rewrites related to this sudden availability.

As you may recall, the only LVDC source code available until now has been that for the so-called PTC ground-test equipment, along with the uncompleted, undebugged code for the unflown AS-206RAM mission.  Whereas in contrast, the AS-512 and AS-513 Flight Programs are the final, actually-flown versions of the software!  This is all so new that the write-up doesn't include much technical detail about the new listings.  That'll have to wait for more-extensive analyses over time.  Nor have transcriptions to source code yet been made, so we can neither assemble this code yet nor run it in the LVDC CPU emulator.

Unfortunately, you'll also recall that there has been uncertainty under U.S. law as to whether the AS-206RAM source code could be "exported" — i.e., posted online — and that I've reluctantly needed to hold it back from public view until these issues are resolved.  That uncertainty obviously extends immediately to the AS-512 and AS-513 Flight Program source code as well.  I will release any or all of them to "U.S. persons" (i.e., U.S. citizens and some others who qualify) who apply to me directly, but alas that's little consolation to those of you who don't qualify.  I deeply sympathize, and hope the situation changes for the better at some time in the future.

Important note:  If I've granted you access to the AS-206RAM software listing in the past, I'll happily grant you access to the "new" AS-512 and AS-513 software listings as well, without you having to go through the rigamarole of proving to me again that you're a "U.S. person".  However, if you haven't received a notification of the new hyperlinks, you'll have to drop me a note reminding me to send them to you.  Sorry for the inconvenience!

The potential ITAR issue is particularly annoying insofar as it relates to integrating LVDC software into existing spaceflight simulation systems. That wasn't so important as long as the only surviving LVDC software was for AS-206RAM, but it's extremely irritating now that Apollo 17 LVDC software is available.  I have an unsatisfying but hopefully-feasible workaround for the problem.  As I've mentioned here several times recently, I've been creating a compiler for the computer language (HAL/S) in which Space Shuttle flight software was written.  Since the Shuttle flight software suffers (in my mind) from the same ITAR uncertainty afflicting LVDC code, I've been pursuing a strategy with the Shuttle compiler and emulator that might be applicable to the LVDC code as well.  The basic idea of this strategy is that instead of compiling Shuttle code to the machine language of the Shuttle's computer system (IBM model AP-101S), I instead compile it to a different form (which I call PALMAT), and provide a PALMAT emulator that can run the compiled PALMAT.  The significance is that even if flight-software source code or executable code for the AP-101S were restricted under ITAR, I see no reason in the world PALMAT code would be restricted; after all, one can neither recover the original source code nor produce usable AP-101S executable code starting from PALMAT.

Similarly, if we had an assembler for LVDC source code that assembled to some form (let's call it LALMAT) other than LVDC machine language, and if we had an emulator for LALMAT, there would be no reason we couldn't export the LALMAT code from the U.S., and no reason under ITAR that we couldn't integrate the LALMAT emulator into spacecraft-simulation software such as Orbiter.  Of course, LALMAT doesn't have to be something invented ... it could be something as simple as a translator from LVDC source code to (say) C source code.

There are several drawbacks to this scheme, other than the obvious one that I'm no legal beagle and my legal opinion is worth the paper it's digitized on.  Those drawbacks are:
  • So far, no spaceflight-simulation folks have shown the slightest interest in this notion, so there's no guarantee they would even bother to integrate a LALMAT emulator even if it existed.
  • We might end up finding out that it's perfectly okay with ITAR to export the actual LVDC source code anyway, in which case any development time spent on LALMAT would be wasted.
  • As long as the LVDC source code remains restricted under ITAR (if it even is restricted), many of those people who would otherwise be most-enthusiastic about working with it have little motivation for participating in LALMAT development.
  • But mainly, I'm personally completely swamped, and there's no possibility of developing LALMAT myself as long as I'm neck-deep in Space Shuttle stuff.  Developing LALMAT requires volunteers to do so.

I guess the executive summary is that if there are any "U.S. persons" keen to help transcribing the AS-512 and AS-513 listings into source code, and/or specifying LALMAT and coding an LVDC-to-LALMAT assembler and a high-performance LALMAT emulator, then you should make yourselves known!

2023-03-24
I've rescanned the Apollo 8 Flight Crew Log which was added to the document library about a week ago, so you'll now see it listed among the recent additions for today rather than for the 18th.  Not that there was anything particularly wrong with the previous scan ... well, there was one page that had turned out a little funky without my noticing it ... but the new scan is definitely nicer.  And bigger, alas!  Really, it just gave me the opportunity to try out a new scanner that I couldn't resist purchasing when I saw a good deal on it; but if you're going to digitize someone's precious keepsake for a permanent archive, you may as well do it in style.

By the way, I don't know if there's anybody engaged in producing an index for this document — I wish! — but if so, I can assure you that the new scan has the same number of images, in the same order, so all page numbering remains the same.  (Oh, I did notice that on the earlier scan there was one image in which the left-hand and right-hand pages on it were swapped, which is now fixed.  But I don't think that should affect any indexing.)
2023-03-20
Mike Stewart has sent over Volume II of the Apollo Operations Handbook for Lunar Module LM-2, which I've added to the library.  Recall that he also sent over Volume I about a month ago.

One question I'm often asked is this:  It's great and all that I can now run an AGC emulation, but what do I do with it?  Or more bluntly: How do I use an AGC?  To which my normal too-glib answer basically amounts to:  Train to be an astronaut!  Of course, this really is just a cover-up for the fact that I don't personally know how to use an AGC to do anything substantive.  (To be fair to myself, I also normally point out that I'm a poor person of whom to ask that question.)

Well ... call it stupidity, call it forgetfulness over the decades I've been involved in this, call it being overwhelmed, call it the sheer size and eclectic nature of these documents, along with the fact that we don't have just all that many of them — call it whatever you will — but for some reason I've been (or have become) blissfully unaware that one great charm of these Operations Handbooks for the AGC aficionado is that they contain detailed instructions for using the AGC, on a crew-member-by-crew-member and flight-phase-by-flight-phase basis.  Those instructions appear in Volume II in general; look for sections titled "G&C General Procedures" for the CSM or "Normal/Backup Procedures" for the LM.  The LM version of the handbook also integrates AGS operating instructions alongside the AGC operating instructions.  In the case of LM-2 (the volume added to the library today), look in section 8.6.

Live and learn, I guess!  Or perhaps "live and forget" might be a more-realistic appraisal, which is my excuse for dumping every little detail onto this site so that it hopefully cannot be forgotten as easily.
2023-03-18
Roger Wagner has sent me a physical copy (or at least a NASA-generated xerox of a physical copy) of the Apollo 8 Flight Crew Log, which I have duly digitized and added to the document library in both low-size PDF form and high-resolution archival form.  Superficially it may appear that we already had these documents in the library ... but what we had before were the blank forms for the log and/or partially-filled-out logs not from the actual mission.  Whereas these are the actual logs as filled out by the crew, insofar as I can see.  If you want to know what Frank Borman thought about his cream of chicken soup on Day 4, this is the place to look!  (I jest.  The only soup they got on Day 4 was pea soup.  Bill Anders ate all of his.  Frank Borman and Jim Lovell don't seem to have filled out their menu log on that day.  They did get cream of chicken soup on Day 3, for lunch, but Frank Borman didn't fill out his lunch log on that day either!  This may be a mystery that will never be solved.)
2023-03-07
Roger Wagner has also sent me a copy of the Apollo 17 EVA-1 checklist for the lunar surface, as well as high-resolution imagery for the same.  Obviously, lunar surface stuff is not our particular interest here at this site — quick, somebody inform the Apollo Lunar Surface Journal! — but a foolish consistency is the hobgoblin of little minds.  I was happy to accept it.  Even if you're primarily interested in the spaceflight tech rather than the moon per se, the photos are still amusing and worth a look.
2023-03-06
Added a copy of the "Apollo 13 LM Malfunction Procedures" to the document library.  It happens to have been digitized from Jim Lovell's original copy.  Thanks to Roger Wagner for scanning and donating it!
2023-03-03
Added a couple of documents to the Shuttle library related to the HAL/S programming language.
2023-02-23
The writeup for Sunrise 45 has now been augmented with a sweet list of instructions for some things you can actually do with Sunrise 45 ... a useful feature that (alas!) I all-to-often neglect to provide with AGC and other software.
2023-02-22
You may recall that about 4 months ago — only 4 months? It seems like an eternity! — Mike had managed to obtain dumps from physical core-rope memory modules of the Block I AGC programs Sunrise 45 and Sunrise 69.  Sunrise is one of a series of programs — the others being Sundial for the Block II AGC and Aurora for the LM AGC — whose principal claim to fame is that they were used for ground-acceptance and other testing of the Apollo spacecraft guidance-and-navigation systems.  Thus not only is Sunrise one of our very few surviving Block I AGC programs (the other being Solarium), and indeed the oldest non-trivial AGC program available, but it's also darned useful for anyone interested in building their own Block I system.  Because now you can test it!  Not that collision between reality and your expectations will necessarily bring you instant joy. 

At any rate, I digress.  The news today is that the AGC source code belonging to the physical dump of Sunrise 45 has now been reconstructed, and is available on our Colossus page, in our software repository, and so on.  Enjoy!
2023-02-20
Mike sent over a few new documents for the Apollo document library.  Here's his synopsis:
The first two are new (much better) scans of the Apollo Mission Simulator Instructor Handbook, volumes I and II, which are already in the library. Volume I is the same revision as the one in the library, while Volume II is a slightly later revision than the one we already have. The third is a nifty little booklet about the Lunar Module Environmental Control Subsystem by Hamilton Standard. It's filled with lots of technical details, sketches, and numbers, some of which we don't have from other sources.
Besides that, there is a Space Shuttle "document" that has been floating around for some time, but which I had resisted adding to the Shuttle library because I thought it was just a collection of pages from a another document in the library (namely IBM FSD document 85-C67-001, "Space Shuttle Model AP-101S Principles of Operation with Shuttle Instruction Set") for which somebody had been reviewing changes.  But has been pointed out to me (thanks Hartmuth Gutsche!) that it contains material — a lot of material — found neither in the afore-mentioned document, nor in any other source presently available to us.  This thing has no title, date, or author, so I can't even really tell if it's excerpted from a single document or from a variety of documents.  At any rate, I've assuaged my guilt a tad by adding a few niceties to the document, such as searchable text and correctly oriented pages, and have now posted it in the Shuttle library.
2023-02-15
  • New pages dedicated to my "modern" version of the Space Shuttle HAL/S compiler and (a new thing they didn't have back in the day) HAL/S interpreter have been added to the website.  The compiler/interpreter itself is undergoing frequent changes in our software repository, and it's nowhere near complete or debugged.  Development is pretty time-consuming, which is partially why I haven't been posting much lately.  But in spite of that the HAL/S interpreter is in a form that allows playing around with HAL/S ... if you're very, very tolerant of the kinds of problems you encounter using super-bleeding-edge works in progress.  I felt it was time to write up something more-definitive than the vague comments previously on our Shuttle page, particularly as I will likely want help at some point turning this preliminary version of the compiler, and the associated emulator built into the interpreter, into an advanced form that can produce efficient Shuttle code and run it fast.  That effort is actually something that could begin right now, if anybody was pounding on my door to help with it; or more helpful at this point, willing just to take it entirely under their own wing without interference from me!  Alas, I still have received no actual HAL/S flight-software source code whatsoever, so keep your fingers crossed on that.
  • Mike got the "Apollo Operations Handbook" (volume 1) for LM-2 somewhere and so I've added it to the document library.  Though predating our operations handbook for LM-3, it's apparently bigger, with lots more foldouts.  Go figure!
2023-01-16
Several documents added to the main document library and to the Shuttle library, most of which I've been sitting on for a while because I've begrudged any time I had to spend away from working on the Shuttle HAL/S compiler.    Mostly, these documents are supplementary in nature and don't directly relate to Apollo or Shuttle computer systems, which of course is our primary focus.
2023-01-03 Added just one document to the Shuttle Library.  It appears that we've finally had the Shuttle Library for long enough that some of the documents in it are no longer marked with the badge.  Yes, I know:  Who cares?  Well, I was eagerly awaiting the day when some Shuttle documents were no longer "new". 

Actually, the newly-added document for today, the STS-114 Flight Readiness Review (FRR) presentation, gives some interesting insights into the evolution of the Shuttle's onboard software that I at least hadn't seen before.  Since we don't actually have any of the Shuttle's flight-software source code yet, it's all too easy to get into the habit of just thinking or talking about the Shuttle software, rather than admitting that there were many versions of it and that there were significant changes to the software over time into which we (unfortunately) have little visibility.  However, this FRR gives a rough count of the pretty-substantial amount of code changed from STS-107 (OI-29) to STS-114 (OI-30), as well as a top-level summary of the nature of those change.  In brief:


PFS
BFS
MEDS
Thousands of Lines of Code
Added/Deleted/Modified
15.1
(3.3%)
3.2
(2.9%)
9.6
(11.3%)
Software Change Requests
(SCRs) Implemented
122
30
13

In looking through these notes, I see that I've neglected to mention what I personally have been working on lately.  Whilst awaiting the arrival of Shuttle flight-software source code on my doorstep — or more accurately, my inbox — and in lieu of a working version of the Shuttle-era HAL/S compiler, I've been writing a modern compiler and emulator for the HAL/S computer language.  Recall that HAL/S was the high-level language — and a pretty sophisticated one at that — in which the Shuttle's Primary Flight Software (PFS) and Backup Flight Software (BFS) were written.  Creating this compiler and emulator turns out to be quite a substantial effort, in which I'm increasingly thinking that I'll eventually want or need to enlist the help of other coders who are paying attention.

But in spite of my probable long-term need for help, I'm still making good progress on it by myself.  For my immediate engineering purposes, I'm actually combining the HAL/S compiler and emulator functionality in the form of a HAL/S interpreter, into which you can type HAL/S statements and immediately see the results from compiling and running that code.  Yesterday was a big milestone for that, in that it was the first time I was able to see it produce some output ... admittedly, on a very small but still important subset of the HAL/S language.

For illustrative purposes, here's a cut-and-paste of a short interactive session with the HAL/S interpreter:
HAL/S > DECLARE I INTEGER, X SCALAR, Y SCALAR;
HAL/S > X = 50.26;
HAL/S > Y = 100.92;
HAL/S > I = 3 X - Y;
HAL/S > WRITE(6) 'The result of 3 X - Y,', 3 X - Y, ', converted to an integer, is:', I;
        The result of 3 X - Y, 49.86 , converted to an integer, is: 50
HAL/S >
I suppose it's obvious to you, but "HAL/S > " is the user-prompt displayed by the interpreter, the stuff in red is output by the emulator, and the rest of the stuff was what I typed in myself as input to the interpreter.  As brief as this session is, you can still see various interesting features of HAL/S.  For example:  It is strongly typed, and hence all variables must be DECLARE'd before use; floating-point types (or in HAL/S lingo, SCALAR types) are automatically rounded when assigned to INTEGER variables; there is no multiplication operator, and multiplication is done just by sticking things next to each other, as in 3 X; and the WRITE(6) statement shows some clear inheritance from the FORTRAN language, even though HAL/S as a whole bears very little resemblance to FORTRAN.
Hide 2022 change notes?
Hide 2021 change notes?
Hide 2020 change notes?
Hide 2019 change notes?
Hide 2018 change notes?
Hide 2017 change notes?
Hide 2016 change notes?
Hide 2015 change notes? (There aren't any!)
Hide 2014 change notes? (There aren't any!)
Hide 2013 change notes? (There aren't any!)
Hide 2012 change notes?
Hide 2011 change notes?
Hide 2010 change notes?
Hide 2009 change notes?
Hide 2008 change notes?
Hide 2007 change notes?
Hide 2006 change notes?
Hide 2005 change notes?
Hide 2004 change notes?
Hide 2003 change notes?


This page is available under the Creative Commons No Rights Reserved License

Virtual AGC is hosted
              by ibiblio.org