MSX0 から BIOS をダンプして blueMSX で MSX0 相当の環境を作る

# はじめに

@masushin さんの記事の二番煎じです (^^;A

 - [MSX0からBIOSをダンプしてOpenMSXでMSX0相当の環境を作る (Qiita: @masushin)](https://qiita.com/masushin/items/77ff9494b26cb05b981e)

# 設定
以下、**blueMSX** に **MSX0** (Stack) 環境を構築する方法です。

## Step1

HRA! さんの `BIOSDUMP.DSK` を使って ROM をダンプします。
https://github.com/hra1129/for_MSX0/tree/main/dump_tool/for_msx0_bios2

MSX0 でこのディスクイメージから起動すると自動で ROM ダンプが開始されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/774703ec-2fe9-176b-964a-5789b9569793.png)

| 内容 | ファイル名 |
|:---|:---|
| Main ROM | MSX0BIOS.ROM |
| Sub ROM | MSX0EXT.ROM |
| IoTBASIC | MSX0IOT.ROM |
| X-BASIC | MSX0XBAS.ROM |
| KanjiBASIC | MSX0KDR.ROM |
| KanjiROM | MSX0KFN.ROM |
| MSXDOS1 | MSX0DOS.ROM |
| MSXDOS2 | MSX0DOS2.ROM |

全部で 8 つのファイルがディスクイメージ内に生成されます。

### 機種を切り替えながらダンプ

この作業を [Setup Utility](https://qiita.com/ht_deko/items/2ccf08e3014fbe46e913) の Type を `MSX` / `MSX2` / `MSX2+` と切り替えながら 3 回行います。

```txt*
---- Setup Utility -----*
msx0-71053463951412
ver:0.11.08

>Exit
 MSX System Unit0
  Disk     BIOSDUMP_2.DSK <-- これ
  Type     MSX2           <-- これ
  Ram Size 256K
  Dos      MSX-DOS2
  Slot     NONE
```

`BIOSDUMP.DSK` をコピーし、`BIOSDUMP_1.DSK` `BIOSDUMP_2.DSK` `BIOSDUMP_2+.DSK` とリネームして `MSX` / `MSX2` / `MSX2+` 環境で起動するとよいでしょう。

## Step2
ダンプした BIOS は **DiskExplorer** などで `*.ROM` ファイルをローカルへコピーしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/29d4f353-7ba4-acdc-d87f-dae71a3fedfc.png)

 - [DiskExplorer (Vector: @junnno)](https://www.vector.co.jp/soft/win95/util/se107750.html)
 - [DiskExplorer - 『MSX0 Stack』の操作方法 - ソフトウェア (Qiita)](https://qiita.com/ht_deko/items/8c20354b867b0d540805#diskexplorer)

## Step3
GitHub から blueMSX 用マシン構成ファイル を DL します。

 - [blueMSX 用マシン構成ファイル (GitHub)](https://github.com/ht-deko/MSX0_TP3/tree/main/blueMSX)

:::note
もしかして: [GitHubで特定のファイルまたはディレクトリのみをダウンロードする方法 (Qiita: @ryome)](https://qiita.com/ryome/items/f92862a2c82f6cc617d4)
:::

このマシン構成ファイルは『MSX0 Stack』のファームウエアバージョン 0.05.04 のスロット構成に準拠しています。

| SLOT | 0x0000 | 0x4000 | 0x8000 | 0xC000 |
|:-:|:-:|:-:|:-:|:-:|
| 0-0  | BIOS_MAIN | BIOS_MAIN |   |   |
| 0-1  |   | [IoT](https://qiita.com/ht_deko/items/8c20354b867b0d540805#iot-basic) |   |   |
| 0-2  |   | [X-BASIC](https://qiita.com/ht_deko/items/8c20354b867b0d540805#msx-%E3%81%B9%E3%83%BC%E3%81%97%E3%81%A3%E5%90%9B-basic-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9) | [X-BASIC](https://qiita.com/ht_deko/items/8c20354b867b0d540805#msx-%E3%81%B9%E3%83%BC%E3%81%97%E3%81%A3%E5%90%9B-basic-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9) |   |
| 0-3  |   |   | SCC ⾳源 |   |
| 1  |   | (GAME) | (GAME) |   |
| 2 |   |   |   |   |
| 3-0  | RAM | RAM | RAM | RAM |
| 3-1  |   | MSX-DOS2 | MSX-DOS2 |   |
| 3-2  | BIOS_SUB | KANJI | KANJI |   |
| 3-3  |   | DISK | DISK |   |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/ddd2bbe4-fc13-9456-32f7-c5365477f3d7.png)

 - [TINY SLOT CHECKER for MSX (tiny-yarou.com)](https://www.tiny-yarou.com/slotchecker.html)

:::note warn
『MSX0 Stack』のファームウエアバージョン 0.07.08 以降で対応している RS-232C や MIDI には対応していません。
:::

## Step4

ダンプした ROM を blueMSX 用マシン構成ファイルのそれぞれ次のサブフォルダに格納してください。

| 機種 | パス |
|:---|:---|
| MSX 環境でダンプした BIOS ファイル | Machines/Shared Roms/MSX0/MSX1/ |
| MSX2 環境でダンプした BIOS ファイル | Machines/Shared Roms/MSX0/MSX2/ |
| MSX2+ 環境でダンプした BIOS ファイル | Machines/Shared Roms/MSX0/MSX2+/ |

## Step5
**blueMSX** をインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/c33c8cd7-5207-337f-0049-4bac3d0e7a48.png)

 - [blueMSX](http://bluemsx.msxblue.com)
 - [blueMSX 日本語サイト](http://bluemsx.msxblue.com/jindex.htm)

<font color="Crimson">blueMSX は "Program Files (x86)" 以下にインストールしない事をオススメします。</font>64bit Windowsでは設定ファイルが**バーチャルストア**に書き込まれてしまうからです。

:::note
バーチャルストアは `C:\Users\<ユーザー名>\AppData\Local\VirtualStore\Program Files (x86)` にあります。
:::

## Step6
`blueMSX のインストールフォルダ\Machines` に **Step4** までで作った blueMSX 用マシン構成ファイルを上書きします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/ddb893b1-ddc1-017c-377f-6fb4d4800875.png)

:::note
バーチャルストアが作られている場合はバーチャルストアに上書きしてください。
:::


## Step7
**blueMSX** を起動し、`[ツール | マシン構成編集]` で MSX0 のマシン構成を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9a98f99e-3a5b-e5ac-93fb-52c789a7f5bc.png)

『MSX0 Stack』実機とほぼ同じように動くはずです。

:::note
『MSX0 Stack』実機で選べる機種とメモリの組み合わせがすべて選べます。
:::

### blueMSX のコマンドラインパラメータ

blueMSX にコマンドラインパラメータを渡して任意の環境で起動させる事ができます。以下抜粋です。

| パラメータ | 説明 |
|:---|:---|
| /machine \<"name"\> | マシン構成を指定します。 |
| /diskA \<filename\> | A: のディスクイメージを指定します。 |
| /diskB \<filename\> | B: のディスクイメージを指定します。 |
| /diskAzip \<filename\> | A: のディスクイメージ (zip 圧縮) を指定します。 |
| /diskBzip \<filename\> | B: のディスクイメージ (zip 圧縮) を指定します。 |
| /rom1 \<filename\> | スロット #1 の ROM イメージを指定します。 |
| /rom2 \<filename\> | スロット #2 の ROM イメージを指定します。 |
| /rom1zip \<filename\> | スロット #1 の ROM イメージ (zip 圧縮) を指定します。 |
| /rom2zip \<filename\> | スロット #2 の ROM イメージ (zip 圧縮) を指定します。 |
| /fullscreen | フルスクリーンで起動します |

# おわりに
『blueMSX』で作業して、ある程度の動作確認まで行って『MSX0 Stack』に持って行く事ができるので便利です。

『MSX0 Stack』実機ではクロックアップも 2 倍程度までしかできませんからね...