2020/05/07(木)STC15F2K08S2 One Chip TinyBasic for 8051 (Tiny BASIC51)
2KBのSRAM内蔵8051マイコン-STC15F2K08S2でTiny BASIC51-その後
Tiny Basic For 8051*1を修正して内蔵RAM(2KB)を利用出来るようになった。
HEXファイルだけここに公開しておく。
TinyBasic51のドキュメントはこちら
- TTL USB-シリアルを使ってSTC-ISPを使って書き込む。Clockは11.0592MHzを選択。
- シリアル速度は9600bps固定。
- 起動後にスペースバーを叩くと起動する。
STC15F2K08S2 だけで動作する TinyBasic

8051-TINYBASICで走るASCIIART(マンデルブロー)のプログラムリスト

- Ryo Mukaiさんの*2にあったTinyBasic用のASCII ARTをTB51用に書き換えたがどうも表示結果が違う。上手くコンバート出来なかった様子。
リスト-1
10 F=50
20 FOR Y=-12 TO 12
30 FOR X=-39 TO 39
40 C=X*229/100
50 D=Y*416/100
60 A=C
70 B=D
80 I=0
90 Q=B/F
95 S=B-Q*F
100 T=(A*A-B*B)/F+C
110 B=2*(A*Q+A*S/F)+D
120 A=T
130 P=A/F
135 Q=B/F
140 A=P*P+Q*Q
145 IF A>4 THEN GOTO 180
150 I=I+1:IF I<=15 THEN GOTO 90
160 PRINT " ";
170 GOTO 200
180 PRINT I;
200 NEXT X
210 PRINT
220 NEXT Y

- 他のポーティングを試してみた。*3但しgitにあるコードはPRINT文がカンマで終わっていまるのでセミコロンに変える必要がある。このリストだと想定した出力結果が得られている。
リスト-2
10 F=50
20 Y=-12
30 X=-39
40 C=X*229/100
50 D=Y*416/100
60 A=C
70 B=D
80 I=0
90 Q=B/F
100 S=B-Q*F
110 T=(A*A-B*B)/F+C
120 B=2*(A*Q+A*S/F)+D
130 A=T
140 P=A/F
150 Q=B/F
160 Z=0
170 IF (P*P+Q*Q)<5 GOTO 360
180 IF I=0 PRINT "0";
190 IF I=1 PRINT "1";
200 IF I=2 PRINT "2";
210 IF I=3 PRINT "3";
220 IF I=4 PRINT "4";
230 IF I=5 PRINT "5";
240 IF I=6 PRINT "6";
250 IF I=7 PRINT "7";
260 IF I=8 PRINT "8";
270 IF I=9 PRINT "9";
280 IF I=10 PRINT "A";
290 IF I=11 PRINT "B";
300 IF I=12 PRINT "C";
310 IF I=13 PRINT "D";
320 IF I=14 PRINT "E";
330 IF I=15 PRINT "F";
340 Z=-1
350 GOTO 410
360 I=I+1
370 IF I<16 GOTO 410
380 PRINT " ";
390 Z=-1
410 IF Z=0 GOTO 90
420 X=X+1
430 IF X<=39 GOTO 40
440 PRINT
450 Y=Y+1
460 IF Y<=12 GOTO 30