知識ベース

BBC BASIC

BBC BASICは、MOS Technology 6502ベースのAcorn BBC Microホーム/パーソナルコンピューター用のネイティブプログラミング言語として1981年に開発されたプログラミング言語です。これは、BBCの英国のコンピューターリテラシープロジェクトに適合したBASICプログラミング言語のバージョンです。主にソフィー・ウィルソンによって書かれました。

古いAtom BASIC(Acorn Atom用)に基づいたBBC BASICは、名前付きDEF PROC / DEF FNプロシージャと関数、REPEAT UNTILループ、およびCOMALに触発されたIF THEN ELSE構造で従来のBASICを拡張しました。インタプリタには、BBC Microの4チャネルサウンド出力とその低/高解像度8モードグラフィックスディスプレイを制御するための強力なステートメントも含まれていました。

多くの最適化により、BBC BASICは、同様のマシンで実行されているMicrosoft BASICよりもはるかに高速にプログラムを実行しました。これらには、単一の長いリストではなく、変数ルックアップに複数のリンクリストを使用すること、整数変数の場所を事前定義すること、個別の整数数学ルーチンを含めることが含まれます。 MOS 6502プロセッサとMotorola 6845ディスプレイドライバがアクセスを一時停止することなくメモリを共有できる高速RAMの使用により、BBCマシンの速度がさらに向上しました。これらの設計機能の結果、BBC BASICは、David Ahlのベンチマークを21秒で実行し、IBM PCをも凌ぎ、他の8ビットプラットフォームをはるかに上回りました。

BBC BASICのユニークな機能の1つにインラインアセンブラがあり、ユーザーは6502に加えてZilog Z80、NS32016、ARMのアセンブリ言語プログラムを作成できます。アセンブラーは、BASICインタープリターおよびそれとの共有変数に完全に統合されました。これは、キャラクター間に含めることができ、* SAVEおよび* LOADを介して保存され、CALLまたはUSRコマンドを介して呼び出されます。これにより、開発者はアセンブリ言語コードだけでなく、アセンブリ言語を出力するBASICコードも記述できるようになり、コード生成技術を使用したり、BASICで簡単なコンパイラを作成することさえ可能になりました。

歴史

1978年、ヘルマンハウザーとクリスカリーがAcorn Computersを設立しました。コードの多くは、ケンブリッジ大学でソフィーウィルソンとその同僚によって開発されました。

プラットフォームとバージョン

BBC Micro

ここで利用可能な完全な履歴:

オリジナルバージョンであるBASIC Iは、初期のBBC Microsで出荷されました。

BASIC IIは、1982年以降に出荷されたモデルBを含むAcorn ElectronおよびBBC Microsで使用されました。OPENUPおよびOSCLIキーワード、オフセットアセンブリおよびバグ修正が追加されました。

BASIC IIIは、大西洋を越えたコンピューター市場に参入しようとするAcornの失敗的な試みのために、英国版と米国市場版の両方で作成されました。いくつかのバグ修正とは別に、BASIC IIからの唯一の変更点は、COLORコマンドのスペルもCOLORであるということでした。入力に関係なく、UKバージョンは常にCOLOUR、USバージョンはCOLORと表示されます。 BASIC IIIを見つけることができる主な場所は、外部の2番目のプロセッサのHI-BASICバージョンです。

BBCマスターマシンで使用可能なBASIC IV(CMOS BASICとも呼ばれます)は、65SC12プロセッサで使用可能な新しい命令を使用するように変更され、コードのサイズが削減されたため、ステートメントとしてLIST IF、EXT#を含めることができました。編集、TIME $、PROCで、| VDUステートメントおよび高速浮動小数点で。バグ修正が再び含まれました。

BASIC IV(1986)はBASIC IVをさらに改良したもので、Master Compactマシンに含まれていました。 CompactのBASICのバージョンには、再コーディングされた数学ルーチンが含まれており、他のMasterシリーズに含まれているバージョンよりも30%速度が向上すると言われています。

HI-BASIC:これには2つのバージョンがあり、1つはBASIC IIIに基づいており、もう1つはBASIC IVに基づいています。両方とも、BBC Bの通常の&8000アドレスではなく、2番目のプロセッサの上位アドレス(&B800)から実行するように構築されました。これにより、外部または内部6502 Second Processorでより多くのプログラムスペースを利用できます。 2番目のZilog Z80プロセッサをサポートするバージョンが導入されました。

BBC128と呼ばれるBBC BASICの別のバージョンは、BBC MasterおよびMaster Compactとともにテープおよびディスクで提供されました。メインRAMにロードし、ユーザープログラムに64 kBのSideways RAMを使用しました。これにより、通常のROMベースのバージョンよりもはるかに遅いという犠牲を払って、はるかに大きなプログラムがサポートされました。

インタプリタは、BASICと6502アセンブリ言語の両方を処理できます。これらは、文字の間に含めることができます。これは、産業および研究エンジニアのシステムの人気に貢献しました。

詳細/ BASICバージョンの決定

