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 は 変数(数を 1つ しまっておく 箱)OUT で LED に 出します。8 は 001000 と 光りますREM の うしろは メモ(プログラムには 関係 ありません)| もの | 書きかた | せつめい |
|---|---|---|
| 変数 | $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)。
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 の つぎは? 考えてから ためしてみよう。
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つおきに 光ります。
programs/basic/flasher.bas を TTA-8 ラボの サンプルから えらんで、中を 読んでみましょう。
IN で ボタンを 読んで、IF で 模様を えらんでいます。
| できないこと | かわりの 方法 |
|---|---|
< > で 比べる |
<>(ちがう)を 使って くりかえす |
かっこ ( ) |
式を 2行に 分ける |
GOSUB の 中で GOSUB |
もどり先を 1つしか おぼえられない |
PRINT(文字を 出す) |
画面が ないので LED に OUT する |
くわしい 文法は TinyBASIC改 文法書 を 見てね。