BBCBASIC

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

BBCBASIC
BBCマイクロアセンブリlisting.jpg
初登場1981 ; 41年前 (1981)
安定リリース
5.90b
OSBBCMicroMOS
テクノロジー6502RISCOS
ZX
Spectrum
CP / M
DOS
Microsoft
WindowsTI-83PlusおよびTI-84Plus
ライセンスApache 2.0(RISC OS)
プロプライエタリ(Windows)
Webサイトwww .riscosopen .org(RISC OS)
www .bbcbasic .org(Windows)
に影響を受けた
BASICAtom BASICBCPL

BBC BASICは、1981年にBBC Microホーム/パーソナルコンピューターのネイティブプログラミング言語としてリリースされたBASICプログラミング言語のバージョンであり、 BBCの英国のコンピューターリテラシープロジェクトに標準化された言語を提供します[1]主にソフィーウィルソンによって書かれました。

BBC BASICは、AcornAtom用の古いAtomBASICに基づいており、 COMALに触発された名前付き/プロシージャと関数、ループ、および構造を備えた最新のマイクロコンピュータBASICを拡張しました。通訳には、BBCMicroの4チャンネルサウンド出力とその低/高解像度8モードグラフィックスディスプレイを制御するためのステートメントも含まれていました DEF PROCDEF FNREPEAT UNTILIF THEN ELSE

多数の最適化により、BBC BASICは、同様のマシンで実行されているMicrosoftBASICよりもはるかに高速にプログラムを実行しました。最適化には、単一の長いリストではなく、変数ルックアップに複数のリンクリストを使用すること、整数変数の場所を事前に定義すること、および個別の整数数学ルーチンを使用することが含まれていました。BBCマシンでは、高速RAMチップによって速度がさらに向上し、 MOSTechnology6502プロセッサとMotorola6845ディスプレイドライバがアクセスを一時停止することなくメモリを共有できるようになりました。[a]これらの設計機能の結果として、BBCBASICはDavidAhlCreativeComputingBenchmarkを実行しました。21秒で、IBMパーソナルコンピュータをも凌駕し、他のほとんどの8ビットプラットフォームをはるかに上回りました。[2] BBCMicroと同じくらい高速な商用8ビットBASICコンピューターは、スウェーデンのABC80ABC800だけでした。BBCマスターの改良されたBASIC4は、同じベンチマークを約7秒で実行します。[要出典]

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

歴史

