| デザイン: | デニス・アリソン |
|---|---|
| 初登場 | 1975 |
| 実装言語 | IL(解釈言語) |
| ライセンス | パブリックドメイン |
| 方言 | |
| デンバー Tiny BASIC、拡張 6800 Tiny BASIC、MINOL、National Industrial Basic Language、パロアルト Tiny BASIC、6800 Tiny BASIC、TBI68K、Tiny BASIC Extended | |
| 影響を受けた | |
| ダートマス BASIC、8008 BASIC | |
| 影響を受けた | |
| アストロ BASIC、アタリ BASIC、レベル I BASIC | |
Tiny BASIC は、4 KB以下のメモリに収まるBASIC プログラミング言語の方言のファミリーです。Tiny BASIC は、150 ドルで販売されていた Altair BASIC をユーザーが海賊版で使用していることについてビル ゲイツが不満を述べた公開書簡に応えて、デニス アリソンと People's Computer Company (PCC) によって設計されました。Tiny BASICは、同じ初期のマイクロコンピュータで動作する BASIC の完全に無料のバージョンとなることを目指していました。
Tiny BASIC は、実装ではなく仕様としてリリースされ、1975 年 9 月の PPC ニュースレターで公開されました。この記事では、プログラマーに、自分のマシンに Tiny BASIC を実装し、その結果得られたアセンブラ言語実装を 3 回にわたって予定されているニュースレター シリーズに掲載するために送り返すよう呼びかけました。Palo Alto Tiny BASIC の作者であるLi-Chen Wang は、この概念を説明するために「コピーレフト」という用語を作りました。コミュニティの反応は非常に大きく、ニュースレターはDr. Dobb's Journalとして再発行されました。これは、マイクロコンピューター ソフトウェアに焦点を当てた最初の定期刊行物です。Dr . Dobb's は、印刷形式で 34 年間存続し、その後、2014 年に Web サイトが静的アーカイブになるまでオンラインで発行されました。
1970 年代半ばのマイクロコンピュータの黎明期、RAM が高価でメモリ サイズが 4 ~ 8 KB 程度だった時代には、サイズが小さくソース コードが無料であることから、これらの実装は非常に貴重でした。Microsoft の Altair BASIC の最小バージョンも 4 KB マシンで実行できましたが、BASIC プログラム用に空いているのは 790 バイトだけでした。空き領域が多いことは、Tiny BASIC の大きな利点でした。これらの厳しいサイズ制限を満たすために、Tiny BASIC 方言には一般に他の方言によくあるさまざまな機能がありませんでした。たとえば、ほとんどのバージョンには文字列変数や浮動小数点演算がなく、1 文字の変数名しか許可されていませんでした。
極小の BASIC 実装は、 Arduinoなどのマイクロコントローラのプログラミングに現在でも使用されています。
歴史
アルタイルベーシック

