,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[1章 V9938の構成]] ,{BSIZE:0|RIGHT}[[3章 レジスタの機能]] →  この章では、VDPを操作するのに必要なコントロールレジスタ、パレットレジスタ、ステータスレジスタ、VDPにアクセスする方法などについて説明します。 !!2.1 コントロールレジスタのアクセス  V9938のコントロールレジスタ(R#0〜R#46)にデータをセットする方法は、直接指定と間接指定の2通りあります。 !2.1.1 直接指定  ポート#1に、データ、レジスタ番号の順に出力する方法です。この順番は必ず守らねばならないので、割り込みルーチンなどでV9938をアクセスしているときには注意が必要です。 {{svg 図P449.svg}} !2.1.2 間接指定  コントロールレジスタR#17(Control register pointer)でレジスタ番号を指定する方法で、非オートインクリメントとオートインクリメントの2つのモードがあります。 '''1.非オートインクリメント'''  直接指定でR#17にレジスタ番号をセットし、ポート#3にデータを出力します。R#17の値は間接指定では変更できません。  非オートインクリメントモードでは、R#17の内容は不変なので、再セットする必要はありません。このモードはVDPコマンドの実行時など、同じレジスタに連続してデータを送るときに使用します。 {{svg 図P450-1.svg}} '''2.オートインクリメント・モード'''  直接指定でR#17にレジスタ番号をセットし、ポート#3にデータを出力します。このときR#17のAIIビットに「0」をセットすると、ポート#3にデータを出力するたび、R#17の内容はオートインクリメントされます。  このモードを使用すると、スクリーンモードの変更時など、連続した多数のレジスタを一度に書き換える場合に便利です。 {{svg 図P450-2.svg}} !!2.2 パレットレジスタのアクセス  パレットレジスタにデータをセットするためには、レジスタR#16(Color palette address pointer)にパレット番号を指定します。そして、ポート#2ヘデータを連続で出力します。これは、V9938のパレットレジスタ(P#0〜P#15)は9ビットの長さを持つため、最初に赤と青の輝度、次に緑の輝度とデータを2度に分けて出力する必要があるからです。  R#16は、ポート#2にデータを2バイト書き込むとオートインクリメントします。 {{svg 図P451-1.svg}} !!2.3 ステータスレジスタのアクセス  V9938のステータスレジスタ(S#0〜S#9)を読み出すには、レジスタR#15(Status register pointer)にステータスレジスタ番号をセットし、ポート#1を読み出します。  MSXの割り込みルーチンは、R#15に「0」がセットされていることを前提にしています。したがって、ステータスレジスタをアクセスする前には、必ず割り込みを禁止し、目的の処理が終了した後に、R#15に「0」をセットしてから割り込みを解除して下さい。 {{svg 図P451-2.svg}} !!2.4 VRAM(VIDEO RAM)のアクセス  V9938には128KバイトのVRAMと64Kバイトの拡張RAMを接続することができます。拡張RAMはVDPコマンド実行時にワークエリアとして使用することができます。ただし、MSX2では拡張RAMは使用しないので、R#45のビット6には常に「0」を設定して下さい。  メモリマップは以下のようになっています。 {{svg 図P452.svg}}  VRAMアクセスは次の手順で行います。 +バンク切り換え(VRAM〜拡張RAM) +アドレスカウンタセット(A16〜A14) +アドレスカウンタセット(A7〜A0) +アドレスカウンタセット(A13〜A8) 読み出し・書き込み指定 +データの読み出し・書き込み '''1.アドレスカウンタセット(A16〜A14)'''  レジスタR#14(VRAM Access base address register)を使って、アドレスカウンタの上位3ビット(A16〜A14)をセットします。  このレジスタは、TMS9918互換モードのときには、オートインクリメントを指定してもカウントアップしません。 {{svg 図P453-1.svg}} '''2.アドレスカウンタセット(A7〜A0)'''  ポート#1に、アドレスカウンタの下位8ビット(A7〜A0)にセットするデータを出力します。 {{svg 図P453-2.svg}} '''3.アドレスカウンタセット(A13〜A8) 読み出し・書き込みの設定'''  ポート#1に、アドレスカウンタの残りの6ビット(A13〜A8)にセットするデータと読み出し・書き込みの指定を出力します。 {{svg 図P453-3.svg}} '''4.データの読み出し・書き込み'''  ポート#0にデータを読み出し・書き込みをすると、アドレスカウンタが自動的にインクリメントされるので、連続してアクセスすることができます。  ただし、TMS9918互換モードのときには、A16〜A14はインクリメントされません。 {{svg 図P454-1.svg}} !!2.5 V9938の画面構成  V9938の画面は以下のような構成になっています。 {{svg 図P454.svg}} ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[1章 V9938の構成]] ,{BSIZE:0|RIGHT}[[3章 レジスタの機能]] →