2017-02-19 13:52 — asano
昨日に引き続き、今日も珍しいCPUを紹介します。
これがZilog製のZ0800106PSC、Z8000 CPUです。Z8000にはセグメントに対応し64kBを超えるメモリ空間をサポートするZ8001と、セグメント非対応(メモリ空間は64kBまで)のZ8002があり、これはその前者ですね。それの6MHz版、48ピンのプラスチックDIPです。
「64kBを超える」とあいまいな書き方をしたのには訳があります。例えば8086のようにアドレス線がA19までであればメモリ空間は1MB等と確定できますが、このZ8001のアドレスはAD0~AD15までで、これ以外にセグメント番号SN0~SN6が出力されています。通常は外部にZ8010 MMUを接続してA23までのアドレスに変換するので16MBの空間をサポートします。あるいはSN0~SN6をそのままA16~A22とみなす、という乱暴なことをすればMMU無しで8MBの空間にアクセス可能です。
逆に頑張って独自のMMUを設計すればさらに大きなメモリ空間を用意できます。もちろんCPUから同時に見えているのは8MB分までです。
実はこのZ8001と同時にZ8010 MMUも入手しようと発注したのですが、モノが確保できなかったと注文がキャンセルされてしまいました。他にあたって再度入手を試みるか、「直結」の8MB空間で我慢するか、PLDで簡易MMUを作るか考えないといけません。
あと他の多くの16ビットCPUが8ビットバス版を用意しているか、バスサイジングで8ビットのサポートがありますがZ8000シリーズには16ビットバスしかありません。8ビットバスでよいならZ80を使えということでしょうか。
このようなマイナーCPUでボードを作るとなると問題になるのがソフトウェアをどうするかということです。幸いにしてこのZ8000シリーズにはCP/M-8000があります。今でも「The Unofficial CP/M Web site」から入手可能なのでこれを移植するのが現実的です。ここは「Unofficial」ですが、現在の権利者であるLineoの許諾を得ているので合法的に使用可能です。マニュアルもダウンロードできるので目次をサッと読んでみるとアセンブラやCコンパイラも含んでいるようです。
問題は簡単に移植できるかということですね。
CP/M-80はクロス開発したBIOSをバイナリレベルで結合すればよいのでCP/Mのディスクを読めればCP/Mのシステムがなくても移植可能です。
CP/M-86はやったことが無いのでわかりません。
CP/M-68Kは最終的にはBIOSをリンカでリンクする必要があるのでCP/M-68Kの環境が無いといけないのですが、移植用にダミーのBIOSをリンクしたバイナリが提供されています。このダミーをバイナリレベルで自分のBIOSと結合すれば一応システムが起動します。この仮システムはメモリ配置等に自由があまり無いのですが、この上で本システムの開発ができるというわけです。ボードを自作する場合はこの仮システムが動作するメモリ配置にしておく必要があります。
で本題のCP/M-8000なのですが、問題が2つ見つかりました。マニュアルをよく読めばもっと出てくるかもしれません。
一つはクロスアセンブラを持っていないこと。何とか探すか、最初のBIOSだけはハンドアセンブルするかです。
大きな問題は2つ目で、CP/M-68Kでは提供されていた仮システムが無いようなのです。あるのはOlivetti M20というシステム向けのもののみ。マニュアルにも移植にはM20が必要な方法しか書かれていないようです。M20の入手は絶望的なので、M20用のバイナリの中からBIOSを探し出して自分のBIOSと入れ替えるしか無いですね。
コメントを追加