グラフィック表示を行う場合、GPRINTよりもPRINT(フォント書き換え)の方が速いのは明白なのですが当然ながらキャラクタ単位でしか表示されません。これが1ドット単位で表示できればフォント書き換えの活用場面が増えるのに・・・と考えている人も多いでしょう。
しかし、擬似的にドット単位で表示を行うことは可能なのです。
原理はすごく簡単で、1ドットずつずらしたキャラを6種用意(フォントが横6ドット単位で構成されているため)して順番に表示してやれば良いだけです。具体的にどのようにすればよいかは下記のサンプルを参考にしてみてください。
なお、このサンプルではPRINTの高速化を行っています。
《 フォント書き換え版 サンプルリスト 》
10 CLS :CLEAR :DIM G$(5):E$="000000000000":G$=E$+"60F0F874747C7474F8F07060"+E$ 20 FOR I=0TO 5:H=177+I*3:G$(I)=" "+CHR$ (H)+CHR$ (H+1)+CHR$ (H+2)+" " 30 FOR J=0TO 17 40 POKE &BFAE6+I*18+J,VAL ("&"+MID$ (G$,(J-I)*2+11,2)) 50 NEXT :NEXT 60 POKE &BFC93,&80,&FA,&B:OPEN "SCRN:"FOR OUTPUT AS #1:X=99 70 K=VAL INKEY$:X=X+(K=1)*SGN X+(K=3)*SGN (X-215) 80 LOCATE X/6,2:PRINT #1,G$(X-INT (X/6)*6) 90 GOTO 70 |
10 CLS :CLEAR :DIM G$(5):E$="000000000000":G$=E$+E$+"60F0F874747C7474F8F07060"+E$+E$ 20 FOR I=0TO 35 30 POKE &BFAE6+I,VAL ("&"+MID$ (G$,I*2+1,2)) 40 NEXT 50 POKE &BFC94,&FA,&B:OPEN "SCRN:"FOR OUTPUT AS #1:X=99 60 K=VAL INKEY$:X=X+(K=1)*SGN X+(K=3)*SGN (X-215) 70 POKE &BFC93,134-X+INT (X/6)*6:LOCATE X/6,2:PRINT #1,"アイウエ" 80 GOTO 60 |