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.
http://home.comcast.net/%7Ehp41cx/PLM/V4_letter.jpg
http://home.comcast.net/%7Ehp41cx/PLM/V4_dear_PLM_owner.jpg
http://home.comcast.net/%7Ehp41cx/PLM/V4_dear_PLM_owner (2).jpg
http://home.comcast.net/%7Ehp41cx/PLM/V4_update.jpg
Dave