I wrote to RAND about some key materials in the JOSS document set that cannot be found online. They sent me some additional items. Although the “JOSS User’s Reference Manual” could not be found, he did copy Bryan and Smith’s “JOSS Language”, which is less of a reference and more point-form than I expected, but still filled with useful info.
JOSS is a mess. I had no idea how much so until I started reading the Language guide and found all of these one-off additions that make no sense whatsoever. For instance:
Do part 2.
Will jump to part 2 of the code, run it, and return. Ok, basically GOSUB. Whereas the otherwise similar but found in no other reference:
(Do part 2.)
Will instead run part 2 and then return to the command line. What?!
And then consider things that are seemingly simple until you see the examples in this document. For instance, to delete a loaded program and its data, like BASIC’s NEW, you would do:
Delete all.
But then there’s the variations. Like this example from the manual:
Delete x, part 3, all forms.
Yes, this deletes the variable x, all the steps in part 3, and the forms. Why in gods name anyone would want to do that in a single statement is beyond my pay grade. Or how about this one:
Type x+5, all steps.
WHY?! Or how about this one:
Let A be sparse.
That’s right, it says that A is some sort of sparse array. Apparently, which I say because I have not seen it used or even mentioned in any other documentation, this simply treats any previously un-Set array entry as a zero. Note that JOSS tracks every variable assignment using Set, and responds with the helpful “V = ???” if you haven’t Set/Demanded that one yet. So if you were to Set A(5)=1 and then Type A it would seemingly print only (5), so to get it to print an array of 0,0,0,0,5, you needed to use this statement.
I was going to try to have a beta of my interpreter out shortly, but I need to go for a long walk before looking at this again!