PicoCalcのコアをPico 2 Wへの交換しSDカード内ファイルの実行とファンクションキーの設定

# PicoCalcとは

[PicoCalc](https://www.clockworkpi.com/picocalc)はclockworks.comで販売されている、かつてのポケコンのよう雰囲気をもつRaspberry Pi Picoをコアとした4インチIPSディスプレイ、キーボードを持つ小型の一体型コンピュータです。ポケコンを使っていた、小型のガジェットが気になる私には面白く思え、少し迷って2025年3月末に注文し、およそ2ヶ月後の5月下旬に届きました。

ソフトウェアはPicoMiteと呼ばれるシステムで電源投入後にBASIC（MMBasic）が起動する、8ビット時代のマイコンのようなシステムです。詳しくは[PicoCalcのWebサイト](https://www.clockworkpi.com/picocalc)を見てください。
製品はキットなので自分で組み立てます。工具（六角レンチ）が同梱されているので改めて用意する必要はありません。同梱されている[英語のマニュアル](https://github.com/clockworkpi/PicoCalc/blob/master/Clockwork_PicoCalc_Assembly_Guidelines.pdf)をに見ながら組み立てます。図解で説明されているので英語が苦手でも問題ないと思われます。私は10分程度で組み立てられました。

<!-- 写真挿入 -->
![PicoCalcKit.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72921/98e64914-e1bd-467a-a706-4e3f45bde698.jpeg)

## ざっくりとしたスペック

- コアはRaspberry Pi Picoが同梱されている。Pico W、Pico 2，Pico 2 Wに差し替えて利用可能。PicoとPico 2はCPUが異なるのでファームウェアが異なる。
- 4インチ320×320 カラーIPSスクリーン
- QWERTYバックライト付きキーボード
- 32GB SDカード同梱（ファームウェア、サンプルなどが入っている）
- 電源は18650リチウム電池を2本使用できるが同梱されておらず、購入者が準備する

# コアをPico 2 Wに載せ替える

PicoCalcにはRaspberry Pi Picoが同梱されているがこれを事前に用意しておいたRaspberry Pi Pico 2 Wに載せ替えました。最初に製品に同梱されていたRaspberry Pi Picoを載せて動作を確認し、その後Raspberry Pi Picoを外してRaspberry Pi Pico 2 Wを載せました。
ソケットに差し込んだRaspberry Pi Picoを外すときは他の部品を傷つけないようにPicoの基板をソケットから少しずつ上にずらしながら外しました。
用意したRaspberry Pi Pico 2 WにはPicoCalc用のファームウェアをインストールしていなかったので次の手順でインストールしました。

1. Raspberry Pi Pico 2 W用のファームウェアWebMite_WEBRP2350_V6.00.02RC24.uf2を[PicoCalc PicoMite V6.00.02RC24](https://github.com/madcock/PicoMiteAllVersions/releases/)からダウンロードします
2. Raspberry Pi Pico 2 WのBOOTSELボタンを押しながらUSBケーブルをRaspberry Pi Pico 2 WのUSBポートに差し込みます
   ![USBport.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72921/c49a81fd-151e-430e-a92e-8df704cc8407.jpeg)

3. RP2というドライブが表示されるのでそこにファームウェアファイルをドラッグ＆ドロップします
4. ファームウェアファイルのコピーが完了し、Raspberry Pi Pico 2 Wが起動し、LEDが点灯したらUSBケーブルを抜きます

以上でインストールが完了です。PicoCalcの電源ボタンを1秒以上押し続けるとインストールしたファームウェアが起動し、バージョン情報等とプロンプト>がスクリーンに表示されます。
   ![boot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72921/b94071ba-7064-43b5-beca-ac8e315eb3c4.png)


- PicoCalcに同梱されていたRaspberry Pi PicoにインストールされているPicoMite MMBasicはバージョン5.09.00RC5でした
- PicoCalc用のファームウェアはLCPパネル、I2Cキーボードなどの設定が組み込まれているところが[Geoff's ProjectのBASIC for the Raspberry Pi Pico & Pico 2](https://geoffg.net/picomite.html)で配布されているファームウェアとの違いになります

# PicoCalcのSDカード内のファイルの実行方法 #

Pico 2 WでPicoCalcが動作したのでPicoCalcに添付されているSDカード内のファイルの再生・実行を確認しました。
なお、SDカードはB:ドライブに割り当てられていて、SDカードファイルシステムはファイルの名の大文字と小文字は区別
しますのでファイル名の入力には注意します
しない。Aドライブのフラッシュファイルシステムは大文字・小文字を区別します。

## BASICサンプルプログラムの実行 ##

BASICのプログラムは`RUN`コマンドで実行します。PicoMiteではRaspberry Pi PicoのフラッシュファイルシステムをAドライブ、SDカードファイルシステムをBドライブとして識別していて、初期状態ではAドライブがアクティブドライブになっています。
アクティブドライブが初期状態のAドライブのときにSDカード（Bドライブ）にある3つのBASICのファイルを実行するときはファイル名にドライブ名を追加して指定して実行します。
以下がSDカードに格納されている3つのファイルを実行するコマンドです。ファイル名の拡張子`.bas`は省略できます。

```
> RUN "B:/bifdiag
> RUN "B:/lorenz
> RUN "B:/mand
```

mand.bas（マンデルブロ集合）の実行結果はフラッシュファイルシステム（Aドライブ）にビットマップファイル（out.bmp）として保存されます。次の方法で表示できます。

 ![out.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72921/ad5000d6-4c6b-4981-b22c-ae50a86f2cb2.png)

## ビットマップファイルの表示 ##

`LOAD IMAGE`コマンドを使ってビットマップファイルを表示します。拡張子`.bmp`は省略でます。

```
> LOAD IMAGE "B:/picocalc
```

次のリンク先と同じ画像が表示されます。

[picocalc.bmp](https://raw.githubusercontent.com/clockworkpi/PicoCalc/refs/heads/master/Bin/PicoCalc%20SD/picocalc.bmp)

## MP3ファイルの再生 ##

`PLAY MP3`コマンドを使ってMP3ファイ鵜を再生します。ただし、CPUがPico 2で採用されているRP2350のみで、CPUSPEEDの設定が200000（200MHz）以上が必要です。

```
> PLAY MP3 "B:/BellLabs_Fine.mp3"
```

CPUSPEEDの設定は次の`OPTION CPUSPEED`コマンドを使って設定します。

```
> OPTION CPUSPEED 200000
```

## 参考：アクティブドライブの変更

アクティブドライブの変更はDOSと同じように`ドライブ名:`と入力する方法と`DRIVE "ドライブ名:"`と入力する方法があります。なお、`ドライブ名:`はDRIVEコマンドへのショートカットです。
アクティブドライブをドライブBにするコマンドは次の通りです。

```
> B:
または
> DRIVE "B:"
```

**注意**：`SAVE`、`LOAD`、`FILES`などコマンドを実行するときにドライブ名を省略した相対的な名前を指定するとアクティブドライブのカレントディレクトリに保存、読み込みが実行されます。

# ファンクションキー

PicoCalcには物理キーとしてファンクションキーが5個（F1〜F5）あり、F6〜F10はSHIFTキーを押しながらF1〜F5を押して実現しています。

![FunctionKey.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72921/ee749640-291c-4bd7-8011-0347adec3ebc.jpeg)


## 初期設定

PicoMiteのファンクションキーの初期設定はしたの表示に示すコマンドが割り当てられています（BASICのフルクリーンエディタでは別の機能が割り当てられています）。F1とF5〜F9はユーザがコマンドを割り当てできます。

| FNキー  | コマンドや機能 |
|:------:|--------------|
| F1     | 未割り当て     |
| F2     | RUNコマンド    |
| F3     | LISTコマンド   |
| F4     | EDITコマンド   |
| F5     | 画面クリア     |
| F6〜F9 | 未割り当て     |
| F10    | AUTOSAVE     |
| F11    | XMODEM受信    |
| F12    | XMODEM送信    |

F5キー（画面クリア）はESCシーケンス（`\e[2J\e[H`）を送信しています。

## ファンクションキーの設定

コマンド割り当て可能なF1、F5〜F9は`OPTION`コマンドを使って設定できます。ここではよく使うだろうコマンドを設定してみました。

コマンドの構文は下記のとおりです。

> OPTION FNkey string$

FNkeyにF1、F5〜F9のキーの名前で、string$に設定するコマンド文字列や文字型変数を指定します。
たとえば、F1キーに`FILES`コマンドを、F6キーに`FILES "B:/`割り当てる場合は次のように入力します。

```
> OPTION F1 "FILES"+Chr$(13)+Chr$(10)
> OPTION F6 "FILES "+Chr$(34)+"B:/"+Chr$(13)+Chr$(10)
```

割り当てるコマンド文字列の最後の`Chr\$(13)+Chr\$(10)`は改行のASCIIコードで、これがあることでコマンド`FILES`を入力した後にEnterキーを押したことと同じ動作、つまり、F1キーを押すと`FILES`コマンドが実行されます。16進表記を使った`Chr\$(&H0D)+Chr\$(&H0A)`とも記述できます。`Chr$(34)`はダブルコーテーション（"）のコードです。

| ASCIIコード（10進）|ASCIIコード（16進） | 記号 | 名称                   |
|:---------:|:-------:|:----:|------------------------|
| 13        |0D       |  CR   | Carrige Return（復帰） |
| 10        |0A       | LF   | Line Feed(改行）       |
| 34        |22       |"     |ダブルコーテーション|

`OPTION`コマンドでの設定一覧を表示する`OPTION LIST`コマンドを`F7`に割り当てる設定は下記のようになります。

```
> OPTION F7 "OPTION LIST"+Chr$(13)+Chr$(10)
```

`F7（SHIFT+F2）`キーを押してファンクションキーが設定されているかを確認してみます。出力の最後に設定が表示されます。CRLFが含まれるため、空白行が表示されます。

```
> OPTION LIST
WebMite MMBasic RP2350A Edition V6.00.02RC24
（中略）
OPTION F1 FILES

OPTION F6 FILES "B:/

OPTION F7 OPTION LIST

OPTION PLATFORM PicoCalc
```

# MacとUSBケーブルで接続して使用する

PicoCalcとMacをUSB タイプCケーブルで接続して端末からMinicommなどのシリアル通信ソフトから操作できます。ただし、Raspberry Pi PicoのUSBポートではなくPicoCalcのUSBタイプCポートを使用します。
Macからの操作、コマンド実行結果はMacのターミナルとPicoCalcのLCDパネルの

# 参考サイトなど

- [PicoMite User Manual](https://geoffg.net/Downloads/picomite/PicoMite_User_Manual.pdf)