1978年にHermannHauserChrisCurryがAcornComputers設立しました。コードの多くは、ケンブリッジ大学でSophieWilson [3]と彼女の同僚によって開発されました。[4]BASICの元のAcorn方言(「自由に曲げることができる」12Kの作業言語」から始まり、Algol WとBCPLの設計で通知されていましたが、WilsonはJohnCollと共同で「Pascalに向けて曲げることに着手しました」 、「Microsoftの必需品」と「Pascal風のバリエーション」を組み合わせた言語を作成します。ただし、表面上はBBCの要件によって課せられた、Microsoft BASICとの幅広い互換性の期待により、ラベルや複数行の条件文など、Pascalの影響を受ける一部の機能を削除する必要がありました。[5]

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

BBCMicro

スイッチオンまたはハードリセット後のBBCMicroのBASICプロンプト

完全なバージョンリストはここから入手できます:[6]

元のバージョンであるBASICIは、初期のBBCMicrosで出荷されました。

BASIC IIは、モデルBを含め、1982年以降に出荷されたAcornElectronおよびBBCMicrosで使用されました。オフセットアセンブリおよびバグ修正とともに、およびキーワードが追加されましOPENUPOSCLI

BASIC IIIは、大西洋を横断するコンピューター市場に参入しようとするAcornの不作為な試みのために、英国版と米国市場版の両方で作成されました。いくつかのバグ修正を除けば、BASIC IIからの唯一の変更点は、COLOURコマンドのスペルも可能であったことCOLORです。どちらが入力されたかに関係なく、英国バージョンでは常にCOLOUR、米国バージョンではとしてリストされていましCOLORた。BASIC IIIを見つけることができる主な場所は、外部セカンドプロセッサ用のHI-BASICバージョンです。

BBCマスターマシンで使用可能なCMOSBASICとも呼ばれるBASICIVは、65SC12プロセッサで使用可能な新しい命令を使用するように変更され、コードのサイズが縮小され、ステートメントとして、、、、|を含めることができるようLIST IFEXT#なりEDITましTIME$ON PROCVDUステートメントとより高速な浮動小数点でバグ修正が再び含まれました。

BASIC IV(1986)は、BASIC IVをさらに改良したもので、MasterCompactマシンに含まれていました。コンパクトのBASICのバージョンには、再コード化された数学ルーチンが含まれており、マスターシリーズの残りの部分に含まれているバージョンよりも30%速度が向上すると言われています。[7]

HI-BASIC:これは2つのバージョンで利用可能でした。1つはBASIC IIIに基づいており、2つ目はBASICIVに基づいています。どちらも、BBC Bの通常の&8000アドレスではなく、2番目のプロセッサのより高いアドレス(&B800)から実行するように構築されました。これにより、外部または内部の6502セカンドプロセッサでより多くのプログラムスペースを使用できるようになりました。2番目のZilogZ80プロセッサをサポートするバージョンが導入されました。[8]

BAS128と呼ばれるBBCBASICの別のバージョンは、BBCマスターとマスターコンパクトとともにテープとディスクで提供されていました。メインRAMにロードされ、ユーザープログラムに64kBのSidewaysRAMを使用しました。これにより、通常のROMベースのバージョンよりもはるかに低速であるという犠牲を払って、はるかに大きなプログラムのサポートが提供されました。

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

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

BBCMOSとRISCOSは通常ROMで提供されていたため、オペレーティングシステムの特定のリリースに特定のバージョンのBASICが含まれていると想定される場合があります。そのため、オペレーティングシステムのIDを照会して推測する以外に、実際に実行されているBASICのバージョン を判断する簡単な方法はありません。

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

OSバージョンの識別(OS識別の詳細については、OSBYTE&81を参照してください)

エントリパラメータ:
X =0OSバージョンを与えるメッセージでBRKを実行
X<>0 RTSとOSバージョンがXに返される

終了時:
X = 0、OS1.00またはElectronOS 1.00
X = 1、OS1.20またはAmericanOS


Osbyte&81(129)
エントリパラメータ:
X = 0
Y =&FF

終了時:
X = 0 BBC OS 0.1
X=1エレクトロンOS1.00X =&FF BBCOS1.00またはOS1.20X =&FE US BBC OS
1.20


INKEY(-256)コマンド
の例、* SHADOWコマンドが標準のElectronまたはBBCモデルBを混乱させないように、B +またはマスター/コンパクトで実行する場合は、
IF INKEY(-256)> 1 THEN*SHADOW1を使用できます。

戻り値:
0=古い0.10OSのBBCB(廃止!)
-1=新しい1.00+OSのBBCB(1.20を含む)
1=エレクトロン
251= BBC B + 64/128253
=マスター128245
=コンパクト
160=Archimedes Arthur OS(廃止)
161 = RISC OS 2.00
162 = RISC OS 2.01


— AcornElectronAdvancedユーザーガイド

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

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

同様の状況がRISCOSにも存在し、通常のBASICまたはBASIC64(より高精度の計算を提供)が存在する可能性があります通常のBASICはそれ自体を「BASICV」として識別し、BASIC64はそれ自体を「BASICVI」として識別します。したがって、以下(エラーが発生する前に使用)は互いに区別します。

IF INSTR REPORT $ "VI" THEN PRINT "BASIC64" ELSE PRINT "BASIC"       

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

Acorn Archimedes(RISC OS)

32ビットARMCPUへの移行と、BASICコードサイズの16 KB制限の削除に伴い、多くの新機能が追加されました。[10] BASICVバージョン1.04の長さは61KBでした。RISC OSの現在のバージョンには、BBCBASICVインタープリターがまだ含まれています。RISCOS5バージョンのBBCBASICVのソースコードは、 RISCOSOpenによってApache2.0ライセンスの下でリリースされています。[11] 2011年、 TBAソフトウェアは、アセンブラからのVFP/NEONのサポートを含む更新されたBASICのテストバージョンをリリースしました[12]

サポートされている新しいコマンドと機能には、次のものがあります。

  • WHILE-ENDWHILE
  • IF-THEN-ELSE-ENDIF
  • CASE-OF-WHEN-OTHERWISE-ENDCASE
  • RETURN手順のパラメータ、
  • ローカル配列、
  • プロシージャライブラリ(、、LIBRARYおよびINSTALLOVERLAY
  • LOCAL DATALOCAL ERRORハンドラー、
  • 相対的なRESTORE
  • 配列操作、
  • 新しいオペレーター、
  • STEP TRACE
  • 新しいサウンドシステム、マウス、グラフィックスのコマンド。

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

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

BBC BASIC VおよびVIは、AcornArchimedesおよびRiscPCに標準で提供さましBBC BASIC Vのバージョンは、BBCMicro用のARMセカンドプロセッサで実行することもできました

BBC BASIC Vのコンパイラは、ArthurOS開発のチームリーダーであるPaulFellowsによって作成され、Archimedes BASICコンパイラと呼ばれ、DABSPressによって最初に公開されました。[要出典] ABCは、実行時のプログラムによる解釈を必然的に必要とするEVAL関数を除いて、ほとんどすべての言語を実装できました。その完全性の証拠として、インラインアセンブラ構文をサポートすることができました。コンパイラーはBBCBASICVで作成されました。コンパイラー(開発の初期段階ではインタープリターの下で実行)はそれ自体をコンパイルでき、配布されたバージョンは自己コンパイルされたオブジェクトコードでした。独自の研究?]インタプリタの下で実行するように最初に作成された多くのアプリケーションは、これによってパフォーマンスが向上し、BBC BASIC Vを他の言語と同等にして、本格的なアプリケーション開発を実現しました。

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

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

NS32016バージョンのBBCBASICは、Acorn32016コプロセッサーとAcornABCに付属しています。

BBCMicroのZilogZ802番目のプロセッサに付属しているBBCBASICのバージョンに加えて、CP/Mベースのシステム用にZ80ベースのバージョンのBBCBASICも存在します。BBCBASICのZilogZ80バージョンは、 Tiki 100デスクトップコンピューター、Cambridge Z88ポータブル、AmstradNC100NotepadおよびAmstradNC200Notebookコンピューターでも使用されましたこのバージョンは、TI-83PlusおよびTI-84Plusシリーズのグラフ電卓に実装ますJ. G. Harston( PDP-11バージョン[16]も担当)の努力により、BBCBASICバージョンSinclair ZX Spectrumは、2002年1月にリリースされ、その後のリリースで多くの改善が行われました。


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

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

BBC BASIC for SDLは、Windows、Linux、およびSDLライブラリをサポートする多数のモバイルデバイスをサポートするRichard T Russellによって開発されました。また、Webを介してWebページでアプレットとしてBBCBASICプログラムを実行できるバージョンもあります。アセンブリフレームワーク。

ポータブルCで書かれたBrandyという名前のBBCBASICのGPLクローンも利用できます。[17] [18] [19] [20] [21]

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

BBCMicroの出版社であるComputerConceptsは、ATariST用のBBCBasicのバージョンであるFastSTBASICをROMカートリッジとして作成しました。[22]

BBC BASIC V(Z80)のバージョンも、BenjaminRyvesによってTI-83/ 84 +TexasInstruments計算機ファミリ用に作成されました。

コモドール64バージョンShadoは、1980年代初頭に小さなソフトウェア会社AztecSoftwareによって作成されました。[23] Acornの6502ベースのHI-BASICのパッチバージョンも、C64カーネルへのインターフェイスを備えたC64で実験的に実行されており、他の方法で行われたAcornMOS呼び出しに取って代わります。

また、6502ベースのバージョンのBBCBASICをAppleIIシリーズのコンピュータで利用できるようにする取り組みも行われています。Applecornはそのような取り組みの1つです。

メモ

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

も参照してください

参照

  1. ^ 「BBCMicroは革命の記憶に火をつける」BBCニュース2008年3月21日2010年11月28日取得
  2. ^ Ahl、David(1984年3月)。「クリエイティブコンピューティングベンチマーク」クリエイティブコンピューティングp。6.6。
  3. ^ 「Acorn/BBCコンピュータ用のビデオプロセッサ」BBCニュース2010年11月30日取得
  4. ^ 「BBCMicroは革命の記憶に火をつける」BBCニュース2008年3月21日2010年11月30日取得
  5. ^ 「BBCBASICへのComalの挑戦」あなたのコンピュータ1981年11月。40〜42ページ2022年2月24日取得
  6. ^ BBCBASICバージョンリスト
  7. ^ Acorn User 1986年10月— 17ページ{—マスターコンパクトレビュー
  8. ^ スミス、ブルース(1984年11月)。A&Bコンピューティング1、ゴールデンスクエアロンドン:アーガススペシャリスト出版物。p。6.6。{{cite book}}: CS1 maint: location (link)
  9. ^ マーシュ、デビッド(2005年12月5日)。「ARMは自動車および産業の優位性を対象としています」EDNヨーロッパ2012年8月1日取得
  10. ^ ロジャーウィルソン(1989年7月3日)。「BASICV1.02と1.04の変更(Richard LLoydの場合)」ニュースグループ:  eunet.micro.acornUsenet:[email protected] 2011年6月14日取得  
  11. ^ https://gitlab.riscosopen.org/RiscOS/Sources/Programmer/BASIC/-/blob/master/LICENSE
  12. ^ リー、ジェフリー(2011年8月2日)。「私はあなたにニュースを持っていますか」アイコンバー2011年12月8日取得TBAソフトウェアは、VFP /NEONアセンブラをサポートする更新されたBBCBASICのテストバージョンをリリースすることにより、忙しくしています。
  13. ^ http://lists.cloud9.co.uk/pipermail/bbc-micro/2006-November/000257.html
  14. ^ http://mdfs.net/Archive/BBCMicro/2006/11/19/185014.htm
  15. ^ BBCBASIC-MDFS::Software。$。BBCBasic
  16. ^ PDP-11用のBBCBASIC
  17. ^ ウィリアムズ、クリス(2003年12月6日)。「BASICVforUnix、DOS、Windows、およびRISC OS:著者のDaveDanielsにBrandyBASICの精神について話します」ドローブ2011年7月6日取得Brandy BASICは、RISC OS、NetBSD / arm32、NetBSD / i386、Linux、DOS、およびWindows用にコンパイルされたBASICVインタープリターです。
  18. ^ ダニエルズ、デイブ。「ブランデーベーシック」RISCワールド2011年7月6日取得Brandyは、BBC Basicのポータブルインタプリタです。つまり、BBC Basicで記述されたプログラムを開発し、RISCOSを実行しているコンピュータ以外のコンピュータで実行できます。
  19. ^ 「ブランデー」2011年7月17日にオリジナルからアーカイブされました2011年7月6日取得
  20. ^ 「BrandyBasicVInterpreter」2011年7月6日取得
  21. ^ 「Linux用のSDLおよびテレテキストを備えたMatrixBrandyBBCBasicV」2018年8月4日取得
  22. ^ 「コンピュータの概念による速いBASIC」RetroGames
  23. ^ http://mdfs.net/Software/BBCBasic/C64/

外部リンク