mz-80K Display
V−RAM ディスプレイコードとアスキーコード左がディスレイコード、右がアスキーコード ディスプレイコードの並び方が一見バラバラにみえますが Aにはクローバー、チ、Bには逆三角、コ...と000H−0BFHまで 通常、シフト、カナと040Hスライドしていきます この方式は海外仕様の本体でもCGROMの変更だけで済みます
![]()
40×25の1000文字を0D000H−0D3E7HのV−RAMに割り当てられています。 ここにディスプレイコードを書込むとキャラクタ文字が出るわけです。 また、CPUメモリなのでプログラムを書いて実行もできますが その部分は当然ディスプレイコードで表示されます。 領域は1KBなので0D3E8H−0D3FFHは未使用(空き)となります またミラーとなるので0D400H、0D800H、0DC00Hは0D000Hと同じになります VRAMに直接書き込むデータはディスプレイコードを書き込みますが システムコールではアスキーコードで書き込む場合があります ディスプレイコード040Hと080Hのスペースにはmz−700で新たにキャラクタが定義されています ここをスペースとして使うとMZ−700以降では画面が化けます したがって通常のスペースは000Hを使用する事が望ましい事になります。
アクセス方法 VRAM領域にある0D000H−0D3FFHにディスプレイコードを書き込むだけなのですが /VBLANK期間内(4ms)に書き込まないと一瞬画面にゴミのようなものが出てチラツキが発生します そこでPPI /VBLANK PC7=1からPC=0になるまで監視する必要があります この監視部分が、かなりの速度低下につながります。 なにしろ全VRAMをLDIRのブロック転送でチラツキ無しでは 3回ほど分けないといけません またmz−80A/1200/700/1500では CRTCによるサイクルスチールで監視する必要はなくなりました。(ただしWAITが入る様になります) 監視はPC=0のチェックだけでは、すぐに/VBLANKが切り換わってしまう場合(PC7=1)もあるので PC7=1からPC=0のチェックになります。 LOOP0:LD A,(0E002H) ;Waiting /VBLANK=1 RLCA JR NC,LOOP0 LOOP1:LD A,(0E002H) ;Waiting /VBLANK=0 RLCA JR NC,LOOP1 |
mz−80Kのコーナへ Home へ戻る