インターネット&PC120%活用:PC活用編

PL/Mの入手

1 PL/Mの入手
1) PL/Mとは
PL/Mはインテルが8080用に作ったシンプルなプログラム言語です。
PL/Iによく似ていると言われます。
ほとんど手元に資料がないため、ここの記述もおじさんの試行錯誤の結果による推測が中心です。
今更、PLM80などに手をだす意味はあまりないと思いますが、昔(って30年以上前)のコンパイラ
プログラム作成環境について味わいたいというなら、どうぞ、という感じです。


2) PLM80x86
PL/Mというと、昔CP/M上で動いていたコンパイラがありましたが、最近のOS用のものもあるのでしょうか。
フリーのものとして、DOS上でISISエミュレーターをかまして使う、PLM80x86という
PL/Mのコンパイラがありましたので、おじさんはこれを使ってみました。
The Unofficial CPM Web Site にあります。
Free Compiler」に揚げたコンパイラを集めたサイトを探せば、他のPL/Mコンパイラも見つかるかも
しれません。

2 PLM80x86を使って見る
(1)インストールと起動
PLM80x86の圧縮ファイルを解凍するだけで、使えます。ここにPLM80というISIS上で動くコンパイラ
がありますので、DOS上でISISエミュレーターをかませて使います。(ISISエミュレーターも同梱されてます。)
ISISが何者かよくわかりませんが、おそらく8080ベースのインテルPCと推測します。

まずは、環境変数の設定からしましょう。
ISISは、ドライブとして、:F0: :F1: というドライブを使うようです。このドライブ名は固定で、これ以外は
認識しないようなので、PLM80,Link,Locateのファイルのあるフォルダを:F0: に設定します。
:F1: はソースファイルなどをおいてあるフォルダに設定すればいいでしょう。
おじさんの環境では、以下のようにしました。

C:\dload2\plm80x86>set :F0:=c:\dload2\plm80x86
C:\dload2\plm80x86>set :F1:=c:\dload2\plm80x86\d    

次に、ISISを起動します。
=を表示して、コマンド入力待ち状態になります。

C:\dload2\plm80x86>isis
DOS ISIS environment V1.0         
=


(2) PLM80でコンパイル
では、Helloプログラムをコンパイルしてみましょう。
ソースファイルは以下の通りです。

hello:
do;
declare msg(8) byte data ('Hello!!!');
declare crlf(2) byte data (0dh,0ah);
declare status address;
declare count address;
declare num address;

write:
procedure (function, buffer, count, status) external;
declare (function, buffer, count, status) address;
end write;

num =1;
do while num <= 8;
call write (0, .msg, num, .status);
call write(0, .crlf, 2, .status);
num = num +1;
end;

end hello;

まず、PLM80でコンパイルします。
Hello.obj というオブジェクトファイルができますので、これをLinkで、system.lib, plm80.lib とリンクし
Hello.modを生成します。
最後に、Locateで、Hello.modから実行ファイルHelloを作ります。
以下、一連の流れです。
ISIS環境を終了するには、exitとします。

C:\dload2\plm80x86>isis
DOS ISIS environment V1.0
=plm80 hello.plm

ISIS-II PL/M-80 COMPILER V4.0
PL/M-80 COMPILATION COMPLETE. 0 PROGRAM ERRORS    

=link hello.obj,system.lib,plm80.lib to hello.mod
ISIS-II OBJECT LINKER V3.0
ISIS-II OBJECT LINKER V3.0 INVOKED BY:
-LINK HELLO.OBJ,SYSTEM.LIB,PLM80.LIB TO HELLO.MOD

=locate hello.mod to hello
ISIS-II OBJECT LOCATER V3.0
ISIS-II OBJECT LOCATER V3.0 INVOKED BY:
-LOCATE HELLO.MOD TO HELLO

=hello
H
He
Hel
Hell
Hello
Hello!
Hello!!
Hello!!!
Interrupt instruction (EI or DI) used
=exit

以上、ほとんど資料がなく、試行錯誤の結果ですので、コンパイラ、リンカー、ロケイターの
詳細な動作については不明です。


3 言語仕様について
よくわかりませんが、do; で始まり、end ***; で終わるようです。(***はコードの最初のプログラム名?)
はじめの部分に、declare で変数の宣言をするようです。
また、関数も同様に全て宣言するようで、上記のHelloでは、write を宣言しています。
write のbufferの部分に出力するデータ(文字列など)を指定し、countには、出力する文字数を設定する
ようです。上記プログラムでは、Hello!!!を1文字づつ増やしながら出力しています。


TopPage


inserted by FC2 system