| ASIC | |
|---|---|
バージョン5.0 | |
| 原作者 | デイブ・ヴィスティ |
| 開発者 | 80/20ソフトウェア[ 1 ] |
| リリース | 1993年以前[ 2 ] |
| 最終リリース | 5.00 / 1994 ( 1994 ) |
| 執筆 | x86アセンブリ、ターボC |
| オペレーティング·システム | MS-DOS |
| タイプ | ベーシック |
| ライセンス | シェアウェア |
ASICは、 BASICプログラミング言語のサブセット用のコンパイラおよび統合開発環境です。MS -DOSおよび互換システム向けにシェアウェアとしてリリースされました。80/20 SoftwareのDave Vistiによって作成され、 BBSから合法的にダウンロードできる数少ないBASICコンパイラの1つでした。ASICはEXEファイルまたはCOMファイルへのコンパイルを可能にします。Hello WorldプログラムのCOMファイルは360バイトです。[ 3 ]
ASIC は論理演算子、制御構造、[ 4 ]および浮動小数点演算をほとんど、またはまったくサポートしていません。これらの欠点により、「ASIC: それはほとんど BASIC だ!」という皮肉なモットーが生まれました。[ 5 ] [ 3 ]
ASICは、同時代のBASICと比較すると、機能が著しく劣っている。ASICの機能は、プログラムを容易かつ直接的に機械語にコンパイルできるように選択されている。そのため、ASICの多くの言語構造は、アセンブリ言語の構造と同等である。
識別子もキーワードも大文字と小文字を区別しません。
指定された記述はDIM、他のすべての記述(ただし、REM記述文または空白行を除く)の前に記述されなければならない。
すべてのDATAステートメントは、プログラムの先頭、つまり他のすべてのステートメントタイプの前に配置する必要があります。ただしDIM、REMステートメント、または空白行は除きます。
ASICにはべき乗演算子がありません^。
ASICにはブール演算子(AND、など)ORはありませんNOT。
ステートメントで指定する配列のサイズは、DIMリテラル定数でなければなりません。単一の値では、DIM1つの配列のみを宣言できます。
PRINTの引数はリテラルまたは変数でなければなりません。PRINTは、引数として結合式や、またはで連結された文字列 を許可しません。;+
コマンドがまたはPRINTで終わる場合、次のコマンドは、そのコマンドが終了していた位置から再開します。これは、その引数が現在のコマンドの引数に追加されたかのように動作します。;,PRINTPRINT
このPRINT文は、整数値を6文字幅で出力します。値は右揃えで表示され、末尾に空白は付きません。
LOCATE row, column column, row) に移動します。ただし、0 ≤columnおよび 0 ≤ですrow。位置 (0, 0) は左上隅です。PSET (row,column),colorcolor位置 ( column, ) にある色のピクセルをオンにします。rowただし、0 ≤columnおよび 0 ≤ですrow。位置 (0, 0) は左上隅です。ブール条件は、数値または文字列の比較のみが可能であり、複合式の比較はできません。リテラルは比較の左オペランドにすることはできません(たとえば、 は可能ですがX = 2、 はできません2 = X)。
の後に、またはTHENで区切られた一連のステートメントが続く場合があります。例:ELSEENDIF
X < 0の場合、 「負の値」と表示し、そうでない場合は「負の値ではない」と表示します。THEN他のBASICとは異なり、ステートメントは行末との間に置くことはできません。
if文は条件分岐を実現できます。この場合、afterにはTHENラベルが付く可能性があります。
の場合FOR、 の後にはTO数値(リテラルまたは変数)のみを含めることができ、複合式を含めることはできません。このSTEP条項は ASIC には存在しません。
声明文ではGOTO、ラベルの後にはコロンを付けなければなりません。
声明文ではGOSUB、ラベルの後にはコロンを付けなければなりません。
このユーティリティは、 GW-BASICプログラムをASIC構文に変換するものですが、バージョン5.0では一部のGW-BASIC機能がサポートされていません。例:
STEPforループ内では変換されません。プログラムは
i = 10から1まで-1ステップずつ繰り返す20 iを出力する30次のiへに変換されます
REM 10 FOR i = 10 TO 1 STEP -1 FOR I@ = 10 TO 1 ASIC0@ = -1 -1 I@ = I@ + ASIC0@ REM 20 PRINT i PRINT I@ REM 30 NEXT i REM 30 NEXT i 3 :構文エラーべき乗演算子は^変換されません。
10 a = 2 20 b = a ^ 10 30 PRINT bに変換されます
REM 10 a = 2 L10: A@ = 2 REM 20 b = a ^ 10 2 :構文エラーREM 30 PRINT b REM 30 PRINT b 3 :構文エラー