
BASICODE は、BASIC プログラミング言語の統一規格を作成することを目的としたコンピュータ プロジェクトでした。BASIC は多くの一般的な家庭用コンピュータで使用できましたが、互いに互換性のない無数のバリエーションが存在していました。このプロジェクトは、オランダの放送機関Nederlandse Omroep Stichting (NOS)のラジオ番組 Hobbyscoop によって 1980 年に開始されました。
言語実装は、ホストコンピュータシステムの能力に応じて調整された、BASICODE言語標準で定義されたテキストとオーディオのサブルーチンの呼び出しを実行するアーキテクチャ固有のユーティリティアプリケーションでした。これらのアプリケーションはBascodersと呼ばれ、 1980年代にストレージメディアとして頻繁に使用されていたカセットテープのデータ形式を定義することで、異なるコンピュータプラットフォーム間でデータとプログラムを共有することもできました。 [1]カセットに保存されたBASICODEプログラムは、言語をサポートする任意のコンピュータにロードして実行できます。そのため、BASICODEは「コンピュータ用のエスペラント」と呼ばれることが多かったです。 [2]
ベーシックコード
1980年代初頭の状況


1970年代後半から1980年代後半にかけて、8ビットプロセッサをベースにした家庭用コンピュータが人気を博した。米国でよく知られたモデルには、 TRS-80、PET 2001、VIC-20、Commodore 64、Atari 8ビットコンピュータなどがある。ヨーロッパでは、 ZX80、ZX81、ZX Spectrum、Acorn/BBCマイクロ、いくつかのAmstradシステム、Dragon DataのDragon 32/64、ドイツ民主共和国で人気のKC85ファミリもあった 。これらのコンピュータはすべて、MOS Technology 6502またはZilog Z80 、またはその派生型のCPUを搭載していた。ほとんどのコンピュータには、少なくとも16キロバイトのRAMが搭載されていた(または16キロバイトにアップグレード可能だった)が、それよりはるかに大容量のRAMが搭載されたものも多かった。ほとんどのコンピュータには、カセットドライブ用のコネクタが備わっているか、データ保存用にカセットドライブが内蔵されており、BASICインタープリタは通常ROMに格納されていた。プログラミング初心者を念頭に置いて設計された BASIC の学習曲線は緩やかで、すべてのコンピューターでこの言語をすぐに利用できることから、多くのユーザーが独自のプログラムを作成して共有するようになりました。
問題は、異なるメーカーのコンピュータ間でプログラムやデータを共有するのが難しいことでした。これは、さまざまな BASIC 方言がいくつかの領域で互換性がないことがよくあるからです。多くの場合、同じ結果 (画面のクリア、ピクセルの描画、サウンドの再生など) を得るために異なる BASIC コマンドが使用されていました。つまり、たとえば C64 用に書かれた BASIC プログラムは、変更せずに Atari XL で動作する可能性は低く、その逆も同様です。もう 1 つの難点は、これらのコンピュータは類似しているものの、画面解像度、使用可能なカラー パレット、オーディオ機能など、主要なハードウェアの側面が異なっていたことです。最後に、カセットにデータを格納するために使用されるデータ形式にも互換性がありませんでした。
最初の基準

1979年、オランダの放送局NOSはラジオでコンピュータ番組の放送を開始した。番組とデータはコンパクトカセットに音声として保存されていたため、そのような放送をテープに録音し、後でコンピュータに読み込むことが可能だった。しかし、前述の問題のため、番組はさまざまな一般的なコンピュータに合わせて調整し、複数回放送する必要もあった。コンパクトカセットは今日のストレージメディアに比べてデータ密度が非常に低いため、番組の録音にはかなり時間がかかり、1回の番組で放送できる番組の数は限られていた。そのため、同じ番組の異なるバージョンを追加で放送することは非常に不便であった。[1]
1982年、NOSの幹部は、統一データフォーマットの開発を決定しました。Bascoderと呼ばれる、各コンピュータモデルに固有のアプリケーションが、この統一フォーマットでのテープからのプログラムとデータの呼び出しと保存を管理しました。BascoderはNOSによっても放送されていましたが、カセットでNOSから購入して友人や知人と共有することもできました。干渉に対して非常によく保護されたこのフォーマットは、多くの一般的な家庭用コンピュータシステムで読み取りと書き込みが可能でした。フォーマットの堅牢性により、中波ラジオによる放送も可能になり、範囲が広がり、結果として潜在的なユーザー数も増加しました。たとえば、オランダのラジオ局Hilversumによって放送されたデータは、ドイツ民主共和国の大部分で受信できました。
ベーシックコード2


