SRモードでの画面周りについて、の続きです。
今回は、横640ドットのグラフィックモードについて、その1です。
○グラフィックモード640×200/640x204ドット
1)縦ドット数について
2)ビットマップモード、直接アクセスモードについて
横320ドットと同じです。
3)VRAMアドレス(直接アクセスモード)
横640ドットの場合、1ドット=2ビットで、1バイトに4ドット収容されます。
ビット順は、
1バイト目:b7-0 = B7 B6 B5 B4 B3 B2 B1 B0
2バイト目:b7-0 = R7 R6 R5 R4 R3 R2 R1 R0
です。
HとRは、ポート0xC0で指定され、bit1:CSS2 =H、bit0:CSS1 =G、になります(CSS3=0時)。
ですが...CSS3=0、CSS2=1、CSS1=1、で使うべきです。
この組み合わせの場合、HGRB=1100、1101、1110、1111、の4色が出力されますが、これは全てパレットで変換できる色に当たります。そのため、16色中任意の4色を出力できる設定になります。
VRAMアドレスは、横320ドットと同じ、ページ#0が0x0000〜0x7FFF、ページ#1が0x8000〜0xFFFFです(割り当ての変更がない場合)。
以下、ページ#0についてで、X座標0〜639、Y座標0〜203とします。
X,Y = 0,0 は、0x1A00、0x1A01 のbit7
X,Y = 1,0 は、0x1A00、0x1A01 のbit6
X,Y = 2,0 は、0x1A00、0x1A01 のbit5
X,Y = 3,0 は、0x1A00、0x1A01 のbit4
X,Y = 4,0 は、0x1A00、0x1A01 のbit3
X,Y = 5,0 は、0x1A00、0x1A01 のbit2
X,Y = 6,0 は、0x1A00、0x1A01 のbit1
X,Y = 7,0 は、0x1A00、0x1A01 のbit0
X,Y = 0,1 は、0x1A02、0x1A03 のbit7
X,Y = 1,1 は、0x1A02、0x1A03 のbit6
X,Y = 2,1 は、0x1A02、0x1A03 のbit5
X,Y = 3,1 は、0x1A02、0x1A03 のbit4
X,Y = 4,1 は、0x1A02、0x1A03 のbit3
X,Y = 5,1 は、0x1A02、0x1A03 のbit2
X,Y = 6,1 は、0x1A02、0x1A03 のbit1
X,Y = 7,1 は、0x1A02、0x1A03 のbit0
X,Y = 0,2 は、0x1A04、0x1A05 のbit7
X,Y = 1,2 は、0x1A04、0x1A05 のbit6
X,Y = 2,2 は、0x1A04、0x1A05 のbit5
X,Y = 3,2 は、0x1A04、0x1A05 のbit4
X,Y = 4,2 は、0x1A04、0x1A05 のbit3
X,Y = 5,2 は、0x1A04、0x1A05 のbit2
X,Y = 6,2 は、0x1A04、0x1A05 のbit1
X,Y = 7,2 は、0x1A04、0x1A05 のbit0
X,Y = 0,3 は、0x1A06、0x1A07 のbit7
X,Y = 1,3 は、0x1A06、0x1A07 のbit6
X,Y = 2,3 は、0x1A06、0x1A07 のbit5
X,Y = 3,3 は、0x1A06、0x1A07 のbit4
X,Y = 4,3 は、0x1A06、0x1A07 のbit3
X,Y = 5,3 は、0x1A06、0x1A07 のbit2
X,Y = 6,3 は、0x1A06、0x1A07 のbit1
X,Y = 7,3 は、0x1A06、0x1A07 のbit0
:
以下省略しますが、4バイト単位(横320ドット時8ドット単位、横640ドット時16ドット単位)で見ると、アドレシングは横320ドットと同じになります。
つまり
横640ドット:X = 8*m, Y = 2*n
横320ドット:x = 4*m, Y = 2*n
が同じアドレスになります。
例えば、
横640ドット X,Y = 0,0
横320ドット x,y = 0,0
横640ドット X,Y = 0,202
横320ドット x,y = 0,202
横640ドット X,Y = 624,0
横320ドット x,y = 312,0
横640ドット X,Y = 624,202
横320ドット x,y = 312,202
などです。
4バイト単位に関して、それぞれのモードを図示すると、以下のようになります。
横640ドットの場合は、VRAMメモリの状態がそのままXY座標になるので理解しやすいのですが...
横320ドットの場合は、VRAMメモリの状態とXY座標が入れ替わったりするので、直感的に理解しにくいです。

