この章では、VDPを制御するコントロールレジスタ、ステータスレジスタについて説明します。
3.1 コントロールレジスタ#0〜#23、#32〜#46(Write only)
3.1.1 モードレジスタ
モードレジスタは各種動作モードを設定するレジスタで、コントロールレジスタ#0、#1、#8、#9に配置されています。
Mode register 0
IE2はライトペン割り込み用のビットです。MSXではこの機能は使用しないので、常に「0」にして下さい。
Mode register 1
Mode register 2
MSはライトペン用の、LPはマウス用のレジスタです。MSXではこの機能は使用していないので、常に「0」にして下さい。
Mode register 3
3.1.2 テーブルベースアドレスレジスタ
V9938に対してVRAM上の各テーブルの先頭アドレスを宣言するためのレジスタ群です。
表示モードによっては、設定できるデータの値に制限(実際のアドレスと異なる場合)があるので注意して下さい。詳しくは、各表示モードの解説を参照して下さい。
Pattern name table base address register
Color table base address register low
Color table base address register high
Pattern generator table base address register
Sprite attribute table base address register low
Sprite attribute table base address register high
Sprite pattern generator table base address register
3.1.3 カラーレジスタ
V9938の表示色、ブリンクなどを制御するためのレジスタ群です。
Text color/Back drop color register
Text color/Back color register
T23〜T20 | パターンの1の部分の色を指定 |
BC3〜BC0 | パターンの0の部分の色を指定 |
Blinking period register
ON3〜ON0 | 偶数ページの表示時間(ビットマップモード時) |
R#7の色の表示時間(TEXT2モード時) | |
OF3〜OF0 | 奇数ページの表示時間(ビットマップモード時) |
R#12の色の表示時間(TEXT2モード時) |
Color burst register 1
補足 |
MSXのコンポジットビデオ出力は、多くの場合V9938のRGBビデオ出力から外部回路により作成されます。したがって、コンポジット出力に影響のある機能は有効ではないとお考え下さい。
3.1.4 ディスプレイレジスタ
CRT上の表示位置を制御するレジスタ群です。
Display adjust register
CRT上の表示位置を補正するためのレジスタです。
左右の補正(H) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
左 | 中央 | 右 | |||||||||||||||
上下の補正(V) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
上 | 中央 | 下 |
Display offset register
表示開始ラインをセットするためのレジスタです。このレジスタの値を変えることによって画面の縦スクロールを行うことができます。ただし、スクロールは256ライン単位で行われるので、スプライトテーブルなどは別のページに置かなければなりません。
図4.1 ディスプレイオフセットレジスタの設定例
Interrupt line register
V9938では、CRTが特定の走査線の表示を終えたときに割り込みを発生させることができます。このレジスタに割り込みを発生させる走査線の番号をセットし、R#0のビット4に「1」をセットします。
詳しくは、添付のフロッピーディスクの中に走査線割り込みのサンプルプログラムが入っていますので、参照して下さい。
3.1.5 アクセスレジスタ
V9938のレジスタやVRAMをアクセスするときに使用するレジスタ群です。
VRAM Access base address register
V9938のVRAMをアクセスするときに、アドレスの上位3ビットをこのレジスタにセットします。
また、このレジスタの値は、VRAMをアクセスするとA13からのキャリーを受けて自動的にインクリメントされます。ただし、GRAPHIC1、GRAPHIC2、MULTICOLOR、TEXT1モードではインクリメントしません。
Status register pointer
V9938のステータスレジスタ(S#0〜S#9)を読み出す際、このレジスタにステータスレジスタの番号(0〜9)をセットします。
Color palette address register
V9938のカラーパレットにアクセスする際、このレジスタにパレットの番号をセットします。
Color register pointer
V9938では、このレジスタの値をポインタとして他のレジスタをアクセスすることができます。また、AIIビットの指定によって、内容を自動的にインクリメントさせることができます。
3.1.6 コマンドレジスタ
V9938のコマンドを実行するときに使用するレジスタ群です。詳しくは5章を参照して下さい。
Source X low register
Source X high register
Source Y low register
Source Y high register
Destination X low register
Destination X high register
Destination Y low register
Destination Y high register
Number of dot X low register
Number of dot X high register
Number of dot Y low register
Number of dot Y high register
Color register
Argument register
Command register
3.2 ステータスレジスタ#0〜#9(Read only)
V9938の状態を読み出すための、読み出し専用のレジスタ群です。
Status register 0
F 垂直帰線割り込みフラグ S#0を読み出すとリセットされる 5S 第5スプライトフラグ 1水平線上にスプライトが5個(GRAPHIC3〜GRAPHIC7モードは9個)並ぶとリセットされる C 衝突フラグ スプライトが衝突するとセットされる 5th sprite# 第5(第9)スプライトの番号がセットされる
Status register 1
FL ライトペンスイッチ(ライトペンフラグがセットされているとき) ライトペンが光を検出するとセットされる。このとき、IE2がセットされていると割り込みを発生する。S#1を読み出すとリセットされる。 マウススイッチ2(マウスフラグがセットされているとき) マウスのスイッチ2が押されたらセットされる。S#1を読み出してもリセットされない。 LPS ライトペンスイッチ(ライトペンフラグがセットされているとき) ライトペンのスイッチが押されるとセットされる。S#1を読み出してもリセットされない。 マウススイッチ1(マウスフラグがセットされているとき) マウスのスイッチ1が押されたらセットされる。S#1を読み出してもリセットされない。 ID# V9938のID番号 FH 水平帰線割り込みフラグ 水平帰線(R#19で指定)による割り込み(フラグIE1ガセットされているとき)が発生するとセットされる。S#1を読み出すとリセットされる。
FLとLPSはライトペン用のレジスタですがMSXではこのインターフェイスは使用していないので、ビット6、7は意味を持ちません。
Status register 2
TR 転送レディフラグ CPU to VRAM、VRAM to CPUなどのコマンドを実行するときは、CPUはこのフラグを見ながらデータを読み書き(転送)する。1のとき転送可。 VR 垂直帰線期間フラグ 垂直帰線期間中は1になる。 HR 水平帰線期間フラグ 水平帰線期間中は1になる。 BD 境界色発見フラグ サーチコマンドの実行で、境界色または非境界色を発見したら1になる。 EO 表示フィールドフラグ 0=第1フィールド、1=第2フィールド CE コマンド実行フラグ コマンドを実行中は1になる。
Column register low
Column register high
Row register low
Row register high
これらのレジスタには、スプライトの衝突座標などがセットされます。詳しくは「6.2.8 スプライトの衝突」をご参照下さい。
Color register
POINT、VRAM to CPUなどのコマンドを実行すると、VRAMのデータがこのレジスタにセットされます。
Border X register low
Border X register high
サーチコマンドで発見した境界色または非境界色のX座標が、このレジスタにセットされます。