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

# はじめに
『MSX0 Stack』で『MSX-C ver1.2』を動かして「Hello, world.」するくらいまではやってみたいなと思いました。

『MS-C』の話ではありません。**『MSX-C』** です。

| ソフトウェア | 用途 | 価格|
|:---|:---|---:|
| MSX-DOS2 | OS [^4] [^3] | &yen;24,800 (RAM なし) [^2]<br>&yen;34,800 (RAM あり) [^2]|
| MSX-C ver1.2 | C コンパイラ | &yen;19,800 [^2]|
| MSX-DOS2 TOOLS  | エディタ, アセンブラ, リンカなど | &yen;14,800 [^2] |
| MSX-SBUG2  | シンボリックデバッガ | &yen;19,800  [^2] |
| MSX-C Library  | C ライブラリ | &yen;14,800 [^2] |

『MSX-C ver1.2』はアセンブリ言語用のソースを出力するタイプのコンパイラなので、実行形式ファイルを生成するには最低限『MSX-DOS2 TOOLS』と組み合わせる必要があります (『MSX-DOS2 TOOLS』は MSX-DOS2 のシステムディスクになっています)。

**See also:**

 - [MSX0 Stackで伝説の 8 ビット MSX パソコンが甦り、IoT 用コンピュータに (CAMPFIRE)](https://camp-fire.jp/projects/view/648742)
 - [MSX (Wikipedia)](https://ja.wikipedia.org/wiki/MSX)
 - [MSX-C に関する情報 (Qiita)](https://qiita.com/ht_deko/items/2a822c2edb85e1d54a11)

# 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:` ドライブのディスクを入れ替える。

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

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

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

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

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

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

### 1.MSX-DOS2 のシステムディスクを作る
PC の適当な場所に `WORK` というフォルダを作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4144005f-3de2-8b56-3666-6f0f8996f744.png)

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/2d6748a3-ea42-efd1-c502-8970a4f23879.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/b65d8fcd-ef5f-69bb-c0d8-de8a2af4a549.png)

**See also:**

 - [DiskExplorer (Vector: @junnno)](https://www.vector.co.jp/soft/win95/util/se107750.html)
 - [MSX Floppy Disk Manager (sonono.net)](https://sonono.net/blog/2021/03/04/msx-floppy-disk-manager%EF%BC%88%CE%B1%E7%89%88%EF%BC%89%E3%81%AE%E5%85%AC%E9%96%8B/)

### 2.ワーク用のフォルダを用意する
`WORK` の中に `SRC` というフォルダを作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/f907f82e-179f-dedd-1864-1d568f850d58.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/a91f44ff-584e-edc3-1d12-bde25b988583.png)

```txt:WORK\SRC\AUTOEXEC.BAT
ramdisk 4064/d
copy %1command2.com H:\
reboot.bat %1
```

```txt: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
```

```txt: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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e64f7487-42de-b64b-f57c-fe2fd17b77bb.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9d398e47-c9fa-f1cc-d81f-de02d8f49a1c.png)


```txt: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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/8f6d9f4e-1273-a3ce-0c38-cad77af9f2d1.png)

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

## ■ MSX0 Stack の設定を行う
microSD を『MSX0 Stack』にセットしたら **Setup Utility** を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/c868e0e0-d1eb-0656-d366-8885bc18911c.png)

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

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

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

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

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/03da4f52-bd8f-59c3-c656-664919104ca3.png)

### 1.インストール用のバッチファイルを RAM ドライブにコピーし、実行する
`H:` には大容量の RAM ドライブが作られているので、ここで作業を行い、最終的にインストールディスクを開発環境ディスクに書き換えるという作業を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/1f8762a5-37a7-1b5b-0de8-804105d9f67f.png)

<font color="red">バッチファイルを RAM ドライブにコピーし、RAM ドライブに移動してからバッチファイルを実行します。</font>

```
A:\>COPY INSTALL.BAT H:
A:\>H:
H:\>INSTALL
```

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

### 2.『MSX-C ver1.2』のファイルを RAM ドライブにコピーする
『MSX-C ver1.2』のディスクが要求されます。この画面のままスワイプして `U1` に切り替えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/2a91a4d1-3a22-b347-9714-1f2a5f529396.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/70c02615-c757-293f-5c9a-1e9b3199a913.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/8d0259d1-b949-2d46-093a-94a189295421.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4b7e674a-eaa9-b1ae-0165-36d0d1254c22.png)

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

