例題5 screen 1 の類題  
例題の方では、太文字処理をしましたよね。
では、今度は、斜体、一般に言う、イタリック体を作っていきましょう。
MSX-FANのBASIC-ピクニックを見て、そこに書かれているプログラムを参考に、下記のプログラムを作りました。
10 ST=33:EN=90
20 FOR I=ST TO EN
30 FOR J=0 TO 7
40 D=VPEEK(I*8+J)
50 IF J=0 THEN D=D\8
60 IF J=1 THEN D=D\4
70 IF J=2 THEN D=D\4
80 IF J=3 THEN D=D\4
90 IF J=4 THEN D=D\2
100 IF J=5 THEN D=D\2
110 IF J=6 THEN D=D\1
120 IF J=7 THEN D=D\1
130 VPOKE I*8+J,D
140 NEXT J
150 NEXT I
例えば、
10000000
01000000
00100000
00010000
00001000
00000100
00000010
00000001
とあるのが、
00010000
00010000
00001000
00000100
00000100
00000010
00000010
00000001
となり、見事にイタリック体の出来上がりです。
でも、いくら何でもこれじゃあ、ソースが冗長過ぎますよね。
そこで、
100 ST=33:EN=90
110 FOR I=ST TO EN
120 FOR J=0 TO 7
130 D=VPEEK(I*8+J)
140 D=D\VAL(MID$("84442211",J+1,1))
150 VPOKE I*8+J,D
160 NEXT J
170 NEXT I
というように、140行1つで、50行から、120行を代用していたのです。
140行をもうちょっと解説する意味を込めまして、
突然BASIC解説〜
MID$
10 A$="This is a pen"
20 PRINT MID$(A$,6,2)
このプログラムを実行すると、30行で、A$の左から6文字目から、2文字が画面に出ます。
又、
10 A$="This is a pen"
20 B$="hat"
30 MID$(A$,11,3)=B$
40 PRINT A$
今度は、30行で、A$の左から11文字目から3文字を、B$に置換します。
というような感じで、文字列から任意の文字を取り出したり、置換するMID$という命令を使って、プログラムの短縮が出来るのです。
でも、文字は文字、数値じゃありませんよね。
だから、VALを用いて、数値化しているのです。
初め、こんな簡単な事に気づかなくて、友人に聞いて、初めて分かりました。
何年MSXマニアやってるんだっていうの!(一人突っ込み)
参考文献 MSX-FAN