今回は久しぶりに PC-8001 について解説してみたいと思います。


  • PC-8001のメモリ空間
PC-8001のメモリマップ
PC-8001のメモリ空間は Z80 が扱える範囲である $0000 ~ $FFFF までとなっています。このうち $0000 からは、多くの Z80 CPU 搭載パソコンではシステム ROM が配置されています。理由はリセットで PC(プログラムカウンタ)が 0 クリアされて、$0000 番地から処理が再開するためです。

PC-8001 は以上の特性から N-BASIC ROM を $0000 から $5FFF まで配置しています。プログラム格納用の RAM は 16KB 標準状態では $C000 から $FFFF までとなっています。うちの $Ex00 から BASIC ワークエリア、$F300 からがテキスト VRAM エリアとなっています。$FEB8 から $FFFF は未使用です。RAM を 32KB に拡張した場合は、$8000 から $FFFF までが RAM エリアとなっています。


  • メモリ空間の隙間を活用
さて、このメモリマップを見て、空間に隙間があるのに気が付きますでしょうか。$6000 から $7FFF の 8KB の空間です。PC-8001mk2 だと拡張スロットの下に、この部分を ROM や RAM にするための ICソケットがあったりします。ここを RAM 拡張すると、私が作成した Newシティヒーローではそれを検知して、オープニングデモやエンディングデモを追加実行できるようになっています。

さて、この空間に ROM を差し込むことで、PC-8001 は自在に機能拡張が出来るような設計になっています。この時、特定のアドレスに特定の値が書き込まれていると、N-BASIC はそれを検知して、特別な動きをするように出来ていたりします。

$6000 $41,$42,$00
アスキーコードでは "AB" です。これが $6000 番地に含まれていると、N-BASIC のコールドスタート処理の途中で、$6002 番地にジャンプするようになっているのです。$6002 の $00 は PC-8001mk2 のための識別子です。PC-8001 では最初の2バイト "AB" だけで問題ありませんが互換性を考えると 3バイトを設定するほうが良いと思います。なぜこんな事になるのかと言うと、N80-BASIC は $0000 から $7FFF までを使っちゃってるためですね。なので、それと差別化をするために $6002 に $00 が必要となっているのです。

この仕組みですが、たった一つだけ問題があって、N-BASIC ver1.0 だとなんと起動時の "AB" 判定がなかったりするのです。なので絶対に動作するわけではなかったりします。PC-8001mk2 なら間違いなく動作するのですけどね。


  • モニタコマンドの拡張
この拡張 ROM の活用はもう一つ仕組みが用意されています。それがモニタコマンド MON の拡張です。$7FFF に $55('U')が書き込まれていると、MON 実行時に通常のモニタには移行せず、$7FFC にジャンプするようになります。以下のように記述すると、MONコマンド発行時に EXTCMD にジャンプしてきます。

$7FFC JP EXTCMD
$7FFF DB 'U'
この機能を使えば、モニタを拡張して例えば S コマンドでの入力時は 256 単位でアイ・オー形式によるマルチダンプサム状態での入力とか、D コマンドで単なるダンプではなくディスアセンブルリストでの出力みたいな拡張も可能となります。


  • 実際の活用例
既にこの拡張エリアを活用した実例は存在します。自分が手元で確認できたのは @yanatoku さんによる PC-8001_SD, PC-8001mk2_SD という、SDカードによるロードセーブ拡張コマンドです。制御コードを $6000 からの拡張エリアに配置して、起動時に自動実行で BASIC にコマンド拡張を施しています。

なお、この SDカード拡張ボードの有無は

$6000 $41,$42,$00,$18,$1C,$00,$C3
この並びが保証されると @yanatoku さんに説明されています。こちらの羅列を判定して、同一であれば N-BASIC 内の CMT コールを SDカード拡張コマンドルーチンエントリーに変更するプログラムを記述すれば、自動的に高速ロードに対応できたりします。拡張ファイル名指定からの追加読み込みも対応していただいてますので、これを活用すると事実上のランダムファイルアクセスが出来てしまいますから、本当に凄いことが出来たりするのではないでしょうか。

このあたりの公開されているエントリポイントについては以下を参照してください。
※ タニタのスマホ連動型体組織計です。気軽に計測できて便利です。私は最近こちらを購入して妻と使っています。
オムロン OMRON 公式 体重体組成計 デジタル HBF-230T-SW シャイニーホワイト 体重計 体組成計 体脂肪 基礎代謝 筋肉量 スマホ スマホ連動 iPhone 連動 アプリ Bluetooth ブルートゥース 乗るだけ 自動 高精度 ヘルスメーター 送料無料 おしゃれ【楽天】
オムロン OMRON 公式 体重体組成計 デジタル HBF-230T-SW シャイニーホワイト 体重計 体組成計 体脂肪 基礎代謝 筋肉量 スマホ スマホ連動 iPhone 連動 アプリ Bluetooth ブルートゥース 乗るだけ 自動 高精度 ヘルスメーター 送料無料 おしゃれ
※ タニタと同じ機能を持つ同程度の金額のオムロン製品です。タニタとどちらが良いかは、自分がどちらのメーカー推しかで判断すれば良いかと思います。