- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
{{include unfinished_page}}
,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[9章 YJK方式]] ,{BSIZE:0|RIGHT}[[5部 スロットとカートリッジ|5部 スロットとカートリッジ]] →
,{c C},{CENTER}
,{c B},{BSIZE:0}
,{c D},{BSIZE:1}
,{c S},{SIZE:50}
MSX-BASIC 3.0では、YJKモードおよびYJK/RGB混在モード(以下、YJKモードとYJK/RGB混在モードを総称して、自然画モードと呼ぶ)として、SCREEN 10〜12を設けていますが、V9958ではそれに相当するGRAPHICモードはありません。
V9958を自然画モードにするためには、表示モードをGRAPHIC 7にした上で、R#25のbit 3、4を操作します。詳しくは、10.4のサンプルプログラムをご参照ください。
!!10.1 SCREEN 9
SCREEN 9 は韓国バージョンのMSXでハングル文字を表示するために使われています。したがって、日本製のMSXでは使用しません。
!!10.2 SCREEN 10、11
!10.2.1 特徴
,{t},{BSIZE:0}
,{c},{B},{B}
,■解像度 ,横256×縦212ドット(または縦192ドット)のYJK・RGB混在モード
,■表示色 ,"12,499色同時(全画面)"
,■スプライト ,モード2(パレットが使用可能)
,■1画面に必要なVRAM容量,128Kバイト(2画面)
!10.2.2 関係するレジスタとVRAMの領域
GRAPHIC 7 (SCREEN 8) と同じです。BASICではSCREEN 10またはSCREEN 11として扱います。
!10.2.3 初期設定
R#25以外は、GRAPHIC 7 (SCREEN 8)と同じです。
{{svg 図P588.svg}}
{{svg 図P588-2.svg}}は表示モード設定用のビットをYJK・RGB混在モードにセットした例です。この表示モードでは、LN=1のとき縦212ドット、LN=0のとき縦192ドット(BASICではサポートしない)に設定されます。その他のビットは任意に設定します。
,{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},{D|C},{D|C},{D|C|A},{D|C|A},{D|C},{D|C},{D|C}
,R#25,0 ,CMD ,VDS ,1 ,1 ,WTE ,MSK ,SP2
■(灰色)は表示モード設定用のビットをYJK・RGB混在モードにセットした例です。この表示モードでは、LN=1のとき縦212ドット、LN=0のとき縦192ドット(BASICではサポートしない)に設定されます。その他のビットは任意に設定します。
1)パターンネームテーブルの設定
{{svg 図4.68.svg}}
'''図4.68 SCREEN 10、11モードのパターンネームテーブル'''
!10.2.4 SCREEN 10、11モードのVRAMマップ
GRAPHIC 7 (SCREEN 8)と同じです。
!10.2.5 SCREEN 10とSCREEN 11の違い
VDP上ではSCREEN 10と11は何の違いもありません。アトリビュートが「0」の画素はYJK方式で表示され、アトリビュートが「1」の画素はYの4ビットが色コードとして扱われます。MSX-BASIC 3.0ではこのYJK/RGB混在モードをさらに2つのスクリーンモードとして扱います。
SCREEN 10では、
* LINE、PSETなどの描画コマンド
* PRINT#文による文字表示
* 漢字モードにおけるグラフィック画面へのPRINT文
などで色指定を行うときは、SCREEN 0から7までで使用する通常の色コードである0〜15だけが使用できます。これ以外の値はIllegal function callとなります。この色指定でRGB以外の部分、すなわちJKの成分(下位3ビット)はそのままにして、描画されない画素の表示が影響されることを防ぎます。
例えば、色コード15のドットはこの画面ではY成分の部分(上位4ビット)及びアトリビュートビットを1にすることになり、VRAM上では&HF8となりますが、SCREEN 10のときは描画に際して、このような変換を意識する必要はありません。
一方、SCREEN 11では、色コードの扱いはVRAM上の値そのものとなり、色コードは0〜255を指定できます。
!!10.3 SCREEN 12
!10.3.1 特徴
,{t},{BSIZE:0}
,{c},{B|SIZE:200},{B}
,■解像度 ,横256×縦212ドット(または縦192ドット)のYJKモード
,■表示色 ,"19,268色同時(全画面)"
,■スプライト ,モード2(パレットが使用可能)
,■1画面に必要なVRAM容量,128Kバイト(2画面)
!10.3.2 関係するレジスタとVRAMの領域
GRAPHIC 7 (SCREEN 8) と同じです。BASICではSCREEN 12として扱います。
!10.3.3 初期設定
R#25以外は、GRAPHIC 7 (SCREEN 8)と同じです。
{{svg 図P591.svg}}
{{svg 図P588-2.svg}}は表示モード設定用のビットをYJKモードにセットした例です。この表示モードでは、LN=1のとき縦212ドット、LN=0のとき縦192ドット(BASICではサポートしない)に設定されます。その他のビットは任意に設定します。
,{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},{D|C},{D|C},{D|C|A},{D|C|A},{D|C},{D|C},{D|C}
,R#25,0 ,CMD ,VDS ,0 ,1 ,WTE ,MSK ,SP2
■(灰色)は表示モード設定用のビットをYJKモードにセットした例です。この表示モードでは、LN=1のとき縦212ドット、LN=0のとき縦192ドット(BASICではサポートしない)に設定されます。その他のビットは任意に設定します。
1)パターンネームテーブルの設定
{{svg 図4.69.svg}}
'''図4.69 SCREEN 12モードのパターンネームテーブル
!10.3.4 SCREEN 12モードのVRAMマップ
GRAPHIC 7 (SCREEN 8)と同じです。
!!10.4 SCREEN 10、11、12の設定方法
SCREEN 0〜8の切り替えは、モードレジスタに値を設定することによって行いますが、自然画モード(SCREEN 10〜12)については、別の方法を使います。なぜならば、自然がモードとはV9958にとって、GRAPHIC 7モードでR#25のYEAビットとYJKビットを設定した状態だからです。
SCREEN 0〜8の切り替えは、モードレジスタに値を設定することによって行いますが、自然画モード(SCREEN 10〜12)については、別の方法を使います。なぜならば、自然画モードとはV9958にとって、GRAPHIC 7モードでR#25のYEAビットとYJKビットを設定した状態だからです。
したがって、GRAPHICモードが7の状態で以下のプログラムを実行すれば、SCREENモードを10、11、12に設定することができます。
MODE変数のbit 5のSET、RESETはROM内のルーチン(GRPPRT、NVBXLNなど)を使用する可能性がある場合にのみ必要で、アプリケーションがVDPを直接操作する場合には必要ありません。もちろん、そのような場合には、アトリビュートの操作はアプリケーションプログラムから行わなければなりません。
また、BASICで行っているようなサービス(SCREEN 12からSCREEN 10に切り替えた時アトリビュートを落としている)は、以下の中には含まれていません。
'''リスト4.1 SCREEN 10、11、12の設定方法'''
mode equ 0fafch
rg25sa equ 0fffah ;register #25 save area
wrtvdp equ 47h
screen10:
ld hl,mode
res 5,(hl)
ld a,(rg25sa)
or 00011000b
ld b,a
ld c,25
jp wrtvdp
screen11:
ld hl,mode
set 5,(hl)
ld a,(rg25sa)
or 00011000b
ld b,a
ld c,25
jp wrtvdp
screen12:
ld a,(rg25sa)
and 11100111b
or 00010000b
ld b,a
ld c,25
jp wrtvdp
end
,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[9章 YJK方式]] ,{BSIZE:0|RIGHT}[[5部 スロットとカートリッジ|5部 スロットとカートリッジ]] →