Raspberry Pi PicoでPicoMite(MMBasic)を使う〜インストール

# はじめに

clockworkの[PicoCalc](https://www.clockworkpi.com/picocalc "PicoCalcKit")を注文したのをきっかけにRaspberry Pi Picoで動作するBASICインタープリタMMBasicを含めて環境として[PicoMite](https://geoffg.net/picomite.html "PicoMite")の存在を知り、PicoCalcが届くまでRaspberry Pi PicoにPicoMiteをインストールしてMMBasicでのプログラミングを試した。

私の環境はMacBook Proを使用しているのでmacOSでの説明となる。

# 手順 #

下記の手順でRaspberry Pi PicoでPicoMiteを利用できるようになる。

1. 必要なソフトウェアのインストール
2. Raspberry Pi Pioc用のファームウェアのダウンロードとインストール
3. Raspberry Pi Picoと通信するためのデバイスファイルの確認
4. シリアル通信ソフトウェアをつかってRaspberry Pi Pico上のPicoMiteと通信し、操作する

# macOSでの準備 #

PicoMiteのMMBasicでプログラミングするにはRaspberry Pi PicoとMacをUSBシリアルケーブルで接続し、シリアル通信ソフトウェアを通して操作する。

macOSの場合、ターミナルやiTerm2でminicomやscreenを使ってRaspberry Pi Picoと通信する。ちなみにWindowsの場合、Tera Termなどのシリアル通信ソフトウェアを使用する。

## minicomのインストール ##

ここではシリアル通信ソフトウェアとしてminicomを使用する。minicomはmacOSには入っていないので別途インストールする必要がある。ここでは`brew`を使ってインストールする。`brew`はすでにンストールされているものとする。

``` shell
$ brew install minicom
```

# ファームウェアイメージのダウンロードとインストール #

## ファームウェアイメージのダウンロード ##

Raspberry Pi Picoで利用できるPicoMiteのファームウェアはGeoff's Projectsのサイトの[BASIC for the Raspberry Pi Pico & Pico 2](https://geoffg.net/picomite.html)のからダウントーどする。

ページの下部のDownloadsの**PicoMite firmware V6.00.01 (includes the above manual).**の[Downlaodリンク](https://geoffg.net/Downloads/picomite/PicoMite_Firmware.zip)をクリックする。

ダウンロードされたファイル`PicoMite_Firmware.zip`を展開すると`Firmware`フォルダにRaspberry Pi PicoやPico 2で利用できるファームウェアファイルがある。
PicoMite_User_Manualより抜粋した下表を参照。

単体の試す場合はRaspberry Pi Picoの場合、PicoMiteRP2040を、Pico WならPicoMiteRP2040にくわえて、WebMiteRP2040が利用できる。Raspberry Pi Pico 2ではればPicoMiteRP2350を、Pico 2 WならPicoMiteRP2350にくわえて、WebMiteRP2350が利用できる。WebMiteはWiFiを利用できる。。

<table>
<tr><th> Firmware</th><th rowspan="2">CPU</th><th>Touch</th><th colspan="2">Ketboard/Mouse</th><th colspan="2">Video Output</th><th>WiFi</th></tr>
<tr><th></th><th>LCD<br>Panel</th><th>PS2</th><th>USB</th><th>VGA</th><th>HDMI</th><th>Internet</th></tr>
<tr><td> PicoMiteRP2040       </td><td> RP2040 </td><td> ✓   </td><td> ✓   </td><td>     </td><td>     </td><td>      </td><td>      </td></tr>
<tr><td> PicoMiteRP2350       </td><td> RP2350 </td><td> ✓   </td><td> ✓   </td><td>     </td><td>     </td><td>      </td><td>      </td></tr>
<tr><td> PicoMiteRP2040USB    </td><td> RP2040 </td><td> ✓   </td><td>     </td><td> ✓   </td><td>     </td><td>      </td><td>      </td></tr>
<tr><td> PicoMiteRP2350USB    </td><td> RP2350 </td><td> ✓   </td><td>     </td><td> ✓   </td><td>     </td><td>      </td><td>      </td></tr>
<tr><td> PicoMiteRP2040VGA    </td><td> RP2040 </td><td>     </td><td> ✓   </td><td>     </td><td> ✓   </td><td>      </td><td>      </td></tr>
<tr><td> PicoMiteRP2350VGA    </td><td> RP2350 </td><td>     </td><td> ✓   </td><td>     </td><td> ✓   </td><td>      </td><td>      </td></tr>
<tr><td> PicoMiteRP2040VGAUSB </td><td> RP2040 </td><td>     </td><td>     </td><td> ✓   </td><td> ✓   </td><td>      </td><td>      </td></tr>
<tr><td> PicoMiteRP2350VGAUSB </td><td> RP2350 </td><td>     </td><td>     </td><td> ✓   </td><td> ✓   </td><td>      </td><td>      </td></tr>
<tr><td> PicoMiteHDMI         </td><td> RP2350 </td><td>     </td><td> ✓   </td><td>     </td><td>     </td><td> ✓    </td><td>      </td></tr>
<tr><td> PicoMiteHDMIUSB      </td><td> RP2350 </td><td>     </td><td>     </td><td> ✓   </td><td>     </td><td> ✓    </td><td>      </td></tr>
<tr><td> WebMiteRP2040        </td><td> RP2040 </td><td> ✓   </td><td>     </td><td>     </td><td>     </td><td>      </td><td> ✓    </td></tr>
<tr><td> WebMiteRP2350        </td><td> RP2350 </td><td> ✓   </td><td>     </td><td>     </td><td>     </td><td>      </td><td> ✓    </td></tr>
</tr>
</table>

## ファームウェアイメージのインストール ##

ファームウェアイメージをRaspberry Pi Picoへの転送は、次の手順で行なう。

1. Rapberry Pi Picoの基板上にある`BOOTSEL`ボタンを押したままUSBシリアルケーブルでMacと接続する。
2. しばらくするとMacに`RPi-RP2`という名前のドライブがマウントされる。
3. この`RPi-RP2`ドライブにインストールしたいファームウェアイメージをドラッグアンドドロップする。
4. ファームウェアイメージのコピーが始まり、完了するとRaspberry Pi Picoが自動的に再起動される。このさいに「ディスクの不正な取り出し」というメッセージが表示されるが特に問題はない。
5. Raspberry Pi Picoのボード上のLEDが

以上でRaspberry Pi Picoへのファームウェアイメージのインストールは完了。

# シリアル通信でPicoMiteを操作 #

ファームウェアイメージのインストールが完了したのでMacからRaspberry Pi Pico上のPicoMiteと通信し、操作する。

### デバイスファイルの確認

ターミナルを起動し、コマンド`ls /dev/cu.usb*`を実行してRaspberry Pi Picoと通信するためのデバイスファイルを確認する。次に示すlsコマンドを実行し、`/dev/cu.modem2101`のようなデバイスファイル名が表示されればよい。

``` shell
$ ls /dev/cu.usb*
/dev/cu.usbmodem2101
```

※デバイスファイルの名前はここでは/dev/cu.usbmodem2101だが、利用するポートや環境により異なるので注意すること。

## シリアル通信ソフトウェアでPicoMiteと接続

minicomがデバイスファイル`/dev/cu.usbmodem2101`を使い、ボーレート115300bpsでRaspberry Pi Picoと通信するに次のコマンドで実行する。

``` shell
$ minicom -D /dev/cu.usbmodem2101 -b 115200
```

| オプション | 意味                                               |
|------------|----------------------------------------------------|
| -D         | 接続した機器と通信するデバイスファイル名を指定する |
| -b         | 通信のボーレートを指定する                         |


接続に成功するとminicomのウェルカムメッセージ、使用しているデバイスファイル名が表示される。ここで`Return`キーを押すとPicoMiteのプロンプト記号`>`が表示される。

![スクリーンショット 2025-04-24 20.19.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72921/c66e529f-0631-4cb0-b316-5c864531c78f.png)

プロンプトではコマンド、1行で完結するBASICのコードを入力できる。

## BASICの1行コードを実行

ありきたりだが`Hello World!"と表示させてみる。

``` BASIC
> PRINT "Hellow World!"
Hello World
```

For文を使って1から10までの整数の和を求め、表示するコードは文をコロンで区切って1行で入力する。

``` BASIC
> Sum = 0 : For I = 1 To 10 : Sum = Sum + I : Next I : Print Sum
55
```

![スクリーンショット 2025-04-24 20.20.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72921/6d146b4b-94fa-412d-bcdb-892925d63d22.png)



- プロンプトから入力されたBASICの命令文は即座に実行される。
- For文などの複数行にまたがる命令はコロンで区切って1行で入力する。
- プロンプトは昔の8ビットマシンとは異なりコマンド実行のためのものでBASICのプログラム入力には使えない。
- BASICのプログラムの入力にはPicoMite内蔵フルスクリーンエディタを使う。

以上でRaspberry Pi PicoでPicoMiteが動作するようになった。BASICのプログラムの入力方法などは別に説明する。