Help us understand the problem. What is going on with this article?

Pascal/MT+ の簡単な使い方

はじめに

Digital Research 社の Pascal/MT+ の使い方についての備忘録です。
image.png
CP/M エミュレータとして RunCPM の Win32 バイナリを使います。

Pascal/MT+ は次のリンクから入手できます。

See also:

Pascal/MT+ の使い方

とりあえず FIZZBUZZ.PAS を用意しておきます。

FIZZBUZZ.PAS
program FizzBuzz(Output);
var
  i: Integer;
begin
  for i:=1 to 100 do
    begin
      if ((i mod 3) + (i mod 5)) = 0 then
        Writeln('Fizz Buzz')
      else if (i mod 3) = 0 then
        Writeln('Fizz')
      else if (i mod 5) = 0 then
        Writeln('Buzz')
      else
        Writeln(i);
    end;
end.

■ コンパイル

コンパイラは MTPLUS.COM です。ソースファイルの拡張子は省略できます。

USAGE
MTPLUS <ファイル> {<オプション>}
Example
MTPLUS FIZZBUZZ

image.png
これで FIZZBUZZ.ERL ファイルが生成されます。

■ リンク

リンカは LINKMT.COM です。

USAGE
LINKMT <メインモジュール>{,<モジュール>}{,<ライブラリ>} {<オプション>}

または

LINKMT <実行ファイル名>=<メインモジュール>{,<モジュール>}{,<ライブラリ>} {<オプション>}
Example
LINKMT FIZZBUZZ,PASLIB /S

image.png
正しくリンクされると FIZZBUZZ.COM が生成されています。
image.png

■ コンパイル&リンク

A オプションをコンパイラに渡す事により、自動的にリンカを呼び出せます。

Example
MTPLUS FIZZBUZZ $A

しかしながら、自動でリンクするためには リンカ入力コマンドファイル が別途必要です (拡張子 .CMD)。

FIZZBUZZ.CMD
FIZZBUZZ,PASLIB /S

この仕様だとあまり有用だとは思えませんね。

おわりに

Pascal/MT+標準 Pascal との (標準 Pascal の範囲での) 違いは次の通りです:

  • 識別子は最初の 8 文字のみが有効。
  • 変数はビットレベルでは PACK されていない。
  • 宣言の順番が異なる場合がある。
  • ヌル文字列を許容する。
  • 可変長文字列 (String) をサポートしているため、CHAR は ISO Pascal 文字列 (PACKED ARRAY [1...n] OF CHAR) として実装されていない。

他にも、追加の機能として I/O 操作があったり、モジュール構造が取り入れられたりしています。

モジュール

実際のモジュールの使い方についてですが、モジュールファイルはこのようになります。

FBMOD.PAS
module FBMOD;

procedure FB;
var
  i: Integer;
begin
  for i:=1 to 100 do
    begin
      if ((i mod 3) + (i mod 5)) = 0 then
        Writeln('Fizz Buzz')
      else if (i mod 3) = 0 then
        Writeln('Fizz')
      else if (i mod 5) = 0 then
        Writeln('Buzz')
      else
        Writeln(i);
    end;
end;

modend.

モジュールのルーチンを呼び出す側のメインプログラムはこうなります。

FIZZBUZZ.PAS
program FizzBuzz(Output);

EXTERNAL PROCEDURE FB;

begin
  FB;
end.

まずはそれぞれのモジュールをコンパイルし、

MTPLUS FBMOD
MTPLUS FIZZBUZZ

リンカで結合します。

LINKMT FIZZBUZZ,FBMOD,PASLIB /S

image.png

ht_deko
とある熊本の障害復旧(トラブルシューター)
https://ht-deko.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away