この標準規格は、前述の問題のうちの 1 つであるデータ形式の互換性のなさを解決しました。しかし、プログラムは依然として各コンピュータの BASIC 方言とハードウェア機能に適合させる必要がありました。プログラムがすべての方言に共通する命令のみを使用するように制限することは、機能面で大きな制限を意味しました。たとえば、グラフィックスとサウンドの使用を完全に控え、キーボードを使用したデータ入力と画面上の文字出力の機能を制限しました。これらの理由から、1983 年に拡張標準 BASICODE 2 が作成されました。[1]この標準を使用する Bascoder には、テープへのデータの入出力ルーチンだけが含まれていたわけではありません。BASIC のすべての方言に共通する約 50 個の BASIC コマンド、関数、演算子のセットに加えて、BASICODE 2 の言語標準では、サポートされているすべてのコンピュータで同じ機能をエミュレートするサブルーチンのライブラリが定義されていました。
これを実現するために、1000 未満のプログラム行はすべて Bascoder 用に予約され、BASICODE プログラムは行番号 1000 からしか開始できませんでした。1000 未満の行にある Bascoder のサブルーチンは、GOSUBコマンドで呼び出されました。[1]必要な引数は、Bascoder 用に予約されている特別な定義済み変数を使用して Bascoder に渡されました。この標準には、一部のコンピュータ モデルの制限によって必要になった追加のルールがいくつか含まれていました。たとえば、KC シリーズのコンピュータでは、コード行は 60 文字を超えることができませんでした。Bascoder は BASICODE プログラム自体と同じコンピュータ固有の BASIC インタープリタによって解釈されるため、プラットフォームの独立性を保証するために、これらの制限をすべての BASICODE プログラムに適用する必要がありました。
したがって、Bascoder は通常のプログラムと同様にさまざまなコンピューターにロードされ、実行されると、共通標準およびカセット I/O 用の追加ルーチンが提供されました。BASICODE で作成されたプログラムは、Bascoder がロードされ起動された後にのみ使用可能でした。ただし、一部のコンピューターでは、BASICODE プログラムを Bascoder のルーチンとマージし、ネイティブ データ形式で保存することができました。結果として得られるプログラムはもはやプラットフォームに依存しませんでしたが、ほとんどのネイティブ形式のデータ密度が高いため、同じプログラムを BASICODE 形式でロードするよりもはるかに高速にロードできました。また、プログラムを実行するために Bascoder 全体をロードする必要がなかったため、実行時に使用可能な RAM が多く残りました。
BASICODE 2 バスコーダには、Exidy Sorcerer、Colour Genie、PET、VIC-20、Commodore 64、Amiga、ZX81、ZX Spectrum、Sinclair QL、Acorn Atom、BBC Micro、Electron、TRS-80、MSX、Oric Atmos、P2000T、Grundy NewBrain、Amstrad CPC、IBM PC、Apple II、TI-99/4A、Aquariusなどがありました。さらに、言語標準とデータ形式がオープンで、十分に文書化されていたため、上級ユーザーは、選択したシステム用に独自のバスコーダを作成することができました。BASICODE 2 標準により、プラットフォームに依存しない、高度な機能 (当時としては) を備えたプログラムの開発が可能になりました。さらに、BASICODE は、いわゆる「ジャーナル」の形式で、コンピュータ シーンのニュースなどの情報をラジオ経由で送信および共有するために使用されました。同様に、BASICODE コーディング チュートリアルやその他のドキュメントもこの方法で送信できます。
ベーシックコード3/3C
1986年、新しいBASICODE 3規格が開発された。[1]最も重要な追加機能は、単純なモノクログラフィック、プログラム内からのデータの読み書き、およびサウンド出力のルーチンであった。この言語に関する小冊子が出版され、これにはさまざまなマイクロコンピュータ用のBascoderを収録したカセットが付属していた。[3] BASICODE 3により、BASICODEは東ドイツのコンピュータ業界で人気を博し、1989年以降、BASICODEプログラムは東ドイツ全土でラジオで放送された。また、東ドイツで一般的なすべてのコンピュータ用のBascoderを収録したビニールレコードを含む本も出版された。[4]カラーグラフィックを特徴とするBASICODEの最終改訂版は、1991年にBASICODE 3Cとしてリリースされた。
BASICODEの終焉
1990 年頃から、Atari ST、CBM Amiga、Acorn Archimedes、そして多数の IBM-PC 互換クローンなどの 16 ビットおよび 32 ビット コンピュータの台頭により、BASICODE の人気は急速に低下しました。これらのマシン用の Bascoder はありましたが、BASICODE は新世代のコンピュータが提供するリソースを活用するには限界がありました。新しいコンピュータのハードウェア、オペレーティング システム、ソフトウェアがますます複雑になるにつれ、多くのユーザーは独自のプログラムを作成できなくなったり、作成する意欲が薄れたりしました。いくつかの高度でありながら互換性のないグラフィカル ユーザー インターフェイスの台頭と 8 ビット コンピュータの人気の衰退により、BASICODE の有用性が低下し、終焉を迎えました。
東ドイツの国営放送局の後継であるDeutschlandsender Kultur (後に新しいDeutschlandradioの一部となった) は、1992 年頃まで BASICODE 番組を放送し続けた。計画されていた BASICODE 4 という規格は実現しなかった。これは、BASICODE 3C がリリースされて間もなく NOS がプロジェクトのサポートを中止したためである。BASICODE は、8 ビット コンピューター ファンなど、ノスタルジックな価値から今でも愛好家に使用されているが、実用的ではない。
歴史的意義
BASICODE は、互いに互換性のない家庭用コンピュータ システム間でプログラムとデータを交換するための標準を作成する初期の試みでした。これは、共通の BASIC 方言に加えて共有ハードウェア プラットフォームを指定した Microsoftによって開発されたMSX標準とほぼ同時期のものです。これらのコンピュータは複数の会社によって販売され、他の一般的な家庭用コンピュータと直接競合しました。MSX は、日本、韓国、オランダ、ブラジルなど、主に製造元の国内市場で成功しました。MSX とは異なり、BASICODE は実行されるハードウェアを標準化する努力をせず、むしろ、BASICODE が利用可能なすべてのコンピュータで読み書きできる、ユビキタス BASIC プログラミング言語の標準化されたサブセットとカセット テープの共通データ形式を提供しました。このデバイス独立性の結果として、MSX とは異なり、BASICODE は特定の製造元のコンピュータに限定されませんでした。BASICODEのインストール ベースを推定することは困難です。これは、Basicoders と BASICODE で記述されたプログラムの両方が一般に無料で利用可能だったためです。これらは、この時代に販売された多数の家庭用コンピュータで利用できました。市販製品ではありませんでしたが、いくつかのベンダーがテープ版を安価で提供していました。おそらく、BASICODE ラジオ放送を受信できない人を対象としていたのでしょう。
BASICODE は、設計上、ホスト コンピュータの機能を最大限に活用できなかったと言わざるを得ません。BASICODE によって定義された言語標準は、関連するすべてのコンピュータ システムの最低共通分母でした。この概念は、BASICODE3/3C でのみ部分的に放棄されました。ZX80 / ZX81やKC87などの一部のコンピュータまたはコンピュータの派生版はグラフィックスとカラーに対応しておらず、これらの機能を使用する BASICODE の新しいセクションはそれらのコンピュータで使用できなかったためです。特に、ビデオ ゲームなど、タイミングとグラフィックスまたはサウンドに依存するアプリケーションの場合、BASICODE は「ネイティブ」 BASIC またはマシン コードで記述されたプログラムよりも明らかに劣っていました。BASICODE の強みは、アプリケーション設計、教育ソフトウェア、およびデータ共有の分野にありました。BASICODE 形式はPascalプログラムにも使用されました。Pascal はシステム間ではるかに一貫性のある言語でしたが、コンパイラはごく少数の種類の家庭用コンピュータでしか使用できませんでした。
BASICODE の基本的な概念は、プラットフォームに依存しないソフトウェア開発のための言語標準の定義と、その標準をシステム固有のランタイム (Bascoder) として実装することであり、後にプログラミング言語Javaで、Java プログラムを実行するオペレーティング システム固有のJava 仮想マシンを介して再検討されました。さらに、BASICODE データ形式でのデータと情報の配布は、Portable Document Format (PDF) やそれに必要な PDF リーダー アプリケーションなどの現在のプラットフォームに依存しないドキュメント タイプを彷彿とさせます。
BASICODEデータ形式

