SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

絵文字エディタ

既に作っている人がいたと思うのですが、ちょっと思い立って絵文字エディタを作ってみました。
f:id:shiro0922:20220205124030p:plain

f:id:shiro0922:20220205111455p:plain

  • 左上の8X8ドットが編集フィールドです。矢印キーでカーソル移動、スペースキーでドットON/OFF、BackSpaceキーで編集フィールドをクリア、Enterキーでプログラムを終了します。数字キーの1と2で編集対象の文字コードが切り替わります(224~255)。
  • 作った絵文字とPOKE命令の行が下に表示されます。POKEの行は、自分でプログラムを作る時の参考にしてください。
  • ドットをON/OFFした時点で文字データは書き換わっています。元に戻したい時は、プログラムを終了して「CLP」を実行してください。

プログラム

10 '*EMOJI EDITOR
20 CLV:CLS:C=224
30 GSB @VIEW
40 @LOOP
50 LC X,Y,1
60 K=INKEY()
70 X=X-(K=28)+(K=29):X=X&7
80 Y=Y-(K=30)+(K=31):Y=Y&7
90 Z=X+Y*8
100 IF K=32 GSB @DOT
110 P=C-(K=49)+(K=50):P=224+P&31
120 IF P!=C C=P:GSB @VIEW
130 IF K=8 GSB @CLR
140 IF K!=10 GOTO @LOOP
150 LC 0,21:END
160 @VIEW
170 LC 0
180 FOR J=0 TO 7
190 A=C*8+J
200 D=PEEK(A):M=128
210 FOR I=0 TO 7
220 B=(D&M>0)
230 IF B ?CHR$(1); ELSE ?".";
240 M=M>>1
250 NEXT:?
260 NEXT
270 GSB @CHR
280 RTN
290 @CLR
300 FOR J=0 TO 7
310 A=C*8+J
320 POKE A,0
330 NEXT
340 GSB @VIEW
350 RTN
360 @DOT
370 A=C*8+Y
380 D=PEEK(A)
390 M=128>>X
400 D=D^M:B=(D&M>0)
410 IF B ?CHR$(1) ELSE ?"."
420 POKE A,D
430 GSB @CHR
440 RTN
450 @CHR
460 FOR J=0 TO 7
470 A=C*8+J
480 LC 0,11+J
490 ?"POKE #";HEX$(A);",`";
500 D=PEEK(A):M=128
510 FOR I=0 TO 7
520 B=(D&M>0)
530 ?B;
540 M=M>>1
550 NEXT
560 NEXT
570 ?:?"?CHR$(";C;")"
580 LC 0,9:?CHR$(C)
590 RTN