create every day - 福野泰介の一日一創

IchigoJamのメモリマップと太字化プログラム

2017/09/16 23:55:00
#IchigoJam 

雰囲気が変わって楽しい、フォント変更。
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

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image