BBC MOSとRISC OSは通常ROMで提供されたため、オペレーティングシステムの特定のリリースには特定のバージョンのBASICが含まれていたと考えられます。このように、実際のオペレーティングシステムアイデンティティを問い合わせ、従って仮定することにより以外実行さいる BASICのバージョンを確認するための簡単な方法は存在しません。

すべてのElectrons、およびそれ以降のBBCマイクロコンピューターにはBASIC2があることに注意してください。以前のBBCマイクロコンピューターにはBASIC1があります。マシンにBASICのバージョンがわからない場合は、BASICの起動後に(BREAKまたは* BASICの後)REPORTと入力すると、著作権メッセージが出力されます。日付が1981の場合、BASIC1が適合します。 1982年の場合、BASIC2があります。アメリカのマシン、または2番目のプロセッサを搭載したマシンには、US BASICまたはHIBASICが搭載されている場合があります。ROMルーチンは、これらのROMに対して同じ場所にはありません。 —ベーシックROMユーザーガイド
オスバイト&00(0)

OSバージョンの識別(OS識別に関する詳細については、OSBYTE&81を参照)

入力パラメーター:
X = 0 OSバージョンを示すメッセージでBRKを実行します
Xで返されるOSバージョンのX > 0 RTS

終了時:
X = 0、OS 1.00またはElectron OS 1.00
X = 1、OS 1.20またはアメリカOS


オスバイト&81(129)
入力パラメーター:
X = 0
Y =&FF

終了時:
X = 0 BBC OS 0.1
X = 1 Electron OS 1.00
X =&FF BBC OS 1.00またはOS 1.20
X =&FE US BBC OS 1.20


INKEY(-256)コマンド
例:* SHADOWコマンドが標準のElectronまたはBBCモデルBを混乱させるのを避けるために、B +またはMaster / Compactで実行しながら、
INKEY(-256)> 1 THEN * SHADOW1の場合

返される値:
0 =古い0.10 OSのBBC B(廃止!)
-1 =新しい1.00+ OSを備えたBBC B(1.20を含む)
1 =電子
251 = BBC B + 64/128
253 =マスター128
245 =コンパクト
160 =アルキメデスアーサーOS(廃止)
161 = RISC OS 2.00
162 = RISC OS 2.01

— Acorn Electronアドバンスユーザーガイド

INKEYのBeebWikiエントリも参照してください。

BBCファミリでは、6502 Second Processorで標準のBASIC 拡張HIBASICの両方を実行できます。 PAGEの初期値を調べることにより、プログラムが2番目のプロセッサで実行されているかどうかを判断できます。2番目のプロセッサを使用している場合は、&800になります。 BASICとHIBASICを区別するには、HIMEMの初期値を調べる必要があります。これは、2番目のプロセッサーで実行されているBASICでは&8000、2番目のプロセッサーでHIBASICでは&B800です。

同様の状況がRISC OSに存在し、通常のBASICまたはBASIC64(より高い精度の数学を提供する)が存在する場合があります。通常のBASICは自分自身を「BASIC V」として識別し、BASIC64は自分自身を「BASIC VI」として識別します。したがって、次の(エラーが発生する前に使用される)によって、他のものと区別されます。

IF INSTR(REPORT $、 "VI")THEN PRINT "BASIC64" ELSE PRINT "BASIC"

これを行うより良い方法があります。BeebWikiを参照してください。ほとんどすべての場合、プログラムを実行しているBASICまたはプラットフォームをテストする必要はなく、呼び出しを行い、返されたデータを読み取って処理するだけです。

ドングリアルキメデス(RISC OS)

32ビットARM CPUへの移行と、BASICコードサイズの16 KB制限の削除により、多くの新機能が追加されました。 BASIC Vバージョン1.04は61 KBでした。 RISC OSの現在のバージョンには、まだBBC BASIC Vインタープリターが含まれています。 BBC BASIC VのRISC OS 5バージョンのソースコードは、RISC OS Openによって「共有ソース」としてリリースされました。 2011年、TBA Softwareは、アセンブラーからのVFP / NEONのサポートを含む、更新されたBASICのテストバージョンをリリースしました。

サポートされている新しいコマンドと機能は次のとおりです。

  • WHILE-ENDWHILE
  • IF-THEN-ELSE-ENDIF
  • その他の場合の場合、
  • プロシージャのRETURNパラメータ、
  • ローカル配列、
  • プロシージャライブラリ(LIBRARY、INSTALLおよびOVERLAY)、
  • LOCAL DATAおよびLOCAL ERRORハンドラー、
  • 相対的な復元、
  • 配列操作、
  • 新しいオペレーター、
  • ステップトレース、
  • 新しいサウンドシステム、マウス、グラフィックスのコマンド。

グラフィックコマンドは完全に後方互換性があり、サウンドはそれほど互換性がありませんでした。たとえば、BASIC V以降のENVELOPEキーワードは、14個の数値パラメーターを取り、事実上何もしません。古いバージョンではOS_Word 8を呼び出しますが、RISC OSでは何もしません。インライン6502アセンブラーは、ARMアセンブラーに置き換えられました。 BASIC Vは、Acornによって、「世界で最も高速に解釈されるBASIC」であり、「おそらくどのコンピューターでも見られる最も強力なBASIC」であると言われました。

