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

新製品の紹介(プチ連載です)
27C256WRITER組立キット

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
たまにはちょいと息抜きで小品も作ってみたいものです。
簡単にチョイチョイと…。
でも、なかなかそうは簡単にはいかなくて、いつものごとく回を重ねてしまうことになるのかも…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜


[第16回]


●27C256WRITERプログラムはRAM上に置きます

[第14回]でリストをお見せしました27C256WRITERプログラム(テスト版)はRAMアドレスC000〜に置きました。
テストプログラムはそれで良いのですけれど最終的な本番のプログラムもそこに置くというのはちょっとみっともない話です。
C000番地台はZB3BASICのユーザーエリアの中にありますからBASICプログラムの実行によってプログラムが破壊されてしまう可能性もあります。

最初はZB3BASIC ROMに組み込むことも考えました。
ずっと昔に作ったBASICボードなどでは当然WRITERプログラムもシステムプログラムの一部としてROMに組み込んでいました。
しかしよくよく考えてみると、今回のシステムではROMに組み込むのは不利であることがわかってきました。
その理由は2つあります。

理由の1つ目は。
27C256WRITERプログラムはZB3BASICの機能というよりもアプリケーションのひとつと考えるべきです。
アプリケーションプログラムが貴重なシステムROM領域の一部を占有するのは避けたいと思いますし、27C256WRITERを使わないユーザーにとっては何の価値もないプログラムということになりますからなおさら避けるべきでしょう。

2つ目の理由は。
すでに説明しましたように、27C256に書き込むためのデータ領域や書き込み済みの27C256から読み出したデータを格納するための領域として、ZB3DOS(CP/M互換DOS)のためにND80ZV(ND80Z3.5)やMYCPU80のアドレス0000〜7FFFに増設する「裏RAM」32KBを利用します。
このRAMは普段はシステムROMの裏に置かれていてアクセスできませんが、I/Oアドレス9CにFFを出力することでシステムROMをアクセス禁止にして、その代わりにアクセスできるようになります。
この「裏RAM」を有効にするとシステムROMにはアクセスできなくなりますから、0000〜7FFFの「RAM」にアクセスするプログラムは8000〜FFFFのRAMエリアに置くしかありません。
ZB3DOS(CP/M互換DOS)はもともとそのRAMエリアにLOADされますから、問題なく0000〜7FFFのRAMにアクセスすることができます。
ZB3DOSのマシン語デバッグコマンドを拡張して「裏RAM」にもアクセスできるようにしたDM@、CM@コマンドなどは、その本体はROMにありますが、「裏RAM」にアクセスするときだけ、ZB3DOS(CP/M互換DOS)のBIOSエリア(アドレスE200〜)のメモリREAD/WRITEサブルーチンをCALLすることで、一時的にアクセスをROMからRAMに切り替えています(DM@、CM@はワンボードマイコンでCP/Mを![第163回]以降をお読みください)。
27C256WRITERプログラムをROMに置くとDM@、CM@と同じことをしなければなりません。
これでは効率の悪いプログラムになってしまいます。
また、そのようにするためにはZB3DOSのBIOSルーチン(少なくともメモリREAD/WRITEサブルーチンだけでも)をあらかじめE200番台のRAMエリアにLOADしておかねばなりません。
どうせプログラムの一部をLOADしなければならないのなら、いっそのこと27C256WRITERプログラムそのものを(メモリREAD/WRITEサブルーチンも含めて)E200番台のRAMエリアにLOADしておけばいいではありませんか。

こうしてやっと方針が決まり、その方向で、あらためてあると良いと思われるプログラムの機能について考えをまとめていくうちに、これはなかなかにいい機能ではないかと思えるようなプログラムが出来上がってきました。

27C256WRITER組立キット[第16回]
2016.2.20upload

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