IchigoJamでもアルファベットを太文字にしてみよう!(元ネタ on MSX by @ksasao)
「太字化 on IcigoJam」 IchigoJam web で RUN!
太文字化には、好きなキャラクターパターンが作れるPCG機能を使います。
まずは、アルファベットの「A」キャラクターパターンをコピーしてみましょう。
?ASC("A"),CHR$(234) 65 10 OK FOR I=0 TO 7:POKE234*8+I,PEEK(65*8+I):NEXT OK
ALT+Aを押してでる「10」のキャラクターがAに変わりました!(CLPで元に戻せます)
太字にするのは簡単、元のパターンにそのパターンを1bitシフトしたものの論理和を書き込めばOK!
FOR I=0 TO 7:N=PEEK(65*8+I):POKE234*8+I,N|N>>1:NEXT OK
アルファベットA〜Zまでの26文字を全部変更してみましょう。
FOR J=0 TO 25:FOR I=0 TO 7:N=PEEK((65+J)*8+I):POKE(224+(10+J)%32)*8+I,N|N>>1:NEXT:NEXT OK
PCGで変更できるのは32コまで、ALT+Vまでしかないので、はみ出したW/X/Y/ZはALT+0〜3に割り当てるようプログラムしてみました。
FOR I=0 TO 7:N=PEEK(65*8+I):POKE234*8+I,N|N>>2:NEXT OK
2bitずらすとおもしろ文字になります。いろいろ実験してみましょう!
PEEK(ピーク)はメモリの値を取得するコマンド
POKE(ポーク)はメモリを書くコマンド(ただし#000〜#6FFのROM領域は書き込みできない)
IchigoJamのメモリマップをまとめてみました。
コンピューターの頭の中をいろいろ探検してみましょう!
「IchigoJam メモリマップ」
おまけ、冒頭のデモプログラム!(RUN on IchigoJam web)
10 CLS 20 LC11,10:S="ICHIGOJAM":GSB@PUTB 30 LC4,14:S="BOLD CHARACTER WITH PCG":GSB@PUTB 40 FOR I=0 TO 31:POKE #920+I,64+(I+23)%32:POKE#960+I,224+I:NEXT 50 CLP 60 FOR I=0 TO 32*8-1:C=64+(I/8+23)%32:POKE #700+I,PEEK(C*8+I%8):NEXT 70 FOR J=0 TO 1 80 FOR I=0 TO 32*8-1:A=PEEK(#700+I):POKE#700+I,A|A>>1:NEXT 90 NEXT 100 ?:?:?"TYPE ALT+A!":END 110 @PUTB:FOR I=0 TO LEN(S)-1 120 IF ASC(S+I)=SPACE ?" "; ELSE ?CHR$(224+(ASC(S+I)-55)%32); 130 NEXT:RTN
マシン語で太字化にも挑戦してみましょう!
(追記、マシン語解答例)
links
- オリジナルキャラをつくるPCG - IchigoJamプリント
- asm15アセンブラ for IchigoJam
- 連載、IchigoJamではじめる、Armマシン語入門 1. はじめてのマシン語
- ベーマガ復活11号、近日発売!
元ネタ on MSX
MSX BASIC で書いたコード(前半)をマシン語で書きなおす(後半)とこれくらい差がある。コードは文字を太文字化するやつ。 pic.twitter.com/ntc2rk7jUR
— ミクミンP/Kazuhiro Sasao (@ksasao) September 14, 2017