2014.12.22

前へ
次へ
ホームページトップへ戻る

MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!


[第86回]


●CP/M移植のための準備作業

このところMYCPU80にTK−80モニタのリモートプログラムを移植して、その機能追加をしてきました。
はじめはROM化をする前にもう少し改良などをしておこう、という気持ちだったのですが。
途中から、これはひょっとすると、CP/Mの移植作業に役立つかもしれない、と思い始めてきました。

当記事のそもそものテーマであります、MYCPU80にZB3DOS(CP/M互換DOS)を移植するということについて、ついこの間までは、それはND80ZV(ND80Z3.5)でZB3DOSが動く仕組みと全く同じものを考えておりました。
その仕組みにつきましては「ワンボードマイコンでCP/Mを![第160回]」前後に詳しく書いています。

それと同じものということは、まず現在のMYCPU80に実装しておりますTK−80プログラムROMをZB3BASICシステムROMに置き換えて、それからそのROMと同じアドレス(0000〜7FFF)にRAMを増設したうえで、8000〜FFFFのRAM上にZB3DOS(CP/M互換DOS)をロードして、必要に応じてROMとRAMを切り換えて使う、というシステムになります。

実際そのROMにはパソコンと接続してパソコンからキー入力し、そしてパソコンのディスプレイに文字出力するための仕組みが全て入っていますので、必要に応じてバンクを切り換えてその機能を利用する、というのは合理的な考えではありました。

しかしMYCPU80に同じ仕組みを組み込むための作業をしていくなかで、ROMに切り換えないでやっていく方法も検討してもよいのでは、と思うようになってきました。
基本方針の変更です。

ND80ZV(ND80Z3.5)でZB3DOSを動かす場合に、ROMに切り換えてZB3BASICの機能をCALLするのは、突き詰めればキーボード入力とディスプレイ出力の2つの機能に集約されます。
ZB3DOSを開発していく過程では、余りにやらねばならないことが多すぎたため、既存のシステムをCALLして使う、というところに落ち着きました。
さらに言えば、そのようにすることによって、ZB3BASICのデバッグ機能も利用することができるという大きなメリットもありました。

しかし、MYCPU80にZB3DOSを組み込むという作業を進めていく中で、キーボード入力、ディスプレイ出力も、なんとかZB3DOSのBIOSに組み込んでしまうことができそう、という見通しが立ってきました。
そのようにできれば、わざわざバンクを切り換えてROMのルーチンをCALLする必要はなくなります。

いえ。
それはそうなのですが、そのようにした場合にひとつ問題が残ります。
MYCPU80にZB3DOSを組み込む過程ではおそらくすんなりとは組み込めず、デバッグの必要が出てくるに違いない、という予測についての対処をどうするか、という問題です。
それがひっかかっていたのですが、このところのリモートプログラムの機能追加によってどうやらその問題もクリアできそうに思えてきました。

ND80ZV(ND80Z3.5)でのZB3DOSでは、ZB3BASICのマシン語モニタのデバッグ機能をバンク切換えで使うことができるようにしました。
当初はMYCPU80でも同じようにするつもりだったのですが、このところのリモートプログラムの改良によって、デバッグ機能もそこそこ使えるレベルになりました。
これをうまく利用すればROMをCALLしなくてもデバッグ機能をもRAM上に置くことができるかもしれません。

それならもう少し高機能なZB3BASICのマシン語モニタプログラムをRAM上に置いたらなおよいではないか、といわれるかもしれません。
しかし、それはそれほど簡単ではないのです。

ZB3BASICのマシン語モニタプログラムは4KBあります。
それをRAM上に置くとしたら、常識的にはZB3DOS(CP/M互換DOS)の後方に置くことになります。

参考までに現在の時点でのMYCPU80用ZB3DOSのRAM上でのメモリマップは次の通りです。

CCP   CC00−D3D3
BDOS  D406−E132
BIOS  E200−E57B
ワークエリア E600−E9FF

ということなので、EA00−FFFFはとりあえず空いています。
なのでそこに4KBのマシン語モニタプログラムを置くことはとりあえずは可能なように思えます。
しかし問題はZB3BASICの作業領域です。
これが実はF000から後ろにしっかりと割り当てられてしまっているのです。
それを整理して再配置するのはちょいと大変です。

そこにいきますと、このところ作業をしてきましたリモートプログラムは、もともとのTK−80モニタプログラムから比べますと随分大きなプログラムになってきましたが、それでもまだ2KB弱です。
作業領域もFF00−FFFFにまとまっています。
これなら余裕でRAM上に配置できそうです。

本日は時間がなくなってしまいました。
次回に続きます。

MYCPU80でCP/Mを![第86回]
2014.12.22upload

前へ
次へ
ホームページトップへ戻る