### 3.『MSX-DOS2 TOOLS』のファイルを RAM ドライブにコピーする
『MSX-DOS2 TOOLS』のディスクが要求されます。この画面のままスワイプして `U1` に切り替えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/67d9add0-9f09-7afb-6035-3c59bde904b5.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/70c02615-c757-293f-5c9a-1e9b3199a913.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/1c8de408-5a74-8d44-8e44-332830ee905c.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/a5eb2f12-bf79-69f8-ebcb-5ab78558ae96.png)

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

### 4.『MSX-SBUG2』のファイルを RAM ドライブにコピーする
『MSX-SBUG2』のディスクが要求されます。この画面のままスワイプして `U1` に切り替えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/26bb9557-9c81-1a28-50c7-970fa1f80a83.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/70c02615-c757-293f-5c9a-1e9b3199a913.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e0c9b3ac-9bde-6b6d-571c-92bfae0c8795.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/12ddfe8e-a68f-e422-6fa3-93910d57504d.png)

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/47525405-71da-e1fa-0dae-11ec52848f25.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/70c02615-c757-293f-5c9a-1e9b3199a913.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/d9d044ee-af43-eee0-9856-31ba0a79333a.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/80ddca81-3042-eae9-ae6f-99d5832b8046.png)

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4a209be0-4e09-e654-cc77-a078e17a8770.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/08ab626b-88f4-fa76-dc93-18cc300e9966.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4826dc19-7dc0-a484-8b12-926ee7a7f921.png)

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

## ■ MSX-C ver1.2 をインストールする (自動)
自動インストールが可能になりました。

### 準備
インストールディスクの `INSTALL.BAT` を次の `AUTOINST.BAT` に置き換えてください。

```txt: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** をコピーします。

 - [M0CHGDSK - 【MSX0】IOT.LIB (Qiita)](https://qiita.com/ht_deko/items/a5c0bf6e7969093beb3c#-m0chgdsk)

```
WORK
│  DOS2_MSXC.DSK
│
└─SRC
    │  AUTOEXEC.BAT
    │  AUTOINST.BAT
    │  REBOOT.BAT
    │
    └─BIN
            CC.BAT
            M0CHGDSK.COM
```


:::note warn
自動交換の関係上、インストールディスクの名前は `DOS2_MSXC.DSK` である必要があります。気に入らないのであれば、バッチファイルの方を書き替えてください。
:::


`DOS2_MSXC.DSK` が出来上がったら、[MSX0 Stack の設定](#-msx0-stack-の設定を行う)を行います。リブート直後にはこのような画面になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/03da4f52-bd8f-59c3-c656-664919104ca3.png)

### 1.インストール用のバッチファイルを RAM ドライブにコピーし、実行する
`H:` には大容量の RAM ドライブが作られているので、ここで作業を行い、最終的にインストールディスクを開発環境ディスクに書き換えるという作業を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/a85f80e0-ada6-d5d8-7c06-4dbd3a890aa4.png)

<font color="red">バッチファイルを RAM ドライブにコピーし、RAM ドライブに移動してからバッチファイルを実行します。</font>

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

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

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

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4a209be0-4e09-e654-cc77-a078e17a8770.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/08ab626b-88f4-fa76-dc93-18cc300e9966.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4826dc19-7dc0-a484-8b12-926ee7a7f921.png)

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


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

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

```
A:\> H:
H:\>
```

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

```
H:\>akid hello.c
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4c715ab4-883f-725b-8f89-45b621d9583f.png)

```c:hello.c
#include <stdio.h>

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4b350df1-266c-ad39-81c0-e3126e485b63.png)

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

**See also:**

 - [MSX-DOS2 TOOLS ユーザーズマニュアル (アカシックライブラリ)](https://akasik-libraries.jp/modules/booklist/bookinfo.php?id=570)
 - [MSX-DOS TOOLS エディタの使い方 (Qiita)](https://qiita.com/ht_deko/items/cf30138d73ba57703023)

### 2.コンパイル
`CC.BAT` を使います。拡張子の指定は不要です。

```
H:\>cc hello
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/88b331dd-24e6-11cb-9fe3-b50c77f3f89d.png)

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9a8bc327-6aee-382f-70b0-58b96be6c113.png)

