,{c H},{BGCOLOR:dddddd|BOLD|CENTER} ,{c C},{CENTER} ,{c L},{LEFT} //!!!1章 MSX-VIDEOの構成  MSX-VIDEOは次のような特徴を持ち、TMS9918Aと比べて大幅に表示能力が向上しています。 *9ピットのカラーパレットによって、512色の表現が可能 *最大512x424ドットの分解能(インターレース使用時) *最大256色が同時に表示可能 *グラフィック的に操作しやすいフルビットマップ・モードの採用 *1行80文字のテキスト表示モードの採用 *LINE,SEARCH,AREA-MOVEなどがハードウェア的に実行可能 *スプライトは同一水平ラインに8個まで表示可能 *スプライトは1ラインごとに異なった色の指定が可能 *ビデオ信号のディジタイズ機能内蔵 *スーパーインポーズ機能内蔵  これらの機能を実現するMSX-VIDEOの画面表示システムの構成要素は、数多くのレジスタ群、MSX-VIDEOによって管理されるVRAM,MSX-VIDEOとCPU間のデータ受け渡しを行うI/Oポートの3つの部分に大別されます。 !!1.1レジスタ  MSX-VIDEOは、その多くの機能を実現するために、内部に49本のレジスタを備えています。これを本書では“VDPレジスタ”と呼ぶことにします。VDPレジスタは機能によって以下の3種に分類されます。なおコントロール・レジスタ群とステータス・レジスタ群については、BASICからVDP(n)というシステム変数を用いて参照することも可能です。 (1)コントロール・レジスタ群(R#0〜R#23,R#32〜R#46)  MSX-VIDEOの動作を制御する書き込み専用8ビットレジスタ群です。一般にR#nの記号で表されます。R#0〜R#23は主に画面モードの設定に用いられ、R#32〜R#46は5章で述べるVDPコマンドの実行時に用いられます。R#24〜R#31に相当する番号のコントロール・レジスタは存在しません。各コントロール・レジスタの役割を表4.1に示します。 ,{t},{CENTER} ,{c},{H},{H},{H},{H},{H},{H} ,名称,対応するVDP(n),機能,名称,対応するVDP(n),機能 ,{c},{R},{R},{R},{R},{R},{R} ,R#0,VDP(0),モードレジスタ#0,R#20,VDP(21),カラーバースト信号1 ,R#1,VDP(1),モードレジスタ#1,R#21,VDP(22),カラーバースト信号2 ,R#2,VDP(2),パターンネームテーブル,R#22,VDP(23),カラーバースト信号3 ,R#3,VDP(3),カラーテーブル(LOW),R#23,VDP(24),画面のハードスクロール ,R#4,VDP(4),パターンジェネレータテーブル ,R#5,VDP(5),スプライトアトリビュートテーブル(LOW),R#32,VDP(33),SX:転送元X座標(LOW) ,R#6,VDP(6),スプライトパターンジェネレータテーブル,R#33,VDP(34),SX:転送元X座標(HIGH) ,R#7,VDP(7),周辺色/テキストモード時の文学色,R#34,VDP(35),SY:転送元Y座標(LOW) ,R#8,VDP(9),モードレジスタ#2,R#35,VDP(36),SY:転送元Y座標(HIGH) ,R#9,VDP(10),モードレジスタ#3,R#36,VDP(37),DX:転送先X座標(LOW) ,R#10,VDP(11),カラーテーブル(HIGH),R#37,VDP(38),DX:転送先X座標(HIGH) ,R#11,VDP(12),スプライトアトリビュートテーブル(HIGH),R#38,VDP(39),DY:転送先Y座標(LOW) ,R#12,VDP(13),テキストブリンク時の文字色,R#39,VDP(40),DY:転送先Y座標(HIGH) ,R#13,VDP(14),ブリンク周期,R#40,VDP(41),NX:X方向転送ドット数(LOW) ,R#14,VDP(15),VRAMアクセスアドレス(HIGH),R#41,VDP(42),NX:X方向転送ドット数(HIGH) ,R#15,VDP(16),S#nの間接指定,R#42,VDP(43),NY:Y方向転送ドット数(LOW) ,R#16,VDP(17),P#nの間接指定,R#43,VDP(44),NY:Y方向転送ドット数(HIGH) ,R#17,VDP(18),R#nの間接指定,R#44,VDP(45),CLR:対CPUデータ転送用 ,R#18,VDP(19),画面位置の補正(ADJUST),R#45,VDP(46),ARG:転送方向/VRAM・拡張RAM指定 ,R#19,VDP(20),割り込み発生の走査線番号,R#46,VDP(47),CMR:VDPコマンドを発行 {{div_begin style='text-align:right;'}} (R#32〜R#46 VDPコマンド用レジスタ) {{div_end}} {{div_begin style='text-align:center;'}} '''表4.1コントロール・レジスタ一覧''' {{div_end}} (2)ステータス・レジスタ群(S#0〜S#9)  MSX-VIDEOから得られる各種の情報を読み取るための、読み出し専用8ピットレジスタ群です。一般にS#nという記号で表されます。各レジスタの役割を表4.2に示します。 ,{t},{CENTER} ,{c},{H},{H},{H},{H},{H},{H} ,名称,対応するVDP(n),機能,名称,対応するVDP(n),機能 ,{c},{L},{L},{L},{L},{L},{L} ,S#0,VDP(8),割り込み情報,S#5,VDP(-5),検出したY座標(LOW) ,S#1,VDP(-1),割り込み情報,S#6,VDP(-6),検出したY座標(HIGH) ,S#2,VDP(-2),VDPコマンド制御情報/その他,S#7,VDP(-7),VDPコマンドで得られたデータ ,S#3,VDP(-3),検出したX座標(LOW),S#8,VDP(-8),サーチコマンドで得られたX座標(LOW) ,S#4,VDP(-4),検出したX座標(HIGH),S#9,VDP(-9),サーチコマンドで得られたX座標(HIGH) {{div_begin style='text-align:center;'}} '''表4.2ステータス・レジスタ一覧''' {{div_end}} (3)パレット・レジスタ群(P#0〜P#15)  カラーパレットを設定するためのレジスタ群です。一般にP#nという記号で表されます。nはパレット番号を表し、各パレットを512色中の1色に設定する働きをします。1つのパレットレジスタは9ピット長となっており、RGB各色につき、それぞれ3ビットずつ使用されます。 !!1.2 VRAM  MSX-VIDEOには128KバイトのVRAM(Video RAM)と64Kバイトの拡張RAMを接続できます。MSX-VIDEOは、この128Kバイトのアドレス空間をアクセスするため、17ビットのアドレス・カウンタを持っています.なお,これらのメモリはMSX-VIDEO自身によって管理されるもので、CPUから直接アクセスすることはできません。  拡張RAMは、VRAMのようにその内容を画面に表示することはできませんが、VDPコマンド実行時にはVRAMと同等に扱うことが可能です。実際、画像データを取り扱う際、これだけの広い領域がワークエリアとして使えると、たいへん便利です。ただし、MSX2の仕様には拡張RAMを実装しなければならないという項目は含まれていませんから、これを使うと互換性を欠く恐れがあります。 {{div_begin style='text-align:center;'}} {{svg 図4.1.svg,,size:340x230}} '''図4.1 VRAMと拡張RAM''' {{div_end}} !!1.3 I/Oポート  MSX-VIDEOは外部とデータをやりとりするために、4つのI/Oポートを持っています。これらのポートは表4.3に示したような機能を持ち、CPU(Z80)のI/Oアドレスを通して接続されています。表中n,n'で表されたアドレスはMAIN-ROMの6,7番地に記録されています。通常はn=n'=98Hですが、機種によっては異なる可能性もありますので、より安全確実なプログラムを目指すためには、この番地の内容を読んでポートアドレスを得なければいけません。  なお、一般にMSXではプログラムの互換性を確保するために入出力はすべてBIOSを通して実行することが推奨されていますが、画面表示に関しては特にスピードを要求されることが多いため、これらのI/Oポートを介してMSX-VIDEOを直接アクセスすることが許されています。 ,{t},{CENTER} ,{c},{H},{H},{H} ,,アドレス,用途 ,{c},{L},{C},{L} ,ポート#0(READ),n,VRAMからのデータ読み出し ,ポート#0(WRITE),n',VRAMへのデータ書き込み ,ポート#1(READ),n + 1,ステータス・レジスタの読み出し ,ポート#1(WRITE),n'+ 1,コントロール・レジスタへの書き込み ,ポート#2(WRITE),n'+ 2,パレット・レジスタへの書き込み ,ポート#3(WRITE),n'+ 3,間接指定されたレジスタへの書き込み {{div_begin style='text-align:right;'}} 注)nの値はMAIN-ROMの6番地を参照して得る n'の値はMAIN-ROMの7番地を参照して得る {{div_end}} {{div_begin style='text-align:center;'}} '''表4.3 MSX-VIDEOのポート''' {{div_end}}