HAL is ostensibly an acronym for High-Level Assembly Language, but anyone from Edinburgh will know it better as Hamish's Assembly Language. Like everything Hamish Dewar wrote, HAL is a beautiful piece of code that took assemblers to the next level, back in the early 70's. It combines an assembler with a built-in macro-processor and some high-level concepts, creating a language which has the efficiency of hand-written assembler coupled with the simplicity of high-level constructs such as complex conditions, loops, and procedures.

Hamish's original implementation was for the Interdata 70 series, with a later port to the ICL 7502 RJE station which we used at Edinburgh primarily as a screen editing station. The code was written in Imp and hosted on the PDP9/15 systems. Later versions were backported to the Interdatas once a compiler for that system was written. HAL70 and HAL75 are very similar programs, with the two very different architectures being supported primarily by the .DEF configuration files.

Gordon Brebner created an assembler derived from HAL for the PDP-11 (specifically the KMC-11) for which we also have sources and some actual programs.

Phil Hartley wrote a version for the 2900 ('New Range') series; the source is lost however his CS4 report was saved and is also a good introduction to HAL.


Rainer Thonnes took the contrary approach from Hamish and wrote a low-level compiled language at one point, which was really the same thing coming from the other direction.

By the way, the concept of a high-level assembly language has been rediscovered some 40 years later by Randall Hyde at UCR, but I have to say it seems a little too high-level for my taste - more like a C++ compiler with some embedded assembly than an assembler with some variables, simple expressions, and control structures bolted on. IMHO Hamish's original design has stood the test of time pretty well.


This page generated by HakiHaki