TTA-8

6. TinyBASIC改 で プログラムを 書こう

TinyBASIC改 は、TTA-8 のために 作った 小さな BASIC です。 パソコン(ブラウザ)の 上で、TTA-8 の 命令(READ / WRITE)に 翻訳されます。

はじめての プログラム

10 REM ===== はじめての たし算 =====
20 $A = 3
30 $B = 5
40 $C = $A + $B
50 OUT $C
60 END

変数と 数

もの 書きかた せつめい
変数 $A〜$Z、$0〜$5 ぜんぶで 32こ。0〜255 の 数が 1つ 入る
数 12、0b101010、0x2A 10進・2進・16進。0〜255

255 を こえると 0 に もどり、0 より 小さく なると 255 の ほうへ まわります(8bit だから)。

計算

書きかた 意味
$A + 1 たし算
$A - 1 ひき算
$A AND 0b000111 どちらも 1 の ビットだけ 1
$A OR 0b100000 どちらかが 1 の ビットは 1
$A NAND $B AND の 反対
IN ボタン(S1=1、S2=2、両方=3)

左から 順に 計算します(かっこは 使えません)。

命令の 一覧

命令 例 意味
代入 $A = $B + 1 変数に 入れる
OUT OUT 0b000001 LED に 出す(右はしが bit0)
IF … THEN IF $M = 1 THEN GOTO 300 同じ なら THEN の あとを やる
  IF IN <> $M THEN GOTO 100 ちがう なら THEN の あとを やる
GOTO GOTO 100 その 行へ とぶ
GOSUB / RETURN GOSUB 900 その 行へ 行って、RETURN で もどってくる
WAIT WAIT 50 50 × 0.01秒 = 0.5秒 まつ
POKE / PEEK POKE 127, 5 アドレスに 直接 書く / 読む
END END おわり
REM REM メモ メモ

: で 区切ると、1行に いくつも 書けます(例:$L = 1 : GOSUB 900)。

ためしてみよう

LED で 2進数カウンター

10 REM ===== LED で 2進数カウンター =====
20 $C = 0
30 OUT $C
40 WAIT 50
50 $C = $C + 1
60 GOTO 30

0.5秒ごとに 1ずつ ふえて、LED が 2進数で 数えます。63 の つぎは? 考えてから ためしてみよう。

かけ算 6 × 7

TTA-8 には かけ算の 部品が ありません。でも たし算を くりかえせば できます。

10 REM ===== かけ算 6 x 7 (たし算のくりかえし) =====
20 $A = 6 : $B = 7 : $C = 0
30 IF $B = 0 THEN GOTO 70
40 $C = $C + $A
50 $B = $B - 1
60 GOTO 30
70 OUT $C
80 END

答えの 42 は 101010。LED が 1つおきに 光ります。

LED フラッシャー(ボードに 入っている もの)

programs/basic/flasher.bas を TTA-8 ラボの サンプルから えらんで、中を 読んでみましょう。 IN で ボタンを 読んで、IF で 模様を えらんでいます。

できないこと と その かわり

できないこと かわりの 方法
< > で 比べる <>(ちがう)を 使って くりかえす
かっこ ( ) 式を 2行に 分ける
GOSUB の 中で GOSUB もどり先を 1つしか おぼえられない
PRINT(文字を 出す) 画面が ないので LED に OUT する

くわしい 文法は TinyBASIC改 文法書 を 見てね。


← 5. TTA-8 ラボで 中を のぞこう | つぎへ → 7. アセンブリで 書いてみよう