The HAL/S programming language is used in the general purpose computers in the space shuttle. I have written a simple HAL/S program of my own. Is there any compiler available to turn it into executable form?
-
2$\begingroup$ For whatever it might be worth, the HAL/S specification is available online by way of the Internet Archive. At a grand total of 237 pages including empty pages, preambles, indexes and other supplementary material, it shouldn't be that hard for someone who wants to implement an interpreter to do so, at least as long as you don't require the language's real-time guarantees. $\endgroup$– userCommented Nov 16, 2016 at 7:25
-
1$\begingroup$ @Aldo_Joseph can you say why an interpreter is not good enough? I think it may be. Also, what machines do you have available to run it on? $\endgroup$– AndyCommented Nov 16, 2016 at 13:09
-
1$\begingroup$ i just have a notebook computer $\endgroup$– Joseph MCommented Nov 16, 2016 at 15:20
-
1$\begingroup$ For a notebook or similar, it looks difficult. Apparently HAL/S is poorly connected with PL/I, and a very basic PL/I extension for gcc (Linux) was done once but might not be maintained. It sounds like a fairly expert project to get something working to the full specification. $\endgroup$– AndyCommented Nov 16, 2016 at 15:26
-
2$\begingroup$ @Aldo_Joseph I'm curious why you want to learn HAL/S. Is it just for the novelty? You do realize that the Shuttle program was discontinued, right? $\endgroup$– called2voyage ♦Commented Nov 16, 2016 at 15:31
2 Answers
In general: if there are any compilers still extant for HAL/S, then they are under the care and responsibility of the United Space Alliance, which has published a specification. There are no HAL/S available as e.g. open source.
More specifically: the question can not completely be answered, as the request for a compiler always includes a target architecture, e.g. "Linux x64".
-
$\begingroup$ May be my words were wrong in the question.. But my expected answer is the same...Thanks for the answer😊 $\endgroup$– Joseph MCommented Aug 23, 2019 at 12:03
-
6$\begingroup$ United Space Alliance is defunct - it went completely out if business. It has no facilities or personnel any more, and it had no successor - its only business was operating the shuttle program. I worked there. $\endgroup$ Commented Aug 23, 2019 at 12:06
-
$\begingroup$ Actually HAL/S is similar to Fortran and we can compile it in windows. $\endgroup$– Joseph MCommented Mar 8, 2021 at 10:53
-
$\begingroup$ @OrganicMarble From what I can tell, United Space Alliance still legally exists – unitedspacealliance.com claims it is dissolved but Delaware corporate records say otherwise (and surely it must exist to own that website). It no longer performs any active business, but still has some residual functions related to maintaining the employment records of former employees and pension administration. I don't know what happened to USA's corporate archives–did they go to Boeing/LockheedMartin, NASA, or maybe they are still in USA's possession? $\endgroup$ Commented Jan 15, 2023 at 2:11
-
1$\begingroup$ @SimonKissane No idea about the archives. NASA and contractors are horrible at retaining historical material, USA is probably a drawer in somebody's desk at Boeing and an email address forwarded to somebody at LM. It's gone. All the pension stuff is done by a life insurance company. USA was kind of a shell company anyway - a joint entity of Boeing and LM, dreamed up to avoid a contract competition. $\endgroup$ Commented Jan 15, 2023 at 3:00
Here is the source code to the original HAL/S-FC compiler: PASS.REL32V0
Ron Burkey at the Virtual AGC project got that code, apparently from the private collection of one of the former HAL/S developers. (At the time I originally wrote this answer, he did not have all the source code to the compiler, but since then he has managed to acquire the complete source code.)
It is written to run on IBM mainframes under MVS, and is written in a PL/I dialect, XPL (and also some IBM mainframe assembly language). XPL survives (see here, here, and here), although possibly not the exact version which the HAL/S compiler was written in. It is not going to run on your PC, unless you are running MVS (or z/OS) under an emulator such as Hercules or IBM zPDT. You would need a high degree of competence with IBM mainframe technologies (or be willing to spend the time learning them) to get anywhere with it.
Apparently only two compilers ever existed (although the first was really a family of closely related compilers rather than a single one):
- this compiler, the original one, written to run on IBM mainframes. From there it was ported to also run on Modcomp minicomputers, and Data General Eclipse minicomputers. Those minicomputer platforms are (nowadays) even more obscure than IBM mainframes, and the use of them was discontinued much earlier, so the odds that those ports will turn up is not promising.
- NASA Langley Research Center wrote a HAL/S compiler in Pascal to run on CDC Cyber mainframes. (source). Not publicly available, maybe survives in some private collection or NASA archive, but again the odds are not promising.
Actually this original compiler existed in two main versions–one which generated code to run on the Space Shuttle itself (and simulators which contained real AP-101S flight computers interfacing with simulated hardware), the HAL/S-FC compiler; and one which generated code to run on IBM mainframes, the HAL/S-360 compiler. The HAL/S-360 compiler was used to write utilities and applications to help manage the software development process. This code is from the HAL/S-FC compiler. I assume the HAL/S-360 compiler would have been mostly the same code just with a somewhat different backend, but I don't fully understand the differences between them. The IBM System/4 Pi architecture of the Space Shuttle's AP-101 CPUs is a derivative of the IBM System/360 mainframe architecture, removing instructions/features which weren't relevant to realtime aerospace applications, and adding some which were useful for them – so I expect the two backends are likely relatively similar code. There were also a bunch more versions of the IBM mainframe HAL/S compiler to produce code for other target platforms, including RCA 1802, Modcomp and ITEK ATAC-16M – this was part of a largely unsuccessful push to get NASA to standardise on HAL/S as a language, by making it available on other platforms popular for NASA projects; but the only major NASA project which actually ended up adopting it (other than the Shuttle) was (one component of) JPL's Galileo probe to Jupiter, which used the ATAC-16M backend.
-
1$\begingroup$ "one which generated code to run on the Space Shuttle itself" And the simulators! We had real AP101s in the Shuttle Mission Simulator. Great answer! $\endgroup$ Commented Jul 5, 2023 at 12:20
-
1$\begingroup$ @OrganicMarble Thanks for the feedback, I edited my answer to mention HAL/S-FC compiler targeted the simulators as well as the actual Shuttles $\endgroup$ Commented Jul 6, 2023 at 1:36
-
1$\begingroup$ The 5 AP-101s in their rack for the simulator (the Simulator Interface Device) i.imgur.com/bieFh7v.png and a close up of a data plate i.imgur.com/xKttJbp.jpg $\endgroup$ Commented Jul 6, 2023 at 1:44