Tiny BASICは、 4KB以下のメモリに収まるBASICプログラミング言語の方言群です。Tiny BASICは、ビル・ゲイツが150ドルで販売されていたAltair BASICの不正コピーについて苦情を述べた公開書簡を発表したことを受けて、デニス・アリソンとPeople's Computer Company(PCC)によって設計されました。Tiny BASICは、初期のマイクロコンピュータで動作する、完全に無料のBASICバージョンとなることを意図していました。
Tiny BASICは、実装ではなく仕様として、1975年9月号のPCCニュースレターに掲載されました。この記事では、プログラマーに各自のマシンで実装し、その結果として得られたアセンブリ言語の実装を、3回に分けて発行予定のニュースレターに掲載するために送り返すよう呼びかけました。Palo Alto Tiny BASICの作者であるLi-Chen Wangは、この概念を説明するために「コピーレフト」という用語を作り出しました。コミュニティからの反響は非常に大きく、ニュースレターはDr. Dobb's Journalとして再発行され、マイクロコンピュータソフトウェアに特化した最初の定期刊行物となりました。
サイズが小さく、ソースコードが無料だったため、これらの実装は、RAMが高価で、一般的なメモリサイズがわずか4~8KBだった1970年代半ばのマイクロコンピュータ黎明期には非常に貴重でし た。MicrosoftのAltair BASICの最小バージョンも4KB マシンで動作しましたが、BASICプログラム用に790バイトしか空きがありませんでした。より多くの空き領域は、Tiny BASICの大きな利点でした。これらの厳しいサイズ制限を満たすために、Tiny BASICの方言は、一般的に他の方言によく見られるさまざまな機能を欠いていました。たとえば、ほとんどのバージョンには文字列変数がなく、浮動小数点演算がなく、変数名は1文字のみが許可されていました。
現在でも、 Arduinoなどのマイクロコントローラをプログラミングするために、小型のBASIC実装が使用されています。

MITS Altair 8800のような初期のマイクロコンピュータには、フロントパネルのスイッチとLEDランプ以外に、内蔵の入出力(I/O) は一般的にありませんでした。実用的な作業を行うには、通常、I/O拡張カードを追加し、何らかの端末を使用する必要がありました。当時、ビデオベースの端末は非常に高価で、コンピュータ本体よりもはるかに高額だったため、多くのユーザーはTeletype Model 33のような機械式デバイスに頼っていました。Model 33 は、当時のほとんどのテレプリンターと同様に、オペレーターがメッセージを事前に録音し、それを「高速」で再生できるようにするためのテープパンチシステムを備えていました。これは、ほとんどの人がメッセージをリアルタイムで入力するよりも速い速度でした。初期のマイクロコンピュータにとって、これは便利なコンピュータデータストレージ形式を提供し、ユーザーはプログラムを紙テープに書き込み、他のユーザーに配布することができました。[ 1 ]
ホームブリュー・コンピュータ・クラブは1975年3月に初めて会合を開き、メンバーはすぐに会合を利用してパンチテープでソフトウェアを交換した。6月の会合で、Altair BASICのプレリリース版が入ったテープが紛失した。テープはスティーブ・ドムピアーに渡され、彼はそれを高速テープパンチを使えるダン・ソコルに渡した。次の会合で、紙テープに書かれたAltair BASICのコピー50個が段ボール箱に入って現れた。[ 2 ] MITSの創設者であるエド・ロバーツはこのことを知ると、「盗まれたMITS BASICのコピーを使っている者は、自分が何者であるかを名乗るべきだ。泥棒だ」と述べた。[ 3 ]ビル・ゲイツはこれをより正式な形で「ホビイストへの公開書簡」を書き、「ホビイストの大多数は知っているはずだが、君たちのほとんどはソフトウェアを盗んでいる」と不満を述べた。[ 4 ]
この苦情は歓迎されなかった。多くの反応の中で、Homebrew のもう 1 つのメンバーでありPeople's Computer Company (PCC) の創設者である Bob Albrecht は、誰でも完全に無料で使用できる独自の BASIC を作成することが最善の対応策だと考えた。彼は、 2 ~ 3 キロバイトのメモリに収まるバージョンの BASIC の仕様を作成するために、スタンフォード大学のコンピュータ サイエンス学部のメンバーであるDennis Allisonにアプローチした。 [ a ]移植を容易にするために、設計は中間言語(IL)、つまりインタプリタのインタプリタに基づいており、これはコード全体のごく一部だけを移植する必要があることを意味していた。
アリソンの最初の設計は、 Intel 8080版の IL インタープリタとともに、1975 年 9 月号の PCC ニュースレターに掲載されました。記事では、プログラマーに自分のコンピュータで設計を実装し、結果として得られるアセンブリ言語版を PCC に送り返すよう呼びかけました。PCC は、これらのユーザーから提出されたバージョン、バグ修正、新しい BASIC で書かれたプログラム、提案や機能強化を含む 3 つの特別ニュースレターを発行する計画を述べました。このコンセプトは、1976 年 1 月号のACMプログラミング言語特別関心グループに再掲載されたことで、さらに注目を集めました。[ 5 ]投稿が殺到しました。注目すべき初期バージョンの中には、Dick Whipple と John Arnold による Tiny BASIC Extended があり、3K の RAM で動作し、FOR...NXTループを追加し、単一の数値配列を許可しました。彼らは IL の使用を避け、8 進数を使用してマシン コードで直接記述しました。[ 6 ]
計画されていた 3 つのニュースレターのうち最初のものは、「Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Running Light Without Overbyte」というタイトルで 1976 年 1 月に発行されました。[ 6 ]これは、「the dragon」というペンネームの Albrecht によるメモから始まり、3 つの版では不十分だと示唆し、読者に継続を望むかどうかを尋ねています。また、PCC の Tiny BASIC に関する元の記事を再掲載し、Extended TB の完全なリストを含め、Allison からのヒントとコツを含む多数の小さな BASIC プログラムを含めました。[ 7 ]最初の号に対する反応は非常に印象的だったため、2 番目の号の序文では、Dr. Dobb's Journalという簡略化された名前で新しいニュースレターの発行を継続することをすでに決定したと述べています。次の数号で、言語の追加バージョンが公開され、同様の記事がInterface Ageなどの他の雑誌に掲載され始めました。

