MZ-2500の映像出力機能

 MZ-2500は、8ビットパソコンとしては複雑かつ強力な映像出力機能を装備している。


高解像度モード/標準解像度モード

 まず、高解像度モード(24kHz)と標準解像度モード(15kHz)の切り替えについて。これはカンガルーポケット内のCRTスイッチが「H」か「L」かによってハードウェア的に決定される。CRTスイッチが「H」なら21.47725MHzのピクセルクロックが、「L」なら14.31818MHzのピクセルクロックがCRTコントローラに入力される。CRTスイッチの状態はOPNのGPIO-B Bit6に入力されている。

 CRTコントローラの内部レジスタ 0Fh の Bit3 に「表示ライン数」という設定項目があり、これはCRTスイッチの状態と一致するように設定する。故意に逆の設定をしても画面が乱れるだけで、とくに利用価値はない。

 画面出力タイミングは各解像度モードで固定されており、タイミングを調整する設定はない。


テキスト画面とグラフィック画面の重ね合わせ

 MZ-2500は、水平型ビットマップ4プレーンからなる16色表示可能なグラフィック画面と、CGROM(ANK/漢字)またはPCGが8色表示可能なテキスト画面を持つ。グラフィック画面の上にテキスト画面が重ね合わされて表示される。重ね合わせによりテキスト画面の透明部分にはグラフィック画面が表示されるが、代わりにバックグランドカラーを表示する設定も可能。

 グラフィック画面をテキスト画面より上に表示させたい場合は、パレットの表示優先度を使う(後述)。


テキスト画面の解像度とグラフィック画面の解像度

 テキスト画面の解像度と、グラフィック画面の解像度とは、基本的には独立した設定が可能。ただし、テキスト画面の色モード(8色モード⇔64色モード)と、グラフィック画面の色モード(16色モード⇔256色モード)は連動するため、グラフィック画面を320×200 256色モードに設定した場合はテキスト画面の色表現に制限がかかる場合がある(後述)。


テキスト画面の解像度と色

 横80桁または40桁、縦25行または20行の設定が可能。ハードウェア上は縦12行という設定はなく、BASICなどのソフトウェアが縦25行モードの上で縦12行に見えるように管理している。

 標準解像度モード(15kHz)では、テキストの1文字は8×8ドットで構成される。テキストVRAMで指定されるCGROM/PCGRAMアドレスから8バイトを読み、縦8ラインの文字を表示する。
 高解像度モード(24kHz)では、テキストの1文字は8×16ドットで構成される。I/O F7hのBit0で、CGROM/PCGRAMから8バイトを二度読みして縦16ラインにして表示するか、16バイトをそのまま縦16ラインとして表示するかを選択可能。

 40桁モードでは2画面のテキスト画面を持つ。(テキストVRAMの表示アドレス xor 400h)が2画面目のアドレスとなる。どちらかの画面だけを8色表示するか、2画面を重ね合わせて8色表示するか、2画面の色を合成して64色表示するかを選択可能。
 8色モードで発色可能な色は、いわゆるデジタル8色。

カラーコード01234567
GRB値(各0~7) 000 007 070 077 700 707 770 777
 64色モードでは、1画面目の色をRGBのBit2、2画面目の色をRGBのBit1、RGBのBit0を常に0として、512色中64色の出力が行われる。RGBの最下位ビットは0固定であるため、64色モードのテキスト画面では最大輝度の色が出せない。

 CGROMおよびモノクロPCGは文字部分が指定の色(黒を含む)で表示され、背景部分が透明色扱いとなる。カラーPCGでは黒が常に透明色として扱われる。テキスト画面にパレット機能はないため、グラフィック画面の上にカラーPCGで不透明な黒を重ねることはできないことに注意が必要。
 8色2画面モードおよび64色モードでは、第1面と第2面の両方のピクセルが透明のときのみ、グラフィック画面のピクセルが表示される。

 文字の表示属性として、リバース(反転)、ブリンク(約1Hzでの点滅)をそれぞれ独立に指定できる。属性は、ブリンク→リバース→色指定の順に処理される。(例: 赤い文字をリバース・ブリンクさせると、「不透明な赤背景に透明文字」⇔「不透明な赤背景のみ」の間で切り替わる)

 20行モードでは、各文字セルの下側に2ライン(標準解像度モード)または4ライン(高解像度モード)の空白が追加される。余白部分にも表示属性が適用される。(事実上、有効な表示属性はリバースのみ)

 グラフィック画面を320×200 256色モードに設定し、かつCRTコントローラのレジスタ 00h でテキスト画面を64色モード以外に設定した場合、64色モード時の第1面のみが有効・第2面が常に0の扱いとなり、輝度の低い色が表示される。輝度が低いこと以外、表示は正常に行われるため、320×200 256色モードのグラフィック画面の上に640×400 8色モードの漢字テキストを重ね合わせるようなこともできる。

・PCG

 8ラインモードにおいては、8×8ドットのモノクロPCGが256個×4セット使用できる。4セットのうち3セットをまとめてカラーPCGとして使用することも可能。すべてモノクロPCGとして使えば1024個、カラーPCGを最大限使うならモノクロ256個+カラー256個が同時に使用可能となる。
 16ラインモードでは1つのPCGは8×16ドットとなり、PCGの個数は半分になる。