`HELLO.COM` を実行すると `Hello,world.` が表示されました。

:::note warn
ソースは RAM ドライブ上で書いたので MSX0 Stack の電源を切ったりリセットすると消えてしまいます。必要な場合にはフロッピーに保存してください。
:::


## ■ 組み込まなかった機能

### ・『MSX-C Library』
『MSX-C Library』には次のような MSX 固有機能を使うための機能が含まれています。

 - グラフィック
 - 数値演算 (実数型、32bit 整数型を含む)
 - ハードウエア (インタースロットコール含む)
 - カーソル制御 (MSX-[CURSES](https://ja.wikipedia.org/wiki/Curses))

『MSX-C Library』は今回のインストーラに含めていません。『MSX-C ｖ1.2』で使えるものの、元々は『MSX-C ｖ1.1』用のライブラリのようで、マスターディスク内のファイルも階層化されていません。
```txt: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

  ...
```

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

```txt: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 | ライブラリリビルド用のディスクを作るバッチファイル。別のドライブに空のディスクが必要。<br>(`FORREMK ドライブ`) |
| GENALL.BAT | `FORREMK.BAT` で作成した『リビルド環境ディスク』上で実行する。別のドライブに空のディスクが必要。<br>(`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 ディスクも作れません。

:::note
『MSX-C v1.2』で使う方法がよくわからなかったので除外しました。
:::

### ・『MSX-DOS TOOLS』
先述の通り、テキストエディタ **KID / AKID** がインストールされているのですが、『MSX0 Stack』の Keyboard Face ではエディタを終了できないので、MSX-DOS (1) 用の『MSX-DOS TOOLS』に含まれるテキストエディタ **MED** を `BIN` フォルダにコピーしておくと便利だと思います。

```txt:WORK\SRC\INSTALL.BAT
  ...

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

  ...
```

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/de1812d7-fcca-da24-bb7c-d594fd931267.png)

エディタの終了は`〔ESC〕`を押して`〔Q〕`を押して`〔RTETURN〕`です。詳細な操作方法についてはドキュメント (`7_MSX-DOS TOOLS USER'S MANUAL ３(MSX-DOS SCREEN EDITOR M.E.D. Operation Manual).pdf`) を参考にしてください。

:::note
『MSX-DOS TOOLS』と『MSX-DOS2 TOOLS』のディスクを間違いそうなので除外しました。このくらいなら『Disk Explorer』で持って行ってもいいですし。
:::

**See also:**

 - [MSX-DOS TOOLS M.E.D. Operation Manual (アカシックライブラリ)](https://akasik-libraries.jp/modules/booklist/bookinfo.php?id=567)
 - [MSX-DOS TOOLS エディタの使い方 (Qiita)](https://qiita.com/ht_deko/items/cf30138d73ba57703023)

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/59827265-8efb-077e-8a2a-e81dda1c7d58.png)

 - [MSXC_INSTALL_100.zip (ht-deko.com)](https://ht-deko.com/msx0/software/MSXC_INSTALL_100.zip) - ver0.05.04 用の M0CHGDSK.COM が含まれる
 - [MSXC_INSTALL_110.zip (ht-deko.com)](https://ht-deko.com/msx0/software/MSXC_INSTALL_110.zip) - ver0.07.08 以降用の M0CHGDSK.COM が含まれる

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

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

とするだけです。

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

**See also:**

 - [『MSX0 Stack』の操作方法 (Qiita)](https://qiita.com/ht_deko/items/b284cb93ac34e2b77d9a)
 - [\[MSX\] カテゴリ (AKASIK Libraries)](https://akasik-libraries.jp/modules/booklist/booklist.php?genre=24)
 - [Relearning MSX (medium.com)](https://medium.com/relearning-msx)
 

[^1]: 似た名前のディスクイメージファイルがあるので注意してください。
[^2]: 税抜。別途、送料として &yen;1,000。ソフトベンダー TAKERU にて廉価版が発売されていたようです。
[^3]: MSXturboR は MSX-DOS2 の ROM を内蔵しています。
[^4]: 拡張された BIOS / BDOS が付属の ROM カートリッジ (16KB) に格納されています。マッパー RAM の少ない機種のために RAM を搭載したものがあり、発売時期の違いで 128KB / 256KB の 2 バージョンがあります。
[^5]: ファームウエアバージョン 0.07.08 以降。