PISTORMとはRaspberry Piを使った68KCPU emulatorです。AMIGA専用というわけでもない様で、X68000などでも使用実績があるという話も聞き及びます。使用するRaspberry Piは"Raspberry Pi PICO 2 W"(Pi2W)です。PISTORMがサポートしているRaspberry Piは限られていますので、あらかじめ調査が必要です。AMIGA実機(ここではAmiga500)に組み込んだ場合に周囲と衝突しない事を考えるとやはり小さなRaspberry Piという選択になりました。以下、個人的な忘備録であり、あくまでも2025年段階の話ですので変わる可能性があります。
PISTORMを動作させるには目下、Emu68と今回のようなソースコードからコンパイルする2通りの方法があります。個人的な感想を述べれば、Emu68の方が簡単ですね。
PiStromに使うプログラムをソースコードからコンパイルするにはRasberry Pi OSが最近の物ではエラーを起こしてしまいます。
少し古い"BullsEye"でもエラーとなります。
もう少し古い"Buster" versionでないとコンパイルが通りませんでした。
"Buster"を入手するには以下を参照しました。
https://monomonotech.jp/kurage/memo/m211208_raspi_os_install_past.html
直接その場所も記しておきます。
https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2021-05-28/
からZIPファイルをダウンロードします。
ここは2021年5月版一択でして、同じ"BUSTER" versionでも古い物になると、エラーでコンパイルが通りません。
これをRaspberry Pi ImagerでSD cardに先ほどダウンロードしたZIPファイルを指定して書き込みます。
具体的にはCHOOSE OSで「カスタムイメージを使う」を選択してSD cardに書き込みします。
なお、その際にSSHとWiFiの設定は済ませておいた方が便利です。後でもそれらの設定はできるのですが、Pi2WにUSBキーボードを接続しないといけません。そのUSBケーブルもMicroUSB変換しないとPi2Wに接続できません。
Pi2WとPISTORMを2列のソケットで結合します。
そしてRaspberry Piの方に先ほど書き込みの終わったSD Cardを挿入してWindowsマシンとUSBケーブルで接続します。
あらかじめWiFiを設定しているとPi2Wはブート時に自動的にWiFiに接続されるのでSSHでホストマシンから操作できます。なおPi2WのIPアドレスを調べるには"Advanced_IP_Scanner"などを使うといいです。Windows10上のSSHクライアントはTeraTermを使いました。
Pi2Wにログインし以下の入力をします。
sudo apt-get update
sudo apt-get install git libsdl2-dev
git clone https://github.com/captain-amygdala/pistorm.git pistorm
cd pistorm
make
エラーが出ていなければ、"emulator"という実行ファイルができているはずです。
次にOPENOCDのINSTALL
sudo apt-get install openocd
OPENCDでは無くてOPENOCDですので。これを勘違いして1月程悩みました。
その後
./flash.sh
ここでCPLDが見当たらないなどというエラーが出た場合はPi2WとPISTORMを接続するソケットがずれてないかを確認して下さい。ここでflashするのはPISTORM上のCPLDにファームウェアを書き込んでいるわけです。ここまでエラーを出さずに完了すると、AMIGAの実機のCPU68000と交換して使うことができるようになります。
sudo ./emulator
で動作するようなります。ただそれではAMIGAの起動時にPISTORMが起動しないので自動起動するように設定します。
sudo vi /etc/systemd/system/pistorm.service
に以下の内容を書き込みます。
[Unit]
Description=PiStorm emulator
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/home/pi/pistorm/emulator
WorkingDirectory=/home/pi/pistorm
[Install]
WantedBy=multi-user.target
ここまででも、エミュレーターとして動作するのですが、設定ファイル(default.cfg)に便利な設定をしてしてゆきます。ここでもかなり悩みました。まず、default.cfgがありません。それにはamiga.cfgというファイルがありますので、これをコピーします。
cp amiga.cfg default.cfg
この設定では同じディレクトリーにkick.romが無いといけないので、kickstartファイルを入手出来ない場合は、上記の設定内容を書き換えるか、設定してはいけません。
個人的にはAmigaForeverからkickstart ROMファイルを購入しました。AmigaForeverは、2025年6月頃に最新のアップデートがあったようで、最新版を入手しました。
ところがdefault.cfgを作ってからpistormがうまく動作しなくなりました。なので、その内容を調査してみました。すると
map type=rom address=0xF80000 size=0x80000 file=kick.rom ovl=0 id=kickstart
の行をコメントアウトして
#map type=rom address=0xF80000 size=0x80000 file=kick.rom ovl=0 id=kickstart
とするとpistormが動作するようになりました。
この行が何をしているかというとkick ROMファイルを参照して、OSを起動しようとしている箇所です。これで何日か悩みました。
でkick.romファイルが壊れているという結論になりました。そこで某所からダウンロードしたkickstart_2.0.romファイルなるものを使いました。
すると再びpitormが動作開始しました。なおPi2Wにkick.romファイルを転送するには初めてWinSCPを使いましたが、これは便利ですねぇ。
Pi2Wのpistormディレクトリに転送したkickstart_2.0.romファイルの名称をkick.romに変更します。
mv kickstart_2.0.rom kick.rom
(後々、考えてみるとAmigaForeverのkick.romが壊れていた、というのでは無いようですね。というのもこう言ったソフトでkickstartROMファイルをチェックする際、どうやらCheckSumを調べているようなのです。つまりAmigaForever11版のROMファイルは新しいので、古いpistormソフトでは認識してくれないというのが実情のようです。)
ここで簡単にAmigaOSの説明をしますとkickstartというのはMS-DOSのようなものです。まあOSです。そしてその上に乗っかるのがWorkBenchです。これはMS-DOSの上に乗っかったWindowsという例えでしょうか。まあGUI-interfaceですね。でAmigaOSには世代がありまして、
最初のAmiga1000には
kickstart1.2
次の世代Amiga500,Amiga2000には
kickstar1.3
という具合です。ですのでAmiga500などが新しいOSを使おうとするとkickstart2.xなりのROMチップを海外から個人輸入しないといけませんでした。それを思うとネットからダウンロードしたファイルを使えるのですから便利になりました。