前提 §
PC-8001のN-BASICのカラーモード(Console ,,,1)では表示できる1行あたりの文字数が1文字減ります。最も左端の文字は描画される対象になりません。この左端の1文字はPOKEまたはマシン語で書き込めることは分かっていましたが、実はN-BASICの普通の機能だけで書き込めることが分かりました。
特定の文字を書き込む方法 §
COLOR 色コード,文字コード,0:? chr$(12);
全ての左端の文字は同じになります。
特定のグラフィックを書き込む方法 §
COLOR 色コード,グラフィックパターン,1:? chr$(12);
全ての左端のグラフィックは同じになります。
左端の文字を消さずに画面はどうやってクリアするか §
? chr$(12);は左端もクリアしてしまうので使えません。
LINE(0,0)-(79,24)," ",BF
(空白文字でクリアする場合)
LINE(0,0)-(159,99),PRESET,BF
(グラフィックでクリアする場合)
問題点 §
実は、文字またはグラフィックを描画してしまうと、その影響で最初の1文字の属性も変化してしまい、文字がグラフィックに化けたり、グラフィックが文字に化けたりします。おそらく、行の右端の文字の属性が次の行の先頭に漏れていると推定されます。
つまり、左端文字に属性を指定しようとすると、右端の文字にも属性を指定しなければならず、表現力が制限されてしまいます。
問題点への対応策 §
実は、右端の文字の属性を制御できないとすれば、左端の文字をCOLOR文で描画するテクニックは著しく制限を受けます。
テキストモード、グラフィックモードに関係なく同じ表示になるコードは0しかありません。テキストモードで0は空白文字になるが、グラフィックモードでも前ピクセル黒になります。見た目が同じなので、どちらに切り替わっても同じに見えます。カラー指定されても常に黒なので、色指定も無視できます。
従って、カラーモードでかつ右端の文字の属性を自由に設定できない場合、COLOR文の第2パラメータに0以外を指定できません。ただし属性の変化の指定がない場合、たとえば全て白色のテキストの場合は0以外を指定しても破綻しません。
考察 §
N-BASICのカラーモードの左端の1文字を無効にする実装は問題点が多すぎて、機能を削って左端の1文字も有効にするN88-BASICにつながったものと推定できます。