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のドキュメントはこちら

    1. TTL USB-シリアルを使ってSTC-ISPを使って書き込む。Clockは11.0592MHzを選択。
    2. シリアル速度は9600bps固定。
    3. 起動後にスペースバーを叩くと起動する。

STC15F2K08S2 だけで動作する TinyBasic

Tiny BASIC51 STC15F2K08S2

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

tb51-ascii.jpg
  • 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

tb51asciiart.jpg
  • 他のポーティングを試してみた。*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