LoginSignup
15
15

MSX0 Stack で MSX-C ver1.2 のディスクを作る (C コンパイラを動かせるようにする)

Last updated at Posted at 2023-10-06

はじめに

『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 が用意されており、

  1. システムの入ったディスクで A: ドライブから起動する。
  2. B: ドライブに空の FD を入れフォーマットする。
  3. フォーマットした FD を A: ドライブに挿入。
  4. 『MSX-C』のマスター FD を B: ドライブに挿入。
  5. COPY B:\BATCH\MKSYS.BAT A:\ でインストール用のバッチファイルを A: ドライブにコピー。
  6. A: ドライブから MKSYS B でインストールが開始される
  7. 後は手順に従って B: ドライブのディスクを入れ替える。

とやればいいという話なのですが、『MSX0 Stack』では 2 ドライブシミュレータを含めて B: ドライブが使えません。このため、上記手法が採れません。

手動でファイルを集めて FD イメージを作るのはなかなか大変なので、『MSX0 Stack』用のインストールディスクを作ってインストールする事にしました。

■ インストールディスクを作る

次のディスクからファイルを抽出して、

  • 『MSX-C ver1.2』
  • 『MSX-DOS2 TOOLS』
  • 『MSX-SBUG2』

C コンパイラ、ライブラリ、テキストエディタ、アセンブラ、リンカ、シンボリックデバッガ、コンパイル用バッチファイルを組み込むためのインストールディスクを作ります。

1.MSX-DOS2 のシステムディスクを作る

PC の適当な場所に WORK というフォルダを作ります。

image.png

microSD (またはバックアップ) の DSK フォルダにある MSX_DOS2_JPN.DSKWORK へコピーして DOS2_MSXC.DSK にリネーム。

これを 『DiskExplorer (EDITDISK.EXE)』 で開き、MSXDOS2.SYSCOMMAND2.COM を残して削除します。

image.png

WORK フォルダには DOS2_MSXC.DSK が一つだけある状態です。

image.png

See also:

2.ワーク用のフォルダを用意する

WORK の中に SRC というフォルダを作ります。

image.png

SRC の中に入って 3 つのファイルを作ります。以下からコピペして作って下さい。

image.png

WORK\SRC\AUTOEXEC.BAT
ramdisk 4064/d
copy %1command2.com H:\
reboot.bat %1
WORK\SRC\REBOOT.BAT
mode 40
set prompt=on
set temp=h:\
set shell=h:\command2.com
set include=%1\include
path %1\bin
ver
WORK\SRC\INSTALL.BAT
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 というフォルダを作ります。

image.png

BIN フォルダに入ってファイルを 1 つ作ります。以下からコピペして作って下さい。

image.png

WORK\SRC\BIN\CC.BAT
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 の中のすべてをコピーします。

image.png

この DOS2_MSXC.DSK を microSD の DSK に格納 (コピー) します。

■ MSX0 Stack の設定を行う

microSD を『MSX0 Stack』にセットしたら Setup Utility を開きます。

image.png

項目 備考
Disk DOS2_MSXC.DSK 作ったインストールディスクを指定
Type MSX2 or MSX2+ MSX-DOS2 で起動するので
Ram Size 1M RAM ディスクを作業用に使用するため
Slot NONE DISK から起動するので

設定が終わったら Exit で抜けます。 Setup Utility を抜けるとリブートします。

■ MSX-C ver1.2 をインストールする (半自動)

インストールを全自動で行なう設定が少し下にあります。

この方法 (半自動) はディスク交換を行うトランジェントコマンド (M0CHGDSK.COM) を作成する前に書かれたものです。M0CHGDSK.COM 或いはそれに類するものが使えない (使わない) 状況下では有効だと思われますので、削除せずに残しておきます。

リブート直後にはこのような画面になっています。

image.png

1.インストール用のバッチファイルを RAM ドライブにコピーし、実行する

H: には大容量の RAM ドライブが作られているので、ここで作業を行い、最終的にインストールディスクを開発環境ディスクに書き換えるという作業を行います。

image.png

バッチファイルを 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 に切り替えます。

image.png

[FD 変更画面] に入ります。ディスクを MSX_C.DSK に変更して [OK] ボタンを押し、

image.png image.png

スワイプして U0 に戻ります (リブートはしないでください)。

image.png

〔RETURN〕キーを押すと『MSX-C ver1.2』のファイルコピーが始まります。

3.『MSX-DOS2 TOOLS』のファイルを RAM ドライブにコピーする

『MSX-DOS2 TOOLS』のディスクが要求されます。この画面のままスワイプして U1 に切り替えます。

image.png

[FD 変更画面] に入ります。ディスクを MSX_DOS2_TOOLS.DSK 4 に変更して [OK] ボタンを押し、

image.png image.png

スワイプして U0 に戻ります (リブートはしないでください)。

image.png

〔RETURN〕キーを押すと『MSX-DOS2 TOOLS』のファイルコピーが始まります。

4.『MSX-SBUG2』のファイルを RAM ドライブにコピーする

『MSX-SBUG2』のディスクが要求されます。この画面のままスワイプして U1 に切り替えます。

image.png

[FD 変更画面] に入ります。ディスクを MSX_SBUG2.DSK 4 に変更して[OK] ボタンを押し、

image.png image.png

スワイプして U0 に戻ります (リブートはしないでください)。

image.png

〔RETURN〕キーを押すと『MSX-SBUG2』のファイルコピーが始まります。

5.RAM ドライブのファイルをコピーする

インストールディスクが要求されます。ここまでで RAM ディスクに収集したファイル群をインストールディスクに書き戻します。この画面のままスワイプして U1 に切り替えます。

image.png

