MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第78回]
●MYCPU80にリモートモニタプログラムを組み込んでいます
また何日か更新できませんでした。
[第75回]でとりあえずZB3DOS(CP/M互換DOS)が起動するところをお見せしました。
そのあと続けてその作業を進めていくつもりだったのですが、急いでここまで進めてきましたので、あちこちにやり残した作業があって、それが気になりだしました。
今はZB3DOSのBASICプログラム部分がだいたい完成したところです。
ここから先、さらにZB3DOS(CP/M互換DOS)の組込み作業を進めていくには、BASICプログラム部分をROM化しなければなりません。
現在はデバッグのため拡張RAM上に置いています。
Legacy8080はフルRAM構成で標準で512KBもありますから、余裕でZB3BASICもRAM上に置けるのですが、MYCPU80の場合にはND80ZV(ND80Z3.5)と同様に標準でROM32KB+RAM32KBのところに、ROMと同じアドレスにRAMを32KB増設するだけの構成になっています。
ZB3BASICシステムはアドレス0000〜7FFFに配置しますが、そのアドレスはCP/Mではユーザー用トランジェントエリアになります。
同じアドレスにZB3BASICプログラムを配置するにはどうしてもROMにするしかありません。
もっともCP/Mさえ起動しなければ、増設RAM上にZB3BASICを置いても問題はありませんから、せっかくこうやって作業もしていることでもありますから、RAMバージョンもROMと一緒に供給してもいいのでは、と思っています。
それはともかくとしまして。
とにかくどこかの時点でROM化しなければなりませんから、ROM化する前にできることはやっておこう、と考えました。
ND80ZV(ND80Z3.5)のROMにはZB3BASICのほかにマシン語モニタコマンドが含まれています。
そのほかにリモートモニタプログラムというのも入っています。
USBでパソコンと接続してND80ZV(ND80Z3.5)のキーボードとLEDの代わりにパソコンのフルキーボードから入力して、それをディスプレイ画面に表示させるプログラムです。
同様のプログラムはMYCPU80にもRAM上で動くユーザープログラムとして付属していますが、ND80ZV(ND80Z3.5)の場合にはROMに組み込まれていてもっと高機能です。
ブレーク機能やメモリダンプ、トレース機能などもあります。
せっかくですから、それもMYCPU80に組み込んでしまうことを思いつきました。
しかしマシン語ツールとはいえ、これもまたなかなかに複雑なつくりになっておりまして、それでこの数日間またもや苦闘していたのです。
あ。
つい、過去形で書いてしまいましたが、今も苦闘は続いております。
現在進行形であります。
というか、それもやっと少し動き出しただけのところです。
ともあれ、この数日間でやっと、少しは動くところまできましたので、ほんの少しですが現況のご報告です。
4桁+4桁の数値はMYCPU80の7セグメントLEDの表示をモニタして表示しています。
[RD+][RD−][ADRSSET][WR+]はTK−80回路のキーボードから入力する代わりにパソコンのフルキーボードから入力したものです。
[RD+]は[+]キー、[RD−]は[−]キー、[WR+]は[Enter]キー、[ADRSSET]は[.](ピリオド)を使います。
おっと、ちょっと[RD−]の部分にバグがあるようです。
このリモートモードはZB3DOSの下層に組み込まれていて、パソコンと接続すると、最初はこのモードで始まります。
[z]を入力するとZB3BASICにエントリします。
ここまで、MYCPU80で動作しています。
ND80ZV(ND80Z3.5)と同機能ですので、ちゃんとログも取れています。
logfile mycpu80log\12082145.txt open mzbdos2n2 2014.11.30 by Chunichidenko MYCPU80に接続しました(9600bps) 0001 0020 - [RD+] 0002 2003 - [RD+] 0003 03C3 - [RD+] 0004 C355 - [RD+] 0005 5503 - [RD-] 0004 0355 - [RD-] 0003 55C3 - [RD-] 0002 C303 - 8000[ADRSSET] 8000 0012 - ab[WR+] 8001 AB34 - cd[WR+] 8002 CD56 - [RD-] [RD-] [RD-] 8000 CDAB - z 1000 00C3 - *** mycpu80 zb3basic **** >help TEXT 8004-8060 ヘンスウ DFFB-DFFF >list 10 FOR A=0 TO 10 20 PRINT "a=";A,"sqr(a)=";SQR(A) 30 NEXT A 40 PRINT "end" >run a=0 sqr(a)=0 a=1 sqr(a)=1 a=2 sqr(a)=1.41421 a=3 sqr(a)=1.73205 a=4 sqr(a)=2 a=5 sqr(a)=2.23607 a=6 sqr(a)=2.44949 a=7 sqr(a)=2.64575 a=8 sqr(a)=2.82843 a=9 sqr(a)=3 a=10 sqr(a)=3.16228 end >/exit 0000 00C3 - リモート接続を終了しました logfile closed at Mon Dec 08 21:50:44 2014 |