このMSX BASICの基礎のページでは、
SCREEN1.5(多色刷り)を使っていますが、
その時に文字を定義(コピー)しているので、どうせならかっこいい文字にしておこう、と思いまして^^
VRAMの文字をちょこちょこっと弄ってやるだけでできます。
こんな感じの文字になります(^∇^)
普通の文字がこれですから、
かなりかっこよくなりますね!
その他、MSX BASICの基本のページについての
目次はこちら
サンプルプログラム
ソースコードを。
10 FOR I=0 TO 255
20 FOR J=0 TO 7
30 K=VPEEK(I*8+J)
40 L=K OR (K\2)
50 VPOKE I*8+J,L
60 NEXT
70 NEXT
256文字すべてを太文字にしています。
1文字単位でみてみると、
20 FOR J=0 TO 7
30 K=VPEEK(I*8+J)
40 L=K OR (K\2)
50 VPOKE I*8+J,L
60 NEXT
30行で1文字のデータの1ライン分を読み込んでいます。
文字のAだったら、
00010000
00101000
00101000
01000100
01111100
10000010
10000010
00000000
赤の1行だけを読み込んでくる感じですね。
肝心なのが、40行です!!
40 L=K OR (K\2)
Kの中身が、00010000の時
まず
(K ¥ 2)
しています。
(MSXの文字と、Macの文字は異なることがあります。
ここでは\となっていますが、MSXでは¥です。)
これは、割って余りを捨てるというものでした。
(+ , - , * , / の一種なのです)
(K ¥ 2)は、2で割って余りを捨てる!
これが何を意味するかといいますと、右へシフトするということなのです。
シフトといいますと、おもにマシン語(機械語・アセンブリ)で使います。
ビット操作です。
右へ1つシフトするというのは、
00010000 -> 00001000
と1つずつ右へビットを動かすことです。
(左から4番目の1が、左から5番目になっています^^)
(数字 ¥ 2)が右へシフトというのは知らなかったです(^^;)
確かにマシン語の勉強の時、右へ1つシフトすると、
値が1/2になるというのはやったのですが...
そして
K OR (K¥2)
でORをとっています。
ORというのは、論理演算でして、
0 OR 0 = 0
0 OR 1 = 1
1 OR 1 = 1
というものです(^^;)
BASICではあまり使うこともないかもしれないですね〜^^
色々と使い道があるようですね〜。あまり知らないですが( ・∇・)
興味のある方はこちらへ。
MSXマシン語入門(Z80 アセンブラ・機械語) 第25回 論理演算の基本 勉強レポート - ニャオニャオ21世紀
話を戻すと、ORをとるとどうなるかということですが、
00010000 (元々のデータ)
00001000 (右へ1つシフトした後のデータ)
OR -------------
00011000
となります。
これは、右へ1ビットずらしたものを、元のものと合成しているということです。
1文字すべてにORをとると(1ラインずつ。全部で8回)
Aだと、
00011000
00111100
00111100
01100110
01111110
11000011
11000011
00000000
という感じになります^^
まぁ理解するのが面倒な方は、
30 K=VPEEK(I*8+J)
40 L=K OR (K\2)
50 VPOKE I*8+J,L
この部分だけを使ってやれば、太文字化できると知っていればOKです。
あとはコピペで! ( ̄∇ ̄)
プログラムの最初にちょこっとやっておくだけなので、コピペだけで十分ですね!
サンプルプログラム実行(ソースコードもあり) MSXPen - webMSX
MSX ゲーム・本体・雑誌などを
たまにチェックすると掘り出し物があるかも^^
(楽天には駿河屋さんもいますので(๑╹ω╹๑ ))