[FD 変更画面] に入ります。ディスクを DOS2_MSXC.DSK に変更して[OK] ボタンを押し、

image.png image.png

スワイプして U0 に戻ります (リブートはしないでください)。

image.png

〔RETURN〕キーを押すと RAM ディスクからのファイルコピーが始まります。

6.再起動

コピーが完了しました。これで元インストールディスクは開発環境ディスクとなりました。

image.png

このままリセットボタンを押して再起動します。

image.png

インストールが正しく完了していれば、ドライブルートにあった INSTALL.BAT は消えているはずです。

image.png

これにて完了です。お疲れさまでした♪

■ MSX-C ver1.2 をインストールする (自動)

自動インストールが可能になりました。

準備

インストールディスクの INSTALL.BAT を次の AUTOINST.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 の設定を行います。リブート直後にはこのような画面になっています。

image.png

1.インストール用のバッチファイルを RAM ドライブにコピーし、実行する

H: には大容量の RAM ドライブが作られているので、ここで作業を行い、最終的にインストールディスクを開発環境ディスクに書き換えるという作業を行います。

image.png

バッチファイルを RAM ドライブにコピーし、RAM ドライブに移動してからバッチファイルを実行します。

A:\>COPY AUTOINST.BAT H:
A:\>H:
H:\>AUTOINST

A: ドライブで INSTALL.BAT を実行しないでください。

2.待つ

ひたすらコピーが終わるのを待ってください。

自動だと楽なので『MSX-C Library』を組み込みんでもいいかもしれませんね。

3.再起動

コピーが完了しました。これで元インストールディスクは開発環境ディスクとなりました。

image.png

このままリセットボタンを押して再起動します。

image.png

インストールが正しく完了していれば、ドライブルートにあった AUTOINST.BAT は消えているはずです。

image.png

これにて完了です。お疲れさまでした♪

■ MSX-C で「Hello, world.」をコンパイルする。

コンパイルは RAM ディスク (H: ドライブ) で行います。

A:\> H:
H:\>

1.コードを書く

テキストエディタ KID / AKID がインストールされています。AKID でコードを書いてみましょう。

H:\>akid hello.c

image.png

hello.c
#include <stdio.h>

main()
{
  printf("Hello,world.\n");
}

終了は〔F1〕を押して〔E〕 (保存して終了) です。

image.png

KID / AKID〔Ctrl〕キーとのコンビネーションやファンクションキーを使うので、リモートコントロールパネルでの操作をオススメします。詳細な操作方法についてはドキュメント (11_MSX-DOS2 TOOLS ユーザーズマニュアル.pdf) を参考にしてください。

2.コンパイル

CC.BAT を使います。拡張子の指定は不要です。

H:\>cc hello

image.png

問題がなければ実行形式ファイル (*.COM) が生成されます。

3.実行

正しくコンパイルが行われたので、実行形式ファイル HELLO.COM が生成されていました。

image.png

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』用のライブラリのようで、マスターディスク内のファイルも階層化されていません。

WORK\SRC\INSTALL.BAT
  ...

pause Insert MSX-C Library Master Disk in A:
copy A:\*.REL H:\LIB
copy A:\*.TCO H:\BIN
copy A:\*.H H:\INCLUDE

  ...
WORK\SRC\AUTOINST.BAT
  ...

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』を使うように書き替えます。

WORK\SRC\BIN\CC.BAT
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 ドライブ
  1. 『MSX-C Library』の FORREMK.BAT (引数にインストール先ドライブ) を実行して、別ディスクにライブラリリビルド用の環境を作る。
  2. 『リビルド環境ディスク』で GENALL.BAT (引数にインストール先ドライブ) を実行すると、リビルドされたオブジェクトファイル (*.rel) とパラメーターチェック用ファイル (*.tco) が別ディスクに保存される。
  3. リビルドされたオブジェクトファイル (*.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 がインストールされているのですが、Keyboard Face ではエディタを終了できないので、MSX-DOS (1) 用の『MSX-DOS TOOLS』に含まれるテキストエディタ MEDBIN フォルダにコピーしておくと便利だと思います。

WORK\SRC\INSTALL.BAT
  ...

pause Insert MSX-DOS TOOLS Master Disk in A:
copy A:\MED*.* H:\BIN

  ...

Keyboard Face でもテキストエディタが使えるのは便利です。

image.png

エディタの終了は〔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』で持って行ってもいいですし。

おわりに

IOTPUT() の MSX-DOS 用コマンドがあればディスク交換がオートでできる気がするのですが、今はこれが最も簡単なインストール方法だと思います。

自動ディスク交換ができるようになったので、環境構築が楽になりました。MSXDOS2.SYSCOMMAND2.COM を組み込めばインストールディスクとして使えるディスクイメージ (DOS2_MSXC.DSK) を用意しました。

image.png

(システムファイルを組み込んだ) このディスクから起動したら、

A:\>COPY AUTOINST.BAT H:
A:\>H:
H:\>AUTOINST

とするだけです。

・『MSX-C Library』を組み込みたい場合には、AUTOINST.BAT (または INSTALL.BAT) 内の REM を外して下さい。
BIN フォルダに残った M0CHGDSK.COM は不要であれば削除してください。

See also:

  1. 拡張された BIOS / BDOS が付属の ROM カートリッジ (16KB) に格納されています。マッパー RAM の少ない機種のために RAM を搭載したものがあり、発売時期の違いで 128KB / 256KB の 2 バージョンがあります。

  2. MSXturboR は MSX-DOS2 の ROM を内蔵しています。

  3. 税抜。別途、送料として ¥1,000。ソフトベンダー TAKERU にて廉価版が発売されていたようです。 2 3 4 5 6

  4. 似た名前のディスクイメージファイルがあるので注意してください。 2

15
15
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
15
15