Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PLM-80 Native Compiler

1,704 views
Skip to first unread message

gm1...@aol.com

unread,
Jan 29, 2014, 10:53:09 AM1/29/14
to
I found what seems to be a PLM-80 compiler. It has several overlays but there does not seem to be an executable. There is a file without any file type that looks as if it might be the root code but when I try it the system just hangs. Does anyone have details on how to run this?

Cheers, Andy

s...@swtrocketry.com

unread,
Jan 29, 2014, 3:33:02 PM1/29/14
to
Op woensdag 29 januari 2014 16:53:09 UTC+1 schreef gm1...@aol.com:
> I found what seems to be a PLM-80 compiler. It has several overlays but there does not seem to be an executable. There is a file without any file type that looks as if it might be the root code but when I try it the system just hangs. Does anyone have details on how to run this?
>
>
>
> Cheers, Andy

Hallo,

Maybe it is a compiler for Intel ISIS system.

Greetings from The Netherlands,
Henk Siewert

gm1...@aol.com

unread,
Jan 29, 2014, 3:44:41 PM1/29/14
to
Henk, Thanks, that sounds possible as I came accros a mention on that. I think there might be an emulator to run it....

Cheers, Andy

Udo Munk

unread,
Jan 29, 2014, 4:23:47 PM1/29/14
to
This is Intel's PL/M-80 compiler for ISIS-II. Needs an Intel MDS system with ISIS or a CP/M 2.2 system with the ISIS-II software interface to run.

The compiler alone is useless, it creates relocatable object files, which need to be linked and bind to executable programs. Linker and binder as well as PL/M-80 library all work under ISIS of course.

For z80pack I build the complete usable tool chain to be able to work with PL/M-80 on a CP/M 2.2 system, because it is needed to compile the DRI OS sources. Can be used on any CP/M 2.2 system of course.

Mr. Emmanuel Roche, France

unread,
Jan 29, 2014, 4:59:23 PM1/29/14
to
Andy wrote:

> I found what seems to be a PLM-80 compiler. It has several overlays but there does not seem to be an executable. There is a file without any file type that looks as if it might be the root code but when I try it the system just hangs. Does anyone have details on how to run this?

There are dozen copies of this PL/M compiler.

The files without filetypes are the names of the command files, under ISIS-II...

(The "thing" that Intel asked students to make, 2 years after giving CP/M to Gary Kildall, Professor of Computer Science... Since those students had no real practical experience of programming (everything was theoretical, for them), ISIS-II was the result, with the success that everybody knows.)

One year ago, Mark Ogden disassembled it.

http://www.nj7p.info/Common/Toys/Software/OS/isis-4.html

If you want to use it under CP/M, have a look to:

http://p112.sourceforge.net/index.php?isx

(Alternatively, "someone" found and documented PLMX, which runs under CP/M natively.

http://z80cpu.eu/roche-pages/81-data-articles/roche/88-the-plmx-compiler

Or, you could re-compile the FORTRAN-66 code, which comes as 2 files, and has a good reputation of portability.)

(What you found is the "resident" version, running on an Intel micro. The original PL/M compiler was running on Mainframes. Gary used an IBM S/360 at the Naval Postgraduate School of Monterey, California. His Thesis mentions the exact version, and how to use his compiler under several other Mainframes of the time (1974).) (Intel was using a DECsystem-10, hence the "built-in commands" of CP/M.)

Yours Sincerely,
Mr. Emmanuel Roche, France

William

unread,
Jan 30, 2014, 12:58:34 PM1/30/14
to
What Emmanuel says is true.

The oldest PLM is the cross compiler, written in FORTRAN which works in 2 passes (PLM81 & PLM82) creating hex output. The code quality is quite good. I have increased the buffer sizes and translated the code to C. It works fine.

Then there are (at least) 2 versions of the native compiler (PLM80), 3.3 and 4.0 which run under ISIS, the operating system of the Intel MDS. Mark Ogden has translated the binary to C.

I've had some success using a C pre-processor with both the above PLM compilers with the advantage of extending the language with MACROs, conditional compilation, include files. In particular I can make the same source compile with all of them. :)

