1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pascal/MT+ の簡単な使い方

Last updated at Posted at 2020-07-22

はじめに

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

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?