- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
,{c H},{BGCOLOR:dddddd|BOLD|CENTER}
,{c C},{CENTER}
,{c L},{LEFT}
,{c N},{BGNOCOL|NORMAL}
// %第1版第12刷 P167〜P195
// !!!3章 MSX2の画面モード
MSX2には、表4.4に示す10種の画面モードが存在します。表中で、“*”の印を付けた6つの画面モード(TEXT2およびGRAPHIC3〜GRAPHIC7)がMSX2で新設されたものです。従来からあった他のモードも、TMS9918AからMSX-VIDEOへの変更に伴い、多少機能が増えた部分があります。以下、これら10種類の画面モードの特徴と、その具体的な使用法について説明を行います。
,{t},{CENTER}
,{c},{H},{H},{H}
,モード名,相当するSCREENモード,特 徴
,{c},{L},{L},{L}
, TEXT1,SCREEN 0(WIDTH 40),1行40文字のテキスト、文字の色は1色
,*TEXT2,SCREEN 0(WIDTH 80),1行80文字のテキスト、文字はブリンク可能
, MULTI COLOR,SCREEN 3,1文字を4ブロック分割した擬似グラフィック
, GRAPHIC 1,SCREEN 1,1行32文字のテキスト、色付き文字が可能
, GRAPHIC 2,SCREEN 2,256×192、8ドット単位で色を指定する。
,*GRAPHIC 3,SCREEN 4,スプライトモード2が使えるGRAPHIC 2
,*GRAPHIC 4,SCREEN 5,256×212、ドットごとに16色可能
,*GRAPHIC 5,SCREEN 6,512×212、ドットごとに4色可能
,*GRAPHIC 6,SCREEN 7,512×212、ドットごとに16色可能
,*GRAPHIC 7,SCREEN 8,256×212、ドットごとに256色可能
{{div_begin style='text-align:center;'}}
'''表4.4 MSX2の画面モード一覧'''
{{div_end}}
!!3.1 TEXT1モード
TEXT1とは、以下に示す仕様の画面モードをいいます。
画 面:横40文字×縦24行
背景色/文字色ともに512色中から任意に選択可能
文 字:256種の文字が使用可能
文字の大きさは、横6ドット×縦8ドット
1文字ごとにフォントの定義が可能
必要メモリ:文字フォント用…2048バイト(8バイト×256文字)
画面表示用………960バイト(40文字×24行)
BASIC:SCREEN 0(WIDTH 40)に相当
!3.1.1 TEXT1モードの設定
TEXT1に限らずMSX-VIDEOの画面モードの設定は、R#0とR#1の中の5ビットを用いて行います。TEXT1モードの場合は、図4.11に示すとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.11.svg,,size:450x120}}
'''図4.11 TEXT1モードの設定'''
{{div_end}}
!3.1.2 TEXT1モードの画面構造
'''●パターンジュネレータ・テーブル'''
文字フォントを記録している領域を、パターンジェネレータ・テーブルと呼びます。パターンジュネレータ・テーブルはVRAM上に置かれ、その先頭から1文字につき8バイトずつ使用して各フォントが定義されていますがフォントの横1ライン中、下位2ビットは画面に表示されません。したがって、1文字は6×8のサイズとなります。それぞれの文字フォントには0〜255の番号が付けられ、これが文字のキャラクタコードに相当します。文字を画面に表示する時には、このキャラクタコードで指定します。
パターンジェネレータ・テーブルの位置はR#4で指定します。ただし指定できるのはパターンジェネレータ・テーブルの先頭アドレスの上位6ビット(A16〜A11)のみであり、アドレスの下位11ビット(A10〜A0)は常に“00000000000”であるとみなされます。したがって、パターンジェネレータ・テーブルが設定可能なアドレスは、00000Hから2Kバイト単位の位置になります。BASICからは、このアドレスをBASE(2)というシステム変数を用いて参照できます。図4.12はパターンジェネレータ・テーブルの構造です。
{{div_begin style='text-align:center;'}}
{{svg 図4.12.svg,,size:510x710}}
'''図4.12 パターンジェネレータ・テーブルの構造'''
{{div_end}}
'''●パターンネーム・テーブル'''
パターンネーム・テーブルとは、1バイトが画面上の1文字に対応するメモリ配置です。このテーブルに0〜255のキャラクタコードを書き込むと、対応する画面上の位置にコードで指定した文字が表示されます。
パターンネーム・テーブルの先頭アドレスは、R#2を用いて指定します。指定できるのはアドレスの上位7ビット(A16〜A10)のみであり、下位10ビット(A9〜A0)は常に“0000000000”とみなされます。したがって、パターンネーム・テーブルが設定可能なアドレスは、00000Hから1Kバイト単位の位置になります。BASICからは、このアドレスをBASE(0)というシステム変数を用いて参照できます。図4.13は パターンネーム・テーブルの構造です。
{{div_begin style='text-align:center;'}}
{{svg 図4.13.svg,,size:580x470}}
'''図4.13 TEXT1の パターンネーム・テーブルの構造'''
{{div_end}}
!3.1.3 画面の色の指定
画面の色はR#7によって指定します。背景色はR#7の下位4ビット、前景色はR#7の上位4ビットで指定されたパレットによって色が決まります(図4.14)。フォントパターン中の、“0”の部分は背景色、“1”の部分は前景色で表示されます。なお、TEXT1では画面の周辺色を設定することはできず、背景色と同じものになります。
{{div_begin style='text-align:center;'}}
{{svg 図4.14.svg,,size:450x120}}
'''図4.14 TEXT1の色指定'''
{{div_end}}
!!3.2 TEXT2モード
TEXT2とは、以下に示す仕様の画面モードをいいます。
画 面:横80文字×縦24行(または縦26.5行)
背景色/文字色ともに512色中から任意に選択可能
ブリンク機能の指定により、他に2色表示可能
文 字:256種の文字が使用可能
文字の大きさは、横6ドット×縦8ドット
1文字ごとにフォントの定義が可能
1文字ごとにブリンク(点滅)可能
必要メモリ:24行設定時
文字フォント用…2048バイト(8バイト×256文字)
画面表示用………1920バイト(80文字×24行)
ブリンク属性用…240バイト(=1920ビット)
26.5行設定時
文字フォント用…2048バイト(同上)
画面表示用………2160バイト(80文字×27行)
ブリンク属性用…270バイト(=2160ビット)
BASIC:SCREEN 0(WIDTH 80)に相当
!3.2.1 TEXT2モードの設定
TEXT2モードの設定は図4.15のとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.15.svg,,size:450x120}}
'''図4.15 TEXT2モードの設定'''
{{div_end}}
'''●行数の設定(24行/26.5行)'''
TEXT2モードでは、R#9のビット7の値によって、1画面24行または26.5行の切り換えが可能です。ただし、1画面の行数を26.5行とした場合、最下行に表示した文字はパターンの上半分しか表示されません。この機能はBASICではサポートされていません。
{{div_begin style='text-align:center;'}}
{{svg 図4.16.svg,,size:430x140}}
'''図4.16 行数の切り換え'''
{{div_end}}
!3.2.2 TEXT2の画面構造
'''●パターンジェネレータ・テーブル'''
TEXT1のパターンジェネレータ・テーブルとまったく同じ構造と機能を持ちます。TEXT1の説明を参照してください。
'''●パターンネーム・テーブル'''
TEXT2では、1画面に表示される文字が最大2160(=80×27)文字と増えたため、パターンネーム・テーブルの占める大きさも最大2160バイトになりました。
パターンネーム・テーブルは、先頭アドレスの上位5ビット(A16〜A12)をR#2に書き込んで位置を設定します。アドレスの下位12ビット(A11〜A0)は常に“000000000000”とみなされ、パターンネーム・テーブルが設定可能なアドレスは、00000Hから4Kバイト単位の位置になります。
{{div_begin style='text-align:center;'}}
{{svg 図4.17.svg,,size:580x470}}
'''図4.17 TEXT2のパターンネーム・テーブルの構造'''
{{div_end}}
'''●ブリンクテーブル'''
TEXT2モードでは、文字ごとにブリンク(点滅)させることができます。画面上のどの位置の文字をブリンクさせるかという情報を記録しておく領域がブリンクテーブルです。ブリンクテーブルは、その1ビットが画面上(すなわちパターンネーム・テーブル上)の1文字に対応しており、対応するビットの内容が“1”である文字にブリンク属性が与えられます。
{{div_begin style='text-align:center;'}}
{{svg 図4.18.svg,,size:450x310}}
'''図4.18 TEXT2のブリンクテーブルの構造'''
{{div_end}}
ブリンクテーブルの先頭アドレス指定は、その上位8ビット(A16〜A9)をR#3とR#10に指定することによって行います。ブリンクテーブルを設定可能なアドレスは、00000Hから512バイト単位の位置になります。
!3.2.3 画面の色と文字のブリンク指定
前景色はR#7の上位4ビット、背景色はR#7の下位4ビットで指定されます。さらに、ブリンクテーブルによってブリンク属性を与えられた文字は、R#7で指定される本来の色と、R#12で指定されるブリンク色とを交互に繰り返します。
{{div_begin style='text-align:center;'}}
{{svg 図4.19.svg,,size:540x210}}
'''図4.19 画面の色とブリンク色の設定'''
{{div_end}}
繰り返しの周期はR#13で設定されます。R#13の上位4ビットは本来の文字色が表示されている時間、下位4ビットはブリンク色が表示されている時間を1/6秒単位で表しています。
{{div_begin style='text-align:center;'}}
{{svg 図4.20.svg,,size:600x200}}
'''図4.20 ブリンク周期の設定'''
{{div_end}}
{{div_begin style='text-align:center;'}}
'''リスト4.1 ブリンクサンプル'''
{{div_end}}
1000 '==================================================
1010 ' LIST 4.1 BRINK SAMPLE
1020 '==================================================
1030 '
1040 SCREEN 0 : WIDTH 80 'TEXT 2 mode
1050 ADR=bASE(1) 'TAKE COLOR TABLE ADDRESS
1060 '
1070 FOR I=0 TO 2048/8
1080 VPOKE ADR+I,0 'reset blink mode
1090 NEXT
1100 '
1110 VDP(7) =&HF1 'take color=15,back color=1
1120 VDP(13)=&H1F 'take color=1 ,back color=15
1130 VDP(14)=&H22 'set interval and start blink
1140 '
1150 PRINT "Input any character : ";
1160 '
1170 K$=INPUT$(1)
1180 IF K$<CHR$(28) THEN 1230
1190 IF K$>" " THEN GOSUB 1280
1200 PRINT K$;
1210 GOTO 1170
1220 '
1230 VDP(14)=0 'stop blink
1240 END
1250 '
1260 '----- set blink mode -----
1270 '
1280 X=POS(0) : Y=CSRLIN
1290 A=(Y*80+X)\8
1300 B=X MOD 8
1310 M=VAL("&B"+MID$("000000010000000",8-B,8))
1320 VPOKE ADR+A,VPEEK(ADR+A) XOR m
1330 RETURN
!!3.3 MULTI COLORモード
MULTI COLORモードとは以下に示す仕様の画面モードをいいます。
画 面:横64ブロック×縦48ブロック
512色中の16色が同時に表示可能
文 字:ブロックの大きさは横4ドット×縦4ドット
ブロックごとの色指定が可能
必要メモリ:カラー設定用…2048バイト
位置指定用……768バイト
スプライト:スプライトモード1
BASIC:SCREEN 3に相当
!3.3.1 MULTI COLORモードの設定
MULTI COLORモードの設定は、図4.21に示すとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.21.svg,,size:430x120}}
'''図4.21 MULTI COLORモードの設定'''
{{div_end}}
!3.3.2 MULTI COLORモードの画面構造
'''●パターンジェネレータ・テーブル'''
このモードでは、2ブロック×2ブロックで1パターンが構成されており、1個のパターン名には4個のパターンが対応しています。パターン中の色は、パターンジェネレータ・テーブルの2バイトで表されます。パターンジェネレータ・テーブルの先頭アドレスはR#4で指定します。ただし指定できるのはアドレスの上位6ビット(A16〜A11)のみであるため、パターンジェネレータ・テーブルに設定可能なアドレスは00000Hから2Kバイト単位の位置となります(図4.22)。
{{div_begin style='text-align:center;'}}
{{svg 図4.22.svg,,size:740x520}}
'''図4.22 MULTI COLORのパターンジェネレータ・テーブルの構造'''
{{div_end}}
'''●パターンネーム・テーブル'''
画面上の任意の位置に指定のパターンを表示するためのテーブルです。1個のパターン名中の4つのパターンはY座標の値により、そのうちの1つが表示されるようになっています。BASICでは図4.23のようにこのテーブルの内容を設定しています。パターンネーム・テーブルの先頭アドレスはR#2で指定します。ただし指定できるのはアドレスの上位7ビット(A16〜A10)のみであるため、パターンネーム・テーブルに設定可能なアドレスは00000Hから1Kバイト単位の位置となります(図4.24)。
!3.3.3 MULTI COLORモードの画面の色の指定
{{div_begin style='text-align:center;'}}
{{svg 図4.23.svg,,size:570x520}}
'''図4.23 BASICのパターンネーム・テーブルの指定'''
{{svg 図4.24.svg,,size:580x470}}
'''図4.24 MULTI COLORモードのパターンネーム・テーブルの構造'''
{{div_end}}
R#7で画面の周辺色が指定できます(図4.25)
{{div_begin style='text-align:center;'}}
{{svg 図4.25.svg,,size:600x120}}
'''図4.25 周辺色の指定'''
{{div_end}}
!!3.4 GRAPHIC1モード
GRAPHIC1モードとは以下に示す仕様の画面モードをいいます。
画 面:横32パターン×縦24パターン
512色中の16色が同時に表示可能
パターン:256種類のパターンが使用可能
パターンの大きさは横8ドット×縦8ドット
パターンごとに任意の図形定義が可能
8パターンごとに異なる色が設定可能
必要メモリ:パターンフォント用…2048バイト
カラーテーブル用……32バイト
スプライト:スプライトモード1
BASIC:SCREEN1に相当
!3.4.1 GRAPHIC1モードの設定
GRAPHIC1モードの設定は図4.26に示すとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.26.svg,,size:430x120}}
'''図4.26 GRAPHIC1モードの設定'''
{{div_end}}
!3.4.2 GRAPHIC1モードの画面構造
'''●パターンジェネレータ・テーブル'''
このモードでは、0〜255のコードに相当する256種類のパターンを画面に表示できます。それぞれのパターンのフォントはパターンジェネレータ・テーブルに定義されています(図4.27)。パターンジェネレータ・テーブルの先頭アドレスはR#4で指定します。ただし指定できるのはアドレスの上位6ビット(A16〜A11)のみです。
{{div_begin style='text-align:center;'}}
{{svg 図4.27.svg,,size:510x690}}
'''図4.27 GRAPHIC1モードのパターンジェネレータ・テーブルの構造'''
{{div_end}}
'''●カラーテーブル'''
また、8パターンごとの色指定をカラーテーブルで行います。各パターンのビットが“0”の部分と“1”の部分の色を指定できます(図4.28)。カラーテーブルの先頭アドレスはR#3とR#10で指定します。ただし指定できるのはアドレスの上位11ビット(A16〜A6)のみです。
'''●パターンネーム・テーブル'''
パターンネーム・テーブルは768バイトの大きさを持ち、画面上のパターンと1対1に対応しています(図4.29)。パターンネーム・テーブルの先頭アドレスはR#2で指定します。ただし指定できるのはアドレスの上位7ビット(A16〜A10)のみです。
{{div_begin style='text-align:center;'}}
{{svg 図4.28.svg,,size:570x370}}
'''図4.28 GRAPHIC1モードのカラーテーブルの構造'''
{{svg 図4.29.svg,,size:580x470}}
'''図4.29 GRAPHIC1モードのパターンネーム・テーブルの構造'''
{{div_end}}
!3.4.3 画面の色の指定
R#7で画面の周辺色が指定できます(図4.30)
{{div_begin style='text-align:center;'}}
{{svg 図4.30.svg,,size:600x100}}
'''図4.30 GRAPHIC1モードの画面の色の指定'''
{{div_end}}
!!3.5 GRAPHIC2、3モード
GRAPHIC2、3モードとは以下に示す仕様の画面モードをいいます。
画 面:横32パターン×縦24パターン
512色中の16色が同時に表示可能
パターン:768種類のパターンが使用可能
パターンの大きさは横8ドット×縦8ドット
パターンごとに任意の図形定義が可能
ただし、横8ドット内に2色までしか使用できない
必要メモリ:パターンフォント用…6144バイト
カラーテーブル用……6144バイト
スプライト:GRAPHIC2はスプライトモード1
GRAPHIC3はスプライトモード2
BASIC:GRAPHIC2はSCREEN2に相当
GRAPHIC3はSCREEN4に相当
!3.5.1 GRAPHIC2、3モードの設定
GRAPHIC2、3モードの設定はそれぞれ図4.31に示すとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.31.svg,,size:430x300}}
'''図4.31 GRAPHIC2、3モードの設定'''
{{div_end}}
!3.5.2 GRAPHIC2、3モードの画面構造
'''●パターンジェネレータ・テーブル'''
このモードでは、GRAPHIC1と同等のパターンジェネレータ・テーブルを3組用意し、768種類のパターンの表示が可能です。したがって画面上に重複するパターンが1つも表示されないようにすることができ、その状態でパターンジェネレータ・テーブル側を操作すれば擬似的に256×192ドットのグラフィック表示を行うことができます。パターンジェネレータ・テーブルの先頭アドレスはR#4で指定します。ただし指定できるのはアドレス上位4ビット(A16〜A13)のみであるため、設定可能なアドレスは00000Hから8Kバイト単位の位置になります(図4.32)。
{{div_begin style='text-align:center;'}}
{{svg 図4.32.svg,,size:720x670}}
'''図4.32 GRAPHIC2、3モードのパターンジェネレータ・テーブルの構造'''
{{div_end}}
'''●カラーテーブル'''
また、パターンジェネレータ・テーブルと同じサイズのカラーテーブルを持ち、各パターンの横1ラインごとにビットが“0”の部分と“1”の部分の色を指定できます(図4.33)。カラーテーブルの先頭アドレスはR#3とR#10で指定します。ただし指定できるのはアドレスの上位4ビット(A16〜A13)のみです。
{{div_begin style='text-align:center;'}}
{{svg 図4.33.svg,,size:720x780}}
'''図 4.33 GRAPHIC2、3モードのカラーテーブルの構造'''
{{div_end}}
'''●パターンネーム・テーブル'''
パターンネーム・テーブルは上段、中段、下段の3つに分割され、それぞれがパターンジェネレータ・テーブルの別々の256バイトを参照してパターンを表示します(図4.34)。このような方法をとることによって、パターンネーム・テーブル上の768バイトがすべて異なったパターンフォントを表示することが可能になります。
{{div_begin style='text-align:center;'}}
{{svg 図4.34.svg,,size:720x910}}
'''図4.34 GRAPHIC2、3モードのパターンネーム・テーブルの構造'''
{{div_end}}
!3.5.3 画面の色の指定
R#7で画面の周辺色が指定できます(図4.35)。
{{div_begin style='text-align:center;'}}
{{svg 図4.35.svg,,size:600x100}}
'''図4.35 GRAPHIC2、3モードの画面の色の指定'''
{{div_end}}
!!3.6 GRAPHIC4モード
GRAPHIC4モードとは、以下に示すモードのことををいいます。
画 面:横256ドット×縦212ドット(または縦192ドット)
同時に16色が表示可能
16色のそれぞれは、512色中から任意の1色を選択可能
コマンド:VDPコマンドによる高速グラフィック可能
スプライト:モード2のスプライト機能が使用可能
必要メモリ:192ドット設定時
ビットマップ画面……24Kバイト(6000Hバイト)
(4ビット×256×192)
212ドット設定時
ビットマップ画面……26.5Kバイト(6A00Hバイト)
(4ビット×256×212)
BASIC:SCREEN5に対応
!3.6.1 GRAPHIC4モードの設定
GRAPHIC4モードの設定は図4.36に示すとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.36.svg,,size:430x120}}
'''図4.36 GRAPHIC4モードの設定'''
{{div_end}}
!3.6.2 GRAPHIC4モードの画面構造
'''●パターンネーム・テーブル'''
GRAPHIC4モードでは、パターンネーム・テーブルの1バイトが画面上の2ドットに対応しています。それぞれのドットの色情報は4ビットで表されており、16色の指定ができます(図4.37)。パターンネーム・テーブルの先頭アドレスの指定には、R#2を用います。指定できるのはアドレスの上位2ビット(A16〜A15)のみであり、下位15ビットはすべて“0”とみなされます。したがって、パターンネーム・テーブルが設定可能なアドレスは、00000H、08000H、10000H、18000Hの4箇所だけです。
{{div_begin style='text-align:center;'}}
{{svg 図4.37.svg,,size:700x420}}
{{svg 図4.37.svg,,size:730x420}}
'''図4.37 GRAPHIC4モードのパターンネーム・テーブルの構造'''
{{div_end}}
このことから、画面上で(X,Y)の座標にあるドットは、式4.1でアクセスできることがわかります。リスト4.2は、式4.1を確認するためのプログラムです。
,{t},{CENTER}
,ADR=X/2+Y*128+ベースアドレス{N}
※Xが偶数のときは上位4ビット
Xが奇数のときは下位4ビットがそのドットの色を表す
{{div_begin style='text-align:center;'}}
'''式4.1 座標(X,Y)のドットをアクセスする式'''
{{div_end}}
{{div_begin style='text-align:right;'}}
'''リスト4.2 BASICで書いたGRAPHIC4モード用PSET'''
{{div_end}}
100 '===========================================
110 ' LIST 4.2 dot accsess of GRAPHIC 4 mode
120 '===========================================
130 '
140 SCREEN 5
150 BA=0
160 FOR I=0 TO 255
170 X=I:Y=Y\2
180 COL=15
190 GOSUB 1000
200 NEXT
210 END
220 '
1000 '=======================================
1010 ' PSET (X,Y),COL
1020 ' COL:color BA;graphic Base Address
1030 '=======================================
1040 '
1050 ADR=X\2+Y*128+BA
1060 IF X AND 1 THEN BIT=&HF0:C=COL ELSE BIT=&HF:C=COL*16
1070 D=VPEEK(ADR)
1080 D=(D AND BIT) OR C
1090 VPOKE ADR,C
1100 RETURN
!3.6.3 画面の色の指定
R#7で画面の周辺色が指定できます(図4.38)。
{{div_begin style='text-align:center;'}}
{{svg 図4.38.svg,,size:600x100}}
'''図4.38 GRAPHIC4モードの画面の色の指定'''
{{div_end}}
!!3.7 GRAPHIC5モード
GRAPHIC5モードとは、以下に示す仕様の画面モードをいいます。
画 面:横512ドット×縦212ドット(または縦192ドット)
同時に4色が表示可能
4色のそれぞれは、512色中から任意の1色を選択可能
コマンド:ハードウェアによるグラフィックコマンドが使用可能
スプライト:モード2のスプライト機能が使用可能
必要メモリ:192ドット設定時
ビットマップ画面……24Kバイト(6000Hバイト)
(2ビット×512×192)
212ドット設定時
ビットマップ画面……26.5Kバイト(6A00Hバイト)
(2ビット×512×212)
BASIC:SCREEN6に対応
!3.7.1 GRAPHIC5モードの設定
GRAPHIC5モードへの設定は図4.39に示すとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.39.svg,,size:430x120}}
'''図4.39 GRAPHIC5モードの設定'''
{{div_end}}
!3.7.2 パターンネーム・テーブル
GRAPHIC5モードでは、パターンネーム・テーブルの1バイトが画面上の4ドットに対応しています。それぞれのドットの色情報は2ビットで表され、4色が指定できます。パターンネーム・テーブルの設定は、GRAPHIC5モードと同様、R#2にアドレスの上位2ビットを書き込むことによって行います。設定可能なアドレスは、00000H、08000H、10000H、18000Hの4箇所です(図4.40)。
{{div_begin style='text-align:center;'}}
{{svg 図4.40.svg,,size:700x420}}
{{svg 図4.40.svg,,size:730x420}}
'''図4.40 GRAPHIC5モードのパターンネーム・テーブルの構造'''
{{div_end}}
このことから、(X,Y)の位置にあるドットは、式4.2でアクセスできることになります。リスト4.3がその確認のためのプログラムです。
,{t},{CENTER}
,ADR=X/4+Y*128+ベースアドレス{N}
※X MOD 4が0のときは7、6ビット
X MOD 4が1のときは5、4ビット
X MOD 4が2のときは3、2ビット
X MOD 4が3のときは1、0ビットがそのドットをの色を表す
{{div_begin style='text-align:center;'}}
'''式4.2 座標(X,Y)のドットをアクセスする式'''
{{div_end}}
{{div_begin style='text-align:right;'}}
'''リスト4.3 BASICで書いたGRAPHIC5モード用PSET'''
{{div_end}}
100 '============================================
110 ' LIST 4.3 dot accsess of GRAPHIC 5 mode
120 '============================================
130 '
140 SCREEN 6
150 BA=0
160 FOR I=0 TO 511
170 X=I:Y=I\2
180 COL=3
190 GOSUB 1000
200 NEXT
210 END
220 '
1000 '==========================================
1010 ' PSET(X,Y)
1020 ' COL:color BA:graphic Base Address
1030 '==========================================
1040 '
1050 ADR=X\4+Y*128+BA
1060 LP=X MOD 4
1070 IF LP=0 THEN BIT=&H3F:C=COL*&H40
1080 IF LP=1 THEN BIT=&HCF:C=COL*&H10
1090 IF LP=2 THEN BIT=&HF3:C=COL*&H4
1100 IF LP=3 THEN BIT=&HFC:C=COL
1110 D=VPEEK(ADR)
1120 D=(D AND BIT) OR C
1130 VPOKE ADR,D
1140 RETURN
!3.7.3 画面の色の設定
GRAPHIC5モードでは画面周辺色とスプライトについてハードウェア的にタイリングが行われます。これらの色の指定は他のモードと同じように4ビットで行われますが、4ビットのうち上位2ビットはX座標が偶数のドット、下位2ビットはX座標が奇数のドットの色をそれぞれ表します(図4.41)。
{{div_begin style='text-align:center;'}}
{{svg 図4.41.svg,,size:610x470}}
'''図4.41 GRAPHIC5モードの画面の色の指定'''
{{div_end}}
!!3.8 GRAPHIC6モード
GRAPHIC6モードとは、以下に示す仕様の画面モードをいいます。
画 面:横512ドット×縦212ドット(または縦192ドット)
16色が同時に表示可能
16色のそれぞれは、512色中から任意の1色を選択可能
コマンド:ハードウェアによるグラフィックコマンドが使用可能
スプライト:モード2のスプライト機能が使用可能
必要メモリ:縦192ドット設定時
ビットマップ画面……48Kバイト(C000Hバイト)
(4ビット×512×192)
縦212ドット設定時
ビットマップ画面……53Kバイト(D400Hバイト)
(4ビット×512×212)
ただし、ハードウェアの都合上VRAMが64Kバイトの機種ではまったくこのモードは使用不可能
BASIC:SCREEN7に対応
!3.8.1 GRAPHIC6モードの設定
GRAPHIC6モードへの設定は図4.42に示すとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.42.svg,,size:430x120}}
'''図4.42 GRAPHIC6モードの設定'''
{{div_end}}
!3.8.2 パターンネーム・テーブル
GRAPHIC6モードは、パターンネーム・テーブルの1バイトが画面上の2ドットに対応しています。それぞれのドットの色情報は4ビットで表されており、16色の指定ができます(図4.43)。パターンネーム・テーブルの先頭アドレス指定は、R#2にアドレスの最上位ビットを書き込むことによって行います。設定可能なパターンネーム・テーブルのアドレスは00000Hまたは10000Hの2箇所だけです。座標(X,Y)のドットは、式4.3でアクセスすることができます。リスト4.4がその確認のためのプログラムです。
{{div_begin style='text-align:center;'}}
{{svg 図4.43.svg,,size:700x420}}
{{svg 図4.43.svg,,size:730x420}}
'''図4.43 GRAPHIC6モードのパターンネーム・テーブルの構造'''
{{div_end}}
,{t},{CENTER}
,ADR=X/2+Y*256+ベースアドレス{N}
※Xが偶数のときは上位4ビット
Xが奇数のときは下位4ビットがそのドットの色を表す
{{div_begin style='text-align:center;'}}
'''式4.3 座標(X,Y)のドットをアクセスする式'''
{{div_end}}
{{div_begin style='text-align:right;'}}
'''リスト4.4 BASICで書いたGRAPHIC6モード用PSET'''
{{div_end}}
100 '=============================================
110 ' LIST 4.4 dot accsess of GRAPHIC 6 mode
120 '=============================================
130 '
140 SCREEN 7
150 BA=0
160 FOR I=0 TO 511
170 X=I: Y=I\2: COL=15: GOSUB 1000
180 NEXT
190 END
200 '
1000 '=============================================
1010 ' PSET (X,Y)
1020 ' COL:color BA:graphic Base Address
1030 '=============================================
1040 '
1050 ADR=X\2+Y*256+BA
1060 IF X AND 1 THEN BIT=&HF: C=COL ELSE BIT=&HF0 :C=COL*16
1070 VPOKE ADR,(VPEEK(ADR) AND BIT) OR COL
1080 RETURN
!3.8.3 画面の色の指定
R#7で画面の周辺色の指定ができます(図4.44)。
{{div_begin style='text-align:center;'}}
{{svg 図4.44.svg,,size:600x100}}
'''図4.44 GRAPHIC6モードの画面の色の指定'''
{{div_end}}
!!3.9 GRAPHIC7モード
GRAPHIC7モードとは、以下に示す仕様の画面モードをいいます。
画 面:横256ドット×縦212ドット(または縦192ドット)
256色が同時に表示可能
コマンド:ハードウェアによるグラフィックコマンドが使用可能
スプライト:モード2のスプライト機能が使用可能
必要メモリ:縦192ドット設定時
ビットマップ画面……48Kバイト(C000Hバイト)
(8ビット×256×192)
縦212ドット設定時
ビットマップ画面……53Kバイト(D400Hバイト)
(8ビット×256×212)
GRAPHIC6と同様にVRAMが64Kバイトの機種ではまったくこのモードは使用不可能
BASIC:SCREEN8に対応
!3.9.1 GRAPHIC7モードの設定
GRAPHIC7モードへの設定は、以下に示すとおりです。
{{div_begin style='text-align:center;'}}
{{svg 図4.45.svg,,size:430x120}}
'''図4.45 GRAPHIC7モードの設定'''
{{div_end}}
!3.9.2 パターンネーム・テーブル
GRAPHIC7モードはすべてのモードの中で最も単純な構成であり、画面上の1ドットがそのままパターンネーム・テーブルの1バイトに対応します。また、テーブルに書き込んだ1バイトの値はそのまま256通りの色を表します。パターンネーム・テーブルの先頭アドレス指定は、GRAPHIC6モードの場合と同様、R#2で行います。設定可能なパターンネーム・テーブルのアドレスは00000Hまたは10000Hの2箇所だけです(図4.46)。
1バイトのデータは図4.47のように、緑3ビット、赤3ビット、青2ビットの輝度情報を直接表しています。画面上で(X,Y)の座標にあるドットは、式4.4でアクセスすることができます。
{{div_begin style='text-align:center;'}}
{{svg 図4.46.svg,,size:700x500}}
{{svg 図4.46.svg,,size:730x500}}
'''図4.46 GRAPHIC7モードのパターンネーム・テーブルの構造'''
{{div_end}}
{{div_begin style='text-align:center;'}}
{{svg 図4.47.svg,,size:510x150}}
'''図4.47 RGBの輝度情報'''
{{div_end}}
,{t},{CENTER}
,ADR=X+Y*256+ベースアドレス{N}
{{div_begin style='text-align:center;'}}
'''式4.4 座標(X,Y)のドットをアクセスする式'''
{{div_end}}
!3.9.3 画面の色の指定
R#7で画面の周辺色を指定できます(図4.48)。
{{div_begin style='text-align:center;'}}
{{svg 図4.48.svg,,size:600x80}}
'''図4.48 GRAPHIC7モードの画面の色の指定'''
{{div_end}}