There are also PLM compilers for the 8051, 8096, 8086, 80186, 80386.

I have not had much success with PLMX which seems to fall over when source exceeds a certain size.

PLM is not such a powerful language as C. Nevertheless the generated code is often much more efficient because C does not compile very well onto an architecture which lacks 16 bit indexed addressing (for local variables and function arguments). I have rewritten a CCP in PLM adding lots of new commands and yet still staying in the 2k limit imposed by the original architecture.

Mr. Emmanuel Roche, France

unread,
Jan 30, 2014, 1:58:13 PM1/30/14
to
Hello, William!

You are too kind.

Allow me to "nitpick" you a little...

1) Why not display your family name? (Unless, of course, you are "Prince William", since it is obvious that you are English...) (In which case, since you have a German family name ("Hanover") and the motto of your Father is "Ich dien!", then I could understand that you prefer to be (re)named "Windsor"...) Hahaha!


2)
> The oldest PLM is the cross compiler, written in FORTRAN which works in 2 passes (PLM81 & PLM82) creating hex output. The code quality is quite good. I have increased the buffer sizes and translated the code to C. It works fine.

Ahem! As far as I remember (I have white hair), you should be talking of something named "the PL/M compiler", where PL/M is standing for "Programming Language for Microcomputers". And this PL/M Compiler used PLM source code files...

It is written in FORTRAN-IV, also know (to some Old Timers like me) as FORTRAN-66. (1966, not 2066...)

3)
> I've had some success using a C pre-processor with both the above PLM compilers with the advantage of extending the language with MACROs, conditional compilation, include files. In particular I can make the same source compile with all of them. :)

Hum... This is funny, I was thinking that PL/M used LIT declarations as macros? (Would need to check the manual.)


4)
> I have not had much success with PLMX which seems to fall over when source exceeds a certain size.

Ha? Interesting! Could you precise the size? If I remember well, the idea of the author of this compiler was to produce relocatable modules that would be extracted from a library, not full programs. Too bad that I did not manage to find its author.

Of course, the source code of PL/M is available, so maybe it would be possible to disassemble PLMX, since its author tried to do a multi-processor version of PL/M. But I would prefer to know more before attempting to recreate its source code. In fact, I am not even sure that it was written in PLMX, since there is no mention anywhere of PLMX being self-compiling.


5)
> PLM is not such a powerful language as C. Nevertheless the generated code is often much more efficient because C does not compile very well onto an architecture which lacks 16 bit indexed addressing (for local variables and function arguments).

Yes, when I was young (remember Kernighan & Ritchie ?), I read countless articles explaining how awful the code generated by C compilers were, especially on the Z-80. It is amazing (but logical) to see how tied to a given hardware some system languages (like C) are. But, of course, the Newbies knowing only C cannot understand this, since they have no experience.


Shame be to him who thinks evil of it...

s...@swtrocketry.com

unread,
Jan 31, 2014, 8:06:57 AM1/31/14
to
Op woensdag 29 januari 2014 21:44:41 UTC+1 schreef gm1...@aol.com:
> Henk, Thanks, that sounds possible as I came accros a mention on that. I think there might be an emulator to run it....
>
>
>
> Cheers, Andy

Hallo,

Yes. I have a MS-DOS emulator for ISIS II.
Compleet with PL/M compiler, User Guide and Handboek.
I can e-mail it to you, if you want it.
Just let me know.

Henk Siewert

gm1...@aol.com

unread,
Jan 31, 2014, 11:39:11 AM1/31/14
to
Henk, that would be great. I line at GM1MQE at AOL dot COM

Thanks, Andy

William

unread,
Feb 1, 2014, 5:03:35 AM2/1/14
to
Cher Emmanuel
> Ahem! As far as I remember (I have white hair), you should be talking of something named "the PL/M compiler", where PL/M is standing for "Programming Language for Microcomputers". And this PL/M Compiler used PLM source code files...

There is no such thing as "The PL/M Compiler" because, as pointed out there are many varieties.

>
> It is written in FORTRAN-IV, also know (to some Old Timers like me) as FORTRAN-66. (1966, not 2066...)
Indeed. I programmed in FORTRAN IV for 9 years!

