はじめに
『MSX0 Stack』で『MSX-C ver1.2』を動かして「Hello, world.」するくらいまではやってみたいなと思いました。
『MS-C』の話ではありません。『MSX-C』 です。
ソフトウェア | 用途 | 価格 |
---|---|---|
MSX-DOS2 | OS 1 2 | ¥24,800 (RAM なし) 3 ¥34,800 (RAM あり) 3 |
MSX-C ver1.2 | C コンパイラ | ¥19,800 3 |
MSX-DOS2 TOOLS | エディタ, アセンブラ, リンカなど | ¥14,800 3 |
MSX-SBUG2 | シンボリックデバッガ | ¥19,800 3 |
MSX-C Library | C ライブラリ | ¥14,800 3 |
『MSX-C ver1.2』はアセンブリ言語用のソースを出力するタイプのコンパイラなので、実行形式ファイルを生成するには最低限『MSX-DOS2 TOOLS』と組み合わせる必要があります (『MSX-DOS2 TOOLS』は MSX-DOS2 のシステムディスクになっています)。
See also:
MSX-C ver1.2 を FD にインストールする
本来の『MSX-C ver1.2』のインストール方法ですが、ディスク内の BATCH
フォルダにはインストール用の MKSYS.BAT が用意されており、
- システムの入ったディスクで
A:
ドライブから起動する。 -
B:
ドライブに空の FD を入れフォーマットする。 - フォーマットした FD を
A:
ドライブに挿入。 - 『MSX-C』のマスター FD を
B:
ドライブに挿入。 -
COPY B:\BATCH\MKSYS.BAT A:\
でインストール用のバッチファイルをA:
ドライブにコピー。 -
A:
ドライブからMKSYS B
でインストールが開始される - 後は手順に従って
B:
ドライブのディスクを入れ替える。
とやればいいという話なのですが、『MSX0 Stack』では 2 ドライブシミュレータを含めて B:
ドライブが使えません。このため、上記手法が採れません。
手動でファイルを集めて FD イメージを作るのはなかなか大変なので、『MSX0 Stack』用のインストールディスクを作ってインストールする事にしました。
■ インストールディスクを作る
次のディスクからファイルを抽出して、
- 『MSX-C ver1.2』
- 『MSX-DOS2 TOOLS』
- 『MSX-SBUG2』
C コンパイラ、ライブラリ、テキストエディタ、アセンブラ、リンカ、シンボリックデバッガ、コンパイル用バッチファイルを組み込むためのインストールディスクを作ります。
1.MSX-DOS2 のシステムディスクを作る
PC の適当な場所に WORK
というフォルダを作ります。
microSD (またはバックアップ) の DSK
フォルダにある MSX_DOS2_JPN.DSK
を WORK
へコピーして DOS2_MSXC.DSK
にリネーム。
これを 『DiskExplorer (EDITDISK.EXE)』 で開き、MSXDOS2.SYS
と COMMAND2.COM
を残して削除します。
WORK
フォルダには DOS2_MSXC.DSK
が一つだけある状態です。
See also:
2.ワーク用のフォルダを用意する
WORK
の中に SRC
というフォルダを作ります。
SRC
の中に入って 3 つのファイルを作ります。以下からコピペして作って下さい。
ramdisk 4064/d
copy %1command2.com H:\
reboot.bat %1
mode 40
set prompt=on
set temp=h:\
set shell=h:\command2.com
set include=%1\include
path %1\bin
ver
H:
mkdir H:\BIN
mkdir H:\INCLUDE
mkdir H:\LIB
pause Insert MSX-C Master Disk in A:
copy A:\*.COM H:\BIN
copy A:\LIB.TCO H:\BIN
copy A:\INCLUDE\*.H H:\INCLUDE
copy A:\*.REL H:\LIB
rem pause Insert MSX-C Library Master Disk in A:
rem copy A:\*.REL H:\LIB
rem copy A:\*.TCO H:\BIN
rem copy A:\*.H H:\INCLUDE
pause Insert MSX-DOS2 TOOLS Master Disk in A:
copy A:\KIDS\*.COM H:\BIN
copy A:\UTILITY\*.COM H:\BIN
pause Insert MSX-SBUG2 Master Disk in A:
copy A:\SBUG2*.COM H:\BIN
pause Insert Install Disk in A:
mkdir A:\INCLUDE
mkdir A:\LIB
copy H:\BIN\*.* A:\BIN
copy H:\INCLUDE\*.* A:\INCLUDE
copy H:\LIB\*.* A:\LIB
del A:\INSTALL.BAT
A:
SRC
の中に BIN
というフォルダを作ります。
BIN
フォルダに入ってファイルを 1 つ作ります。以下からコピペして作って下さい。
CF -oH %2 %1
CG -oH %3 H:%1
M80 =H:%1/z
L80 A:\LIB\CK,H:%1,A:\LIB\CLIB/s,A:\LIB\CRUN/s,A:\LIB\CEND, %1/n/e
DEL H:%1.TCO
DEL H:%1.MAC
DEL H:%1.REL
ここまでの作業で、ツリーはこのようになっているはずです。
WORK
│ DOS2_MSXC.DSK
│
└─SRC
│ AUTOEXEC.BAT
│ INSTALL.BAT
│ REBOOT.BAT
│
└─BIN
CC.BAT
3.インストールディスクにファイルをコピー
DOS2_MSXC.DSK
を『Disk Explorer』で開き、SRC
の中のすべてをコピーします。
この DOS2_MSXC.DSK
を microSD の DSK
に格納 (コピー) します。
■ MSX0 Stack の設定を行う
microSD を『MSX0 Stack』にセットしたら Setup Utility を開きます。
項目 | 値 | 備考 |
---|---|---|
Disk | DOS2_MSXC.DSK | 作ったインストールディスクを指定 |
Type | MSX2 or MSX2+ | MSX-DOS2 で起動するので |
Ram Size | 1M | RAM ディスクを作業用に使用するため |
Dos 4 | MSX-DOS2 | MSX-DOS2 で起動するので |
Slot | NONE | DISK から起動するので |
設定が終わったら Exit
で抜けます。 Setup Utility を抜けるとリブートします。
■ MSX-C ver1.2 をインストールする (半自動)
インストールを全自動で行なう設定が少し下にあります。
この方法 (半自動) はディスク交換を行うトランジェントコマンド (M0CHGDSK.COM) を作成する前に書かれたものです。M0CHGDSK.COM 或いはそれに類するものが使えない (使わない) 状況下では有効だと思われますので、削除せずに残しておきます。
リブート直後にはこのような画面になっています。
1.インストール用のバッチファイルを RAM ドライブにコピーし、実行する
H:
には大容量の RAM ドライブが作られているので、ここで作業を行い、最終的にインストールディスクを開発環境ディスクに書き換えるという作業を行います。
バッチファイルを RAM ドライブにコピーし、RAM ドライブに移動してからバッチファイルを実行します。
A:\>COPY INSTALL.BAT H:
A:\>H:
H:\>INSTALL
A:
ドライブで INSTALL.BAT
を実行しないでください。
2.『MSX-C ver1.2』のファイルを RAM ドライブにコピーする
『MSX-C ver1.2』のディスクが要求されます。この画面のままスワイプして U1
に切り替えます。
[FD 変更画面]
に入ります。ディスクを MSX_C.DSK
に変更して [OK] ボタンを押し、
スワイプして U0
に戻ります (リブートはしないでください)。
〔RETURN〕
キーを押すと『MSX-C ver1.2』のファイルコピーが始まります。
3.『MSX-DOS2 TOOLS』のファイルを RAM ドライブにコピーする
『MSX-DOS2 TOOLS』のディスクが要求されます。この画面のままスワイプして U1
に切り替えます。
[FD 変更画面]
に入ります。ディスクを MSX_DOS2_TOOLS.DSK
5 に変更して [OK] ボタンを押し、
スワイプして U0
に戻ります (リブートはしないでください)。
〔RETURN〕
キーを押すと『MSX-DOS2 TOOLS』のファイルコピーが始まります。
4.『MSX-SBUG2』のファイルを RAM ドライブにコピーする
『MSX-SBUG2』のディスクが要求されます。この画面のままスワイプして U1
に切り替えます。
[FD 変更画面]
に入ります。ディスクを MSX_SBUG2.DSK
5 に変更して[OK] ボタンを押し、
スワイプして U0
に戻ります (リブートはしないでください)。
〔RETURN〕
キーを押すと『MSX-SBUG2』のファイルコピーが始まります。
5.RAM ドライブのファイルをコピーする
インストールディスクが要求されます。ここまでで RAM ディスクに収集したファイル群をインストールディスクに書き戻します。この画面のままスワイプして U1
に切り替えます。
[FD 変更画面]
に入ります。ディスクを DOS2_MSXC.DSK
に変更して[OK] ボタンを押し、
スワイプして U0
に戻ります (リブートはしないでください)。
〔RETURN〕
キーを押すと RAM ディスクからのファイルコピーが始まります。
6.再起動
コピーが完了しました。これで元インストールディスクは開発環境ディスクとなりました。
このままリセットボタンを押して再起動します。
インストールが正しく完了していれば、ドライブルートにあった INSTALL.BAT
は消えているはずです。
これにて完了です。お疲れさまでした♪
■ MSX-C ver1.2 をインストールする (自動)
自動インストールが可能になりました。
準備
インストールディスクの INSTALL.BAT
を次の AUTOINST.BAT
に置き換えてください。
copy A:\BIN\M0CHGDSK.COM H:\
H:
mkdir H:\BIN
mkdir H:\INCLUDE
mkdir H:\LIB
echo *** MSX-C Master Disk ***
H:\M0CHGDSK MSX_C.DSK
copy A:\*.COM H:\BIN
copy A:\LIB.TCO H:\BIN
copy A:\INCLUDE\*.H H:\INCLUDE
copy A:\*.REL H:\LIB
rem echo ***MSX-C Library Master Disk ***
rem H:\M0CHGDSK MSX_C_LIB.DSK
rem copy A:\*.REL H:\LIB
rem copy A:\*.TCO H:\BIN
rem copy A:\*.H H:\INCLUDE
echo *** MSX-DOS2 TOOLS Master Disk ***
H:\M0CHGDSK MSX_DOS2_TOOLS.DSK
copy A:\KIDS\*.COM H:\BIN
copy A:\UTILITY\*.COM H:\BIN
echo *** MSX-SBUG2 Master Disk ***
H:\M0CHGDSK MSX_SBUG2.DSK
copy A:\SBUG2*.COM H:\BIN
echo *** Install Disk ***
H:\M0CHGDSK DOS2_MSXC.DSK
mkdir A:\INCLUDE
mkdir A:\LIB
copy H:\BIN\*.* A:\BIN
copy H:\INCLUDE\*.* A:\INCLUDE
copy H:\LIB\*.* A:\LIB
del A:\AUTOINST.BAT
A
BIN
フォルダに M0CHGDSK.COM をコピーします。
WORK
│ DOS2_MSXC.DSK
│
└─SRC
│ AUTOEXEC.BAT
│ AUTOINST.BAT
│ REBOOT.BAT
│
└─BIN
CC.BAT
M0CHGDSK.COM
自動交換の関係上、インストールディスクの名前は DOS2_MSXC.DSK
である必要があります。気に入らないのであれば、バッチファイルの方を書き替えてください。
DOS2_MSXC.DSK
が出来上がったら、MSX0 Stack の設定を行います。リブート直後にはこのような画面になっています。
1.インストール用のバッチファイルを RAM ドライブにコピーし、実行する
H:
には大容量の RAM ドライブが作られているので、ここで作業を行い、最終的にインストールディスクを開発環境ディスクに書き換えるという作業を行います。
バッチファイルを RAM ドライブにコピーし、RAM ドライブに移動してからバッチファイルを実行します。
A:\>COPY AUTOINST.BAT H:
A:\>H:
H:\>AUTOINST
A:
ドライブで INSTALL.BAT
を実行しないでください。
2.待つ
ひたすらコピーが終わるのを待ってください。
自動だと楽なので『MSX-C Library』を組み込みんでもいいかもしれませんね。
3.再起動
コピーが完了しました。これで元インストールディスクは開発環境ディスクとなりました。
このままリセットボタンを押して再起動します。
インストールが正しく完了していれば、ドライブルートにあった AUTOINST.BAT
は消えているはずです。
これにて完了です。お疲れさまでした♪
■ MSX-C で「Hello, world.」をコンパイルする。
コンパイルは RAM ディスク (H:
ドライブ) で行います。
A:\> H:
H:\>
1.コードを書く
テキストエディタ KID / AKID がインストールされています。AKID でコードを書いてみましょう。
H:\>akid hello.c
#include <stdio.h>
main()
{
printf("Hello,world.\n");
}
終了は〔F1〕
を押して〔E〕
(保存して終了) です。
KID / AKID は〔Ctrl〕
キーとのコンビネーションやファンクションキーを使うので、リモートコントロールパネルでの操作をオススメします。詳細な操作方法についてはドキュメント (11_MSX-DOS2 TOOLS ユーザーズマニュアル.pdf
) を参考にしてください。
See also:
2.コンパイル
CC.BAT
を使います。拡張子の指定は不要です。
H:\>cc hello
問題がなければ実行形式ファイル (*.COM) が生成されます。
3.実行
正しくコンパイルが行われたので、実行形式ファイル HELLO.COM
が生成されていました。
HELLO.COM
を実行すると Hello,world.
が表示されました。
ソースは RAM ドライブ上で書いたので MSX0 Stack の電源を切ったりリセットすると消えてしまいます。必要な場合にはフロッピーに保存してください。
■ 組み込まなかった機能
・『MSX-C Library』
『MSX-C Library』には次のような MSX 固有機能を使うための機能が含まれています。
- グラフィック
- 数値演算 (実数型、32bit 整数型を含む)
- ハードウエア (インタースロットコール含む)
- カーソル制御 (MSX-CURSES)
『MSX-C Library』は今回のインストーラに含めていません。『MSX-C v1.2』で使えるものの、元々は『MSX-C v1.1』用のライブラリのようで、マスターディスク内のファイルも階層化されていません。
...
pause Insert MSX-C Library Master Disk in A:
copy A:\*.REL H:\LIB
copy A:\*.TCO H:\BIN
copy A:\*.H H:\INCLUDE
...
...
rem echo ***MSX-C Library Master Disk ***
rem H:\M0CHGDSK MSX_C_LIB.DSK
rem copy A:\*.REL H:\LIB
rem copy A:\*.TCO H:\BIN
rem copy A:\*.H H:\INCLUDE
...
CC.BAT
も『MSX-C Library』を使うように書き替えます。
CF -oH %2 %1
FPC %1 MLIB LIB
CG -oH %3 H:%1
M80 =H:%1/z
L80 A:\LIB\CK,H:%1,A:\LIB\MLIB/s,A:\LIB\CLIB/s,A:\LIB\CRUN/s,A:\LIB\CEND, %1/n/e
DEL H:%1.TCO
DEL H:%1.MAC
DEL H:%1.REL
ただ、厳密には *.REL
や *.TCO
は『MSX-C v1.2』を使って再生成する必要がある気がします。そのままでも動くには動くかもしれませんが、『MSX-C v1.2』でヘッダファイルが変更になっていますよね?
バッチファイル | 説明 |
---|---|
FORREMK.BAT | ライブラリリビルド用のディスクを作るバッチファイル。別のドライブに空のディスクが必要。 ( FORREMK ドライブ ) |
GENALL.BAT |
FORREMK.BAT で作成した『リビルド環境ディスク』上で実行する。別のドライブに空のディスクが必要。( GENALL ドライブ
|
- 『MSX-C Library』の
FORREMK.BAT
(引数にインストール先ドライブ) を実行して、別ディスクにライブラリリビルド用の環境を作る。 - 『リビルド環境ディスク』で
GENALL.BAT
(引数にインストール先ドライブ) を実行すると、リビルドされたオブジェクトファイル (*.rel) とパラメーターチェック用ファイル (*.tco) が別ディスクに保存される。 - リビルドされたオブジェクトファイル (*.rel) とパラメーターチェック用ファイル (*.tco) を『C コンパイラ環境ディスク』に上書きする。
手順としてはこうなのですが、バッチファイルが MSX-DOS1 用なので、MSX-DOS2 環境では正しく動作しません。システムディスクを MSX-DOS1 にすると、今度は『MSX-C ver1.2』や『MSX-DOS2 TOOLS』のアセンブラが動作しません。MSX-DOS1 では RAM ディスクも作れません。
『MSX-C v1.2』で使う方法がよくわからなかったので除外しました。
・『MSX-DOS TOOLS』
先述の通り、テキストエディタ KID / AKID がインストールされているのですが、『MSX0 Stack』の Keyboard Face ではエディタを終了できないので、MSX-DOS (1) 用の『MSX-DOS TOOLS』に含まれるテキストエディタ MED を BIN
フォルダにコピーしておくと便利だと思います。
...
pause Insert MSX-DOS TOOLS Master Disk in A:
copy A:\MED*.* H:\BIN
...
Keyboard Face でもテキストエディタが使えるのは便利です。
エディタの終了は〔ESC〕
を押して〔Q〕
を押して〔RTETURN〕
です。詳細な操作方法についてはドキュメント (7_MSX-DOS TOOLS USER'S MANUAL 3(MSX-DOS SCREEN EDITOR M.E.D. Operation Manual).pdf
) を参考にしてください。
『MSX-DOS TOOLS』と『MSX-DOS2 TOOLS』のディスクを間違いそうなので除外しました。このくらいなら『Disk Explorer』で持って行ってもいいですし。
See also:
おわりに
IOTPUT()
の MSX-DOS 用コマンドがあればディスク交換がオートでできる気がするのですが、今はこれが最も簡単なインストール方法だと思います。
自動ディスク交換ができるようになったので、環境構築が楽になりました。MSXDOS2.SYS
と COMMAND2.COM
を組み込めばインストールディスクとして使えるディスクイメージ (DOS2_MSXC.DSK
) を用意しました。
- MSXC_INSTALL_100.zip (ht-deko.com) - ver0.05.04 用の M0CHGDSK.COM が含まれる
- MSXC_INSTALL_110.zip (ht-deko.com) - ver0.07.08 以降用の M0CHGDSK.COM が含まれる
(システムファイルを組み込んだ) このディスクから起動したら、
A:\>COPY AUTOINST.BAT H:
A:\>H:
H:\>AUTOINST
とするだけです。
・『MSX-C Library』を組み込みたい場合には、AUTOINST.BAT
(または INSTALL.BAT
) 内の REM を外して下さい。
・BIN
フォルダに残った M0CHGDSK.COM
は不要であれば削除してください。
See also: