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

マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[総合第3回]


●ND8080およびMYCPU80のための対策

またまた間が空いてしまいました。
最後の追い込みというところなのですが、なかなか思うようにはかどりません。
今まではCRTインターフェースボードとSDカード+キーボードインターフェース基板をND80Z3.5に接続して、ハード、ソフトのテストをしてきました。
いよいよ最後のツメの段階です。
「マイコン独立大作戦」はND80Z3.5(ND80ZV)だけではなくて、ND8080も、MYCPU80も作戦の対象として考えています。
いずれもND80Z3.5とはハードも違い、ソフトも異なります。

しかしいきなり全方面作戦ということになりますと、もう収拾がつかなくなってしまう恐れが大であります。
ですのでとりあえずはND80Z3.5に限定して作業を進めてきました。
やっとなんとかめどがついてきましたので、ここらでND8080やMYCPY80での接続動作テストもしておくべき、と考えました。
プリント基板の設計変更作業もやっと最後の段階まできました。
基板ができてきてから、ND8080やMYCPU80には接続できません、なんてことになったらまた作り直しです。
そのようにならないために、とにかくざっと概略の接続テストだけでも済ませておきたいと思ったわけです。

しかししかし、言うは易く行なうは難し、であるのは世の常であります。
いずれ整理して少しずつ説明をしていくつもりですが、まずはCRT/VGAインターフェースのメモリマップの問題を片付けなくてはなりませんでした。
CRT/VGAインターフェースは80字×25行、つまり2000字(2KB)のビデオRAMで、CPUから見るとただのRAMに見えます。
そこに文字コードを書くと、それがそのままCRT/VGAインターフェースボードに接続したディスプレイに表示される、という回路になっています。
このVRAMのアドレスはRAMの一番後ろ、F800〜FFCFまでのちょうど2000バイトのエリアに割り当てられています。
もちろんそのアドレスにはCRT/VGAインターフェースボードを接続する前からRAMが実装されています。

それとの競合をどうするか?
というのが最初の問題でした。
VRAMと通常のRAMを切り換えて使うようにできれば一番よいのですが、そのようにしようとすると、その昔ND80ZVに増設RAMを接続するためにND80ZVの側を改造しなくてはならなかったのと同じことになってしまいます。
今度はND80ZVだけではなくてND80Z3.5もND8080もMYCPU80も同じように改造しなくてはなりません。
その案は事実上不可能です。

でどう考えたか、ということですが、ここは割り切ってF800〜FFCFはVRAM専用にしてしまうことにしました。
何も考えないでそのアドレスにCRT/VGAインターフェースボードのVRAMを割り当ててしまいます。
普通にそのようにすると当然RAM同士がぶつかって誤動作の原因になります。
そこでぶつからないようにCRT/VGAインターフェースボードのVRAMはWRITEオンリーにしました。
書き込みはできますが読み出しはできません。
一方ND80Z3.5(およびその他のCPUボード)のRAMはどうなるか、といいますと、それは今までどおりREADもWRITEも普通にできます。
どういうことかと言いますと、VRAMに文字コードを書き込むと、同時に同じアドレスのCPUボード上のRAMにも同じ文字コードが書き込まれます。
そのアドレスを読むとCPUボード上のRAMから読み出されますが、それはVRAM上の同じアドレスに書き込んだデータと一致します。
それで問題はありません。
それで問題なく機能することはちゃんと確認済みです。

問題はCRT/VGAインターフェースの概要が固まるよりも以前にND80Z3.5(ND80ZV)もMYCPU80も存在していた、という点にありました。
ND8080については同時進行のようなものでしたが、まだCRTインターフェースは先の話ということで、それについては考えないことにして、ND80Z3.5やMYCPU80と同じシステム構成で考えました。
そのどこが問題かといいますと、F800から後ろのエリアもシステムのワークエリアとして使っていたのです。
そこに表示データを書き込んだりしたら、システムがメチャメチャになってしまいます。
ということは、CRT/VGAインターフェースボードを接続して使うためには、まずF800からうしろのエリアにあるシステムのワークエリアをそれより前方に移動させなければならない、ということです。
いい加減なところに移動すると、他のエリアと重なってしまったり、複数のシステムプログラムで共有しているワークエリアに異なるアドレスを割り当ててしまうことになりかねません。
いうなればシステムプログラムの再構築です。

ND8080のシステムプログラムもMYCPU80のシステムプログラムも機能ごとに分けて作成した複数のプログラムから成っています。
それをひとつづつ確認しながらワークアドレスを変更していくというなかなかに面倒な作業です。
こんな感じです。

プログラムを変更して、アセンブラに通して作成したバイナリファイルは最終的にまとめてROMに書き込みます。
そういう作業もご覧のようにND80Z3.5で行ないます。
上はND8080のシステムROMを作成中の画面です。

ND80Z3.5に接続したROM WRITERを使って27C256に書き込みます。

このようにして作成したROMを実装して、いよいよND8080とMYCPU80にCRT/VGAインターフェースボードとSDカード+キーボードインターフェースを接続しての動作テストです。

次回に続きます。

CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第3回]
2017.2.9upload

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