{{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ではサポートしない)に設定されます。その他のビットは任意に設定します。 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ではサポートしない)に設定されます。その他のビットは任意に設定します。 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ビットを設定した状態だからです。  したがって、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部 スロットとカートリッジ]] →