BASICODE 形式では、プログラムの記録はデータの記録に似ています。したがって、プログラムを記録する場合、コマンドは 1バイト単位 (トークン) の形式で読み書きされるのではなく、文字ごとに読み書きされます。
データ ブロックは文字 02 (STX、テキストの開始) で始まり、文字 03 (ETX、テキストの終了) で終わります。ETX の後には、STX と ETX を含む前のバイトをバイナリ加算 (XOR) して作成されたチェック バイトが送信されます。0D 文字 (10 進数 13) は、送信中に行の終わりを示します。プログラムによって作成されたデータ ファイルは、すべての文字をデータとして使用でき、制御文字を含めることはできません。
各バイトは、「1 スタート ビット - 8 データ ビット - 2 ストップ ビット」の順序で送信されます。データ ビットは最下位ビットから送信されます。最上位ビットは反転されて送信され、常に 0 (1 として送信) になります。これは、BASICODE がASCII文字のみを使用するためです。したがって、送信シーケンスを別の方法で説明すると、「1 スタート ビット - 7 データ ビット - 3 ストップ ビット」になります。結果として得られる冗長性は、さまざまなコンピューターとの互換性を最大限に高めることを目的としています。
オーディオ信号には、"0" ビット用の 1200 Hz波と "1" ビット用の 2 つの 2400 Hz 波の形をした矩形波が使用され、各ビットの時間は 1/1200 秒になります。波間の 1/1800 秒を超える休止はバイトの開始を示し、次の波がスタート ビットになります。スタート ビットの後、8 つのデータ ビットの前に、少なくとも 1/1800 秒の別の休止があります。長さが 5 秒の 2400 Hz 信号は送信の開始を示し、読み取りプログラムの同期に使用されます。送信の最後に、長さが 1 秒の 2400 Hz 信号が送信されます。
この形式の理論的なデータ レートは 1200 ビット/秒です。データ バイトごとに 3 ビットの追加ビットの送信と、開始ビットの前後の一時停止を考慮すると、使用可能なデータ レートは 102 バイト/秒、約 6 キロバイト/分になります。
オーディオカセットのデコード
最近のコンピュータでは、Basicode オーディオ カセットは、無料で入手できるソフトウェア モデムである minimodem を使用してデコードできます。たとえば、WAVファイルbasicode.wavに変換されたカセットは、次のコマンドを使用して対応するデータ バイトにデコードできます。
ミニモデム --rx 1200 -S 1200 -M 2400 --startbits 1 -7 --stopbits 3 -f basicode.wav >basicode.txt
参照
参考文献
- ^ abcde Weet ik! 1991 年 10 月、ボブ・ムンニクスマによる「Basiscode-3」
- ^ Aarde & Kosmos 7 号、1986 年、Rien van Dongen 著「BASICODE-3、コンピューターのエスペラントの使い方」
- ^ Basicode-3、 Hermine Bakker著、1986年、ISBN 90-201-1949-4
- ^ BASICODE Mit Programmen auf Schallplatte für Heimcomputer、Horst Völz 著、1990 年、ISBN 3-341-00895-0
さらに読む
- (ドイツ語) Michael Wiegand、Manfred filler: BASICODE。ミットプログラムカセット。 Ravensburger Buchverlag、ラーベンスブルク、1986 年、ISBN 3-473-44010-8
- (オランダ語) Hermine Bakker、Jaques Haubrich (著者)、Stichting BASICODE (出版社): Het BASICODE-3 boek。 3. オーフラージュ。 Kluwer Technische Boeken BV、デーヴェンター/アントワーペン、1988 年、ISBN 90-201-2111-1
- (ドイツ語) Horst Völz:ハイムコンピューター用プログラムの基本コード。 Verlag Technik、ベルリン、1990、ISBN 3-341-00895-0
外部リンク
- (オランダ語)オランダの公式 Hobbyscoop サイト、BASICODE のオリジナル開発グループ
- BASICODE: オランダのコンピュータ伝説の例 - 歴史情報
- (ドイツ語) BasiCode – Software für alle - 歴史とプログラミングに関する情報
- ダウンロード可能なテープ画像のダウンロードはHobbyscoopの許可を得て行われます
- さまざまな著者によるBASICODEプログラムのコレクション さまざまなBASICODEプログラム
