On Fri, Jul 12, 2024 at 12:23 PM John R Levine <johnl@taugh.com> wrote:
On Thu, 11 Jul 2024, Paul Winalski wrote:
> Yes, that was precisely my point, and thank you for stating it more clearly
> and concisely than I did.  The VAX MACRO compiler takes in VAX assembly
> source code, not binary VAX instructions.

Does anyone know how extensively they used the macro facilities?  You can
write much higher level stuff as macros than as single instructions, which
makes it a lot easier to do efficient translation.  For example, on OS/360
you'd write a GET macro to retrieve the next record (or a pointer to it)
from a file, which was a lot easier to figure out than the control blocks
and subroutine calls the macros expanded into.

Macros were used very extensively in VAX MACRO, both for user programming and in the operating system.  All of the low-level system calls for user programs were implemented and documented as macros.  The OS assembly code made heavy use of macros as well.

Outside the VAX/VMS development group, BLISS was DEC's standard implementation language.  In the development organizations I worked in (software development tools and compilers), we did almost zero programming in assembly code.  The only assembly-level programming I ever did was the innermost loop of my VAX/VMS Mandelbrot set  program and a device driver to implement Unix-style pipes on VMS.  I did the latter in assembly code only because there was no documented HLL interface for writing VAX/VMS device drivers.

As Clem Cole observed, Dave Cutler hated BLISS with a passion.  All of his work on the VAX/VMS operating system was in assembly code.  Because of this there is still a large amount of OpenVMS still written in VAX MACRO.  But the RMS (Record Management Services, the VMS file system user interface) group wrote all of their code in BLISS.

After leaving the VMS group Dave went on to design and implement a common compiler back end for VAX, the VAX Code Generator (VCG), which was the optimizer and back end for VAX PL/I, VAX C, and VAX Ada.  The earlier generations of VAX/VMS compilers (VAX Fortran, VAX Pascal, VAX COBOL) each had their own back ends.  Cutler later did get HLL religion.  His real-time operating system for the VAX, VAXeln, was written almost entirely in Pascal.

-Paul W.