『はじめて読む486』のサンプルプログラム集 をできるだけ簡単に試してみるために、OpenWatcom を使ってビルドしてみました。
※ 16bit 用の無料で使えるコンパイラとしては LSI C-86 試食版が有名ですが、関数の呼び出し規約が MSC や Borland C とは異なっているため、アセンブリプログラムの修正が必須となってしまいます。また、Turbo C 2.01 もありますが、インストールが面倒で TASM も含まれていません。
OpenWatcom のダウンロードページから open-watcom-c-win32-1.9.exe
をダウンロードします。
インストール時には、ターゲットとして、必ず 16bit DOS を選択してください。 ホストは通常は、32bit Windows のみを選択しておけばよいでしょう。(DOS も選択することもできますが、割愛します。)
インストールの最後に、環境変数の設定を行うかと、関連づけを行うかを聞かれますが、OpenWatcom をメインの C コンパイラとして使うのでなければどちらも不要でしょう。
インストール時に環境変数を設定しなかった場合は、コマンドプロンプトを立ち上げてから、C:\WATCOM\owsetenv.bat
を実行すれば、必要な環境変数が設定されます。
最初は、お試しに Makefile を使わずに手動でビルドしてみましょう。 まずは、4.3章のモード移行プログラムをビルドしてみます。
コマンドプロンプトを立ち上げてから以下のコマンドを打って、環境変数の設定を行ってください。
C:\WATCOM\owsetenv.bat
次に、サンプルプログラムのあるディレクトリに移動します。
cd \work\486\SOURCE\
アセンブル、コンパイル、リンクを行います。-ecc
は MSC と同じ呼び出し規約を使うためのオプションです。
wasm PROTO0_A.ASM
wcl -ecc -D__MSC__ TESTPROT.C proto0_a.obj
testprot.exe ができあがっていれば、おそらく成功です。
最新のサンプルプログラムには、OpenWatcom 用の Makefile が含まれていますので、以下のコマンドで全てのプログラムをビルドできます。
wmake -f MAKEFILE.OW
試しに動かしてみるならば、MS-DOS Player for Win32-x64 (msdos.exe) を使うのが簡単です。 msdos.zip を C:\tools に解凍した場合は、次のコマンドを実行してみてください。
C:\tools\msdos\binary\i386_x86\msdos.exe testprot.exe
Now going to Protected mode...
と表示されるはずですので、Enter を入力してください。
Returned from Protected mode.
と表示されて、コマンドプロンプトに戻ってくれば成功です。
※ msdos.exe 上で動作するサンプルプログラムはごく一部である点に注意してください。全てのサンプルプログラムを動かしてみるには、VMware Player などの仮想環境上に FreeDOS をインストールし、その上で動かすのが良いと思われます。
※ sieve32 など一部のサンプルプログラムは、msdos.exe 上で動かすためには、コンパイルオプションの変更が必要です。MAKEFILE.OW
を編集し、CFLAGS =
で始まる行の末尾に、 -DUSE_BIOS_FOR_A20
を追記してください。
※ @koron 氏により、VirtualBox や VMware などで実行可能な実験環境が公開されています。 https://github.com/koron/486/releases
LIB
環境変数の設定は、別途行う必要があると書いていましたが、不要だったようです。C:\WATCOM\binw\wlsystem.lnk
の記載に従って、ターゲットに応じて自動で設定されるようです。