にゃごすwiki

techhan/4.1

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に示します。

名称	対応するVDP(n)	機能	名称	対応するVDP(n)	機能
R#0	VDP(0)	モードレジスタ#O	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コマンドを発行
                                                        (R#32〜R#46 VDPコマンド用レジスタ)

表4.1コントロール・レジスタ一覧


(2)ステータス・レジスタ群(S#0〜S#9)
 MSX-VIDEOから得られる各種の情報を読み取るための,読み出し専用8ピットレジスタ群です。一般にS#nという記号で表されます.各レジスタの役割を表4.2に示します.

名称	対応するVDP(n)	機能	名称	対応するVDP(n)	機能
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)

表4.2ステータス・レジスタ一覧


(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を実装しなければならないという項目は含まれていませんから、これを使うと互換性を欠く恐れがあります。




図4.1 VRAMと拡張RAM


 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を直接アクセスすることが許されています。

	アドレス	用途
ポート#0(READ)	 n	VRAMからのデータ饒み出し
ポート#O(WRI正)	 n'	VRAMへのデータ書き込み
ポート#1(READ)	n + 1	ステータス・レジスタの読み出し
ポート#1(WRITE)	n'+ 1	コントロール◎レジスタへの書き込み
ポート#2(WRI正)	n'+ 2	パレ・ント・レジスタへの書き込み
ポート#3(WRITE)	n'+ 3	引接指定されたレジスタへの書き込み
注)nの値はMAIN-ROMの6番地を参照して得る
 n'の値はMAIN-ROMの7番地を参照して得る

表4.3 MSX-VODEOのポート