BASIC VIは、BASIC Iで導入された標準の5バイト形式とは対照的に、IEEE 754 8バイト形式の実数をサポートするBASIC Vのバージョンです。

BBC BASIC VおよびVIは、Acorn ArchimedesおよびRiscPCの標準として提供されました。 BBC BASIC Vのバージョンは、BBC MicroのARMセカンドプロセッサで実行するためにも利用できました。

BBC BASIC Vのコンパイラは、Arthur OS開発のチームリーダーであるArchimedes BASIC Compilerと呼ばれるPaul Fellowsによって作成され、DABS Pressによって最初に公開されました。 ABCは、実行時のプログラムによる解釈を必然的に必要とするEVAL関数の明らかな例外を除き、ほとんどすべての言語を実装できました。その完全性の証拠として、インラインアセンブラ構文をサポートすることができました。コンパイラーはBBC BASIC Vで作成されました。コンパイラー(開発の初期段階でインタープリターの下で実行されていました)はそれ自体をコンパイルでき、配布されたバージョンは自己コンパイルされたオブジェクトコードでした。インタプリタの下で実行するように最初に書かれた多くのアプリケーションは、これがもたらすパフォーマンスの向上の恩恵を受け、BBC BASIC Vを他の言語と同等の本格的なアプリケーション開発に置きました。

その他のプラットフォーム

BBC BASICは、他の多くのプラットフォームにも移植されています。

NS32016バージョンのBBC BASICは、Acorn 32016コプロセッサーとAcorn ABCとともに提供されました。

BBC MicroのZilog Z80 Secondプロセッサで提供されるBBC BASICのバージョンに加えて、CP / Mベースのシステム用のBBC BASICのZ80ベースバージョンも存在します。最近まで、Sinclair ZX Spectrumのバージョンはありませんでした。ただし、J。G. Harston(PDP-11バージョンも担当)の努力により、2002年1月にSpectrumのBBC BASICがリリースされ、その後のリリースで多くの改良が加えられました。

BBC BASICのZilog Z80バージョンは、Tiki 100デスクトップコンピューター、Cambridge Z88ポータブル、Amstrad NC100 NotepadおよびAmstrad NC200 Notebookコンピューターでも使用されました。このバージョンは、TI-83 PlusおよびTI-84 Plusシリーズのグラフ電卓に実装されています。

PCベースのシステムの場合、BBC BASICはDOS用にBBCBASIC(86)として実装されました。これは、BBC Microとの最大限の互換性を目的としており、 BBasicはBASIC IIに基づいた独自の拡張によりBASIC言語に集中しました。

Microsoft Windowsグラフィカルユーザーインターフェイスと統合されたBBC BASICのバージョンである、Z80およびx86バージョンの開発者であるリチャードラッセルによって作成されたBBC BASIC for Windowsは2001年にリリースされました。元のBBC BASIC仕様(BASIC IV)をほぼ完全にサポートしながら、WindowsバージョンはBASIC V / VI構文の多くと独自のいくつかの高度な機能をサポートします。 BBC BASIC for Windowsに固有の機能には、レコード/構造タイプのインタープリターサポート、およびWindows APIルーチンまたは外部DLL内のルーチンを呼び出す機能が含まれます。最近のバージョンにはCなどの言語に匹敵する高度な機能が含まれており、外部ライブラリにはオブジェクトのサポートが最近追加されています。 BBC BASICのSDLベースバージョンは、Windows、Linux、およびSDLライブラリをサポートする多くのモバイルデバイスで利用できます。

ポータブルCで記述されたBrandyという名前のBBC BASICのGPLクローンも利用できます。

Commodore Amiga用のBBC Microのエミュレーターは、CBM(英国)向けのAriadne Softwareによって作成されました。非常に高速ですが、フルスピードで6502をエミュレートしませんでした。そのため、アセンブリコードは実際のBBCよりも遅くなりますが、BASICプログラムはずっと速くなります。最適化されたBASICと6502エミュレーションの相互作用により、市販のゲームはほとんど実行されません(ただし、正常に動作するコードと教育用ソフトウェアは一般に機能していました)。さらに。わずかに精度の低い浮動小数点数値形式を使用していました。しばらくの間、学校が古いBBC BをAmiga 500に置き換えることを期待して、Amiga 500の特別なアカデミックパッケージにバンドルされていました。

BBC BASIC V(Z80)のバージョンは、Benjamin RyvesによってTI-83 / 84 + Texas Instruments電卓ファミリー向けに作成されました。

Commodore 64バージョンのShadoは、1980年代初期に小さなソフトウェア会社Aztec Softwareによって作成されました。

ノート

  1. ^当時のほとんどのマシンでは、プロセッサは利用可能な時間の30%をメモリで待機していました。