1976年半ばまでに、Intel 8080、Motorola 6800、MOS Technology 6502プロセッサ用のTiny BASICインタープリタが利用可能になった。これは、インターネットによってファイルの転送が容易になる以前のフリーソフトウェアコミュニティの共同開発の先駆けであり、フリーソフトウェア運動以前のフリーソフトウェアプロジェクトの一例であった。[ 9 ]コンピュータ愛好家は紙テープやカセットを交換したり、印刷されたリストからファイルを再入力したりした。[ 10 ]
『ドクター・ドブス』の編集者であるジム・ウォーレンは、1976年7月のACMプログラミング言語ニュースレターで、この成功したプロジェクトの動機と方法について書いた。彼は次のように書き始めた。「ビル・ゲイツがコンピュータ愛好家への怒りの手紙で提起した、ソフトウェアの『盗用』に関する問題には、実行可能な代替案がある。ソフトウェアが無料であるか、複製するよりも購入する方が簡単なほど安価であれば、それは『盗まれる』ことはないだろう。」ビル・ゲイツの手紙は、ソフトウェアを製品にするために書かれたものだった。代替案は、経験豊富な専門家が全体的な設計を行い、実装戦略の概要を示すことだった。知識のあるアマチュアが、さまざまなコンピュータシステム向けに設計を実装する。ウォーレンはこの戦略が継続され、拡大されると予測した。[ 10 ]
1976 年 5 月号のDr. Dobbsには、Li-Chen Wangによる 8080 用の Palo Alto Tiny BASIC が掲載されています。リストはタイトル、著者名、日付から始まりますが、「@ COPYLEFT ALL WRONGS RESERVED」という表記もあります。[ 11 ]同じHomebrew Computer Club のメンバーである Roger Rauskolb が Wang のプログラムを修正・改良し、Interface Age誌の 1976 年 12 月号に掲載されました。[ 8 ] Roger は自分の名前を追加し、COPYLEFT の表記もそのまま残しました。
Tiny BASICは、可能な限り少ないメモリを使用するように設計されており、その機能は簡素であるだけでなく、インタプリタシステムの詳細も簡素です。初期のマイクロコンピュータには、 BASICコンパイラに必要なRAMや二次記憶装置が不足しており、これはタイムシェアリングシステムによく見られる特徴でした。
当時のほとんどのBASICと同様に、Tiny Basicは対話型で、ユーザーはコマンドラインにステートメントを入力して操作を行った。当時のマイクロコンピュータはテレタイプ端末や「ダム端末」と組み合わせて使用されることが多かったため、既存のテキストを直接編集することはできず、代わりにバックスラッシュなどの削除文字を使用して、ユーザーが既存のテキストを編集するために戻る位置を示した。
ユーザーがコマンドラインにステートメントを入力すると、システムはそれが数字で始まっているかどうかを調べました。数字で始まっていない場合は、その行はすぐに解析され、処理され、場合によってはPRINTコマンドによって出力が生成されました。これは「ダイレクトモード」として知られていました。
行の先頭に数字が入力されていた場合、その数字は「50」のような10進数形式から8ビット値(この場合は16進数で$32)に変換されました。この数字は、行の残りの部分が入力された形式と全く同じ形式で格納される配列のような記憶領域へのインデックスとして使用されました。ユーザーがコマンドラインに「LIST」と入力すると、システムはこの配列をループ処理し、行番号を10進数形式に戻してから、行の残りのテキストを出力しました。
プログラムがメモリにロードされている状態でユーザーがRUNコマンドを入力すると、システムは「間接モード」に入ります。このモードでは、ポインタがプログラムの最初の行(例えば10(16進数で$0A))を指すように設定されます。次に、その行の元のテキストがメモリから取得され、ユーザーが直接モードで入力したかのように実行されます。その後、ポインタは次の行に進み、処理が続行されます。
文法は、設計ノートで指定されたものとほぼ同じように、バッカス・ナウア記法で以下に示します。 [ 12 ]リストでは、アスタリスク(" *")は、その左側のオブジェクトの 0 個以上を表します。ただし、" " の定義の最初のアスタリスクは乗算演算子です。括弧はオブジェクトをグループ化し、イプシロン(" ")は空集合を表します。コンピュータ言語の文法表記でよくあるように、縦棒(" ")は選択肢を区別し、別々の行にリストすることで区別します。記号 " " はキャリッジリターン(通常はキーボードの「Enter」キーで生成)を表します。コンソールからの BREAK はプログラムの実行を中断します。 termε|CR
line :: = number statement CR | statement CR statement :: = PRINT expr-list IF expression relop expression THEN statement GOTO expression INPUT var-list LET var = expression GOSUB expression RETURN CLEAR LIST RUN END expr-list :: = ( string | expression ) ( , ( string | expression ) ) * var-list :: = var ( , var ) * expression :: = ( +|-|ε ) term (( +|- ) term ) * term :: = factor (( * | / ) factor ) * factor :: = var | number | ( expression ) var :: = A | B | C ... | Y | Z number :: = digit digit * digit :: = 0 | 1 | 2 | 3 | ... | 8 | 9 relop :: = < ( >| = |ε ) | > ( <| = |ε ) | =string :: = " ( |!|#|$ ... -|.|/|digit|: ... @|A|B|C ... |X|Y|Z)* "なお、string は設計ノートでは定義されていません。
この構文は、単純なものでしたが、1つの革新をもたらしました。GOTOとGOSUBは、行番号だけでなく式を受け取ることができ、GOTO/GOSUB ... OF ...のスイッチ文ではなく、割り当てられたGOTO [ 13 ]を提供しました。これは、当時HPタイムシェアリングBASICでサポートされていた構造であり、 ON ... GOTOよりも前のものです。IF -THEN文(分岐先の行番号だけではなく)を許可する構文は、この時点ではダートマスBASICではまだサポートされていませんでしたが、Digital [ 14 ]によって導入され、Microsoftによってコピーされていました。
設計ノートでは仮想マシンが指定されており、Tiny BASICインタプリタ自体が仮想マシン インタプリタ上で実行される。アプリケーション仮想マシンを使用するという設計者のアイデアは、Val Schorre ( META II、1964 年) と Glennie (Syntax Machine) に遡る。仮想マシン方式の選択により、メモリ空間と実装の手間が節約されたが、そこで実行される BASIC プログラムの実行速度はやや遅かった。[ 15 ]
仮想マシンを使用した方言には、Tiny BASIC Extended、Tom Pittmanの Tiny BASIC [ 16 ]、NIBL などがありました。Denver Tiny BASIC (DTB) や Palo Alto Tiny BASIC などの他の方言は、直接インタプリタでした。DTB の Fred Greeb のようなプログラマーは、IL (Interpretive Language) プログラムを、アセンブリ言語で実装するアルゴリズムの擬似コードとして扱いました。Denver Tiny BASIC は仮想マシンを使用しませんでしたが、IL プログラムに非常に近いものでした。
これは、120行からなるILプログラムからの代表的な抜粋です。
S1: TST S3 , 'GO' ;GOTO または GOSUB? TST S2 , 'TO' ;はい...TO、または...SUB CALL EXPR ;ラベルを取得完了;CR が次の転送でない場合はエラー;セットアップしてジャンプS3: TST S8 , 'PRINT' ;印刷。プログラムの一般的なパターンは、キーワードまたはキーワードの一部をテストし、その情報に基づいてアクションを実行することです。各テストは、行バッファの次の行が何であるかをアサーションします。アサーションが失敗した場合、制御は次のラベルにジャンプします(通常は新しいキーワードまたはトークンを探します)。ここでは、システムはバッファカーソルをスペースを越えて進め、GOをテストし、見つからない場合は行S3にジャンプします。見つかった場合は、次の IL コマンドで実行が続行されます。この場合、システムは次にTOをテストし、失敗した場合は行S2にスキップします(これはSUBをテストし、代わりにGOSUBコマンドであるかどうかを確認します)。成功した場合は、制御が続行されます。この場合、ラベルEXPRから始まる IL サブルーチンが呼び出され、式が解析されます。 Tiny BASIC では、(計算された GO TO)は、より大規模な BASIC 実装の ON-GOTO と同様に有効です。サブルーチンEXPR は、式の計算結果を算術スタック (この場合は行番号) にプッシュします。DONEは、式の後に他のテキストが続かないことを確認し、続く場合はエラーを返します。XFERは、スタックから番号をポップし、対応する行番号が存在する場合は、その行番号に実行を転送 (GO TO 命令) します。GOTO X*10+100GOTO 100
次の表は、最初の Tiny BASIC インタプリタが書かれた仮想マシンの 32 個のコマンドの一部を示しています。[ 17 ]
Tom Pittman はIL について次のように述べている。「TINY BASIC インタプリタは、Dennis Allison によって再帰下降パーサーとして設計されました。この設計のエレガントなシンプルさの一部は、言語に構文糖衣が追加されたことで失われましたが、基本的な形式は残っています。IL は、その手続きの一般的な再帰的な性質と TINY BASIC トークンのシンプルさから、TINY BASIC の再帰下降パースに特に適しています。IL 言語は、TINY の解釈に効果的に最適化されています。経験上、言語に新しい機能を追加する難しさは、その機能の性質とは全く釣り合わないことがわかっています。通常、新しい機能をサポートするために、追加の機械語サブルーチンを追加する必要があります。多くの場合、難しさが利点を上回ります。」[ 19 ]
ホームブリュー・コンピュータ・クラブ向けにTiny BASICを定義するにあたり、ピットマンは次のように記した。「Tiny BASICはダートマスBASICの適切な部分集合であり、LET、PRINT、INPUT、IF、GOTO、GOSUB、RETURN、END、CLEAR、LIST、RUNという文型のみで構成されています。算術演算は16ビット整数のみで、演算子は+、-、*、/、および括弧の入れ子になっています。変数名はA、B、...Zの26個の1文字のみで、関数はありません。文字列や配列はありません... Tiny BASICでは、行番号は256未満と指定されています。」[ 20 ]彼はさらに実装について次のように説明した。「この言語はRND、USR、PEEK、POKE関数を含むように拡張されており、BASICプログラムから6800のすべてのシステムコンポーネントにアクセスできます。」
多くの実装者は、 HPタイムシェアリングBASICやDEC BASIC-PLUSでの自身の経験を設計に取り入れ、Tiny BASICの正式な言語仕様を緩和した。1977年までに発表された7つの主要な実装のうち、
RND()。仕様には含まれていませんが、Tiny BASIC の設計ノートの前のニュースレター記事では、この機能のみを要求していました。:TBX$とPATBが使用されていました;。IFXTHENLETY=X,;RAM を節約するためにトークン化の代替として、TBX [ 21 ] DTB [ 22 ]および MINOL [ 23 ]はキーワードを切り詰めました。PRINTはPR、INPUTはIN、RETURNはRET です。従来の完全なキーワードは受け入れられませんでした。対照的に、PATB は受け入れられる従来のキーワードを許可しましたが、任意のキーワードを末尾にピリオドを付けた最小限の一意の文字列に省略することも許可しました。たとえば、PRINT はと入力できましたが、PR.やその他のバリエーションも機能しました。このシステムは、PATB を使用したTRS-80のレベル I BASICに保持され、後にAtari BASICおよびさまざまなSharp Pocket Computerの BASICにも見られました。[ 24 ]P.
Tiny BASICの代表的な方言としては、オリジナルのDesign Note、Tiny BASIC Extended、Palo Alto Tiny BASIC、そして6800 Tiny BASICが挙げられる。しかし、Tiny BASICには他にも多くのバージョンが存在した。
Tiny BASICは、 People's Computer Companyのニュースレターから派生したニュースレターで初めて公開されました。このニュースレターは後に、長寿のコンピューター雑誌であるDr. Dobb's Journalとなりました。この雑誌には約10のバージョンが掲載されました。
TBXはTexas Tiny BASICとしても知られていた。[ 33 ]
SCELBAL [ 34 ]と6800 Tiny BASICはどちらも雑誌で発表されたが、ソースコードは公開されなかった。
Tiny BASIC の多くのバージョンの中で最も人気のあるものの 1 つは、Li-Chen Wangによる Palo Alto Tiny BASIC、略して PATB でした。PATB は、1976 年 5 月号のDr. Dobbsに初めて掲載され、非標準のニーモニックを使用した独自のアセンブリ言語で書かれていました。これにより、8080 の従来のアセンブラで動作するポートがさらに追加されました。 [ 24 ]インタプリタの最初のバージョンは 1.77キロバイトのメモリを占有し、ユーザー入出力にテレタイプ マシン (TTY)を使用することを前提としていました。元の記事の訂正がDr. Dobb'sの 6 月/7 月号 (Vol. 1、No 6) に掲載されました。この記事には、 Processor TechnologyのVDMビデオ ディスプレイのコードを例として使用して、追加の I/O デバイスを追加する情報も含まれていました。
Wangは、コピーレフトという言葉を最初に使った人物の一人です。Palo Alto Tiny BASICの配布通知には、「@COPYLEFT ALL WRONGS RESERVED」と書かれていました。[ 35 ] Tiny BASICは、正式なコピーレフト配布条件の下で配布されたわけではありませんが、ソースコードが共有され、変更されるという文脈で提示されました。実際、Wangは、独自のインタプリタを作成する前に、Tiny BASIC Extendedに編集を加えていました。[ 21 ]彼は、 Interface Ageに掲載されたRoger RauskolbのPATBバージョンのように、他の人がソースコードを改変して改変版を公開することを奨励しました。[ 8 ]また、 PCCのReference Book of Personal and Home Computingに3番目のバージョンも掲載しました。[ 36 ]
PATB の最も注目すべき変更点の 1 つはFOR...NEXT ループの追加です。オリジナルの TB では、ループはIFとを使ってのみ実装できましたGOTO。Microsoft BASICと同様に、ループの上限と下限はループの開始時に設定され、ループ中は変更されませんでした。そのため、いずれかの境界が変数式に基づいている場合、変数を変更しても境界は変更されませんでした。STEP修飾子は、MS と同様にオプションでした。[ 24 ]
もう一つの重要な変更点は、複数の文を1行に記述できるようになったことである。理由は不明だが、PATBは;既に一般的だったコロンではなく、セミコロンを使って文を区切った:。
その他の変更点としては、変数名 を持つ単一の数値配列がに加えて追加され@、比較において の代わりに が不等号として使用されるようになったことが挙げられる。[ 24 ] [ b ]STOPEND#<>
PATB はエラー メッセージに数字ではなく単語を使用しました。必要なメモリ量を減らすため、メッセージは 3 つだけで、それぞれ単語で構成されていました。WHAT?構文エラー、HOW?存在しない行への GOTO や数値オーバーフローなどの実行時エラー、SORRYメモリ不足の問題に対しては、システムが応答しました。[ 24 ]
ワンはまた、 Tiny BASICでSTARTREKプログラムを作成し、1976年7月号のPeople's Computer Company Newsletterに掲載した。[ 37 ] [ 38 ]
彼は後にこの言語をCromemco用の 3K Control Basic に改良し、文字と数字の形式の変数名 (例:A0からZ9)、論理関数 ( AND()、OR()、XOR())、CALL機械語ルーチンを実行するコマンド、より多くのPRINT書式設定オプション、その他 (との代わりにGET()と; I/O ポート関数) を追加した。[ 39 ]PUT()PEEKPOKE
Palo Alto Tiny BASIC は、 Level I BASIC (1977 年)、 Sharp PC-1211ポケットコンピュータ用の BASIC (1980 年)、Astro BASIC (1982 年、Jamie Fentonによる)など、他の多くの実装にも採用されました。[ 40 ]
高校3年生が書いたMINOLは、完全な設計ノートをサポートしていない唯一の実装であり、演算子の優先順位がなく、関係演算子は3つ(<、=、#)しかなく、とを省略していた。GOSUBまたRETURN、符号なし8ビット精度(他のすべての実装が符号付き16ビット精度をサポートしているのとは対照的)と、0から254までの行番号のみをサポートしていた。
文字列以外ではスペースは許可されませんでした。式がそのアドレスに文字列をロードする前に!乱数を返し、オペレーティングシステムに戻ります。メモリは、上位バイトと下位バイトの2次元配列であるかのようにアドレス指定可能でした(例:「(0,0)」から「(255,255)」)。機械語サブルーチンを実行します。[ 23 ]$OSCALL
他の様々な出版物にも、多くの方言が登場した。

PCCのTiny BASICsの呼びかけに触発され、Robert UiterwykはSWTPC 6800システム用のMICRO BASIC 1.3を書き、SWTPCは1976年6月号のSWTPCニュースレターでこれを公開した。Uiterwykはリーガルタブレットにこの言語を手書きした。彼は後に言語を4Kに拡張し、浮動小数点のサポートを追加した。この実装は、最大10 99の範囲で9桁の精度のバイナリコード化10進数を使用し、 「Floppy ROM」雑誌の付録として無料で公開された点で、 BASICインタープリタの中でユニークだった。8Kバージョンでは、文字列変数と三角関数が追加された。4Kバージョンと8Kバージョンの両方がSWTPCによって販売された。1978年1月、Uiterwykはソースコードの権利をMotorolaに売却した。[ 41 ] [ 42 ]
トーマス・F・ウェイトマンは1976年に、ヒューレット・パッカードのHP-2640およびHP-2645端末(インテル8008および8080プロセッサを使用)向けにTiny BASICを作成し、ヒューレット・パッカード・ジャーナルに掲載した。
1976年12月号のInterface Ageに掲載されたのは、LLL(ローレンス・リバモア研究所)BASICで、その最初の草稿は、スティーブ・ライニンガーがナショナル・セミコンダクターを辞めてタンディ社に移籍する前に、アリソンの仕様に基づいて開発された。最終的なインタプリタは、アイダホ大学のジョン・ディケンソン、ジェリー・バーバー、ジョン・ティーターがLLLとの契約に基づいて開発した。5Kの容量を持ち、デビッド・ミード、ハル・ブランド、フランク・オルケンが開発した浮動小数点パッケージが含まれていた。このプログラムは、米国エネルギー研究開発局の後援の下でシステムを開発したLLLによってパブリックドメインに置かれた。[ 43 ]
Altair BASIC、4K BASICは4KB RAMマシン内で動作し 、プログラムコード用に約790バイトしか空きがありませんでした。[ 44 ] [ 45 ] Tiny BASICイニシアチブは、Altair 4K BASICの150ドルの料金に対応して始まりました。
1975年、スティーブ・ウォズニアックは新しく結成されたホームブリュー・コンピュータ・クラブに加わった。同クラブには、リーチェン・ワン(パロアルト・タイニーBASIC)やトム・ピットマン(6800タイニーBASIC)といった仲間がいた。ウォズニアックは、自分のマシンには独自のBASICが必要であり、できればMOSテクノロジー6502プロセッサ用の最初のBASICになるだろうと結論付けた。この言語には4KB のRAMが必要だったため、彼はそれを設計の最小メモリとした。[ 46 ] Integer BASICは、1976年にコンパクトカセットで最初に公開された。
1977年、ラジオシャック(当時)は、最初のコンピュータであるTRS-80を発売した。これは、4KBのROMにレベルI BASICを搭載したZ80システムである。タンディの従業員であるスティーブ・ライニンガーは、ナショナルセミコンダクターに勤務していたときに、 SC/MP用のNIBL(National Industrial Basic Language)インタープリタの最初のドラフトを書いていた。 [ 29 ]そのソースコードを持ち出すことができなかったため、彼はLi-Chen WangのPalo Alto Tiny BASICをTRS-80モデルIの最初のプロトタイプ用に改変した。彼はインタープリタを大幅に改訂し、浮動小数点サポート、シンプルな白黒グラフィック、READ/DATA/RESTOREステートメントを追加した。[ 47 ]
元々は1979年に開発されたSinclair 4K BASICは、John Grantによって書かれ、言語定義として1978年の米国規格協会(ANSI)Minimal BASIC規格を使用していたが、それ自体は 整数演算のみを備えた不完全な4KB実装であった。[ 48 ]
Tiny BASICの実装は、プロセッサ制御やArduinoなどのマイクロコントローラ向けに改良されてきました。
2002年、エマニュエル・シャイユー、パスカル・マヌーリー、ブルーノ・パガーノは、 Objective Camlアプリケーションの例として、Tiny BASIC(GOSUB / RETURNなし)を『Developing Applications with Objective Caml 』に発表した。[ 53 ]
2013年にアレックス・ヤンはPythonでの実装を公開した。[ 54 ]
2019年、Sergey KuznetsovはRuby版を公開した。[ 55 ]
また、2019年には、オスカー・トレド・グティエレスがbootBASICを公開しました。これは8086/8088マシンのブートセクタの512 バイトで動作し、これまでで最小のBASIC実装となっています。これを実現するために、この言語は関係演算子(IF文はゼロ以外の値に対して動作する)を削除し、コード行を19文字以下に制限し、バックスペースが押されたときにディスプレイを更新しません。[ 56 ]さらに、GOSUBとRETURNはありませんが、RND関数(引数なしで0から255までの値を返す)が含まれています。[ 57 ]この言語はプログラム行を格納するために配列を使用するため、そのためには20,000 バイトが必要です。[ 58 ]
2023年、ゴードン・ヘンダーソンは6502アセンブラでTiny Basicの実装を公開した。これはNIBLの影響を受けており、わずか数秒で実行できる。 少なくとも3.5KBのROMが必要 データとプログラムの保存用に1 KBの RAM を搭載。DO /UNTIL、FOR/NEXT、単純な文字列、メモリPEEK/POKE (バイトまたは 16 ビット ワード)、GOSUB/RETURN、CALL、RNDをサポートし、 16 進数の入出力機能も備えています。[ 59 ]
以下の表は、Tiny BASICの実装における言語機能と、それ以前に登場した他の主要なBASICの実装における言語機能を比較したものです。
;************************************ ; ; インテル8080用TINY BASIC バージョン2.0 ; リーチェン・ワン著 修正および翻訳済み インテルの記憶術へ ロジャー・ラウスコルブ著 1976年10月10日 ; @COPYLEFT すべての誤りは留保されています ; ;************************************
オープンソフトウェア運動は、デニス・アリソンが1975年にTiny BASICをリリースしたことから始まった。
Intel 8080 用 Tiny Basic バージョン1.0 リーチェン・ワン著 1976年6月10日 @COPYLEFT すべての権利は留保されています5月号の発行日が6月となっているのは正しいです。雑誌の発行が遅れていたため、6月号と7月号を合冊して発行しました。
CRLFキャリッジリターンとラインフィードを表します。{{cite book}}:|first1=一般的な名前を持っています (ヘルプ)