SCELBAL は、 SCientific ELementary BAsic Languageの略で、 1976年にSCELBIや、Mark-8などの初期のIntel 8008および8080ベースのマイクロコンピュータ向けにリリースされたBASIC プログラミング言語のバージョンです。この言語には、後に拡張された数学パッケージと文字列処理が追加されました。元のバージョンでは 8 KB のRAM が必要でしたが、追加機能では少なくとも 12 KB が必要でした。
この言語は書籍の形で出版され、導入部の後にフローチャート、そして 8008アセンブラ コードが続きます。書籍では、メモリをさらに節約する方法、たとえば配列をオフにする方法、ユーザーが独自の新機能を言語に追加する方法について説明されています。
歴史
SCELBAL の主著者は Mark Arnold です。彼は SCELBI が発表された 1974 年当時高校生でした。Arnold はワイオミング大学(UW) の教授と友人であり、彼らを通じてSigma 7 メインフレーム コンピュータのアカウントを取得していました。SCELBAL の最初のバージョンはこのマシン用に作成されました。その年の後半、彼はそのプラットフォーム上で 8008クロス コンパイラを作成しました。
アーノルドは 1975 年にワシントン大学に入学し、SCELBI の創設者の 1 人であるナット ワズワースに連絡を取り、新しいプラットフォーム用に BASIC のコンパイル版を作成するというアイデアを提案しました。これは、中間バージョンをカセット テープに保存するマルチパス システムです。使用するのは非常に面倒ですが、システムの 4 kB 8H モデルで実行できるプログラムを作成できます。ワズワースは、システムの新しい 8B モデルで使用できる 8 kB を必要とするインタープリタを支持しました。この言語では、ワズワースが 1975 年にMachine Language Programming for the 8008で発表した浮動小数点ルーチンを使用しました。
ワズワースが最終的に契約をまとめるのに数ヶ月かかり、その契約にはアーノルドに 8B 開発システムを送ることが含まれていた。このため、言語のリリースは 1976 年に大幅に遅れた。アーノルドは、これらの遅れがなければ、SCELBAL は1975 年後半のAltair BASICとほぼ同時期にリリースされていた可能性があると推測した。SCELBAL は、1976 年 2 月のDr. Dobb's Journal第 2 号の長い記事で初めて発表された。 [1]
SCLEBALのリリースは、1976年6月号のByte誌の広告で発表された。広告では、SCELBIプラットフォームとこの言語を具体的に結びつけることはなく、代わりに、必要な8kBのRAMを備えた8008または8080システムでBASICのバージョンを作成するための完全なソースリストとして、本の形で提供されていた。本の価格は49ドルで、2023年では約262ドルだった。[2]
説明
SCELBAL は数値計算に 32 ビット (4 バイト) の浮動小数点形式を使用し、23 ビットの仮数、仮数用の 1 ビットの符号、7 ビットの指数、指数用の 1 ビットの符号で構成されていました。これらは逆の順序で構成さ れ、仮数の最下位バイトが最初のバイトに、次に中間バイト、最上位バイトが続き、上位ビットに符号が置かれていました。指数は最後にあり、これも上位ビットに符号が置かれていました。[3]マニュアルには、エントリ ポイントや使用上の注意など、数学パッケージ全体のアセンブリ コードが詳しく説明されています。 [4]この時代は 32 ビット形式が一般的でしたが、 MOS 6502用のMicrosoft BASICに始まる BASIC の後のバージョンでは、精度を高めるために一般に 40 ビット (5 バイト) 形式が採用されました。[5]
SCELBAL は、文字列変数や演算子、数学関数がいくつか欠けていることを除けば、 Altair BASICなどの初期の MS バージョンを含む他の BASIC 方言と似ています。その他の違いはそれほど顕著ではありません。 ステートメントには、 、の必要性をなくすIFオプション形式がありました。[6]また、同じ概念の MS スタイルの短縮形である も保持されています。また、 などの他のステートメントの条件付き実行も可能でした。[7]IF...GOTOTHENIF X<Y GOTO 100IF X<Y THEN 100IF X<Y THEN PRINT X
ベース言語は文字列処理をサポートしていませんでしたが、リテラル(定数)文字列は で使用できPRINT、 のサポート機能を使用してCHR印刷不可能な文字を印刷したり、TABレイアウトを提供したりしていました。奇妙なことに、システムではASCIIコードの上位ビットを設定する必要があったため、通常の ASCII から SCELBI 文字コードに変換するには、128 を加算または減算する必要がありました。たとえば、
PRINT "HELLO" ; CHR ( 172 ); CHR ( 160 ); "WORLD"
出力に「HELLO, WORLD」という文字列を生成します。[8]
INPUTは、通常、ユーザーが入力したテキストを数値として読み取りますが、ドル記号を使用すると、その値を SCELBI コードとして読み取るように指定できます。たとえば、は、INPUT Aユーザーが入力した「1」を浮動小数点値 1 として A に読み取りますが、 は、INPUT A$A に 177、49 (ASCII では「1」) + 128 が設定されます。さらに、ドル記号を使用すると、従来の「?」プロンプトは印刷されず、通常の場合のようにキャリッジ リターンを待つのではなく、1 文字入力するとすぐにコマンドが言語に戻ります。[8]
その他のいくつかの違いとしてはNEW、既存のプログラムコードとデータを消去するMSのコマンドがSCR「スクラッチ」と呼ばれ、[9]機械語ルーチンUSRを呼び出す関数が「ユーザー定義関数」と呼ばれていることが挙げられます。[10]ユーザー定義関数に1つの浮動小数点パラメータを渡すことができ、その機械語コードは実行前にメモリの固定位置にロードされている必要があります。[11]UDF UDF
エラーコードは2文字に短縮され、LOADおよびのコードはSAVE定型文で提供され、異なるプラットフォームに移植されるときに実装されることが想定されていました。[12]行番号は1〜999999の範囲でしたが、[10]ほとんどのBASICは16ビットの整数を使用していたため、1〜32767または1〜65535の行をサポートしていました。
言語機能
- 特に記載のない限り、1976年のマニュアルから引用。[13]
コマンド
即時モードのみ
ドキュメントでは「エグゼクティブ」モードと呼ばれます。
SCR- スクラッチ、MSに相当
NEW LISTRUNLOADSAVE
即時モードまたはプログラムモード
PRINTINPUT- MS と同様に、複数の変数を受け入れることができます。プロンプト文字列は含まれていません。
INPUT A,B,C LET- MS と同様に、 は
LETオプションであるため、と は同等です。15 LET X=1015 X=10 IF...THENIF...GOTO- の別の形式
IF...THEN。 GOTO- 「スペースバージョン」は
GO TOサポートされていないようです。 GOSUB...RETURNFOR...TO...STEP...NEXT- MS と同様に、
STEPはオプションであり、1 であると想定されますNEXT。それ以降の MS バージョンとは異なり、変数が必要です。 REMENDDIM- 配列は MS と同様に機能しますが、オプションであり、メモリを節約するために無効にすることもできます。1 次元配列のみがサポートされ、すべての配列を合わせた要素の合計数は 64 個でした。
機能
INTSGNABSSQRRND- MS と同様に、ダミー変数を受け取り、0 から 1 の間の値を返します。
CHR- MS では $ が使用されず、 が使用されていることに注意してください
CHR$。 TABUDF
拡張機能
SCELBI は、このシステムの 2 つの拡張機能である「数学関数補足」と「文字列補足」を公開しました。
数学関数の補足
数学関数補足では、5つの新しい超越関数、、、、、およびが追加されました。[ 14 ]SINCOSEXPLOGATN
文字列補足
文字列サプリメントは数学関数よりもいくらか大きく、いくつかの新機能が含まれています。
文字列は最大 80 文字までで、システムは合計 64 個の文字列変数を保持できます。これらの 64 個のうちの 1 つ、またはすべてが 1 次元配列になる場合がありますが、合計数は 64 個の文字列である必要があります。奇妙なことに、文字列配列にはDIMステートメントは必要ありませんでした。[15]
MS BASIC や、それに影響を与えたDartmouth BASIC の文字列処理とは対照的に、SCELBI は、 SDS BASIC、HP Time-Shared BASIC、Northstar BASIC、または後のAtari BASICLEFT$などの同時代の BASIC に見られる「スライス」スタイルの文字列操作を採用しました。 、RIGHT$、などの関数を使用して部分文字列にアクセスする代わりにMID$、開始点の前にコロンを付け、長さの前にセミコロンを付けるオプション付きの配列アクセス構文が使用されました。 SCELBAL は文字列配列もサポートしていたため、配列アクセサの最初の数字は配列インデックスであり、変数が配列でない場合はオプションでした。 したがって、たとえば、コード: [15]
10 A$ = "HELLO"とします20 A$ ( : 2 ; 3 )を印刷します
出力には「ELL」と表示されます。配列が使用される場合、構文では最初のパラメータに配列のインデックスが必要です。[15]
100 LET A$ ( 1 ) = "HELLO" 150 LET A$ ( 2 ) = "WORLD" 200 PRINT A$ ( 2 : 2 ; 3 )
出力には「ORL」が印刷されます。SCELBAL では、文字列の開始点から終了点までの文字を指定するセミコロンを省略することもできます。たとえば、次のコードでは、
210印刷A$ ( 2 : 2 )
出力には「ORLD」が印刷されます。
SDS BASICに似ていますが、スライス構文を使用する他のBASICと比較すると、最後のパラメータが位置ではなく長さであるという点で動作に大きな違いがあります。たとえば、Atari BASICでは、似たようなコードは次のようになります。[16]
20印刷A$ ( 2 , 3 )
代わりに「EL」を出力します。これは命令が「位置2と3の間のすべての文字を印刷する」と翻訳されるためです。このように、SCELBALはMS BASICに似た方法で動作し、同等のものは次のようになります。[17]
20プリントMID$ ( A$ , 2 , 3 )
そして
210印刷権$ ( A$ ( 2 ), 2 )
文字列の完全なサポートを追加するために、サプリメントでは、元のCHRを に置き換えましたCHR$。これは、MS の対応する構文と一致しています。 [15]同様に、 は、INPUT文字列変数が数値変数のように動作するように変更され、キャリッジリターンを待ってから、ユーザー入力全体を関連する文字列変数に割り当てます。[18]また、サポート関数LENとASC、[15]および が追加され、VAL$数値を含む文字列をその数値の文字列表現に変換します。MS と同様に、 連結には 演算子を使用しました+。[18]
参考文献
引用
- ^ Arnold, Mark; Wadsworth, Nat (1976 年 2 月)。「SCELBAL - 8008/8080 システム向け高水準言語」。Dr . Dobb's Journal。pp . 30–53。
- ^ 「衝撃的!」。Byte 1976年6月、47ページ。
- ^ アーノルド&ワズワース 1976年、10.1ページ。
- ^ アーノルド&ワズワース 1976年、10ページ。
- ^ Steil, Michael (2008 年 10 月 20 日)。「6502 用の Microsoft BASIC の独自バージョンを作成する」。
- ^ アーノルド&ワズワース 1976年、14.10ページ。
- ^ アーノルド&ワズワース 1976年、2.3ページ。
- ^ アーノルド&ワズワース 1976年、14.16ページ。
- ^ アーノルド&ワズワース 1976年、14.1ページ。
- ^ アーノルド&ワズワース 1976年、14.17ページ。
- ^ アーノルド&ワズワース 1976年、14.3ページ。
- ^ アーノルド&ワズワース 1976年、14.18ページ。
- ^ アーノルド&ワズワース 1976年。
- ^ 数学 1977年、1ページ。
- ^ abcde Strings 1977、p. 1。
- ^ Small, David 編 (1983)。「Atari 文字列とテキスト処理」。The Creative Atari。Creative Computing。
- ^ ストリングス 1977年、3ページ。
- ^ ab Strings 1977、p. 2。
文献
- Arnold, Mark; Wadsworth, Nat (1976). SCELBAL: 8008/8080 システム用の高水準言語(PDF) . SCELBI Computer Consulting.
- アーノルド、マーク (1977)。SCELBAL数学関数補足。SCELBI コンピュータ コンサルティング。
- アーノルド、マーク (1977)。SCELBAL Strings Supplement。SCELBIコンピュータ コンサルティング。
外部リンク
- SCELBALがプリロードされた8008のJavaScriptシミュレータ
- SCELBAL、数学、文字列サプリメントがプリロードされた 8008 の JavaScript シミュレーター
- Intel Hex 形式で公開された SCELBAL のオブジェクト コード
- Mike Willegal の SCELBAL ページ
- SCELBALを実行できるMike WillegalのSCELBI OS/Xエミュレータ