>
> 3) This is funny, I was thinking that PL/M used LIT declarations as macros?
LIT declarations allow simple text substitution. In real applications you need MACROs with parameters. For example:-
/* The intrinsic Intel PL/M-80 MOVE can be optimized on Z80 */
#if defined(Z80)
# define MOVE(len, src, dst) LDIRX(src, len, dst)
#endif

> Ha? Interesting! Could you precise the size? If I remember well, the >idea of the author of this compiler was to produce relocatable modules >that would be extracted from a library, not full programs. Too bad that >I did not manage to find its author.
Whatever purpose the author may have had, I don't think I could get any of the CP/M PL/M sources to compile. However very small programs, say 20 lines, may work.

>
> Of course, the source code of PL/M is available, so maybe it would be possible to disassemble PLMX, ...
In that case you may want to use my DTAB utility which AUTOMATICALLY analyzes a CP/M binary and generates RESOURCE compatible DOC, SYM, and CTL files.

>
>
>
>
> > PLM is not such a powerful language as C. Nevertheless the generated code is often much more efficient because C does not compile very well onto an architecture which lacks 16 bit indexed addressing (for local variables and function arguments).
>

> Yes, when I was young (remember Kernighan & Ritchie ?), I read countless articles explaining how awful the code generated by C compilers were, especially on the Z-80. It is amazing (but logical) to see how tied to a given hardware some system languages (like C) are. But, of course, the Newbies knowing only C cannot understand this, since they have no experience.

C is an excellent language but it simply isn't suitable for some kinds of hardware - like old 8 bit CPUs. There are 2 main problems. Firstly C expressions get promoted to word/pointer size, which is 16 bits on the 8080. Obviously this is not very efficient. Secondly, as I mentioned, local variables are dynamically allocated on a stack, but there are no instructions giving word size support for such access. Suppose you want to pass the address of a local buffer to a C routine on the Z80. The smallest code (8 bytes) you can do is:-
PUSH IX ; Base pointer
POP HL
LD BC,buffer
ADD HL,BC ; HL := IX + buffer
PUSH HL

In contrast the more modern EZ80 would allow:-
PEA (IX+buffer)

s...@swtrocketry.com

unread,
Feb 1, 2014, 7:55:42 AM2/1/14
to
Hallo Andy,

The software and manuals are in the email.
I also have the book "A guide to PM/L programming for microcomputer applications" by Daniel D. McCracken.
It is way too big to copy. But if you have questions, maybe I can help you...

Greetings,
Henk Siewert

gm1...@aol.com

unread,
Feb 1, 2014, 10:53:42 AM2/1/14
to
Thanks Henk - will look for them.

Andy

Bill Gunshannon

unread,
Feb 1, 2014, 12:43:54 PM2/1/14
to
In article <82e9b2c3-3c22-4c2a...@googlegroups.com>,
For those who might be interested Amazon lists a number of booksellers
who have copies for as little as $.01 + shipping. I just ordered a
copy (actually, two) for my library as I plan to look at porting it
to another architecture and using it for OS development.

bill

