PLM80 V4 docs needed

Dave Mabry dmabry at
Fri Oct 17 09:02:33 CDT 2008

Jeff Erwin said the following on 10/16/2008 9:03 AM:
>> <snip>
>> Ok, Jeff, I am wondering what you might be referring to.  I think you
>> might be thinking of PL/M-86, which I'm not that familiar with.
> No, it's definitely PLM80 I am currently using.
>> Intel, generally, would issue two manuals for PL/M-80 (and ASM-80 as
>> well).  One manual is the PL/M-80 Programming Manual and one is the
>> ISIS-II PL/M-80 Compiler Operator's Manual.  I have in front of me the
>> "PL/M-80 Programming Manual", no. 9800268B, which is dated 1977, and the
>> DATA construct is in it.  It is used at load time to set initial values
>> of variables.  I believe that this manual applies to several versions of
>> PL/M-80, including V4 and earlier ones.  It is basically a syntax manual.
> Well...if you are going to let facts get in the way....
> Your actual manual wins out over my rusty brain cells.  It is the manual
> above, the Programmers Manual, that I lust after.

Sorry about using facts.  ;)  I was really trying to validate MY rusty 
brain cells.  One thing I do claim is a pretty good knowledge of 
PL/M-80.  In the old days I did many projects with PL/M-80 and some with 
PL/M-51, and I think I still remember it.  A couple of years ago I was 
able to write a small program in PL/M-80 using one of my working MDS's 
and get it to compile and run without opening the manual.

> The one thing that seems to have changed from V3 to V4 is the following
> statement:
> In V3:   DECLARE HELLO DATA ('Hello world.');
> in V4:   DECLARE HELLO (*) BYTE DATA ('Hello world.');
> There are other subtle changes I have found.  I discovered these as I was
> using older PLM source code for CPM as a programming example, and certain
> constructs were being rejected by the V4 compiler.
> I could also just be screwing something up.  I always reserve the right to
> do that...

I *was* wrong when I said that DATA was used to initialize a variable at 
run time.  The DATA construct puts the variable initialization into ROM 
and therefore that variable can't be changed at runtime.  It is fixed.  
The "*" in the array length declaration is called "implicit array 
length" and just means that the array is defined to be the length needed 
to hold the contents that follow the word DATA in the declaration.

That implicit (*) specifier was part of the syntax in the very first 
version of PL/M-80 that ran on the MDS.  It was NOT part of the syntax 
for the original cross-compiler that was written in Fortran for mainframes.

I have found all my PL/M-80 documentation and it is a treasure trove.  I 
have a short document from Intel that tells a programmer what has to be 
changed in source code in order for a cross-compiler compliant program 
to compile on the resident compiler.  In that document it talks about 
the implicit specifier.  So that construct was in the very first 
resident compiler (V1.0).

In your example above, if the line you label V3 would actually compile 
correctly in V3, then it was not documented to work that way.  It may 
have passed the compiler syntax check, but the manual never specified it 
would.  If the (*) was required for V4 to be happy, it was a case of the 
compiler now enforcing what was *always* documented as the correct syntax.

>> I have the "ISIS-II PL/M-80 Compiler Operator's Manual", no. 9800300-04,
>> dated 3/82.  It is the manual that was issued specifically for V4.0 of
>> the compiler.  There are several "$" commands listed.  All those "$"
>> commands are also listed in the V3.0/V3.1 version of that manual
>> (9800300C).
> I have this for V3, I  figured out the V4 compiler commands by going through
> the PLM80 executable.  V3 used the $P=1 construct, V4 used the $CODE/$NOCODE
> constructs which were a lot clearer.  The $P=1 model does not work with the
> V4 compiler I have, the one with the overlays.

$CODE and $NOCODE worked with V3.0 of the compiler.  I have that in the 
documentation and I remember it.  It would force 8080 assembly language 
equivalent to be placed into the listing file generated by the 
compiler.  The $P=1 directive is unfamiliar to me.  It is not in the 
manuals that I have and I don't remember it.  Do you have an example of 
that?  What does it do?  It must predate the V3 compiler.

>> The Programming Manual did not change from V3.0 to V4.0.  The language
>> was really the same.  I programmed a lot in those days and I never had
>> to change anything moving from V3 to V4.
> It would be interesting to look up the DATA syntax above in V3 and V4 and
> see what is confusing me.
There is no mention of DATA in the operators manual.  And, as I said, 
the syntax manual is the same.  It didn't change from V3 to V4.
>> I think the main changes from 3 to 4 had to do with newer operating
>> system environments.  Newer versions of ISIS-II could have more than the
>> four or six or seven disk drives by allowing networked drive assignments
>> up through :F9:.  File names could be longer, as well.  I think those
>> were some of the differences from V3.x to V4.0.  But the language syntax
>> was the same.
>>>>> Specifically, I am in need of:
>>>>> 98-00268B plm 80 programming manual, V4
>>>>> Thanks.
>>>>> Jeff Erwin
> Can I offer to pay you for a copy of the two manuals you refer to above?
> Jeff Erwin
I will work on scanning these manuals.  You don't have to pay me.  It 
won't happen right away, but I will do it.  Watch for further updates!

For now, here are a few interesting documents. (2).jpg


More information about the cctech mailing list