[Info-vax] Resurrecting a VAX MACRO program from 1988

T. Kurt Bond tkurtbond at gmail.com
Fri Aug 11 17:28:58 EDT 2023


I'm trying to resurrect a VAX MACRO program I wrote in 1988: VTIL, a VAX Threaded Interpretive Language.  It's a Forth and STOIC inspired language that uses subroutine threading and it was my senior project in college. I don't have the media it was saved on, or the devices to read those media, but I do have a printout of the VAX MACRO source.  I don't have the command procedures I would have used to compile it.

I've got a VAX/VMS 5.5-2 system that I maintain these days (it's emulated) that is a descendant of one of the VAXes I wrote this code on originally.  While I've been programming regularly on VMS over the years, most of it has been in VAX BASIC or GNU C.  I haven't written any serious MACRO code, probably since ... 1988.

I've typed the MACRO source all in, and got rid of all the obvious errors resulting from the process, and it assembles without errors.  When I went to link it, I found out that it was missing two external symbols, which from context I figured out were for items from a VAX Message file that was missing (it wasn't on the printout, alas).  I constructed a new .MSG file that ought to work, but when I tried to link them I got the following link error:

$ LINK/MAP/FULL/EXE=VTIL.EXE VTIL.OBJ,VTIL_MSG.OBJ
%LINK-E-OUTSIMG, attempted store location %X00001FFC is outside image binary (%X00002000 to %X02001E00)
	in psect VTILCODE module VTIL file MPL$DATA3[MPL.TKB.VTIL]VTIL.OBJ;1
-LINK-E-NOIMGFIL, image file not created
%MMK-F-ERRUPD, error status %X106482B2 occurred when updating target VTIL.EXE

I was hoping someone could give me some guidance on how to figure out what is happening here.

The code is available on GitHub, if anyone wants to read it:
     https://github.com/tkurtbond/VTIL

Writing a Forth-inspired language on a VAX using subroutine threading is definitely playing the Forth implementation game in easy mode. I was pleased to see that I could understand the code, after I looked up a few instructions.  It is pretty straightforward.

I'd say that if I get it working again it would need some additions to make it generally useful, mainly general file i/o.  Right now it can load VTIL source from text files and open a block file and use Forth-inspired functions for reading and writing blocks.  It was originally designed to use LIB$GET_INPUT and LIB$PUT_OUTPUT for terminal i/o, and I was thinking it would be interesting to see if I could modify it to have a more Forth-like approach to terminal input and output, where it is done a character at a time.



More information about the Info-vax mailing list