3
0

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.

Turbo Modula-2 Reloaded について

Last updated at Posted at 2021-07-14

はじめに

Turbo Modula-2 Reloaded は CP/M 版 Turbo Modula-2 のリバースエンジニアリングから生まれた Linux で動作する Modula-2 です。

Turbo Modula-2 Reloaded

Turbo Modula-2 Reloaded は CP/M 版 Turbo Modula-2 のクローンと考えていいと思います。言語仕様も CP/M 版 Turbo Modula-2 に準じています。

■ ビルド&インストール

Linux 環境でリポジトリの vm_linux フォルダ内をビルドします。Windows の場合、WSL / WSL2 を使うか、Cygwin でコンパイルします。

See also:

WSL の場合

  1. リポジトリを ZIP で DL。
  2. vm_linux サブフォルダの中味を C:\TM2 にコピー
  3. m2.dsk を C:\TM2 にコピー
  4. WSL で cd /mnt/c/tm2
  5. WSL で make

image.png

Cygwin の場合

  1. リポジトリを ZIP で DL。
  2. vm_linux サブフォルダの中味を C:\TM2 にコピー
  3. m2.dsk を C:\TM2 にコピー
  4. Cygwin で cd /cygdrive/c/tm2
  5. Cygwin で make

image.png
C:\TM2 に cygwin1.dll をコピーしておきます。
image.png

■ 実行

WSL の場合

  1. WSL で cd /mnt/c/tm2
  2. WSL で ./m2 m2.dsk

image.png

Cygwin の場合

  1. cd C:\TM2
  2. M2.EXE m2.dsk

image.png
M2.EXE のパラメータとして m2.dsk を渡して実行するだけです。ショートカットをつくっておくといいでしょう。
image.png

■ Turbo Modula-2 Reloaded の使い方

Turbo Modula-2Turbo Pascal 3.x と同じような使い方です。
image.png
CP/M のような仮想環境で実行されています。

メインメニュー

ショートカット 説明
〔Alt〕+〔F〕 ワークファイルの指定
〔Alt〕+〔R〕 実行
〔Alt〕+〔O〕 オプション

コマンド

# プロンプトで実行します。

コマンド 説明
E〔Enter〕 エディタの起動 (ワークファイルを開く)
E ファイル名〔Enter〕 エディタの起動 (ファイルを開く)
C〔Enter〕 ワークファイルをコンパイル
C ファイル名〔Enter〕 指定ファイルをコンパイル
DIR〔Enter〕 ディレクトリを表示します。
CD ディレクトリ〔Enter〕 カレントディレクトリを変更します。
REBOOT〔Enter〕 Turbo Modula-2 Reloaded の終了

※他にもコマンドがあります。 SHELL フォルダや SYSUTILS フォルダを確認してみてください。

エディタ

ショートカット 説明
〔Ctrl〕+〔S〕 ファイルの保存
〔F10〕 エディタの終了

サンプル (FIZZBUZZ)

編集:
image.png

FIZZBUZZ.MOD
MODULE FizzBuzz;
FROM InOut IMPORT WriteString, WriteInt, WriteLn;
VAR
  i: INTEGER;
BEGIN
  FOR i:=1 TO 100 DO
    IF ((i MOD 3) + (i MOD 5)) = 0 THEN
      WriteString('FizzBuzz');
      WriteLn
    ELSIF (i MOD 3) = 0 THEN
      WriteString('Fizz');
      WriteLn
    ELSIF (i MOD 5) = 0 THEN
      WriteString('Buzz');
      WriteLn
    ELSE
      WriteInt(i, 1);
      WriteLn
    END
  END
END FizzBuzz.

Turbo Modula-2 には Turbo Pascal 互換の READ / READLN / WRITE / WRITELN (すべて大文字で記述) が実装されているため、次のようにも書けます。

FIZZBUZZ.MOD
MODULE FizzBuzz;
VAR
  i: INTEGER;
BEGIN
  FOR i:=1 TO 100 DO
    IF ((i MOD 3) + (i MOD 5)) = 0 THEN
      WRITELN('FizzBuzz')
    ELSIF (i MOD 3) = 0 THEN
      WRITELN('Fizz')
    ELSIF (i MOD 5) = 0 THEN
      WRITELN('Buzz')
    ELSE
      WRITELN(i:1);
    END
  END
END FizzBuzz.

コンパイル:
image.png

実行:
image.png

おわりに

Turbo Modula-2 についての私の認識は次の通りです。

  • Turbo Modula-2 は開発は Borland。CP/M 版は Echelon 社が販売した。
  • MS-DOS 版は未完成のものが JPI 社に買い取られ、完成後に TopSpeed Modula-2 として販売された。
  • 同時期に FTL Modula-2 という Turbo Modula-2 よりも安価な製品があった。
  • FTL Modula-2 は CP/M 版と MS-DOS 版があり、日本国内ではサザンパシフィック社が販売した。
  • Turbo Modula-2 は日本国内で発売される事はなかった。
  • MS-DOS 用としては他に N.J.K Modula-2 / 86 があった。中味はおそらく LOGITECH Modula-2 / 86

間違いがありましたらコメ欄でご指摘ください。

See also:

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?