Monday, December 24, 2012

プチコンでTiny BASIC

プチコン版Tiny BASICを作ってみました。

Tiny BASICとはその昔作られた、OSがほぼ無いようなPCでRAM容量数KBで動くBASIC処理系です。英語版のwikipediaが詳しいです。

プチコン版を作るにあたり、各種Tiny BASIC(※1)がある中で、Palo Alto版を元にインタプリタ型とし、最も命令が少なそうなものを参考にしました。

プチコン版Tiny BASICの勇姿




処理速度。。。?プログラムによりますが、ループと計算を多く繰り返すようなプログラムでは、プチコン上で実行する速度に比べ、100倍以上遅いです。
動画の後半にある素数を求めるプログラムで、プチコン版だとは25個でTIME=12。Tiny版では7800くらい。(TIME:MAINCNTLのカウント値)




Tiny BASIC for Petitcom 起動後の画面。
現在はバージョン1.0alphaです。
Tiny BASIC on SMILE BASIC !


プチコン版Tiny BASICの仕様
  • プログラムは99行まで
  • プログラムは先頭に行番号が必要
  • 変数はA〜Zの26個(数値用、文字列変数はない)
  • コンソールで命令の直接実行も可能
  • プロムラム実行中、Xボタンで中断可能

命令一覧
HELPコマンドの実行結果です。使える命令が分かるようになっています。
プチコン版TinyBASICのHELP

補足説明
  • GOTO命令の飛び先には、変数を指定できます。
  • LINENOシステム関数は実行中の行番号を返します。GOTOと組み合わせると、なんちゃってGOSUB〜RETURNが実現できます。
  • LIST命令でPAUSEパラメータが指定されると、LIST表示は1画面毎に停止し、キー入力(EnterかAボタン)を待ちます。
  • SAVE、LOAD命令はパラメータに数値を指定します。プチコンの"GRP:TBn"(nは指定した数値)というファイルで保存されます。
  • MEM命令は、プログラム可能な行数の残りを表示します。

オリジナルにあって、プチコン版にない機能
  • コントロールキャラクタの表示 (^Lだとか^Gだとか)
  • GOSUB〜RETURN
  • 配列変数@
  • 数値、変数の2バイト整数演算(演算はプチコンの数値変数による演算そのままなので)
  • ほかにもいろいろあるかも

その他
プログラムの入力は、プチコンのLINPUT命令を利用しています。簡易な実装にはもってこいの命令で、ほぼオリジナルと同じような機能となるようです。しかし32桁しか入力できない、カーソル移動が無いためLIST結果の編集ができないなど、BASIC入力環境としての使い勝手はいまいちです。というわけで現在はbeta版作成中。

beta版以降の夢:
  1. LINPUTよりましなスクリーンエディタ
  2. GOSUB〜RETURN
  3. 配列変数 @
  4. FOR〜NEXT
  5. ほか



作った後に思いましたが、プチコンのSMILE BASICでTINY BASICを動かすのは
  • 車輪の再々...々発明
  • まさに屋上屋
  • いまどき行番号?
などいろんな意味で時代に逆行している感がありますが、それでも作って動くと楽しいのです。



TinyBASIC(alpha) for Petitcom




No comments:

Post a Comment