MITS Altair 8800 のような初期のマイクロコンピュータは、一般に、フロントパネルのスイッチとLEDランプ以外には、内蔵の入出力( I/O) を備えていませんでした。有用な作業を行うには、通常、I/O拡張カードの追加と、何らかの形式の端末の使用が必要でした。当時、ビデオベースの端末は非常に高価で、コンピュータよりもはるかに高価だったため、多くのユーザーは Teletype Model 33のような機械式デバイスに目を向けました。Model 33 は、当時のほとんどのテレタイププリンタと同様に、オペレーターがメッセージを事前に録音しておき、ほとんどの人がメッセージをリアルタイムで入力するよりも速い「高速」で再生できるようにするためのテープパンチシステムを備えていました。初期のマイクロコンピュータでは、これは便利なコンピュータデータストレージ形式を提供し、ユーザーはプログラムを紙テープに書き込んで他のユーザーに配布することができました。[1]
ホームブリュー コンピュータ クラブは1975 年 3 月に初めて会合を開き、そのメンバーはすぐに会合を利用してパンチ テープ上のソフトウェアを交換しました。6 月の会合で、Altair BASICのプレリリース バージョンを含むテープが消えました。テープは Steve Dompier に渡され、彼はそれを高速テープ パンチを使用できる Dan Sokol に渡しました。次の会合では、段ボール箱に入った紙テープ上の Altair BASIC のコピー 50 個が見つかりました。[2] MITS の創設者Ed Roberts はこれを知ったとき、「MITS BASIC の盗まれたコピーを使用している人は、自分が何者であるか、つまり泥棒であることを認めるべきです」と述べました。[3] Bill Gates はこれをより正式なものにし、「愛好家への公開書簡」を書き、「愛好家の大半が知っているように、あなた方のほとんどはソフトウェアを盗んでいます」と不満を述べました。[4]
小さなベーシック
この苦情は受け入れられなかった。多くの回答の中で、Homebrewのメンバーであり、People's Computer Company (PCC)の創設者でもあるBob Albrechtは、誰でも完全に無料で使用できる独自のBASICを作成することが最善の回答であると感じた。彼は、スタンフォード大学のコンピュータサイエンス学部のメンバーであるDennis Allisonに、2〜3キロバイトのメモリに収まるBASICバージョンの仕様を書くように依頼した。[a]移植を容易にするため、設計は中間言語(IL)、つまりインタープリタのためのインタープリタに基づいており、つまり、全体のコードのうちのほんの一部しか移植する必要がなかった。
アリソンの最初の設計は、1975 年 9 月の PCC ニュースレターで、 IL インタプリタのIntel 8080バージョンとともに公開されました。記事では、プログラマーに自分のコンピューターで設計を実装し、結果として得られるアセンブリ言語バージョンを 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 ]
Dr. Dobb'sの編集者であるジム・ウォーレンは、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 のプログラムを修正、改良し、これが 1976 年 12 月のInterface Age誌に掲載されました。[8] Roger は自分の名前を追加し、COPYLEFT 通知を保存しました。
説明
基本概念
Tiny BASIC は、メモリをできるだけ使用しないように設計されており、これは機能の少なさやインタープリタ システムの詳細さにも反映されています。初期のマイクロコンピュータには、タイムシェアリング システムによく見られる BASICコンパイラ用のRAM や二次記憶装置がありませんでした。
当時のほとんどの BASIC と同様に、Tiny Basic はユーザーがコマンド ラインにステートメントを入力する対話型でした。当時のマイクロコンピュータはテレタイプ マシンや「ダム」端末で使用されることが多かったため、既存のテキストを直接編集することはできず、エディターは代わりに、ユーザーが既存のテキストを編集するために戻る場所を示すために、多くの場合バックスラッシュなどのテイクアウト文字を使用しました。
ユーザーがコマンド ラインにステートメントを入力すると、システムはそれが数字で始まっているかどうかを調べます。数字で始まっていない場合は、その行はすぐに解析されて操作され、 を介して出力が生成される場合がPRINTあります。これは「ダイレクト モード」と呼ばれていました。
行の先頭に数字が入力された場合、その数字は「50」のような 10 進数形式から 8 ビット値 (この場合は$32 16 進数)に変換されます。この数字は、行の残りの部分が入力された形式のまま格納される配列LISTのような記憶領域へのインデックスとして使用されます。ユーザーがコマンド ラインに入力すると、システムは配列をループし、行番号を 10 進数形式に戻し、行の残りのテキストを出力します。
プログラムがメモリ内に存在し、ユーザーがRUNコマンドを入力すると、システムは「間接モード」に入ります。このモードでは、ポインターはプログラムの最初の行を指すように設定されます (例: 10 ( $0A hex ))。次に、その行の元のテキストがストアから取得され、ユーザーが直接モードで入力したかのように実行されます。次に、ポインターは次の行に進み、プロセスが続行されます。
正式な文法
文法は、設計ノートで指定されたとおり、バッカス・ナウア記法で以下にリストされています。 [12]リストでは、アスタリスク (" *") は、その左側のオブジェクトの 0 個以上を表します (ただし、" " の定義の最初のアスタリスクは除きますterm。アスタリスクは乗算演算子です)。括弧はオブジェクトをグループ化します。イプシロン (" ε") は空の文字列を表します。コンピューター言語の文法表記では一般的ですが、縦棒 (" |") は選択肢を区別し、それらが別の行にリストされていることも区別します。記号 " " は、キャリッジ リターンCR(通常はキーボードの "Enter" キーで生成)を表します。コンソールから BREAK を入力すると、プログラムの実行が中断されます。
行 :: =数値ステートメントCR |ステートメントCRステートメント:: = PRINT式リストIF式relop式THENステートメントGOTO式INPUT変数リストLET var =式GOSUB式RETURN CLEAR LIST RUN END式リスト:: = (文字列|式) ( , (文字列|式) ) *変数リスト:: = var ( , var ) *式:: = ( +|-|ε )項(( +|- )項) *項:: =因子(( * | / )因子) *因子:: = var |数値| (式) var :: = A | B | C ... | Y | Z数値:: =数字数字*数字:: = 0 | 1 | 2 | 3 | ... | 8 | 9 relop :: = < ( >| = |ε ) | > ( <| = |ε ) | =
文字列 :: = " ( |!|#|$ ... -|.|/|数字|: ... @|A|B|C ... |X|Y|Z)* "
文字列はデザインノートでは定義されていないことに注意してください。
この構文は単純ではあったが、1つの革新が加わった。GOTOそれは、およびがGOSUB単なる行番号ではなく式を取ることができるようになったことで、のswitch文ではなく、割り当てられたGOTO [13]を提供できるようになったことである。switch文は、当時HP Time-Shared BASICでサポートされており、より前のものであった。分岐先として単なる行番号ではなく、を許可する構文は、この時点ではまだDartmouth BASICでサポートされていなかったが、Digital [14]によって導入され、Microsoftによってコピーされていた。
GOTO/GOSUB ... OF ...ON ... GOTOIF-THEN statement
仮想マシンでの実装
設計ノートでは仮想マシンが指定されており、その中では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 ;ラベルを取得DONE ;CR がない場合はエラー NEXT XFER ;セットアップしてジャンプS3: TST S8 、'PRINT' ;印刷します。
プログラムの一般的なパターンは、キーワードまたはキーワードの一部をテストし、その情報に基づいて動作することです。各テストは、行バッファーの次の内容に関するアサーションです。アサーションが失敗すると、制御は次のラベルにジャンプします (通常は新しいキーワードまたはトークンを検索します)。ここで、システムはバッファー カーソルをスペースの上に進め、GOをテストし、見つからない場合は行S3にジャンプします。見つかった場合は、次の IL コマンドで実行が続行されます。この場合、システムは次にTOをテストし、失敗した場合は行S2にスキップします ( SUBのテストで、これがGOSUBコマンドであるかどうかを確認します)。成功した場合は、制御が続行されます。この場合は、ラベルEXPRで始まる IL サブルーチンを呼び出し、式を解析します。Tiny BASIC では、(計算された GO TO)は、大規模な BASIC 実装の ON-GOTO と同様に有効であり、代替手段となります。サブルーチンEXPR は、式の結果を演算スタック (この場合は行番号) にプッシュします。DONEは、式の後に他のテキストが続かないことを確認し、続く場合はエラーを出力します。XFERは、スタックから番号をポップし、対応する行番号が存在する場合は、その行番号に実行を転送します (GO します)。
GOTO X*10+100GOTO 100
次の表は、最初のTiny BASICインタープリタが書かれた仮想マシンの32個のコマンドの一部を示しています。[17]
- TST lbl、文字列
- 文字列がBASIC行と一致する場合、カーソルを文字列上に進め、次のIL命令を実行します。テストが失敗した場合は、ラベルlblのIL命令を実行します。
- コールlbl
- lblから始まるILサブルーチンを実行し、CALLに続くILアドレスを制御スタックに保存します。
- 終わり
- 先頭の空白を削除した後、カーソルが復帰位置に到達しない場合は構文エラーを報告します。
- 転送
- AE スタックの一番上の値が範囲内にあるかどうかをテストします。範囲内にない場合は、エラーを報告します。範囲内にある場合は、その行にカーソルを配置します。存在する場合は、そこから解釈を開始します。存在しない場合は、エラーを報告します。
- ジャンプlbl
- 指定されたラベルでILの実行を継続する
- RTTN の
- 制御スタックの先頭で指定されたILの場所に戻る
- プレス
- BASICテキストから閉じ引用符までの文字を印刷します。
- 広報
- 式スタックの先頭をポップして得られた数値を出力します
- 特別目的会社
- スペースを挿入してプリントヘッドを次のゾーンに移動します
- ノンライン
- CRLF [18]をプリンタに出力する
IL について論じているTom Pittman は次のように述べている。「TINY BASIC インタプリタは、デニス・アリソンによって再帰下降パーサとして設計されました。この設計の洗練されたシンプルさの一部は、言語に構文糖を追加した際に失われましたが、基本的な形式は残っています。IL は、その手順の一般的な再帰的性質と TINY BASIC トークンのシンプルさにより、TINY BASIC の再帰下降パーサに特に適しています。IL 言語は、TINY の解釈に効果的に最適化されています。経験上、言語に新しい機能を追加することの難しさは、機能の性質とはまったく釣り合いが取れていません。通常、新しい機能をサポートするには、追加のマシン言語サブルーチンを追加する必要があります。多くの場合、難しさは利点を上回ります。」[19]
設計からの逸脱
ホームブリュー コンピュータ クラブ向けに Tiny BASIC を定義した Pittman 氏は、「Tiny BASIC は Dartmouth BASIC の適切なサブセットであり、LET、PRINT、INPUT、IF、GOTO、GOSUB、RETURN、END、CLEAR、LIST、RUN のステートメント タイプのみで構成されています。演算は 16 ビット整数で、演算子 + - * / とネストされた括弧のみを使用します。変数名は 26 個の 1 文字 A、B、...Z のみで、関数はありません。文字列や配列はありません... Tiny BASIC では行番号は 256 未満を指定します。」と書いています。 [20]その後、彼は実装について次のように説明しています。「この言語は、RND、USR、PEEK、POKE 関数を含むように拡張され、ユーザーは BASIC プログラムから 6800 のすべてのシステム コンポーネントにアクセスできるようになりました。」
多くの実装者は、 HP Time-Shared BASICまたはDEC BASIC-PLUSでの独自の経験を設計に取り入れ、正式な Tiny BASIC 言語仕様を緩和しました。1977 年までに公開された 7 つの主要な実装は次のとおりです。
- すべてに、通常は何らかの乱数関数が追加されました
RND()。仕様には含まれていませんが、Tiny BASIC の設計ノートの前のニュースレター記事では、この機能のみが要求されていました。 - すべて
LETオプションとして有効になっており、代入ステートメント内のほとんどの let 式には関係演算子が含まれています。 - 6800TB を除くすべての TB では、行内のステートメント区切り文字がサポートされていましたが、通常は
:TBX が使用され$、PATB が使用されていました;。 - ステートメントでは、MINOL を除くすべてのステートメントで、式に関係演算子 (たとえば、は有効)
IFを含める必要がなくなりました。実装では、完全に削除されたり、オプションになったり、暗黙の に対してのみサポートされたりしました。サポートされる句はありませんでした。IF X THEN LET Y=XTHENGOTOELSE - 多くは、次のゾーンに移動してカーソルを進めないようにするために
PRINT使用して、印刷ゾーンをサポートするように変更されました。,; - 6800TB と DTB を除くすべてが追加されました
NEW。 - 6800TB と MINOL を除くすべてのバージョンでは、メモリ サイズを返す関数が追加されました。TBX には
SZE、DTB と PATB にはSIZE、L1B にはMEM、NIBL には がありましたTOP。 - 4 つの実装では、PATB および L1B の単一の次元化されていない配列、または
DIMTBX および DTB の拡張可能な配列など、配列が追加されました。 - 4 つの実装で
REMark ステートメントが追加されました。 - 4 つの実装で
FORループが追加されました。PATB、NIBL、および L1B では が提供されましたFOR-TO-STEP/NEXTが、TBX ではサポートされず、ループを終了するためにSTEPキーワードが使用されました。NXT DO/UNTILAllison が第 2 号で BASIC の問題について嘆いているにもかかわらず、構造化プログラミングに賛成したのは NIBL だけでした。
トークン化の代替として、RAMを節約するために、TBX [21] 、 DTB [22]、MINOL [23] はPR、 for PRINT、INfor INPUT、RETforというようにキーワードを切り捨てましたRETURN。完全な従来のキーワードは受け入れられませんでした。対照的に、PATBでは従来のキーワードが受け入れられましたが、末尾にピリオドを付けて、任意のキーワードをその最小の一意の文字列に短縮することもできました。たとえば、 は、 althoughPRINTと入力でき、他のバリエーションも機能しました。このシステムは、PATBを使用したTRS-80のレベルI BASICで保持され、後にAtari BASICやさまざまなSharp Pocket ComputersのBASICにも見られました。[24]P.PR.
方言
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は両方とも雑誌で発表されましたが、ソースコードは公開されませんでした。
パロアルトタイニーベーシック
| 開発者 | リー・チェン・ワン |
|---|---|
| 初登場 | 1976 |
| ライセンス | パブリックドメイン |
| 方言 | |
| 3Kコントロールベーシック | |
| 影響を受けた | |
| Tiny BASIC 設計ノート、Tiny BASIC 拡張版 | |
| 影響を受けた | |
| アストロBASIC、レベルIBASIC、シャープPC-1211BASIC | |
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 月号 (第 1 巻、第 6 号) に掲載されました。この記事には、 Processor TechnologyのVDMビデオ ディスプレイのコードを例に 、追加の I/O デバイスを追加する方法についても記載されていました。
ワンはコピーレフトという言葉を最初に使った人の一人である。パロアルト版Tiny BASICの配布通知では「@COPYLEFT ALL WRONGS RESERVED」と書いていた。[35] Tiny BASICは正式なコピーレフト配布条件の下で配布されたわけではなく、ソースコードが共有され、変更されるという文脈で提供された。実際、ワンは独自のインタープリタを書く前にTiny BASIC Extendedの編集に貢献していた。[21]彼は他の人に自分のソースコードを改変して公開するよう奨励した。例えば、Interface Ageに掲載されたロジャー・ラウスコルブのPATBのバージョンがある。[8]彼はまた、 PCCのReference Book of Personal and Home Computingに3番目のバージョンを掲載した。[36]
PATB における最も注目すべき変更点の 1 つは、 FOR...NEXT ループの追加です。オリジナルの TB では、ループはIFと を使用してのみ実装できました。Microsoft BASICGOTOと同様に、ループの上限と下限はループの開始時に設定され、ループ中は変更されませんでした。そのため、上限と下限の 1 つが変数式に基づいている場合、変数を変更しても上限は変更されませんでした。MSと同様に、修飾子はオプションでした。[24]STEP
もう 1 つの重要な変更点は、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()、、)、機械語ルーチンを実行するコマンド、より多くの-formatting オプション、その他(およびの代わりにおよび、I/Oポート関数)を追加しました。OR()[ 39]XOR()CALLPRINTGET()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 BASIC への呼びかけに触発されて、ロバート・ウイターウィックはSWTPC 6800システム用の MICRO BASIC 1.3 を書き、これを SWTPC は 1976 年 6 月の SWTPC ニュースレターで発表した。ウイターウィックはリーガル タブレットにこの言語を手書きしていた。彼は後にこの言語を 4K に拡張し、浮動小数点のサポートを追加した。この実装は、 9 桁の精度で2 進化10 進数を使用し、範囲は最大 10 99で、雑誌の「フロッピー ROM」の付録として無料で公開されたという点で、BASIC インタプリタの中ではユニークなものだった。8K バージョンでは、文字列変数と三角関数が追加された。4K バージョンと 8K バージョンの両方が SWTPC によって販売された。1978 年 1 月、ウイターウィックはソース コードの権利をモトローラに売却した。[41] [42]
1976 年に Thomas F. Waitman が Hewlett-Packard HP-2640 および HP-2645 端末 (Intel 8008 および 8080 プロセッサを使用) 用の Tiny BASIC を書き、それがHewlett-Packard Journalに掲載されました。
1976年12月号のInterface Ageに、 LLL (ローレンス・リバモア研究所) BASICが掲載されました。その最初の草案は、スティーブ・レイニンガーがナショナル・セミコンダクターを離れてタンディ・コーポレーションに移る前に、アリソンの仕様から開発されました。最終的なインタープリタは、アイダホ大学のジョン・ディケンソン、ジェリー・バーバー、ジョン・ティーターが、LLLとの契約に基づいて開発しました。5Kを採用し、デビッド・ミード、ハル・ブランド、フランク・オルケンが開発した浮動小数点パッケージが含まれていました。このプログラムは、米国エネルギー研究開発局の支援を受けてシステムを開発したLLLによってパブリックドメインになりました。[43]
4Kの基本
Altair BASIC、4K BASICは4KBのRAMを搭載したマシンで実行でき、プログラムコード用に空いているのはわずか790バイト程度でした。[44] [45] Tiny BASICの取り組みは、Altair 4K BASICの150ドルという価格に応えて始まりました。
1975年、スティーブ・ウォズニアックは新しく結成されたホームブリュー・コンピュータ・クラブに参加した。このクラブには、リ・チェン・ワン(Palo Alto Tiny BASIC) やトム・ピットマン(6800 Tiny BASIC) もメンバーとして参加していた。ウォズニアックは、自分のマシンには独自のBASICが必要で、できればそれがMOS Technology 6502プロセッサ用としては初のBASICになるだろうと結論付けた。この言語には4KBのRAMが必要だったため、ウォズニアックはそれを設計の最小メモリとした。[46] Integer BASICは、 1976年に コンパクト・カセットで最初に出版された。
1977年、ラジオシャック(当時)は最初のコンピュータであるTRS-80をリリースした。これは4KBのROMにレベルI BASICを搭載したZ80システムだった。タンディの従業員であるスティーブ・レイニンガーはナショナルセミコンダクターに勤務していたときにSC/MP用のNIBL(National Industrial Basic Language)インタープリタの最初の草稿を書いた。
[29]そのソースコードを持っていくことができなかったため、彼はリーチェン・ワンのパロアルト・タイニーBASICをTRS-80モデルIのオリジナルプロトタイプに採用した。彼はインタープリタを大幅に改訂し、浮動小数点サポート、シンプルな白黒グラフィックス、ステートメントを追加した。[47]READ/DATA/RESTORE
1979年にジョン・グラントによって開発されたシンクレア4K BASICは、言語定義として1978年のアメリカ規格協会(ANSI)の最小BASIC標準を使用していましたが、それ自体は整数演算のみの不完全な4KB実装でした。[48]
マイクロコントローラ方言
Tiny BASIC 実装は、プロセッサ制御やArduinoなどのマイクロコントローラ向けに適応されています。
- スティーブン・A・ネスは1977年にマーク・ウィリアムズ社向けに4K整数実装のXYBASICを書いた。この言語はプロセス制御アプリケーションによく使われた。[49]
- Arduino BASIC – Gordon Brandly の 68000 Tiny BASIC を改変し、Mike Field によって C に移植されました。
- TinyBasic Plus – Scott LawrenceによるArduino BASICからの改変。[50]
- ハーフバイトTiny Basic – Arduino BASICを改造したもの。[51]
- micro:bit上のTiny Basic – Palo Alto Tiny BASICを改造したもの。[52]
その後の実装
2002年に、エマニュエル・シャイユ、パスカル・マヌリー、ブルーノ・パガーノは、Objective Camlによるアプリケーションの開発において、 Objective Camlアプリケーションの例としてTiny BASIC(GOSUB/が欠落RETURN)を公開した。[53]
2013年にアレックス・ヤンはPythonでの実装を公開した。[54]
2019年にセルゲイ・クズネツォフが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の影響を受けており、データとプログラムの保存に少なくとも1KBのRAMを必要とする3.5KBのROMで実行できる。DO/UNTIL、FOR/NEXT、単純な文字列、メモリのピーク/ポーク(バイトまたは16ビットワード)、GOSUB/RETURN、CALL、RNDをサポートし、16進数の入出力機能を備えている。[59]
方言の比較
次の表は、Tiny BASIC 実装の言語機能を、それ以前の他の著名な BASIC と比較したものです。
参照
注記
- ^ 当時、8080 の最も一般的なメモリ サイズは 4 KB で、その価格は数百ドルでした。
- ^ハッシュは、 HP Time-Shared BASICでも不等号に使用されていました。
参考文献
引用
- ^ ランカスター、ドン (1976). 「TVタイプライタークックブック」(PDF) pp. 210–211. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ マネス&アンドリュース 1994、81ページ。
- ^ Roberts, H. Edward (1975年10月). 「社長からの手紙」. Computer Notes . 1 (5). Albuquerque NM.: MITS: 3–4. 2012年3月23日時点のオリジナルよりアーカイブ。
- ^ マネス&アンドリュース1994、91ページ。
- ^ Allison, Dennis (1976 年 7 月). 「TINY BASIC の設計ノート」. SIGPLAN Notices . 11 (7). ACM: 25–33. doi : 10.1145/987491.987494 . S2CID 18819472.
- ^ ab 「TB コードシート」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、オーバーバイトなしで軽量化を実現。1 (1)。1975 年 12 月。
- ^ ドブス 1976、5ページ。
- ^ abc Rauskolb, Roger (1976年12月). 「Dr. WangのPalo Alto Tiny BASIC」. Interface Age . 2 (1): 92–108.ソース コードは次の 9 行で始まります。
;******************************** ; ; INTEL 8080 用 TINY BASIC ; バージョン 2.0 ; リーチェン・ワン著 ; 修正および翻訳 ; インテルニーモニックへ ; ロジャー・ラウスコルブ著 ; 1976年10月10日 ; @コピーレフト ; 一切の権利を留保します ; ;********************************
- ^ 「オープンハードウェア:その仕組みと理由」IBM
オープンソフトウェア運動は、1975年にデニス・アリソンがTiny BASICをリリースしたことで始まった
。 - ^ ab ウォーレン、ジム・C. (1976年7月)。「通信」。SIGPLAN通知。11 (7)。ACM: 1–2。ISSN 0362-1340 。
- ^ Wang, Li-Chen (1976 年 5 月)。「Palo Alto Tiny BASIC」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、Running Light Without Overbyte。1 ( 5): 12–25。ソースコードは次の6行で始まります。
INTEL 8080 用 TINY BASIC バージョン 1.0 リーチェン・ワン 1976年6月10日 @コピーレフト すべての権利は留保されています
5 月号の 6 月の日付は正しいです。雑誌はスケジュールより遅れており、遅れを取り戻すために 6 月号と 7 月号が統合されました。 - ^ アリソン、デニス (1976)。「自分だけの BASIC を構築」。ドクター・ドブのジャーナル。第 1 巻、第 1 号、9 ページ。
- ^ Allison, Dennis (1976)。「Tiny BASIC クイックリファレンスガイド」。Dr . Dobb's Journal。第 1 巻、第 1 号、6 ページ。
- ^ BASIC-PLUS 言語マニュアル (PDF)。マサチューセッツ州メイナード: Digital Equipment Corporation。1972 年。3 ~ 13 ページ。
- ^アレン、デニス 。「TINY BASIC」。ピープルズコンピュータカンパニー。4 (3)。
- ^ Veit, Holger. 「Tom Pittman's 6800 tiny BASIC」 。 2017年5月2日閲覧。
- ^ ドブ博士のジャーナル、第 1 巻、第 1 号、1976 年、p. 12.
- ^ thereは
CRLFキャリッジリターンとそれに続くラインフィードを表します。 - ^ ピットマン、トム。「Tiny BASIC Experimenter's Kit」。2020年8月9日閲覧。
- ^ 「TINY BASIC 6800」(PDF)。2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。 2020年8月13日閲覧。
- ^ abc 「Tiny BASIC Extended」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、Overbyte なしで軽量化を実現。1 (2)。1976 年 2 月。
- ^ ab 「Denver Tiny BASIC」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、Overbyte なしで軽量化を実現。1 (3)。1976 年 3 月。
- ^ abc "MINOL". Dr. Dobb's Journal of Computer Calisthenics & Orthodontia、オーバーバイトなしで軽量化を実現。1 (4). 1976 年 4 月。
- ^ abcde Rauskolb, Roger (1976年12月). 「Dr. Wang's Palo Alto Tiny BASIC」(PDF) . Interface Age pp. 92–108. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「デザインノート」。ドクター・ドブのコンピュータ体操と矯正ジャーナル、オーバーバイトなしで軽量化を実現。1 (1)。1975 年 12 月。
- ^ 「6800 Tiny BASIC」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、オーバーバイトなしで軽量化を実現。1 (3)。1976 年 3 月。
- ^ 「TINY BASIC ユーザーマニュアル+」。
- ^ Wang, Li-Chen (1976 年 5 月)。「Palo Alto Tiny BASIC」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、Running Light Without Overbyte。1 ( 5): 12–25。
- ^ ab "NIBL". Dr. Dobb's Journal of Computer Calisthenics & Orthodontia、Running Light Without Overbyte . 1 (10). 1976年11月。
- ^ 「Enhanced & Modified 6800 Tiny BASIC」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、Running Light Without Overbyte。1980 年 10 月。
- ^ "TBI68K". Dr. Dobb's Journal of Computer Calisthenics & Orthodontia、オーバーバイトなしで軽量化を実現。1985 年 2 月。
- ^ 「Tiny BASIC の復活」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、Overbyte なしで軽量化を実現。2006 年 1 月。
- ^ 「Texas Tiny BASIC (TBX) が TV-Cassette Operating System (TVCOS) と融合」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、Running Light Without Overbyte。1 ( 5): 28–31。1976 年 5 月。
- ^ ab Arnold, Mark; Wadsworth, Nat (1976 年 2 月)。「SCELBAL – 8008/8080 システム向け高水準言語」。Dr . Dobb's Journal。pp . 30–53。
- ^ Wang, Li-Chen (1976 年 5 月)。「Palo Alto Tiny BASIC」。Dr . Dobb's Journal of Computer Calisthenics & Orthodontia、Running Light Without Overbyte。1 ( 5): 12–25。(注: ソース コードは次の 6 行で始まります。「TINY BASIC FOR INTEL 8080; バージョン 1.0; 作者: LI-CHEN WANG; 10 JUNE, 1976; @COPYLEFT; 著作権はすべて留保されています」。5 月号の 6 月の日付は正しいです。雑誌はスケジュールより遅れており、遅れを取り戻すために 6 月号と 7 月号が統合されました。)
- ^ McCabe, Dwight [編集者] (1977 年 7 月 1 日)。PCCのパーソナルおよびホーム コンピューティング リファレンス ブック(第 1 版)。カリフォルニア州メンロ パーク: People's Computer Company。p. 248。ISBN 0-918790-02-6。
{{cite book}}:|first1=一般的な名前があります (ヘルプ) - ^ 「People's Computer Company」(PDF)。2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。 2019年12月25日閲覧。
- ^ Turnbull, Pete. 「Startrek.asc」 。 2019年12月25日閲覧。
- ^ 「3K コントロール基本取扱説明書」(PDF) 。 Cromemco。 2013 年 12 月 22 日のオリジナル(PDF)からアーカイブ。2013 年 2 月 18 日閲覧。
- ^ Ainsworth, Dick (1982). Astro BASIC . Astrocade, Inc. p. 3.
- ^ 「Robert Uiterwyk の BASIC」。
- ^ “ロバート・ウイターウィクのマイクロベーシック”.
- ^ 「LLL 8080 BASIC インタープリターのパート 1」(PDF)。2022 年 10 月 9 日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「4 Altair 言語システム」。Altair BASIC。
- ^ Altair BASIC (PDF) . MITS. 1975年8月25日. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ Wozniak, Steven (2014 年 5 月 1 日)。「Steve Wozniak が Apple の初代 BASIC をゼロから書いた経緯」Gizmodo。
- ^ ウェルシュ、デイビッド、ウェルシュ、テレサ (2007)。『ポンプを準備する: TRS-80 愛好家が PC 革命の火付け役となった方法』p. 7。
- ^ 「ZX80 – 8K BASIC ROMアップグレード」。
- ^ Ness, Stephen. 「XYBASIC」. Ness Software . 2020年8月4日閲覧。
- ^ "TinyBasicPlus". GitHub .
- ^ 「Arduino および互換機用の Half-Byte Tiny Basic 2 が登場」。2014 年 11 月 27 日。
- ^ 「Micro: BitでTiny Basicを実行する」。2020年3月28日。
- ^ Chailloux, Emmanuel; Manoury, Pascal; Pagano, Bruno (2002). Objective Caml によるアプリケーション開発。フランス: O'Reilly。ISBN 2841771210。
- ^ "aleozlx/tinybasic". GitHub . 2020年9月20日閲覧。
- ^ 「PaloAltoTinyBasic」. 2020年9月20日閲覧。
- ^ Williams, Al (2019年7月31日). 「bootBASICはブートセクターにあなたのお気に入りの言語をフィットさせます」. Hack A Day . 2022年3月26日閲覧。
- ^ Gutierrez, Oscar Toledo. 「bootBASIC は、512 バイトの x86 マシンコードで記述された BASIC 言語です」。Github。2022年3月 26 日閲覧。
- ^ グティエレス、オスカー・トレド(2019年7月27日)。ブートセクターゲームのプログラミング。ルル。p.155。ISBN 978-0-359-76262-0。
- ^ ヘンダーソン、ゴードン (2023)。「6502 用の小さなベーシック」。Drogon プロジェクト。
- ^ 「BASIC」(PDF) 。 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「TSS/8 タイムシェアリングシステム ユーザーズガイド」 1970 年 2 月。
- ^ 「Intel 8008 マイクロプロセッサ用基本言語インタープリタ」 1974 年。
- ^ 「MITS ALTAIR 基本リファレンスマニュアル」(PDF) 。 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「ドブ博士のコンピュータ体操と歯列矯正ジャーナル: オーバーバイトなしで軽量化を実現」(PDF) 。 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「Dr. Dobb's Journal of Computer Calisthenics and Orthodontia: Running Light Without Overbyte」(PDF) 。 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ ab 「ドブ博士のコンピュータ体操と歯列矯正ジャーナル: オーバーバイトなしで軽量化を実現」(PDF) 。 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「Dr. Dobb のコンピュータ体操と歯列矯正ジャーナル: オーバーバイトなしで軽量化を実現」。
- ^ 「インターフェースの時代」。
- ^ 「ドブ博士のコンピュータ体操と歯列矯正ジャーナル: オーバーバイトなしで軽量化を実現」(PDF) 。 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「TRS-80 レベル I BASIC のヘルプ」。
- ^ “ロバート・ウイターウィックのMICRO BASIC”.
- ^ 「SCELBAL – 8008/8080 システム向けの高水準言語」 (PDF)。2022 年 10 月 9 日時点のオリジナルよりアーカイブ(PDF) 。
- ^ 「予備版 APPLE BASIC ユーザーズマニュアル」 1976 年 10 月。
- ^ 「インターフェース時代」 (PDF) 。 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- ^ https://cdn.hackaday.io/files/1707077303528288/ZX80_OperatingManual.pdf。
{{cite web}}:不足または空です|title=(ヘルプ)
文献
- 「TB コード シート」。Dr . Dobb のコンピュータ体操と矯正のジャーナル、オーバーバイトなしで軽量化を実現。ドクター・ドブ (1)。1975 年 12 月。
- マネス、スティーブン、アンドリュース、ポール(1994年)。ゲイツ:マイクロソフトの巨頭はいかにして業界を改革し、アメリカ一の富豪になったか。ニューヨーク:タッチストーン、サイモン&シュスター。ISBN 0-671-88074-8。
外部リンク
- 小さな基本ユーザーマニュアルと実験キット – Tom Pittman 著
- Robert Uiterwyk の BASIC は 2011-01-07 にWayback Machineでアーカイブされ、Robert Uiterwyk の Micro Basic は後にSWTPC 6800とともに販売された MC6800 の小型 BASIC です。コンピュータ
- MINOL – Erik Mueller の MINOL – Intel 8080 用の文字列付き Tiny BASIC
- Tiny BASIC – curses 文字スクリーン処理ライブラリのバージョン
- tinyBasic – iziBasicで書かれた実装
- Tiny BASIC – iziBasic から Run BASIC に移植されたライブ Web バージョン
- 500 行未満の Palo Alto BASIC – Ruby で書かれた BASIC インタープリターの例。
- TinyBasic – Tom Pittman の TinyBasic C インタープリタをJava、C#、Adobe Flexに移植したもの。ライブ Web バージョンも含まれています。
- TinyBASIC Windows – TinyBASIC の Windows バージョン
- カテゴリ:Tiny BASIC rosettacode.org の Tiny BASIC で実装されたタスク
- カテゴリ:Palo Alto Tiny BASIC rosettacode.org の Palo Alto Tiny BASIC で実装されたタスク
