ラッピングで作ったZ80ボード(SBC)とcpm8266で同じプログラムを実行してみました。
両方ともMac OS X(El Capitan)のcuコマンドでオペレーションしています。SBCの方はFT2232直結でcpm8266はBluetooth接続です。
動かすコードはこれです。
ファイルの拡張子がtxtなのはいつも使っているMacではなくてWin7の秀丸で打ち込んだためです。
SBCは0x8000からの後半32KがRAMで、0x8000のアドレスでリンクします。モニターにEfexMonを使っていて、これのLコマンドでIntel Hexを読み込ませます。
cuのコマンドモードに入るにはリターンキーを押したあとにチルダ(~)を入力します。ちょっとタイミングが難しいかもしれません。
EfexMon By M.PEKER v1.0b
Press H for help
Ready.
Hex Loading...~+ cat TEST1_SBC.hex
loaded adress:$8000
C:\>
C:\>G-$8000 1.2345678D 02
CP/Mではコマンドは0x100から始まるので、このアドレスでリンクします。
cpm8266ではMac側で下記のxmodemコマンド(xs)を使いファイル転送します。
xmodemのオープンソースはいくつかありますが、cpm8266のコマンドと相性が悪く使えなかったので、自分で作りました。今回色々整理していて、久しぶりに手を入れて標準入力での処理を追加してcuのコマンドモードから使える様にしました。
cpm8266 - Z80 Emulator and CP/M 2.2 system version 0.4
62K CP/M v2.2 [cpm8266 v0.4 - SmallRoomLabs]
a>f:
f>a:xr test1.hex
CP/M XR - Xmodem receive v0.1 / SmallRoomLabs 2017
~+ ./xs TEST1.hex
File TEST1.HEX received successfully
f>
f>a:load test1
FIRST ADDRESS 0100
LAST ADDRESS 11FE
BYTES READ 10FF
RECORDS WRITTEN 22
f>test1
1.2345678D 02
SBCは4MHzのZ80でcpm8266の方が早いような気がします。
マイコンは1980年くらいからやっていて、当時CP/Mは高嶺の花で、あったらすごいことができそうな気がしたのですが、できることは同じでした。
80年代前半にはワンボードコンピュータのEX-80とPC-8001を持っていて、これをつないでなんかできないかなと考えていました。コンピューターとコンピュータをつなぐ事がライフワークになってる気がします。
Z80はこのSBCやESP以外にもPC-8001やPLUS80があります。
screenコマンドでxmodemをapplescriptで実行してみました。
-- cd on hex file directory and lunch screen command and open cpm8266 before run this script
set xfile to the text returned of (display dialog "Send File?" default answer "")
tell application "Terminal"
activate
do script "a:xr " & xfile in front window
tell application "System Events"
tell process "Terminal"
-- screen command
key code 0 using {control down}
delay 1
keystroke ":"
end tell
end tell
do script "exec !! /Users/hiroki/Develop/Z80/xm/xs " & xfile in front window
end tell