標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第449回]

●MYCPU80を発送しました

ご注文いただいておりましたMYCPU80キットを発送いたしました。
ご注文いただきました札幌市のAI様、横浜市のJH様、大変お待たせして申し訳ありませんでした。
JH様からは2セットご注文いただきましたので、2個口にて発送いたしました。
AI様、JH様、今後ともよろしくお願いいたします。
有難うございました。

●TK80との互換性について

このところZ80版TK80ボード(ND80ZH)についての説明をしております。
TK80と同じ動きをさせるために、TK80に搭載されていたモニタプログラムと一部を除いて同じものを載せ、さらにND80Zモニタプログラムも搭載するように考えました。
基本的な動作テストも終わったところなのでしたが。

むむ。
いや、やっぱり、なんとかしたいなあ。
ちょいと、考え込んでしまいました。

●システムワークエリアの問題

TK80のCPUは8080でしたが、アクセスできるメモリアドレスはZ80と同じ0000〜FFFFの64KBです。
しかしなにしろメモリの集積度も低く、当然高価でしたので、TK80にはROM0.75KB、RAM1KB(確か標準では0.5KB)しか搭載していませんでした。
問題はRAMのアドレスについてです。
TK80はRAM0.5KBを8200〜83FFに実装していました(8000〜81FFはオプション)。
システムワークエリアも83xx番地にありました。

ところで、われらがMYCPU80はROM32KB、RAM32KBを搭載しています。
RAMのアドレスは8000〜FFFFの32KBです。

TK80は7セグメントLEDの表示を行う、DMAのメモリアドレスとして、実装メモリの一番後ろのアドレス、83F8〜83FFを使用していました。DMAで直接コントロールするA0〜A2のアドレス線以外をプルアップしておくだけで、この83F8〜83FFをDMAアクセスすることができて、都合がよいからです。

MYCPU80の場合にも、同じ動作原理の回路を使いますから、DMAの対象となる、7セグメントLED表示バッファのアドレスは、FFF8〜FFFFになっています。
システムのワークエリアも、RAMの後ろに集めてしまうのが自然ですから、MYCPU80ではそのようにしました。

TK80とMYCPU80のメモリマップです。


[2010.3.7追記]
TK80はROM、RAMともにボード上最大実装時のメモリマップです。
TK80はメモリのアドレスデコード回路が不完全ですから、「未実装」と書いたメモリ範囲は、実際には、ROM、RAMそれぞれのイメージになります。
イメージとは、未実装のメモリアドレス範囲でも、実装部分のメモリがアクセスされてしまうことをいいます。
[追記ここまで]

TK80のモニタプログラムとMYCPU80に搭載したモニタプログラムは、たとえばLED表示とかキー入力ルーチンなどのエントリアドレスは同じですから、TK80のために書かれたプログラムで、モニタプログラムのサブルーチンをCALLしているようなプログラムも、MYCPU80で同じように実行することができる、はずです。

しかし、RAMのアドレスは違うのですよねえ。
7セグメントLEDバッファは、これはちょっとどうしようもありませんから、TK80用に書かれたプログラムで83F8〜83FFを直接アクセスしているところがもしあれば、そこはFFF8〜FFFFに書き直すしかありません(7セグメントLEDに0〜F以外の表示を行っているようなプログラムでは、83F8〜83FFを直接アクセスしています)。
でも、よくよく考えてみましたら、そのほかにも、LED表示のためのアドレスバッファとかデータバッファなどは、多分多くのプログラムでアクセスしているに違いありません。

その点については、当社のND80Zも、当初はRAMは1KBからスタートしましたし、ずっとあとになってからでも、せいぜい8KBくらいしか載せていませんでしたから、ワークエリアもTK80のそれと同じでやってきていました。
ところが、MYCPU80で、ごく自然に32KBのRAM62256を使うことにして、そしてことの成り行きで、TK80モニタを搭載するところまで考えた段階で、そのRAMワークエリアの互換性については、あまり深く考えないで、さきほどのメモリマップのような仕様にしてしまいました。

うーん。
で、考え込んでしまった次第です。

まあ、MYCPU80ユーザーの皆様は、8080アセンブラも供給いたしましたことでもありますから、なんとかそれでそこの部分は対応していただけたら、とそのように考えております。
あ。ですけれど、「そこのところで、実は、困っているのだわ」というユーザー様は、メールをくださいませ。
なんとか、対策を考えたいと思っております。

そこで、やっとお話をもとに戻しまして、今回のZ80版TK80ボード(ND80ZH)についてです。
ND80ZHにはアセンブラは附属しません(プリンタに出力できる逆アセンブラはモニタ機能としてついていますけれど)。
当然、16進コードでキーボードから入力することになります。
その場合、もしもTK80用のプログラム(16進コードの)を入力して実行してみよう、と考えたら、このメモリマップでは、やっぱりまずいでしょうねえ。

ということで、実は昨日から、せっかく動作テストまで済んだND80ZHのモニタプログラムを、もう一度再編集する作業をしていたのです。
その作業の結果については、というところで、本日は時間がなくなってしまいましたので、それについては、次回に説明させていただきます。
2010.3.6upload
2010.3.7追記

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