グラフィック画面の解像度と色

 640×200、320×200の解像度が設定可能。高解像度モード(24kHz)では、640×400、320×400の解像度も設定可能。横320ドットモードでは2画面のグラフィック画面を持ち、(表示アドレス xor 2000h)が2画面目のアドレスとなる。どちらかの画面だけを16色表示するか、2画面を重ね合わせて16色表示するか、2画面の色を合成して256色表示するかを選択可能。
 16色モードで発色可能な色は、IGRBの0と9〜15がいわゆるデジタル8色、1〜7が輝度4/7の7色、8が輝度3/7の白。

カラーコード01234567 89101112131415
GRB値(各0~7) 000 004 040 044 400 404 440 444 333 007 070 077 700 707 770 777
 256色モードでは、1画面目のRGBプレーンをRGBのBit2、2画面目のRGBプレーンをRGBのBit1、RGBのBit0はCRTコントローラの内部レジスタ 0Ah の設定を参照し、512色中256色の出力が行われる。RGBのBit0は以下から選択可能。 RGBのBit0を1固定にしてしまうと完全な黒が発色できないと思うかもしれないが、後述するバックグランドカラーの設定により発色可能である。

 16色モードの2画面重ね合わせでは、パレットコード0が透明色として扱われる。

・パレット

 パレットはグラフィック画面にのみ適用される。固定16色への変換であり、アナログパレットではないことに注意。

 16色のパレットコードそれぞれに対し、カラーコードと表示優先度を設定可能。256色モード時は、第1面にのみパレットが適用される。16色2画面モード時は第1面、第2面ともにパレットが適用される。

 優先度を「高」に設定したパレットコードについて、該当するピクセルの上に重なるテキスト画面のピクセルは強制的に非表示となる。これにより、指定のパレットコードのみがテキスト画面より前面に表示されるように見える。
 256色モードでは、第1面のパレットコードのみで優先度が判定される。

・バックグランドカラー

 16色モードでは16色から、256色モードでは512色から1色を選んでバックグランドカラーを設定することが可能。
 16色モード時は、グラフィック画面にパレットを適用した後のカラーコードが0(黒)のピクセルがバックグランドカラーで表示される。
 256色モード時は、グラフィック画面第1面にパレットを適用した後のカラーコードが0で、かつ第2面のカラーコードが0であるピクセルがバックグランドカラーで表示される。
 実用上は黒以外を設定することはないかもしれない。256色モードでは、512色をフルに使えるアナログパレットが1本だけあるともみなせるので、条件によっては効果的に使える可能性はある。


テキスト画面のスクロール

 指定の表示アドレスを左上として表示される。これにより文字単位のスクロールが可能。表示アドレスは000h〜7FFhでラップする。

 表示開始ラインを併せて設定することにより、ライン単位のスクロールが可能。(1文字16ラインのモードでは2ライン単位のスクロールとなる)

 テキスト画面が2画面あるモードでも、スクロールの設定は共通であるため、2画面を別々にスクロールできたりはしない。

グラフィック画面のスクロール

 指定の表示開始アドレスを左上として表示される。これにより横8ドット・縦1ライン単位のスクロールが可能。

 グラフィックコントローラから見た表示アドレスは0000h〜7FFFhで、前半が標準VRAM、後半が拡張VRAMに割り当てられているが、扱いとしては区別無くリニアな空間となっている。16色1画面モードでは標準VRAM・拡張VRAMにまたがるようなスクロールも可能である。しかし、256色モードなど2画面目が存在するケースでは、2画面目のアドレスは (表示アドレス xor 2000h) となるため、スクロールしていくとすぐに2画面目に突入してしまう。これは分割スクロール機能を利用して回避可能。

 グラフィック画面が2画面あるモードでも、スクロールの設定は共通であるため、2画面を別々にスクロールできたりはしない。

・横方向のスムーススクロール

 グラフィック画面の第1面に限り、左端に0〜7個の白ピクセルを挿入できる。左端1桁をマスクすることで横方向のスムーススクロールが可能。
 事実上16色モード専用の機能である。

・分割スクロール

 「表示ラインが指定のラインに到達したら表示アドレスを変更する」機能と「表示アドレスが指定のアドレスに到達したら表示アドレスを0に戻す」機能がある。これを利用して分割スクロールが可能。
 「表示ラインが指定のラインに到達したら表示アドレスを変更する」機能がトリガされると、以降は画面の下端まで横方向のスムーススクロール機能がキャンセルされる。これによりスクロールエリアと固定エリアの分割表示が可能。


ブランキング範囲の設定

 テキスト画面、グラフィック画面ともに上下左右の表示範囲を狭める設定が可能。
 垂直ブランキング期間を増やすとその分VRAMアクセス可能期間も増加するが、水平ブランキング期間については増やしてもアクセス可能期間は増えない。

 テキスト画面の表示範囲をグラフィック画面よりも狭めた場合、重ね合わせモード(CRTコントローラ レジスタ00h Bit1)の設定に関わらず、表示範囲外には常にグラフィック画面が表示される。


拡張パレットボード

 拡張パレットボード MZ-1M10は16色モード時のみ有効。パレットはテキスト画面・グラフィック画面の合成後のカラーコードに対して機能する。カラーコード1〜15のそれぞれに4096色中15色が設定できる。カラーコード0は黒に固定。


戻る