Image: MASM 1.0のサンプルプログラムを動かしてみる [PS/55]

昨日に引き続きのプログラミング環境ネタ。昔処分した会社のPCのバックアップデータを整理していたら、ASM.EXEやらMASM.EXEやら、MASMのファイル一式?と思わしきものが出てきた。

アセンブラはNASM(とCASLⅡも資格で勉強したけど忘れた)を使ったことがあるけど、MASMは知識で知っているだけで使ったことはないな。

Image: MASM

ファイルのタイムスタンプは83年5月31日。んー、昭和83年だとしたら🤔…西暦だと2008年だから、そこまで古くないな🙂

とりあえず、MASM.EXEを実行してみるか。

Image: MASM

The IBM Personal Computer MACRO Assembler Version 1.00!! 著作権表示も1981年で、いかにもIBM PCの発売と同時にリリースされた感がある。

しかし、タイムスタンプは1983年なんだな。海外のサイトではIBM Macro Assembler 1.00 | PCjs Machinesから実際にIBM PCのDOS上で動かすところまでエミュレーションできるが、タイムスタンプはこちらと一致しない。ファイルサイズも実行ファイル以外は違いがある。

ちなみに、若干サイズが小さいASM.EXEはマクロをサポートしていない。なぜこれが用意されているかというと、初代IBM PCでDOSが動作するモデルの基本仕様はメモリが64KBで、MASM.EXEではメモリに入らないからだろう。というか、MASMってMicrosoft Assemblerの略称だと思ってた。それも間違いではないのかもしれないけど。

サンプルプログラムらしきファイルを見てみると、なんと説明書きが日本語だった。

Image: MASM

たぶん、これはIBM PC用のMASMじゃなくて、日本IBMから出ていたIBM 5550用の「マクロ・アセンブラー」だ。

バッチファイルの中身も微妙に違っていて、押すべきキーの名称が変わっている。

Image: MASM

全然意識していなかったが、初代IBM PCのキーボードにはPauseキーがなかったのか。

MASM 1.0のサンプルプログラムを動かしてみる

サンプルプログラムをアセンブルしてみる。まず、DOS用のリンカー(LINK.EXE)はMASMに添付されていないので、別途用意する必要がある。PS/55の場合は日本語DOS K3.xに付属しているのでこれを使う。DOS J4.0以降には付属しない。まあ、MASM自体は汎用なので必ずしもPS/55のDOSで実行する必要はないけど、サンプルプログラムは分からん。

LINK.EXEをMASMと同じディレクトリーに置いたら、$MASML EXMP1Mを実行する。拡張子(.ASM)をつけて実行するとソースファイルが消失するので注意。

Image: MASM

次に$MASML EXMP2Mを実行する。バッチファイルのコマンドによってEXEファイルが生成されるが、このファイルは正常に動作しない。2つのオブジェクトファイルを結合するようリンカーに指定する必要がある。

LINK EXMP1M+EXMP2Mを実行する。後ろにセミコロンをつけると、それ以降のパラメーターをデフォルトで指定したことになり、プロンプトは表示されない。

Image: MASM

EXMP1M.EXEが生成されるので、これを実行する。

Image: MASM

Image: MASM

25行目の表示が壊れるが、半角・全角切り替えなどで直る。

しかし、サンプルプログラムを見て何をやっているかは分かるけど、これだけ見てMASMで一からプログラムを作れるかというと難しいな。EDLINで開発することを考えるとなおさら恐ろしい。いや、IBMユーザーならパーソナル・エディターか。あれも現代のテキストエディターに比べると癖があって使いにくそう。


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!