{{include unfinished_page}} ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[7章 その他の機能]] ,{BSIZE:0|RIGHT}[[9章 YJK方式]] → ,{c C},{CENTER} ,{c B},{BSIZE:0} ,{c D},{BSIZE:1} ,{c S},{SIZE:50}  「V9958」は、MSX2+用のVDP(Video Display Processor)として開発されたVLSIで、TMS9918A(MSXのVDP)およびV9938(MSX2のVDP)とソフトウェア上位互換性があります。V9958は株式会社アスキーとヤマハ株式会社によって共同開発され、V9938に加えて以下の特徴があります。 * YJK方式により最大19,268色を同時に表示可能 * ハードウェアによる水平スクロール * 全表示モードでコマンド機能を使用可能  この章ではV9938に対して変更・追加された機能を解説します。この章で説明のない部分についてはV9938と同じ仕様です。 !!8.1 レジスタ !8.1.1 追加されたレジスタ {{svg 図P576.svg}} ,注意{CENTER|SIZE:100} 空きビットにはかならず「0」を設定して下さい。 リセット時には、全てのビットは「0」に設定され、機能的にはV9938と同等になります。 !8.1.2 変更されたレジスタ  Status register 1のID番号を「2」とし、V9958であることを表します。V9938では「0」が返ってきます。 {{svg 図P577-1.svg}} !!8.2 V9958の機能  V9958ではV9938を拡張して、新たな機能を加えています。追加された機能には以下のようなものがあります。 !8.2.1 水平スクロール {{svg 図P577-2.svg}} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:50},{BSIZE:0|SIZE:100},{BSIZE:0|SIZE:0} ,R#25,MSK ,0=左側8ドットはマスクされない(初期値) , , ,1=左側8ドットをマスクし、ボーダーカラーを表示する , , ,"R#27の値が「0」の場合は、マスクする必要ありません(GRAPHIC65,6では16ドットのマスクになる)。" , ,SP2 ,0=水平方向画面サイズを1ページとする(初期値) , , ,スクロールは1ページ内で行われ、画面上には左側の隠れた部分が右側にも表れます。 , , ,1=水平方向画面サイズを2ページとする , , ,スクロールは2ページで行われ、スクロールによって裏のページが表れます。 , ,HO8〜HO0,"静止画の水平方向スクロール量をドット単位で設定する(GRAPHIC5,6は2ドット単位のスクロールになる)"  水平スクロール時のVRAMアクセスは8ドット単位で行われ、R#27の値が「0」以外のときは、表示用のデータが不定になります。この不定のデータを表示させないためにマスクが必要になります。 HO8〜HO3に対する表示画面  左方向へ、8ドット単位(GRAPHIC5,6は16ドット単位)で設定値だけシフトします。 {{svg 図P578.svg}} ,注意{SIZE:100|CENTER} HO8は無視されます。 {{svg 図4.63.svg}} ,注意{SIZE:100|CENTER} SP2=1のときは、パターンネームテーブルの先頭アドレスは、奇数ページが選択されるように設定します。 各テーブルのベースアドレスは次のようになります。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:300},{BSIZE:0|SIZE:0} ,パターンネームテーブル(PNT) ,0〜31 偶数ページ , ,32〜63 奇数ページ ,パターンジェネレータテーブル(PGT) ,ベースアドレス設定値 , ,スクロールによって変化しない ,カラーテーブル(CT) ,ベースアドレス設定値 , ,スクロールによって変化しない HO2〜HO0に対する表示画面  右方向へ、1ドット単位(GAPHIC5,6は、2ドット単位)で設定値だけシフトします。 {{svg 図4.64.svg}} 図4.64のように、左へ126ドットスクロールするときは、以下のようになります。 R#26 = 128 = 8×16 (左へ128ドット) R#27 = 2 (右へ2ドット) !8.2.2 ウエイト機能 ,{t},{BSIZE:0} ,{c},{B|SIZE:80|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{BSIZE:0|SIZE:0} , ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0, ,{c},,{D|C},{D|C},{D|C},{D|C},{D|C},{D|C},{D|C},{D|C} ,R#25,0 ,CMD,VDS,YAE,YJK,WTE,MSK,SP2 ,{c},{BSIZE:0|SIZE:80},{BSIZE:0|SIZE:0|COLS:9} ,  , ,WTE ,0=ウエイト機能を無効にする(初期値) , ,V9938と同様に機能します。 , ,1=ウエイト機能を有効にする , ,CPUがVRAMをアクセスした際に、V9958のVRAMアクセスが完了するまで、全てのV9958ポートへのアクセスに対してウエイト信号を発生します。 , ,レジスタとカラーパレットへのアクセス未完了およびコマンドのデータレディによるウエイト機能はありません。 ,注意{SIZE:100|CENTER} ウエイト機能はMSXでは使っていません。 このビットを「1」にするときは、その前にダミーのVRAMアクセスを行って下さい。 !8.2.3 コマンド機能 ,{c C},{CENTER} ,{c B},{BSIZE:0} ,{c D},{BSIZE:1} ,{c S},{SIZE:50} ,{t},{BSIZE:0} ,{c},{B|SIZE:80|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{BSIZE:0|SIZE:0} , ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0, ,{c},,{D|C},{D|C},{D|C},{D|C},{D|C},{D|C},{D|C},{D|C} ,R#25,0 ,CMD,VDS,YAE,YJK,WTE,MSK,SP2 ,{c},{BSIZE:0|SIZE:80},{BSIZE:0|SIZE:0|COLS:9} ,  , ,CMD ,0=GRAPHIC4〜7の表示モードのみコマンド機能を有効にする(初期値)。 , ,1=全表示モードにおいてコマンド機能を有効にする , ,GRAPHIC4〜7モードでは、V9938と同様に機能し、それ以外の表示モードでは、GRAPHIC7モードとして動作します。したがってGRAPHIC4〜7モード以外でコマンドを使用するときには、パラメータはGRAPHIC7モードのX、Y座標系で指定します。 !8.2.4 YJK方式データの表示機能 ,{c C},{CENTER} ,{c B},{BSIZE:0} ,{c D},{BSIZE:1} ,{c S},{SIZE:50} ,{t},{BSIZE:0} ,{c},{B|SIZE:80|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{BSIZE:0|SIZE:0} , ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0, ,{c},,{D|C},{D|C},{D|C},{D|C},{D|C},{D|C},{D|C},{D|C} ,R#25,0 ,CMD,VDS,YAE,YJK,WTE,MSK,SP2 ,{c},{BSIZE:0|SIZE:80},{BSIZE:0|SIZE:0|COLS:9} ,  , ,YJK ,0=VRAM上のデータをRGB方式(例えばGRAPHIC7の時は各3,3,2ビット)として扱う(初期値)。 , ,スプライトの表示色は従来通りです。 , ,1=VRAM上のデータをYJK方式のみと見なし、これをRGB信号(各5ビット)に変換し、アナログ表示する。 , ,スプライトの表示色にはパレットが有効になります。 ,YAE ,YJK方式のデータフォーマットの選択 以下は、YJK方式のデータフォーマットです。連続した4ドットをグルーピングして表します。 1)アトリビュートがない場合(YAE=0)(初期値) {{svg 図4.65.svg}} 図4.65 アトリビュートなしのYJKデータフォーマット YJK方式のデータは連続した4ドット分の情報でグループ分けされており、 Y1、KL、KH、JL、JHで先頭1ドットのカラー情報 Y2、KL、KH、JL、JHで2ドット目のカラー情報 Y3、KL、KH、JL、JHで3ドット目のカラー情報 Y4、KL、KH、JL、JHで4ドット目のカラー情報 となります。 KとJの値は4ドットに共通で使われます。Yの値は1ドットごとに指定します。 2)アトリビュートがある場合(YAE=1) {{svg 図4.66.svg}} 図4.66 アトリビュート有りのYJKデータフォーマット ,{t},{BSIZE:0} ,{c},{B|SIZE:80|C},{BSIZE:0|SIZE:0} ,A=0,YAE=0の場合と同じ(初期値) , ,Y、J、Kは全てYJK方式のデータとなります。■は1ドット分のカラー情報です。Aのビットは無視されます。 ,A=1,Y1〜Y4はそれぞれカラーコードとなり、カラーパレットを通してRGB出力されます。JとKはYJK方式のデータとなります。   3)YJKとYAEの組み合わせ {{svg 図4.67.svg}} !8.2.5 V9958では削除された機能 + コンポジットビデオ出力 + マウス・ライトペンインターフェイス  この変更に伴い、次の内部レジスタのビット(灰色の部分)が意味を持たなくなります。これらのレジスタに値を書き込む場合には、これらのビットに必ず「0」を書き込んで下さい。 '''Status Register 1''' ,{c A},{BGCOLOR:CCC} ,{t},{BSIZE:0} ,{c},{B|SIZE:80|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{BSIZE:0|SIZE:0} , ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0, ,{c},,{D|C|A},{D|C|A},{D|C},{D|C},{D|C},{D|C},{D|C},{D|C} ,S#1 ,FL ,LPS,0 ,0 ,0 ,1 ,0 ,FH ,{c},{BSIZE:0|SIZE:8|C},{BSIZE:0|SIZE:0|COLS:9} ,  , ,FL ,ライトペン光検出フラグ ,LPS ,ライトペン・マウススイッチ '''Mode register 0''' ,{t},{BSIZE:0} ,{c},{B|SIZE:80|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{BSIZE:0|SIZE:0} , ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0, ,{c},,{D|C},{D|C},{D|C|A},{D|C},{D|C},{D|C},{D|C},{D|C} ,R#0 ,0 ,DG ,IE2,IE1,M5 ,M4 ,M3 ,0 ,{c},{BSIZE:0|SIZE:8|C},{BSIZE:0|SIZE:0|COLS:9} ,  , ,IE2 ,ライトペンによる割込み , ,(MSX2はV9938のライトペン機能は使用していない) '''Mode register 2''' ,{t},{BSIZE:0} ,{c},{B|SIZE:80|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{B|S|C},{BSIZE:0|SIZE:0} , ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0, ,{c},,{D|C|A},{D|C|A},{D|C},{D|C},{D|C},{D|C},{D|C},{D|C} ,R#8 ,MS ,LP ,TP ,CB ,VR ,0 ,SPD ,BW ,{c},{BSIZE:0|SIZE:8|C},{BSIZE:0|SIZE:0|COLS:9} ,  , ,MS ,マウスで使用 ,LP ,ライトペンで使用 , ,(MSX2はV9938のマウス・ライトペン機能は使用していない) ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[7章 その他の機能]] ,{BSIZE:0|RIGHT}[[9章 YJK方式]] →