ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます
当記事は2009年11月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 2011.6.30
前へ
次へ
目次へ戻る
ホームページトップへ戻る
☆ND80ZVに機能を追加します
[第41回]〜[第44回]まで4回にわたって紹介しましたUSBを使ったリモートプログラムのほかにも、さらなる機能の追加を思いつきました。
その機能とは…。

[第47回]

●ND80ZVの改造作業

前回も説明しましたように、ND80ZVのモニタROMは32KBの27C256を使っているのですが、そのうち実際にプログラムが書かれていますのは0000〜1FFFの8KBだけで、残りの24KBは完全に空いています。
で、つい、悪魔にそそのかされて、その空いているところに、当社のZBKボードに搭載しておりますBASICシステムを乗っけてしまおうという、とんでもないことを思いついてしまいました。

いろいろ確認してみましたところ、ちょうどうまい具合に、BASICシステムのベースになる部分のプログラムがアドレス1000〜3FFFを中心にしたあたりに書かれていることがわかりました。
そうしますと、ND80ZVモニタROMの、逆アセンブラさえ外してしまえば、とりあえずBASICシステムのベーシックな部分(シャレです)のプログラムはなんとかおさまりそうです。

まあ、逆アセンブラにつきましては、DOS/V上で動作するZ80逆アセンブラがありますから、それをサービスプログラムとして提供することにすれば、ROM上の逆アセンブラはなくてもよいのでは。
というよりも、はっきり言ってしまえば、この逆アセンブラが邪魔で、これを外さなければ、BASICの移植はメモリ不足でできません。ですから、しかたがありません。そういうことになります。

では、逆アセンブラさえ外してしまえば、そこそこうまくBASICシステムがうまくのっかってしまうのか、といいますと、ことはそうは単純ではありません。
これも前回書いたことなのですが、ZBKボードのBASICシステムプログラムはアドレス0000〜3FFFの範囲に、バンク切り換えを使って多重に割りつけてありますから、それを1000〜7FFFの範囲に配置し直さなければなりません。
もとのプログラムは2KBに分割された各バンクにそれぞれおさまるように作られています。
それをリニアに並べ直さなければなりません。
当然各モジュール間で互いにCALLしたりジャンプしたりしているアドレスも変わってしまいます。
これはけっこう大変な作業になりますから、いきなりROMに焼いたって、すぐにそれが動いてくれる、なんて簡単なものではありません。
おそらく繰り返して、かなりの回数のデバッグが必要になると思います。

そういうことからしますと、アドレス0000〜0FFFの範囲だけがROMで、あとのメモリ範囲は、全部RAMであるようなシステムがあると、とても助かります。
RAM上でなら、デバッグも比較的楽に行えますが、それをいきなりROMに焼いてしまったら、ソフトウェア的なデバックはほとんど不可能です。

最初はアドレス8000〜のRAMにBASICシステムプログラムをもっていってそこでデバッグを始めたのですけれど、やっぱりそういう中途半端なことではなかなか作業がはかどりません。
アドレス8000〜で動作するようにプログラムを直して、そこでデバッグしても、最終的には1000〜にまた移植し直さなければなりませんから、二度手間になってしまいます。

しばらくどうしようか迷っていたのですけれど、覚悟を決めました。
BASICプログラムの移植、デバッグのために、アドレス1000〜7FFFをRAMにするための改造作業にとりかかりました。
あ。といいましても製品のND80ZVのメモリをそのようにしてしまう、ということではありません。
あくまで試作ボードのみの改造作業です。

これはND80ZVのメモリ部分の回路図です。

その回路を、下のように改造します。

もとの回路図の真中あたりにRAMを追加しています。
図の左上に追加したチップセレクト回路がポイントです。
74HC138でアドレス0000〜0FFFのみアクティブになる信号を作ってROMのCE、OEに入れます。
同じ信号を今度は逆にその範囲だけ非アクティプにするために使い、インバータとNANDゲートから、増設RAMのCEに入れる信号を作ります。
こうすることで、ROMは0000〜0FFFのみアクセスでき、また外部に増設するRAMはアドレス1000〜7FFFの範囲をアクセスできるようになります。

ND80ZVの試作基板を改造してRAMを増設しました。

アドレスの下位8ビットA0〜A7とデータバスD0〜D7は外部拡張用コネクタに配線してありますから、せめてそれだけの配線だけでも手間を省くため、同じ配線仕様のZBK基板のメモリ部分を利用しています。
最初はRAMもジャノ目基板に配線するつもりでICソケットを取り付けたのですが、そのあとで既存の基板が利用できることに気が付きました(気が付くのが遅い!)ので、ICソケットについてはそのまま放置してあります。

増設した基板部分を拡大した写真です。

上の回路図では増設したRAMのセレクト信号は74HC00を使っていますが、NANDゲートなら何でもよいので、たまたま手元で余っていた74HC10を使いました。
RAMは東芝のTC55257を使っていますが、これもたまたま試作用のパーツ箱から出てきたものを使っただけで、それ以外に深い意味はありません。
62256互換なら何でもよいのです。

こちらは基板の裏側です。

CPUをつくろう!第532回(2010.6.23upload)を再編集

ワンボードマイコンをつくろう![第47回]
2011.6.30upload

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