ASIC is a compiler and integrated development environment for a subset of the BASIC programming language. It was released for MS-DOS and compatible systems as shareware. Written by Dave Visti of 80/20 Software, it was one of the few BASIC compilers legally available for download from BBSes. ASIC allows compiling to an EXE or COM file. A COM file for the Hello world program is 360 bytes.
ASIC has little or no support for logical operators, control structures, and floating-point arithmetic. These shortcomings resulted in the tongue-in-cheek motto, "ASIC: It's almost BASIC!"
ASIC is strongly impoverished in comparison with its contemporary BASICs. The features of ASIC are selected to make a program be easily and directly compiled into machine language. Thus, many language constructs of ASIC are equivalent to constructs of assembly language.
Neither identifiers nor keywords are case-sensitive.
Any <code>DIM</code> statements, if specified, must precede all other statements except <code>REM</code> statements or blank lines.
All <code>DATA</code> statements must be placed at the beginning of the program, before all other statement types, except <code>DIM</code>, <code>REM</code> statements, or blank lines.
ASIC does not have the exponentiation operator <code>^</code>.
ASIC does not have boolean operators (<code>AND</code>, <code>OR</code>, <code>NOT</code> etc.).
The size of array specified in the <code>DIM</code> statement must be a literal constant. A single <code>DIM</code> allows declaring only one array.
<code>PRINT</code>'s arguments must be a literal or variable. <code>PRINT</code> does not allow combined expressions as its arguments, nor strings concatenated with <code>;</code> or <code>+</code>.
If a <code>PRINT</code> command ends with <code>;</code> or <code>,</code>, then the next <code>PRINT</code> command will resume in the position where this one left off, just as though its argument were appended to the argument of the current <code>PRINT</code> command.
The <code>PRINT</code> statement prints integer values six characters wide. They are aligned to the right (no trailing spaces).
A boolean condition may be only a comparison of numbers or strings, but not a comparison of combined expressions. A literal cannot be the left operand of comparison (e.g. can be <code>X = 2</code>, not <code>2 = X</code>).
After <code>THEN</code>, there may be a sequence of statements delimited by <code>ELSE</code> or <code>ENDIF</code>. An example:
Contrary to other BASICs, statements cannot be put between <code>THEN</code> and the end of the line.
An if-statement can realize the conditional jump. In this case, after <code>THEN</code> there may be a label.
In <code>FOR</code>, after <code>TO</code> there may be only a number - literal or variable - but not a combined expression. The <code>STEP</code> clause does not exist in ASIC.
In a <code>GOTO</code> statement, the label must be followed by a colon.
In a <code>GOSUB</code> statement, the label must be followed by a colon.
This utility, serving to convert GW-BASIC programs to ASIC syntax, in the version 5.0 does not support some GW-BASIC features. Examples:
<code>STEP</code> in the for loop is not converted. The program
is converted into
The exponentiation operator <code>^</code> is not converted. The program
is converted into