『MSX0 Stack』の操作方法 - ハードウェア

# ■ ハードウェア
**MSX0 Stack** は『M5Stack Core2』がベースとなっている製品です [^1]。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/3a17f12c-a2c5-092b-d27f-38c88d44d671.png)
 - [M5Stack Core2 ESP32 IoT Development Kit (M5Stack)](https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit)
 - [M5Stack Core2 IoT開発キット (Switch Science)](https://www.switch-science.com/products/6530)

次のような組み合わせで MSX0 Stack を構成する事ができます。

 - 『MSX0 Stack』+『[Faces II Bottom](#faces-ii-bottom)』+『[Keyboard Face](#keyboard-face)』(初期状態)
 - 『MSX0 Stack』+『[Faces II Bottom](#faces-ii-bottom)』+『[GamePad Face](#gamepad-face)』
 - 『MSX0 Stack』+『[M5GO Bottom2](#m5go-bottom2)』
 - 『MSX0 Stack』のみ (Stack の意味とは…)

『[Faces II Bottom](#faces-ii-bottom)』か『[M5GO Bottom2](#m5go-bottom2)』を組み合わせていれば『[Charge Base](#charge-base)』に載せて充電する事が可能です。

:::note
『M5Stack Core2』+『Faces II (Bottom / Charge Base / Keyboard / GamePad)』+『M5GO Bottom2』な製品です。
:::

## ・最初にやる事
まずは、充電できるように背面のスライドスイッチを `1` 側にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/61db17d4-15e6-3b15-013d-9c662239027f.png)

次に、本体上部に microSD カードスロットがありますので、ここに microSD を挿入します (microSD の端子面が手前になるように挿します)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/d1c70303-afb7-ff80-5b22-1939539dd8d0.png)

ここまでの準備ができたら電源を入れます。電源スイッチは右側面にあります。上部にあるのはリセットスイッチです。最初はバッテリーの残量が少ないかもしれないので、USB ケーブルを挿した状態で電源を入れる事をオススメします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/780d929a-21c0-b71c-c1d5-5731949b0e2e.png)

microSD を挿入しないで起動すると ROM Basic が起動するだけで特に何もできませんし、中身が空の microSD に差し替えたりすると[システムメニュー](https://qiita.com/ht_deko/items/f9eb7a5e5e215230b802)が説明書とは異なる質素なものになる事があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/c3310d3a-cfd4-2ad1-a4b7-6f8aa00222ed.png)

電源オフは電源スイッチ長押しです。

## ・microSD
とりあえず付属の microSD の中身を PC へ全部コピーして**バックアップ**を取りましょう。バックアップは 200MB 程度なので、CD-R や DVD-R に焼いておくのもいいかもしれません。中身がとても貴重です。付属の microSD も可能な限り使わない方がよいでしょう (変換アダプタを使う場合にはロックをかけられます)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/45351ced-b166-81a7-25e3-3a9750bc71f9.png)

バックアップが取れたら、別の microSD にバックアップしたファイルをすべて書き戻します。[KIOXIA の 16GB](https://www.amazon.co.jp/dp/B08PTP6KKS/?th=1) はフォーマット不要で使える事を確認しています。

 - [Kioxia 16GB microSD Exceria (Amazon)](https://www.amazon.co.jp/dp/B08PTP6KKS/?th=1)
 - [Kioxia 16GB microSD Exceria (Amazon)](https://www.amazon.co.jp/dp/B088RQ6G7R/?th=1)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/51ad4746-aa7c-8fe1-83a5-099fa1642cef.png)

microSD 16GB をお持ちでなかったらダイソーへ行き、とりあえず『microSD 32GB』を買って来ましょう。入手が容易な上、フォーマット不要で使える事を確認しています。

 - [microSD 32GB (Daiso)](https://jp.daisonet.com/products/4984279232446)

::::note warn
・**MSX0 Stack で利用可能な microSD は 16GB 以下 / FAT32** なのですが、実際には 32GB でも使えるようです。
・1 台の MSX0 Stack につき microSD が 1 枚付属するため、`Plan B` には microSD が 2 枚含まれています。2 枚の microSD の内容は全く同じものです。
・2023/10 付の「MSX0 Stack プロジェクトをご支援いただいた皆様へ」の一部に `FAT16 フォーマット` と記述されているものがあるようですが、typo だと思われます。
:::

<font color="red">microSD カード内を確認すると `._` で始まる隠しファイルがあるかもしれません。</font>一部 (？) 作業に Mac が使われているようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/444cfa28-e800-4bfa-b462-94a10f4e1ce4.png)

Windows の場合、Explorer のフォルダーオプションで隠しファイルを表示するように変更してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/8c38a8cd-4c96-f38c-933b-d0f1ae078285.png)

または、コマンドプロンプトで microSD カードのドライブルートへ移動し、次のコマンドを実行して隠しファイル属性を解除すると表示されるようになります。

```
D:\> attrib /S -H
```

これらのファイルがあると MSX0 Stack での操作時に面倒な事になりますので、存在する場合にはすべて削除してください。Windows からだとコマンドプロンプトで microSD カードのドライブルートへ移動し、次の 2 つのコマンドで一気に削除する事ができます。

```
D:\> attrib /S -H
D:\> del /S /Q ._*
```

microSD のフォルダ構成は次のようになっています。

```
+---DOC
|   \---manual
+---DSK
+---SYSTEM
+---TOOLS
\---UPDATER
    \---0
```

詳しくは microSD 直下にある `README.TXT` を参照してください。

:::note
「MSXソフトウェア使用許諾書」が添付されていなかった支援者に対し、CAMPFIRE のメッセージ経由で使用許諾書が配布されました。内容をテキストファイルにコピーし、`EULA.TXT` のような名前を付けて保存しておくとよいでしょう。
:::

## ・LCD スクリーン

画面はタッチパネルになっており、上にスワイプすると使用している MSX ユニットが切り替わります。下へ向けてスワイプしても構わないのですが、画面上部には[タッチボタン](#タッチボタン)があるので上スワイプを推奨します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/d1e622d2-c9d3-68d5-ea7a-759eac9ff6fe.png)

現在のユニットがどちらなのかは画面下部の[ステータスモニター](#ステータスモニター)で確認できます。

| ユニット | 説明 |
|:---|:---|
| Unit0 (U0) | メイン |
| Unit1 (U1) | [システムメニュー](https://qiita.com/ht_deko/items/f9eb7a5e5e215230b802) |

MSX Stack では Unit0 / Unit1 という 2 つの MSX が同時に動作しており、デフォルトの動作だと Unit1 側には[システムメニュー](https://qiita.com/ht_deko/items/f9eb7a5e5e215230b802)が組み込まれており、Unit1 側から Unit0 の設定を変更する仕組みになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/fcca8fe6-1dc4-2a3c-a395-c555375ffead.png)

:::note warn
Unit1 側に切り替えても[システムメニュー](https://qiita.com/ht_deko/items/f9eb7a5e5e215230b802)が起動しない場合には、別の microSD カード (できれば 16GB 以下のもので、FAT32 フォーマット) を用意して、バックアップを書き戻してみてください。
:::

:::note info
『MSX0 Stack』の動作中の写真を撮ろうとすると映り込むので、反射防止の液晶保護フィルムを別途購入する事をオススメします。MSX0 Stack 向けの製品だけでなく、M5Stack Core2 向けの製品も使えます。

・[ミヤビックス MSX0 / M5Stack Core2 用 防指紋 防気泡 反射防止液晶保護フィルム (Amazon)](https://www.amazon.co.jp/dp/B08HMQW367/)
:::


### タッチボタン
画面上部にはタッチボタン (<font color="orange">〇　〇　〇</font>) も備えています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/a97543d0-73a8-838b-9935-193d578bad77.png)

### ステータスモニター
画面下部にはステータスモニターが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/bc15c2b9-0e64-b780-1176-0ac4df1f8462.png)
ステータスモニターは 3 種類あり、[\[Setup Utility | Visual\]](https://qiita.com/ht_deko/items/2ccf08e3014fbe46e913#visual) の `Status` で切り替える事ができます。

 - SIMPLE

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/1f303a51-9d55-a646-8fb9-d8e18d8ef334.png)

 - SIMPLE (Small)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4a8920e0-f70e-0900-3040-3b528b94ffd7.png)

 - DEBUG

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/84bdba8f-647d-6697-f1ee-49597f0a812d.png)

| 項目 | 説明 |
|:---|:---|
| Unit 番号 | U0 (Unit0) / U1 (Unit1) のいずれか。現在アクティブな Unit を示しています。|
| [タッチパネルモード](#タッチパネルモード) | ⇕: スワイプ優先モード<br>✚: タッチ JoyPad モード<br>☝: タッチパッド優先モード |
| CPU エミュレーションパフォーマンス<br>(DEBUG モードのみ) | CPU 使用率のようなものです。100% を超えると 3.58MHz の Z80 エミュレーション処理が間に合っていないことを意味します。 |
| 描画フレームレート<br>(DEBUG モードのみ) | 最大で 30fps です。 |
| ホストヒープメモリ残量<br>(DEBUG モードのみ) | 何もしていなければ 3.5M 以上あると思います。 |
| ホスト IP アドレス  | IP アドレスです。Wi-Fi が OFF の場合には表示されません。  |
| リモート接続数 | [リモートコンソール](https://qiita.com/ht_deko/items/0cbc386e4719c82bc743#%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB)または[リモートコントロールパネル](https://qiita.com/ht_deko/items/0cbc386e4719c82bc743#%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%91%E3%83%8D%E3%83%AB)での接続数です。接続数 0 の場合には表示されません。 |
| バッテリー残量 (アイコン) | 5 段階表示です。 |
| バッテリー残量 (数値)<br>(SIMPLE Small / DEBUG モードのみ) | 最大で 100% です。 |

モードによって表示されない項目があります。また、ステータスモニターを非表示にする事も可能です。

### タッチパネルモード

[Setup Utility](https://qiita.com/ht_deko/items/2ccf08e3014fbe46e913) 以外の画面で左タッチボタンを長押しすると、タッチパネルモードを変更する事ができます。タッチパネルモードは画面下部のステータスモニターで確認できます。

| アイコン | タッチパネルモード | 説明 |
|:---:|:---:|:---|
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/cae6407a-cdb3-238e-c754-59a1fee2771c.png) | スワイプ優先 | MSX スクリーン内外でスワイプ操作が可能です。 |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/d2473277-2a9f-2f2f-6180-9109ed8194ea.png) | [タッチ JoyPad](#タッチ-joypad) | タッチパネルを仮想的な Joypad やキーボードの⼗字キーとして利⽤します。 |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/75a227e7-f95d-83dd-3ad6-022f2133edf6.png) | タッチパッド優先 | MSX スクリーン内でのタッチパッド操作を優先します。MSX スクリーン外でのみスワイプ操作が可能です。 |

オレンジの枠内が MSX スクリーンです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/526e0d15-daf4-2ff9-b894-a61eff57d0ea.png)

### タッチ JoyPad

タッチ JoyPad モード（**✚**）の場合、タッチパネルを 9 分割した仮想的なジョイパッドまたは仮想的なキーボードとして振る舞います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/8cd8bf95-8090-38f5-d3a9-51ea93142f3a.png)

 - ジョイパッド (1 or 2)

|| 左 | 中 | 右 |
|:---:|:---:|:---:|:---:|
| **上** | 〔ESC〕  | ↑ | 〔F5〕  |
| **中** | ← |   | → |
| **下** | B | ↓ | A |

 - キーボード

|| 左 | 中 | 右 |
|:---:|:---:|:---:|:---:|
| **上** | 〔ESC〕  | 〔↑〕 | 〔F5〕  |
| **中** | 〔←〕 |   | 〔→〕 |
| **下** | 〔m〕 | 〔↓〕 | 〔SPACE〕 |

どちらの設定にするかは [\[Setup Utility | Input\]](https://qiita.com/ht_deko/items/2ccf08e3014fbe46e913#input) ページの `TouchJoy` で変更できます。タッチ JoyPad モード（**✚**）に変更して、画面左下をタップして `m` が入力されたら仮想キーボードです。

## ・レジューム機能

特定の操作をトリガーとして、状態 (ステート) を保存/復元する事ができます [^3]。

| ファイル名 | 説明 |
|:---|:---|
| state_u0.bin | ユニット固有ステートデータ (U0) |
| state_u1.bin | ユニット固有ステートデータ (U1) |
| state_01.bin ～ state_07.bin | IoT Basic で保存されたステートデータ |

:::note warn
[リモートコントロールパネル](https://qiita.com/ht_deko/items/0cbc386e4719c82bc743#%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%91%E3%83%8D%E3%83%AB)が起動していると、レジューム機能が正しく動作しない事があります。
:::

**・NORMAL**

※ U0 のデフォルト。

| 機能 | 条件 |
|:---|:---|
| 保存 | ・[システムメニュー](https://qiita.com/ht_deko/items/f9eb7a5e5e215230b802) の [電源 OFF] ボタンを押した時<br>・タッチボタン (中) を押した時 |
| 復元 | ・起動時<br>・タッチボタン (右) を押した時 |


**・CONSTANT**

※ U1 のデフォルト。

| 機能 | 条件 |
|:---|:---|
| 保存 | ・[システムメニュー](https://qiita.com/ht_deko/items/f9eb7a5e5e215230b802)初回起動時<br>・(IoT Basic で保存されたユニット固有ステートデータ) |
| 復元 | ・起動時<br>・タッチボタン (右) を押した時 |

**・MANUAL**

| 機能 | 条件 |
|:---|:---|
| 保存 | ・タッチボタン (中) を押した時 |
| 復元 | ・タッチボタン (右) を押した時 |

:::note
変なステートデータができてしまって正常に起動できなくなった時にはこのモードで起動し、適当なステートデータを保存します。
:::


**・OFF**

| 機能 | 条件 |
|:---|:---|
| 保存 | ・(なし) |
| 復元 | ・(なし) |


## ・『M5Stack Core2 (MSX0 Stack)』

ベースとなっている **M5Stack Core2** 単体のスペックです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/76557048-08d3-53ae-427c-4683d3ef08d3.png)

| 項目 | 説明 |
|:---|:---|
| SoC | ESP32-D0WDQ6-V3<br>(240MHz dual core, 600 DMIPS, 520KB SRAM, Wi-Fi, Bluetooth) |
| フラッシュメモリ | 16 MB  |
| PSRAM | 8MB |
| 入力電圧 | 5V @ 500mA |
| IPS LCD スクリーン | 2.0 インチ, 320*240, ILI9342C |
| タッチスクリーン | FT6336U  |
| スピーカー  | 1W-092 |
| LED | 電源 LED |
| ボタン | 電源ボタン, リセットボタン, タッチボタンx3  |
| バイブレーション機能 | 振動モーター |
| パワーアンプ | NS4168 |
| 6 軸 IMU | AXP192 |
| USBチップ  | CP2104 or CH9102F [^4] |
| RTC | BM8563 |
| DC/DC昇圧 | SY7088 |
| TF カードスロット<br>(microSD) | 最大16 GB |
| リチウムバッテリ  | 390mAh @ 3.7V |
| アンテナ | 2.4 GHz 3D アンテナ  |
| 動作温度 | 0°C～40°C  |
| 重量 | 34.5g |
| サイズ | 54 x 54 x 16mm |

 - [M5Stack Core2 ESP32 IoT Development Kit (m5-docs)](https://docs.m5stack.com/ja/core/core2)

:::note warn
市販の M5Stack Core2 を MSX0 Stack 化する事はできません。
:::

## ・『Keyboard Face』
**Keyboard Face** はキーボードとして動作します。『[Faces II Bottom](#faces-ii-bottom)』に取り付ける事が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4c25837b-4e85-3599-44a5-0ca4fd43041e.png)

MSX0 Stack の Keyboard Face には Faces 付属の ATmega328P ではなく STM32F030C8T6 が使われており、ファームウェアは書き替えられそうにありません (ファームウェアのソースが公開されていない)。書き替え用をやってみたいのであれば、Faces 用の Keyboard Face を別途購入する必要があります。

 - [M5Stack Faces 用 QWERTY パネル (m5-docs)](https://docs.m5stack.com/ja/module/faces_keyboard) [^6]
 - [M5Stack Faces 用 QWERTY パネル (Switch Science)](https://www.switch-science.com/products/6611) [^6]

:::note
・MSX0 Stack の Keyboard Face はファームウェアがカスタマイズされています。
・付属 (小袋の中) の M3 x 16mm ネジで『Faces II Bottom』に固定する事もできます。
:::

### 文字入力について
少ないキーで様々な文字を入力しなければならないという制約があるため、最初のうちは文字入力に戸惑うかもしれません。

**英数入力:**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/24e46c15-ddb1-e86b-f045-3dd72d08fdf1.png)

**大文字入力:**
英数入力で`〔alt〕` を押しながら入力 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/3f01d2c3-5f1f-37e3-34a1-4986f7809ad3.png)

**CapsLock 入力:**
英数入力から`〔aA〕`で CapsLock して入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/8e59732d-c177-dc19-9436-56b10ac78870.png)

**小文字入力:**
CapsLock 入力で`〔alt〕` を押しながら入力 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9ab191ff-10ac-f892-c734-4cd1418d3223.png)

**かな入力:**
英数入力から `〔Fn〕〔aA〕` `〔Fn〕〔Fn〕` と押してかな入力にして入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/52dadda8-bad9-525e-7df6-5c4fbf15e839.png)

**かな入力 (小文字):**
かな入力で`〔alt〕` を押しながら入力 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9f9bac11-89f7-6299-b8d1-2cbf63b6bc59.png)

**カナ入力:**
かな入力から`〔aA〕`でカナ入力にして入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9d28adf1-2013-db0c-40e1-901086cf6ffa.png)

**カナ入力 (小文字):**
カナ入力で`〔alt〕` を押しながら入力 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/cdbd0e12-31b9-3cf7-ef80-3c4a7fe23caa.png)

:::note
現状、Keyboard Face では〔Ctrl〕、〔F1〕～〔F10〕、〔GRAPH〕等のキーを押せません [^10]。
:::

|  | 英数 | かな | カナ | ローマ字<br>（かな） | ローマ字<br>（カナ） |
|:---:|:---:|:---:|:---:|:---:|:---:|
| **英数** | - | 〔<font color="red">Fn</font>〕〔aA〕 | 〔<font color="red">Fn</font>〕〔aA〕 | 〔<font color="red">Fn</font>〕〔aA〕 | 〔<font color="red">Fn</font>〕〔aA〕 |
| **かな** | 〔<font color="red">Fn</font>〕〔aA〕 | - | 〔aA〕 | - | - |
| **カナ** | - |〔aA〕 | - | - | - |
| **ローマ字<br>（かな）** | 〔alt〕+ 〔<font color="red">Fn</font>〕〔aA〕| - | - | - | 〔aA〕 |
| **ローマ字<br>（カナ）** | - | - | - | 〔aA〕 | - |

 - `〔alt〕`は〔Shift〕キー。
 - `〔Fn〕` `〔aA〕`で入力切替を行うと **かな入力** となる。さらに`〔aA〕` を押すと **カナ入力** になる。解除は`〔Fn〕`　`〔aA〕`。
 - (MSX2 以降限定) `〔alt〕`を押しながら`〔Fn〕` `〔aA〕`で入力切替を行うと **ローマ字入力（かな）** となる。さらに`〔aA〕` を押すと **ローマ字入力（カナ）** になる。解除は`〔Fn〕`　`〔aA〕`。
 - `〔Fn〕` `〔aA〕`で各種入力切替した直後は`〔Fn〕`が押された状態になっているので、もう 2 回 `〔Fn〕`を押して解除するといい。

| LED | 意味 |
|:---|:---|
| 左 LED 点灯 | 〔aA〕が押され〔CapsLock〕になった状態。大文字が入力される。 |
| 右 LED 点灯 (高速) |<font color="#1e90ff">**〔Sym〕**</font>が押された状態。<font color="#1e90ff">**青色**</font>の文字が入力される。 |
| 右 LED 点灯 (中速)  |<font color="red">〔Fn〕</font>が押された状態。<font color="red">**赤色**</font>の文字が入力される。 |
| 右 LED 点灯 (低速)  | 〔Sym〕か〔Fn〕がロックされた状態。〔Sym〕か〔Fn〕を２回連続で押すとロックする。ロック状態でもう一度そのキーを押すと解除、別のキーを押すとそのキーが押された事になる。 |

刻印 (シール) 通りでない特殊なコンビネーションもあります。

| 刻印 | Keyboard | MSX | 備考 |
|:---:|:---:|:---:|:---|
| <font color="red">HOM</font> |〔alt〕+〔Fn〕〔X〕 | 〔CLS〕 | MSX では 〔Shift〕+〔Home〕。|
| <font color="red">END</font> |〔Fn〕〔C〕|〔Ctrl〕+〔STOP〕 | MSX に〔End〕はない。 |
| <font color="red">PU</font> | 〔Fn〕〔V〕| N/A | MSX に〔Page Up〕はない。|
| <font color="red">PD</font> | 〔Fn〕〔B〕| N/A | MSX に〔Page Down〕はない。|

## ・『Gamepad Face』

**Gamepad Face** はジョイパッドまたはキーボードとして振る舞います。『[Faces II Bottom](#faces-ii-bottom)』に取り付ける事が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/dd8c8070-c843-5c2e-584b-4ec76983cca7.png)

 - ジョイパッド (1 or 2)

| Gamepad | ジョイパッド |
|:---:|:---:|
| 方向ボタン | 十字キー |
| A | A ボタン |
| B | B ボタン |
| SELECT | 〔ESC〕 |
| START | 〔F5〕 |

- キーボード

| Gamepad | キーボード |
|:---:|:---:|
| 方向ボタン | カーソルキー |
| A | 〔SPACE〕 |
| B | 〔m〕|
| SELECT | 〔ESC〕 |
| START | 〔F5〕 |

どちらの設定にするかは [\[Setup Utility | Input\]](https://qiita.com/ht_deko/items/2ccf08e3014fbe46e913#input) ページの `M5Game` で変更できます。**B** ボタンを押して `m` が入力されたらキーボードとして認識されています。

MSX0 Stack の Gamepad Face には Faces 付属の ATmega328P ではなく STM32F030C8T6 が使われており、ファームウェアは書き替えられそうにありません (ファームウェアのソースが公開されていない)。書き替え用をやってみたいのであれば、Faces 用の Gamepad Face を別途購入する必要があります。

 - [M5Stack Faces 用 Gamepad パネル (m5-docs)](https://docs.m5stack.com/ja/module/faces_gameboy?id=gamepad) [^6]
 - [M5Stack Faces 用 Gamepad パネル (Switch Science)](https://www.switch-science.com/products/6612) [^6]

:::note
・付属 (小袋の中) の M3 x 16mm ネジで『Faces II Bottom』に固定する事もできます。
:::

## ・『Faces II Bottom』
**Faces II Bottom** は各種パネル (フェイス) を I2C で接続するための換装用ベースです。

初期状態だと MSX0 Stack (Core2) (上側) がネジ留めで、キーボードフェイス (下側) がネジなしで接続されているかと思います。フェイス側の交換は外してはめるだけです (MSX0 Stack 側を外す必要はありません)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/7c16f6e6-8242-6161-5e18-6c7ce54198fe.png)

充電可能な 600 mAh リチウムイオン電池を内蔵しています。Grove コネクタ (`PortB`, `PortC`) も備えています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/7d8fbe99-e3d9-0ad3-cad1-ab6f26cbe189.png)

:::note warn
一般販売されている『Faces II Bottom』は、MSX0 用の青い『Faces II Bottom』と M5BUS コネクタの向きが逆なので互換性がありません。メーカーサイトにある画像と見比べてみてください。
:::

 - [M5STACK Faces II Bottom Board (m5-docs)](https://docs.m5stack.com/ja/module/facesII)
 - [M5 Faces II - M5Stack Faces用ボトムベース (Switch Science)](https://www.switch-science.com/products/6541)

『Faces II Bottom』から『M5GO Bottom2』へ換装するには、付属のレンチ (オレンジ) で背面のネジを外す必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e71ec847-ed4e-4ebc-8ce4-47009d47d407.png)

:::note
・Face 交換の際にバッテリーのケーブルを挟まないように気を付けてください。
・Stack 側 (上部) は M3 x 18mm (上側) のネジと M3 x 16mm (下側) のネジがあります。
・Face 側 (下部) はレンチと一緒に小袋に入っている M3 x 16mm です。ネジの長さに注意してください。
・IO25 に RGB LED が接続されています [^2]。
・フェイスや MSX0 Stack の換装には[樹脂製のスパッジャー](https://www.amazon.co.jp/dp/B09G2HMXN1)があると便利です。マイナスドライバーでこじると、せっかくのクリアボディに大きな傷を付けかねません。
:::

## ・『M5GO Bottom2』
**M5GO Bottom2** は充電可能な 500 mAh リチウムイオン電池を内蔵しています。Grove コネクタ (`PortB`, `PortC`) も備えています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4800e807-4724-a7ef-aeb7-f13705c89ae5.png)

MPU6886 (6 軸 IMU) と SPM1423 (マイク) は『M5GO Bottom2』側に載っているため、『Faces II Bottom』を装着した状態では利用できません。

 - [M5GO Bottom2 (m5-docs)](https://docs.m5stack.com/ja/base/m5go_bottom2?id=m5go-bottom2)
 - [M5GO Bottom2 (Switch Science)](https://www.switch-science.com/products/6785)

『M5GO Bottom2』から『Faces II Bottom』へ換装するには、付属のレンチ (オレンジ) で背面のネジを外す必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/055cc189-7bb6-9165-fdf2-cd1608887e53.png)

:::note
・M5GO Bottom2 の背面の丸い穴は LEGO 互換となっています。
・M5GO Bottom2 付属のネジには M3 x 21mm (上側) と M3 x 18mm (下側) があります。Faces 用のネジと間違えないようにしてください。
・市販品の M5GO Bottom2 には M3 x 18mm (上側) と M3 x 16mm (下側) が付属しているようです。
・IO25 に RGB LED が接続されています [^2]。
:::

## ・『Core2 Battery Bottom』(Plan B のみ)
`Plan B` には 2 台の『MSX0 Stack』が付属し、片方には『Core2 Battery Bottom』が装着されています。これは市販の『M5Stack Core2』に付属しているものと同等です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/5e7a0747-2a6b-6126-96c8-e45acc1b6697.png)

『Core2 Battery Bottom』と『M5GO Bottom2』の主な違いは次の通りです。

|  | Battery Bottom | M5GO Bottom2 |
|:---|:---:|:---:|
| Battery | 390mAh | 500mAh |
| LED | なし | あり |
| Grove | なし | あり |
| LEGO | なし | あり |
| ポゴピン | なし | あり |

小さなフタのようなものに MPU6886 (6 軸 IMU) と SPM1423 (マイク) が載っています。紛失しないように注意してください。

 - [M5Stack Core2 ESP32 IoT Development Kit (m5-docs)](https://docs.m5stack.com/ja/core/core2)

:::note
・長さの異なる 2 種類の皿ネジで固定されています。『Faces II Bottom』や『M5GO Bottom2』のネジと間違う事はないでしょう。
:::

## ・『Charge Base』
充電台です。『Faces II Bottom』や『M5GO Bottom2』を装着した MSX0 Stack を載せて充電する事ができます。こちらに USB ケーブルを挿してもシリアル通信はできません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e4631a79-eb4a-6b84-116d-1a89dbaf0dfa.png)

『Faces II Bottom』や『M5GO Bottom2』同様、マグネットが仕込まれているので鉄板に貼り付ける事ができます。

分解するには付属のレンチ (緑) で背面のネジを外す必要があります。え？「そんなんバラしてもカラッポじゃないか？」 ですって？やだなぁ、 **USB と I2C 信号を引き出せる** じゃないですか！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/7a4bf113-6d0c-985a-4361-55ac19446001.png)

I2C デバイスやマイコンを組み込んでドッキングステーションを作るのもアリですね。

| パッド | 信号|
|:---:|:---|
| D- | USB D- |
| D+ | USB D+ |
| G | GND |
| 5 | 5V |
| D | I2C SDA |
| C | I2C SCL |

 - [M5GO / FIRE 用チャージベース (m5-docs)](https://docs.m5stack.com/ja/base/m5go_charger)
 - [M5GO / FIRE 用チャージベース (Switch Science)](https://www.switch-science.com/products/6536)

:::note
・この製品は単品販売されていません。
:::

## ・固定ネジ
製品を固定しているネジには 3 種類あります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/6e460b7b-828a-86a7-6dd0-5f14f39d89d8.png)

`Plan A` に含まれるネジと、初期位置は次の通りです。

| ネジ | 場所 | 総数 |
|:---|:---|:---:|
| 21mm  | M5GO Bottom2 パッケージ内 x2| 2 |
| 18mm  | Faces II Bottom 上部 上側 x2, M5GO Bottom2 パッケージ内 x2 | 4 |
| 16mm  | Faces II Bottom 上部 下側 x2, 小袋内 x4 | 6 |

**Faces II Bottom**
Faces II Bottom を固定する場合です。

| 位置 | ネジ |
|:---|:---|
| 上部 (Stack) 上側  | 18mm x2|
| 上部 (Stack) 下側  | 16mm x2|
| 下部 (Face) | 16mm x4 |

**M5GO Bottom2**
M5GO Bottom2 を固定する場合です。

| 位置 | ネジ |
|:---|:---|
| 上側  | 21mm x2|
| 下側  | 18mm x2|

:::note
`Plan B` の『Core2 Battery Bottom』を固定しているネジは皿ネジです。
:::

## ・Grove コネクタ

MSX0 Stack には 3 つの Grove コネクタがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/2932ca6d-391f-cbab-b5f6-46a3e1b01dce.png)

| Grove | 色 | 用途 | GPIO | 場所 |
|:---:|:---:|:---:|:---:|:---|
| <font color="red">PortA</font> | 赤 | I2C | 32, 33 [^2] | MSX0 Stack |
| PortB | 黒 | GPIO | 26, 36 [^2]| Faces II Bottom / M5GO Bottom2 |
| <font color="#3FBFFF">PortC</font> | 青 | UART | 13, 14 [^2] | Faces II Bottom / M5GO Bottom2 |

ここにセンサー類を接続する事ができます。

| ピン | ケーブル | PortA<br>(I2C) | PortB<br>(GPIO) | PortC<br>(UART) |
|:---:|:---:|:---:|:---:|:---:|
| 1 | 黄 | SCL (IO33 [^2]) | IO36 (IN) [^2] | RXD (IO13 [^2]) |
| 2 | 白 | SDA (IO32 [^2]) | IO26 (OUT) [^2] | TXD (IO14 [^2]) |
| 3 | 赤 | 5V | 5V | 5V |
| 4 | 黒 | GND | GND | GND |

Grove は Seeed Studio 社のコネクタ規格です。

 - [Seeed Studio Grove System とのプラグアンドプレイ (Youtube)](https://www.youtube.com/watch?v=eY3tu7-U75g)
 - [Grove ケーブル (Switch Science)](https://www.switch-science.com/search?type=article%2Cpage%2Cproduct&q=Grove*+%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB*)
 - [Grove端子 (HY2.0-4P、PH2.0-4P) について調べてみた (lang-ship.com)](https://lang-ship.com/blog/work/grove-hy20-4p/)
 - [Grove端子 (HY2.0-4P、PH2.0-4P) について調べてみた その 2 (lang-ship.com)](https://lang-ship.com/blog/work/grove-hy20-4p-2/)

:::note warn
PortA にはツメ付きの Grove ケーブルは使えません。
:::

### ポート拡張モジュール

MSX0 Stack に Plan G の有線 LAN モジュール等を装着すると PortB や <font color="#3FBFFF">PortC</font> が使えなくなるため、これらのポートを利用したい場合には**ポート拡張モジュール**を挟む必要があります。

 - [M5Stack Core2 用ポート拡張モジュール (Switch Science)](https://www.switch-science.com/products/8308)

## ・I2C バス

MSX0 Stack の I2C バスにはいくつかのデバイスが接続されています。

| I2C アドレス | デバイス | 場所 |
|:---:|:---|:---|
| 0x08 | STM32F030C8T6 or ATmega328P | Faces II Keyboard / GamePad |
| 0x34 | AXP192 電源システム管理 | MSX0 Stack |
| 0x38 | FT6336U タッチスクリーン | MSX0 Stack |
| 0x51 | BM8563 リアルタイムクロック | MSX0 Stack |
| 0x68 | MPU6886 6 軸 IMU | M5GO Bottom2 |

ESP32 は 2 系統の I2C が利用可能です。MSX0 Stack でも同様です。

| 信号 | i2c_i | i2c_a |
|:---:|:---:|:---:|
| SCL | IO22 [^2] | IO33 [^2] |
| SDA | IO21 [^2] | IO32 [^2] |


内蔵デバイス (充電端子接続含む) は [IoT BASIC](https://qiita.com/ht_deko/items/8c20354b867b0d540805#iot-basic) ノードの `device/i2c_i/` に、Grove コネクタの <font color="red">PortA</font> (赤) に接続したデバイスは `device/i2c_a` に列挙されます。

```
device/i2c_a
device/i2c_a/27
device/i2c_i
device/i2c_i/08
device/i2c_i/34
device/i2c_i/38
device/i2c_i/51
```

この情報でどちらのボトムが装着されているのか判りますね。

 - [I2C (Wikipedia)](https://ja.wikipedia.org/wiki/I2C)
 - [M5Stack 用拡張ハブユニット (m5-docs)](https://docs.m5stack.com/ja/unit/hub)
 - [M5Stack 用拡張ハブユニット (Switch Science)](https://www.switch-science.com/products/5696)

## ・センサー
含まれるセンサー類はプランによって異なります。

| Plan | オプション | センサー | 価格 |
|:---:|:---|:---|---:|
| A |   | Grove Beginner Kit for MSX0 | 29,999円 |
| B | ・MSX0 Stack (Core2)<br>・Core2 Battery Bottom | Grove Beginner Kit for MSX0 | 39,000円 |
| C |   | Grove Beginner Kit for MSX0<br>センサーキット（20個） | 34,000円 |
| D |   | Grove Beginner Kit for MSX0<br>センサーキット（40個） | 42,000円 |
| E | ・LTE モジュール | Grove Beginner Kit for MSX0 | 45,000円 |
| F | ・LoRA モジュール | Grove Beginner Kit for MSX0 | 40,000円 |
| G | ・PoE モジュール | Grove Beginner Kit for MSX0 | 40,000円 |
| [ac-mall](https://ac-mall.jp/iotm-0001) | ・ディープダンジョン (ゲーム)<br>・テセウス (ゲーム)<br>・レリクス (ゲーム)<br>・ボルフェスと 5 人の悪魔 (ゲーム) | (なし) | 38,500円 |
| [Beep](https://www.beep-shop.com/ec/products/detail/49558) | ・THE CASTLE (ゲーム)<br>・RISEOUT (ゲーム)<br>・ラスグレイブ探偵譚 短編 謎の郵便物 (ゲーム)<br>・ラスグレイブ探偵譚 短編 夕刻の書 (ゲーム) | (なし) | 38,500円 |



付属する基本的なセンサーは 10 種のセンサーと Arduino UNO R3 互換の『Seeeduino Lotus』が載ったボード **『Grove Beginner Kit for MSX0』** です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/53a34ba4-775a-0ea4-d617-fc56f8a5db45.png)

同等品を購入する事も可能です。

| 製品 | 説明 |
|:---|:---|
| [Grove Beginner Kit for Arduino (Switch Science) ](https://www.switch-science.com/products/6361) | 10 種のセンサーキット |
| [Grove Creator Kit- ɑ (Switch Science) ](https://www.switch-science.com/products/8436)  | 20 種のセンサーキット (Plan C 同等)|
| [Grove Creator Kit- β (Switch Science) ](https://www.switch-science.com/products/8437)  | 30 種のセンサーキット |
| [Grove Creator Kit- γ (Switch Science) ](https://www.switch-science.com/products/7582)  | 40 種のセンサーキット (Plan D 同等)|
| [M5Stack 用 W5500 搭載 LAN モジュール (PoE 対応) (Switch Science)](https://www.switch-science.com/products/7590) | 有線 LAN モジュール (Plan G 同等) |
| [M5Stack 用 W5500 搭載 LAN モジュール (Switch Science)](https://www.switch-science.com/products/7589) | 有線 LAN モジュール (Plan G 同等) - <font color="Crimson">PoE 非対応</font>|

:::note warn
Plan G 同等品の有線 LAN モジュールには MAC アドレスが振られていません。ローカル MAC アドレスを使用するか、数百円の USB 有線 LAN アダプタを購入して、その MAC アドレスを拝借するなりしてください。
:::

**See also:**

 - [【MSX0】IoT BASIC サンプルの移植【Turbo Pascal】 (Qiita)](https://qiita.com/ht_deko/items/2362488c5c99aec4afbf)
 - [イーサーネットシールド２ (ht-deko.com)](https://ht-deko.com/arduino/shield_ethernet2.html)

## ・スロット情報

『MSX0 Stack』のスロット情報です。

### ver 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)

### ver 0.07.08

| 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-0 |   |   |   |   |
| 2-1 |   | RS232C | RS232C |   |
| 2-2 |   | MIDI  |   |   |
| 2-3 |   |   |   |   |
| 3-0  | RAM | RAM | RAM | RAM |
| 3-1  |   | MSX-DOS2 | MSX-DOS2 |   |
| 3-2  | BIOS_SUB | KANJI | KANJI |   |
| 3-3  |   | DISK | DISK |   |

### ver 0.15.20

| 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-0 |   |   |   |   |
| 2-1 |   | RS232C | RS232C |   |
| 2-2 |   | MIDI  |   |   |
| 2-3 |   | FM 音源 |  |   |
| 3-0  | RAM | RAM | RAM | RAM |
| 3-1  |   | MSX-DOS2 | MSX-DOS2 |   |
| 3-2  | BIOS_SUB | KANJI | KANJI |   |
| 3-3  |   | DISK | DISK |   |


# 索引
 - [■ メイン](https://qiita.com/ht_deko/items/b284cb93ac34e2b77d9a)
 - ■ ハードウェア
 - [■ システムメニュー](https://qiita.com/ht_deko/items/f9eb7a5e5e215230b802)
 - [■ Setup Utility](https://qiita.com/ht_deko/items/2ccf08e3014fbe46e913)
 - [■ リモート接続](https://qiita.com/ht_deko/items/0cbc386e4719c82bc743)
 - [■ ソフトウェア](https://qiita.com/ht_deko/items/8c20354b867b0d540805)

[^1]: 本体色の違いだけではなく、MSX0 Stack と M5Stack Core2 では向きが 180°違います。
[^2]: Faces II Bottom のシルク印刷を信じるならば。
[^3]: ファームウエアバージョン 0.15.18 以降。
[^4]: 私の個体は CH9102F が使われていました。
[^6]: 互換性はありますが Faces II ではなく Faces 用です。
[^10]: Keyboard Face では`〔Fn〕〔C〕`(〔Ctrl〕+〔Stop〕) を利用して、〔Ctrl〕キーを押す事ができますが、理屈上 Break が一回含まれてしまいます。