Norihiro Kumagaiさんが開発したCP/Mega88 on Picoは超シンプルなCP/Mマシン。どのくらいシンプルかっていうのが下の写真。まんまRaspberry pi Pico(以下Pico)だから、もはや電子工作ですらない。ボクは過去に何回かCP/Mマシンを作ろうとして挫折しているが、さすがにこれは失敗しない。簡単に動いてくれたので、ここに過程をまとめておく。
クローニングとビルドの手順を下に示す。必要な操作が濃い文字、それに対する反応が薄い文字。Picoの実行ファイルはcpmega88.uf2の名前で作成される。Raspberry Pi OSの場合、それを/bootへコピーしておくとSDカードをパソコンへ差し替えて取り出せる。パソコンでcpmega88.uf2をPicoへ入れ、とりあえずフロッピーなしのCP/Mマシンが完成。
pi@raspberrypi:~ $ git clone https://github.com/tendai22/cp-mega88-pico.git
Cloning into 'cp-mega88-pico'…
remote: Enumerating objects: 288, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (132/132), done.
remote: Total 288 (delta 205), reused 232 (delta 153), pack-reused 0
Receiving objects: 100% (288/288), 128.67 KiB | 460.00 KiB/s, done.
Resolving deltas: 100% (205/205), done.
pi@raspberrypi:~ $ cd cp-mega88-pico
pi@raspberrypi:~/cp-mega88-pico $ git checkout develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
Switched to a new branch 'develop'
pi@raspberrypi:~/cp-mega88-pico $ cmake .
Using PICO_SDK_PATH from environment ('/home/pi/pico/pico-sdk')
PICO_SDK_PATH is /home/pi/pico/pico-sdk
Defaulting PICO_PLATFORM to rp2040 since not specified.
Defaulting PICO platform compiler to pico_arm_gcc since not specified.
-- Defaulting build type to 'Release' since not specified.
PICO compiler is pico_arm_gcc
-- The C compiler identification is GNU 8.3.1
-- The CXX compiler identification is GNU 8.3.1
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/arm-none-eabi-gcc
Defaulting PICO target board to pico since not specified.
Using board configuration from /home/pi/pico/pico-sdk/src/boards/include/boards/pico.h
-- Found Python3: /usr/bin/python3.9 (found version "3.9.2") found components: Interpreter
TinyUSB available at /home/pi/pico/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB.
Using PICO_EXAMPLES_PATH from environment ('/home/pi/pico/pico-examples')
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/cp-mega88-pico
pi@raspberrypi:~/cp-mega88-pico $ make
Scanning dependencies of target ELF2UF2Build
[ 1%] Creating directories for 'ELF2UF2Build'
[ 2%] No download step for 'ELF2UF2Build'
《途中省略》
[ 96%] Building C object CMakeFiles/cpmega88.dir/home/pi/pico/pico-sdk/src/rp2_common/pico_unique_id/unique_id.c.obj
[ 98%] Building C object CMakeFiles/cpmega88.dir/home/pi/pico/pico-sdk/src/rp2_common/hardware_spi/spi.c.obj
[100%] Linking CXX executable cpmega88.elf
[100%] Built target cpmega88
pi@raspberrypi:~/cp-mega88-pico $ sudo cp cpmega88.uf2 /boot
pi@raspberrypi:~/cp-mega88-pico $
Picoをパソコンに接続し、端末ソフトを開く。この時点でもうCP/Mega88 on Picoが動いているが、念のためPicoを抜き差しして再起動させるとあらためて一連のメッセージが読めるからわかりやすい。これが、フロッピーなしのCP/Mマシンに相当。そこへフロッピーを装着する。まず、プロンプトにxrを入力し、PicoでXMODEMの受信を開始する。
ボクが過去にCP/Mマシンを作ろうとして挫折したことは冒頭で述べたとおり。もうひとつ、Picoを動かすことにも挫折していて、買ってすぐLチカをやったきりになっていた。その両方をCP/Mega88 on Picoが実現してくれた。いやまだ独自のプログラムは書けないが、動く実例が与えられたのだからソースを見て研究しようと思う。
レトロCPUがまだレトロではなかったころMC6809EとMC6883を入手した知人が自作のコンピュータを見せびらかしに来て以来ボクはずっとそれらに憧れがあった。MC6809Eは比較的入手しやすい。MC6883は少なくとも国内だと入手困難。何かの機会にそんな話をしたところRetro PC Galleryを運営するはせりんさんが手持ちのMC6883をプレゼントしてくださった。おかげで下のようなコンピュータを完成できたから情報をまとめておく。