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 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!" Features 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. Expressions ASIC does not have the exponentiation operator ^. ASIC does not have boolean operators (AND, OR, NOT etc.). Input and Output PRINT's arguments must be a literal or variable. PRINT does not allow to use combined expressions as its arguments, nor does it allow to use strings concatenated with ; or +. If a PRINT command ends with ; or ,, then the next PRINT command will resume in the position where this one left off, just as though its argument were appended to the argument of the current PRINT command. LOCATE row, column Moves the text cursor to the position (column, row), where 0 ≤ column and 0 ≤ row. The position (0, 0) is the upper left corner. Graphics PSET (row,column),color Turns on the pixel of the color color at position (column, row), where 0 ≤column and 0 ≤ row. The position (0, 0) is the upper left corner. Control Structures Decisions A boolean condition in IF may be only a comparison of numbers or strings, but not a comparison of combined expressions. After THEN, there may be a sequence of statements delimited by ELSE or ENDIF. An example: IF X < 0 THEN PRINT "Negative" ELSE PRINT "Non-negative" ENDIF Contrary to other BASICs, statements cannot be put between THEN and the end of the line. An if-statement can realize the conditional jump. In this case, after THEN there may be a label. Looping In FOR, after TO there may be only a number - literal or variable - but not a combined expression. The STEP clause does not exist in ASIC. Branching In