--
Bill Gunshannon | de-moc-ra-cy (di mok' ra see) n. Three wolves
bill...@cs.scranton.edu | and a sheep voting on what's for dinner.
University of Scranton |
Scranton, Pennsylvania | #include <std.disclaimer.h>

Mr. Emmanuel Roche, France

unread,
Feb 1, 2014, 1:42:43 PM2/1/14
to
Hello, Henk!

This public message to warn you that I tried the 3 e-mail addresses that I have used, over the years, to write you, and all of them produced error messages...

(Including the one of your Web site!) (The 3rd one)

William

unread,
Feb 2, 2014, 1:43:05 PM2/2/14
to
Does anyone know where to find the PLM186 and PLM386 compilers?

s...@swtrocketry.com

unread,
Feb 3, 2014, 4:38:30 AM2/3/14
to
Op zaterdag 1 februari 2014 19:42:43 UTC+1 schreef Mr. Emmanuel Roche, France:
Hoi Emmanuel,

You can use swt at swtrocketry dot com

ajit...@gmail.com

unread,
Feb 10, 2014, 1:19:59 AM2/10/14
to
Hello Henk,

I am looking for a plm-386 compiler for DOS. But any plm compiler (for DOS) would be great to start this language.
Please mail me a plm compiler. my id AJITHB98 at GMAIL dot COM

Thank you in advance.

Regards,
Ajith

s...@swtrocketry.com

unread,
Feb 11, 2014, 1:28:15 PM2/11/14
to
Hallo,

You can download it from:
swtrocketry.com
Click on the SWT Computer logo and ... bingo

Henk

Peter Dassow

unread,
Feb 11, 2014, 3:22:25 PM2/11/14
to
On 11.02.2014 19:28, s...@swtrocketry.com wrote:
>
> You can download it from:
> swtrocketry.com
> Click on the SWT Computer logo and ... bingo
>

This compiler you wrote is not a native x86 application, instead, it
runs in an emulated ISIS environment.
I guess he wanted this:
At the page http://www.cpm.z80.de/binary.html, you will be able to find
also http://www.cpm.z80.de/download/xplm.zip , which is a native x86
application (sources were recompiled with a real x86 code producing
compiler).

Regards
Peter

s...@swtrocketry.com

unread,
Feb 11, 2014, 3:36:36 PM2/11/14
to
Op dinsdag 11 februari 2014 21:22:25 UTC+1 schreef Peter Dassow:
Thanx Peter.
I take a look at it.

Regards,
Henk Siewert

s...@swtrocketry.com

unread,
Feb 11, 2014, 3:45:35 PM2/11/14
to
Op dinsdag 11 februari 2014 21:36:36 UTC+1 schreef s...@swtrocketry.com:
Hallo Peter,

According to the included doc, http://www.cpm.z80.de/download/xplm.zip is a FORTRAN to C converter.

I do have a PL/M 86 compiler from Intel.
I will put it on my website.

Regards,
Henk Siewert

s...@swtrocketry.com

unread,
Feb 11, 2014, 3:52:48 PM2/11/14
to
Hallo,

Intel PL/M 86 compiler is on the website.
swtrocketry.com --> SWT Computer

Regards,
Henk Siewert

William

unread,
Feb 12, 2014, 8:12:48 AM2/12/14
to

> Intel PL/M 86 compiler is on the website.
Thanks Henk. I have the 8066 PL/M compiler and tools. Do you have any compiler for 80186 and later CPUs?

ajit...@gmail.com

unread,
Feb 12, 2014, 2:06:10 PM2/12/14
to
Hello Henk,

Thank you very much for sharing pl/m compiler for DOS.

Regards,
Ajith

s...@swtrocketry.com

unread,
Feb 12, 2014, 3:34:17 PM2/12/14
to
Op woensdag 12 februari 2014 14:12:48 UTC+1 schreef William:
> > Intel PL/M 86 compiler is on the website.
>
> Thanks Henk. I have the 8066 PL/M compiler and tools. Do you have any compiler for 80186 and later CPUs?

Hallo William,

No, not that I know.
But I will search my collection.

Regards,
Henk Siewert

Peter Dassow

unread,
Feb 12, 2014, 4:35:00 PM2/12/14
to
On 11.02.2014 21:45, s...@swtrocketry.com wrote:
>
> According to the included doc, http://www.cpm.z80.de/download/xplm.zip is a FORTRAN to C converter.
>
> I do have a PL/M 86 compiler from Intel.
> I will put it on my website.
>

Henk,

in the mentioned PL/M zip file, a F2C translator is *also* included, but
NOT only. It is needed, if you want to compile the FORTRAN PL/M sources
- they are included. I guess it was the easy way to translate it first
to C, then to compile the translated C sources.

Regards
Peter

William

unread,
Feb 13, 2014, 12:50:30 PM2/13/14
to
> > According to the included doc, http://www.cpm.z80.de/download/xplm.zip is a FORTRAN to C converter.

I'm the one responsible for this upload. :)

retrogear

unread,
Feb 19, 2014, 9:28:53 PM2/19/14
to
On Thursday, February 13, 2014 11:50:30 AM UTC-6, William wrote:
> > > According to the included doc, http://www.cpm.z80.de/download/xplm.zip is a FORTRAN to C converter. I'm the one responsible for this upload. :)

I'm having fun with the xplm cross compiler !!! I got the unmodified / original
1975 plm sources to compile and boot !!! I don't know who knows this but I finally
figured out how to do a directory listing in 1975:

DIRECT *.*

It bugged the me that it wouldn't work !!!

Larry

retrogear

unread,
Feb 19, 2014, 10:06:03 PM2/19/14
to
On Wednesday, February 19, 2014 8:28:53 PM UTC-6, retrogear wrote:
> On Thursday, February 13, 2014 11:50:30 AM UTC-6, William wrote: > > > According to the included doc, http://www.cpm.z80.de/download/xplm.zip is a FORTRAN to C converter. I'm the one responsible for this upload. :) I'm having fun with the xplm cross compiler !!! I got the unmodified / original 1975 plm sources to compile and boot !!! I don't know who knows this but I finally figured out how to do a directory listing in 1975: DIRECT *.* It bugged the me that it wouldn't work !!! Larry

Need to retract some of what I said. I did get all of the original 1975 plm
source to compile but so far only the original ccp is patched in and functional.
I realized I need to work on the i/o ports yet. However, I can now list the directory.

Larry

dott.Piergiorgio

unread,
Feb 20, 2014, 1:29:05 AM2/20/14
to
direct... hmhm... I can ask how big is the ccp binary you get ? and from
the source, also the other filenames are longer, e.g. rename for ren ?

(looks like something similar to a somewhat contemporary choice
elsewhere of "Ok" instead of "READY"...)

Best regards from Italy,
dott. Piergiorgio.

Udo Munk

unread,
Feb 20, 2014, 4:29:44 AM2/20/14
to
See cpp source, where it defines the intrinsics:

DECLARE INTVEC DATA /* INTRINSIC FUNCTIONS */
(7,3,'DIRECT',0FFH, /* LIST DIRECTORY ENTRIES */
6,3,'ERASE',0FFH, /* DELETE FILES */
5,2,'TYPE',0FFH, /* TYPE FILE CONTENTS */
5,3,'SAVE',0FFH, /* SAVE MEMORY */
3,2,'A:',0FFH, /* DISK A */
3,2,'B:',0FFH, /* DISK B */
7,2,'ASSIGN',0FFH, /* ASSIGN DEVICES */
7,3,'RENAME',0FFH, /* RENAME A FILE */
0);

First # is the full command length, second # is the minimum command length, so DIR *.* etc works too. Best is that just DIR won't list anything ;-) and obviously that was a bad idea, and an explict *.* was added in later versions.

Then this cpp only accepts upper case, for z80pack I modified it a bit, so that lower case is converted.

Because the 1975 load programm reads the hex file from the reader device and not from a file, I used one of the octopus channels for the reader device, so that load can be used. The octopus channels were some sort of SIO anyway, so that is not too bad to modify.

Well, original and modified sources and bootable disk with 1975 CP/M are in the z80pack repository since 2007 sometime. Also one can find the old thread about it in the newsgroup archives.

retrogear

unread,
Feb 20, 2014, 6:56:21 AM2/20/14
to
> Well, original and modified sources and bootable disk with 1975 CP/M are in the >z80pack repository since 2007 sometime. Also one can find the old thread about >it in the newsgroup archives.

Yes, I appreciate all your work Udo and alot of this is just "re-inventing the wheel" but for me being strictly a Windoze user it is now coming to life with Joe Moore's Z80 Emulator. It is now emulating the Intel MDS and can boot ISIS II from Bitsavers and the cpm 2.2 distribution disk for MDS-800 from Don Maslin's collection "straight out of the box" without any modifications. I just get excited with finally gettng this stuff to work for me.

Larry


Mr. Emmanuel Roche, France

unread,
Feb 20, 2014, 8:59:22 AM2/20/14
to
Udo Munk wrote:

> Then this CCP only accepts upper case, for z80pack I modified it a bit, so that lower case is converted.

Upper case only probably because an ASR-33 Teletype was used (during 30 years, it was the standard "console" of computers, since it was a standard I/O device of the time, and could be very easily patched to work with the first microcomputers). (Which were also made to connect easily with it, hence the "20-mA Current Loop" interface found on the IMSAI, the NorthStar Horizon, etc. That is to say: the first "S-100 Bus" microcomputers.)

In one of my WordStar-to-HTML File Converter doc file, I showed the character set that the TTY was using. Ha! By the way, "Rubout" is the name of the key, on the TTY, generating what is now known as ASCII DELete... So, if you count the number of times that the Digital Research manuals contains the word "Rubout", you can feel its long-lasting influence...

Udo Munk

unread,
Feb 20, 2014, 9:00:47 AM2/20/14
to
On Thursday, February 20, 2014 12:56:21 PM UTC+1, retrogear wrote:
> Yes, I appreciate all your work Udo and alot of this is just "re-inventing
> the wheel" but for me being strictly a Windoze user it is now coming to life > with Joe Moore's Z80 Emulator. It is now emulating the Intel MDS and can
> boot ISIS II from Bitsavers and the cpm 2.2 distribution disk for MDS-800
> from Don Maslin's collection "straight out of the box" without any
> modifications. I just get excited with finally gettng this stuff to work
> for me.

The work was done 40 years ago, and since then re-invented over and over again, just because it is interesting and fun, so nevermind.

I just did that too again and build CP/M 2.0 from the sources, which makes no sense at all, because it is crappy. But it is interesting and fun and allows to try out the bits and bytes and see one self, how and why it was improved and developed further.

A MDS-800 emulation is very cool, I wanted to do that too sometime, to be able to run ISIS. Also the CP/M 2.2 sources can be used to build a boot disk for the MDS-800, but I don't know if it really does work.

retrogear

unread,
Feb 20, 2014, 10:07:30 AM2/20/14
to
On Thursday, February 20, 2014 8:00:47 AM UTC-6, Udo Munk wrote:
> On Thursday, February 20, 2014 12:56:21 PM UTC+1, retrogear wrote: > Yes, I appreciate all your work Udo and alot of this is just "re-inventing > the wheel" but for me being strictly a Windoze user it is now coming to life > with Joe Moore's Z80 Emulator. It is now emulating the Intel MDS and can > boot ISIS II from Bitsavers and the cpm 2.2 distribution disk for MDS-800 > from Don Maslin's collection "straight out of the box" without any > modifications. I just get excited with finally gettng this stuff to work > for me. The work was done 40 years ago, and since then re-invented over and over again, just because it is interesting and fun, so nevermind. I just did that too again and build CP/M 2.0 from the sources, which makes no sense at all, because it is crappy. But it is interesting and fun and allows to try out the bits and bytes and see one self, how and why it was improved and developed further. A MDS-800 emulation is very cool, I wanted to do that too sometime, to be able to run ISIS. Also the CP/M 2.2 sources can be used to build a boot disk for the MDS-800, but I don't know if it really does work.

Funny, I had the same thought on cpm 2.0 since I see the bios was for MDS-800.
Also would be neat to document the actual bugs and reproduce them.
I am planning on reconstructing cpm 2.2 for the MDS-800 and the movcpm from
sources.

Larry

ema_...@hotmail.it

unread,
Apr 28, 2014, 4:03:47 AM4/28/14
to
Hello Henk Stewart, can i Have MS-DOS emulator for ISIS II. 
Compleet with PL/M compiler, User Guide and Handboek?
My email is ema_...@hotmail.it
Thank You

boboro...@gmail.com

unread,
Apr 28, 2014, 10:01:54 AM4/28/14
to
Hallo,

The files are on my website.
Go to: swtrocketry.com
Click on SWT Computer logo.

Have fun.

Henk Siewert


dott.Piergiorgio

unread,
Apr 28, 2014, 10:51:25 AM4/28/14
to
Il 28/04/2014 16:01, boboro...@gmail.com ha scritto:
> Hallo,
>
> The files are on my website.
> Go to: swtrocketry.com
> Click on SWT Computer logo.

I also have DL' it. looks interesting; later I'll test it inside dosbox
& Dosemu (nested emulation isn't a novelty for me....)
0 new messages