ニャオニャオ21世紀

レトロゲーム(MSX、PCエンジン、セガサターン)と、MSXぽいアプリ開発と、最新ゲーム(PS4、SWITCH)、身体(身体意識など)、ライフハック、電子工作ほか雑記を綴っています

MSX BASIC基礎 その14 文字を計算で太くする!昔、MSX FANなどに載っていました^^






このMSX BASICの基礎のページでは、

SCREEN1.5(多色刷り)を使っていますが、

その時に文字を定義(コピー)しているので、どうせならかっこいい文字にしておこう、と思いまして^^

VRAMの文字をちょこちょこっと弄ってやるだけでできます。

 

f:id:nyaonyaokun:20181119173444p:plain

 

こんな感じの文字になります(^∇^)

普通の文字がこれですから、

f:id:nyaonyaokun:20181119173604p:plain

かなりかっこよくなりますね!

 

ソースコードを。

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 ゲーム・本体・雑誌などを

たまにチェックすると掘り出し物があるかも^^

(楽天には駿河屋さんもいますので(๑╹ω╹๑ ))

 

 


「ニャオニャオ21世紀は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」

当サイトは第三者配信の広告サービス「Google Adsense グーグルアドセンス」を利用しています。 広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。 Cookie(クッキー)を無効にする設定およびGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご覧ください