現在地

68000 Tiny BASIC の予約語


カテゴリー:

先日ソースコードを発見したMC68000用のTiny BASIC、せっかく発見したのでコードを整理してみようと思っています。

まずは手始めに予約語リストをまとめてみました。

中間コード 予約語 機能 備考
0x80 LIST ダイレクトコマンド
0x81 LOAD ダイレクトコマンド
0x82 NEXT
0x83 RUN ダイレクトコマンド
0x84 SAVE ダイレクトコマンド
0x85 LIMIT ダイレクトコマンド
0x86 SYSTEM システム(モニタ)に戻る ダイレクトコマンド
0x87 BYE システム(モニタ)に戻る ダイレクトコマンド
SYSTEMと同じ
0x88 NEW ダイレクトコマンド
0x89 LET
0x8A INPUT
0x8B GOTO 行番号のほかラベルも使用可
0x8C GOSUB 行番号のほかラベルも使用可
0x8D RETURN
0x8E REM
0x8F FOR
0x90 IF
0x91 PRINT
0x92 POKE メモリにバイト書き込み
0x93 STOP
0x94 CALL アドレスを指定して機械語ルーチンを呼び出す
0x95 PUSH スタックに値を積む
0x96 POP スタックから変数に値を取り出す
0x97 SWAP 2つの変数の値を交換
0x98 WPOKE メモリにワード書き込み
0x99 LPOKE メモリにロングワード書き込み
0x9A CLEAR
0x9B PEEK メモリから1バイト読み込み 関数
0x9C RND 乱数 関数
0x9D ABS 絶対値 関数
0x9E SIZE 関数
0x9F SQR 平方根(整数) 関数
0xA0 INKEY 関数
0xA1 VARPTR 変数(A~Z)の格納アドレス 関数
0xA2 LEVEL 関数
0xA3 WPEEK メモリから1ワード読み込み 関数
0xA4 LPEEK メモリから1ロングワード読み込み 関数
0xA5 NOT 論理否定 関数
0xA6 SGN 符号(-1,0,1) 関数
0xA7 TO FOR文の終値
0xA8 STEP FOR文の増分
0xA9 AND 論理積 2項演算子
0xAA OR 論理和 2項演算子
0xAB XOR 排他的論理和 2項演算子
0xAC EOR 排他的論理和 2項演算子
XORに同じ(MC68000アセンブラに合わせた)
0xAD >= 2項演算子
0xAE <> 2項演算子
0xAF > 2項演算子
0xB0 = 2項演算子
0xB1 <= 2項演算子
0xB2 < 2項演算子
0xB3 HEX
0xB4 MOD 剰余 2項演算子
0xB5 THEN 行番号のほかラベルも使用可
0xB6 ELSE 行番号のほかラベルも使用可
0xB7 CHR
0xB8 READ
0xB9 DATA 定数だけでなく式も書ける
READ時に評価される
0xBA RESTORE 行番号のほかラベルも使用可
0xBB FACT 階乗(n!) 関数
0xBC INP 未実装
0xBD OUT 未実装
0xBE TRON 実行中の行番号を表示するようにする
0xBF TROFF 実行中の行番号を表示しないようにする
0xC0 SPC
0xC1 PULL スタックボトムから取り出してFIFOとして使えるようにするつもりだったが未実装
0xC2 LPRINT 未実装

何かMicrosoft BASICを髣髴とさせるものが多いのは、私がN BASICのユーザだったからです。それとPC-9801シリーズを持っていた友人への対抗心もありました。

順序が一部変なところがあるのは省略形の優先順位のためです。例えば「PRINT」は「PRIN.」「PRI.」「PR.」「P.」と略すことが可能ですが、「P.」だと「PRINT」なのか「POKE」なのかわかりません。そのような場合はこのテーブルの順序で優先順位が決まるので、使用頻度の高いほうが優先されるように入れ替えています。

1文字の演算子などはリストに無い(中間コードがない)ものもあります。それらはそのままアスキーコードで格納されます。

まだ未確認の部分も多いのでわかり次第追記予定です。

参考文献・関連図書: 
ゴードン・ブランドリー「Tiny BASIC」,『DDJ 68000プログラミングツールブック』pp.67-98, 工学社.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。