<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=ASIC_programming_language</id>
	<title>ASIC programming language - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=ASIC_programming_language"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=ASIC_programming_language&amp;action=history"/>
	<updated>2026-04-21T17:44:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=ASIC_programming_language&amp;diff=819751&amp;oldid=prev</id>
		<title>2A00:23C5:FE1C:3701:E1A1:FB61:A83B:6184: grammar</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=ASIC_programming_language&amp;diff=819751&amp;oldid=prev"/>
		<updated>2025-08-15T12:40:37Z</updated>

		<summary type="html">&lt;p&gt;grammar&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{confused|ASIC}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                   = ASIC&lt;br /&gt;
| logo                   = &amp;lt;!-- Image name is enough --&amp;gt;&lt;br /&gt;
| logo alt               = &lt;br /&gt;
| screenshot             = ASIC programming language.png&lt;br /&gt;
| caption                = Version 5.0&lt;br /&gt;
| screenshot alt         = ASIC version 5.0&lt;br /&gt;
| collapsible            = &lt;br /&gt;
| author                 = Dave Visti&lt;br /&gt;
| developer              = 80/20 Software&amp;lt;ref&amp;gt;[http://files.mpoli.fi/unpacked/software/programm/pascal/paswiz21.zip/catalog.txt IBRARY: Library for the ASIC compiler.  Current Version: 3.1...David A. Visti], Catalog - Updated :February 1, 1996, Charon Software&amp;lt;/ref&amp;gt;&lt;br /&gt;
| released               = before 1993&amp;lt;!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --&amp;gt;&amp;lt;ref&amp;gt;[http://cd.textfiles.com/psl/psl9312/PRGMMING/DOS/BASIC/ASIC.ZIP ASIC 4.0 - Download]&amp;lt;/ref&amp;gt;&lt;br /&gt;
| discontinued           = yes&lt;br /&gt;
| latest release version = 5.00&lt;br /&gt;
| latest release date    = {{Start date and age|1994}}&lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &amp;lt;!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --&amp;gt;&lt;br /&gt;
| programming language   = [[x86 assembly language|x86 assembly]], [[Borland Turbo C|Turbo C]]&lt;br /&gt;
| operating system       = [[MS-DOS]]&lt;br /&gt;
| platform               = &lt;br /&gt;
| size                   = &lt;br /&gt;
| language               = &lt;br /&gt;
| language count         = &amp;lt;!-- Number only --&amp;gt;&lt;br /&gt;
| language footnote      = &lt;br /&gt;
| genre                  = [[BASIC]]&lt;br /&gt;
| license                = [[Shareware]]&lt;br /&gt;
| alexa                  = &lt;br /&gt;
| website                = &amp;lt;!--{{URL|example.org}}--&amp;gt;&lt;br /&gt;
| standard               = &lt;br /&gt;
| AsOf                   = &lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ASIC&amp;#039;&amp;#039;&amp;#039; 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 [[Bulletin board system|BBS]]es. ASIC allows compiling to an [[EXE]] or [[COM file]]. A COM file for the [[Hello world program]] is 360 bytes.&amp;lt;ref name=computereview126 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASIC has little or no support for [[logical operator]]s, [[control structure]]s,&amp;lt;ref&amp;gt;In ASIC 3.01 (1991), the manual lists [[For loop|FOR...NEXT]], [[Do while loop|WHILE...WEND]] and [[Conditional (computer programming)|IF...ENDIF]], but no [[switch statement]]s, and no functions or procedures with [[Parameter (computer programming)|parameters]] or [[local variable]]s, only [[GOSUB]] for [[subroutines]]. The example programs use [[Goto]] instead of WHILE.&amp;lt;/ref&amp;gt; and [[floating-point arithmetic]].  These shortcomings resulted in the tongue-in-cheek motto, &amp;quot;ASIC: It&amp;#039;s almost BASIC!&amp;quot;&amp;lt;ref&amp;gt;[http://www.palmtoppaper.com/ptphtml/19/pt190029.htm ASIC is the work of David Visti and his compiler takes code that is &amp;quot;almost BASIC&amp;quot; and compiles it down to a very small executable.] {{webarchive |url=https://web.archive.org/web/20151104080812/http://www.palmtoppaper.com/ptphtml/19/pt190029.htm |date=November 4, 2015 }}, Programmer&amp;#039;s Corner: TIPI: A Small Programming Language for Small Comp, By Kent Peterson&amp;lt;/ref&amp;gt;&amp;lt;ref name=computereview126&amp;gt;[http://www.atarimagazines.com/compute/issue126/86_Area_code_magic_with.php ASIC], Area code magic with AC Hunter  (computer program) (On Disk) (evaluation), by George Campbell, COMPUTE! ISSUE 126 / FEBRUARY 1991 / PAGE 86&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
=== Program elements ===&lt;br /&gt;
Neither identifiers nor keywords are [[case-sensitive]].&lt;br /&gt;
&lt;br /&gt;
Any &amp;lt;code&amp;gt;DIM&amp;lt;/code&amp;gt; statements, if specified, must precede all other statements except &amp;lt;code&amp;gt;REM&amp;lt;/code&amp;gt; statements or blank lines.&lt;br /&gt;
&lt;br /&gt;
All &amp;lt;code&amp;gt;DATA&amp;lt;/code&amp;gt; statements must be placed at the beginning of the program, before all other statement types, except &amp;lt;code&amp;gt;DIM&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REM&amp;lt;/code&amp;gt; statements, or blank lines. &lt;br /&gt;
&lt;br /&gt;
==== Expressions ====&lt;br /&gt;
ASIC does not have the [[exponentiation]] operator &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
ASIC does not have [[Boolean expression|boolean]] operators (&amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT&amp;lt;/code&amp;gt; etc.).&lt;br /&gt;
&lt;br /&gt;
=== Arrays ===&lt;br /&gt;
The size of [[Array (data structure)|array]] specified in the &amp;lt;code&amp;gt;DIM&amp;lt;/code&amp;gt; statement must be a literal constant. A single &amp;lt;code&amp;gt;DIM&amp;lt;/code&amp;gt; allows declaring only one array.&lt;br /&gt;
&lt;br /&gt;
=== Input and output ===&lt;br /&gt;
&amp;lt;code&amp;gt;PRINT&amp;lt;/code&amp;gt;&amp;#039;s arguments must be a literal or variable. &amp;lt;code&amp;gt;PRINT&amp;lt;/code&amp;gt; does not allow combined expressions as its arguments, nor [[String (computer science)|strings]] [[concatenation|concatenated]] with &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If a &amp;lt;code&amp;gt;PRINT&amp;lt;/code&amp;gt; command ends with &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;, then the next &amp;lt;code&amp;gt;PRINT&amp;lt;/code&amp;gt; command will resume in the position where this one left off, just as though its argument were appended to the argument of the current &amp;lt;code&amp;gt;PRINT&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PRINT&amp;lt;/code&amp;gt; statement prints [[Integer (computer science)|integer]] values six characters wide. They are aligned to the right (no trailing spaces).&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;LOCATE row, column &amp;lt;/code&amp;gt; : Moves the text cursor to the position (&amp;lt;code&amp;gt;column&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;row&amp;lt;/code&amp;gt;), where 0 ≤ &amp;lt;code&amp;gt;column&amp;lt;/code&amp;gt; and 0 ≤ &amp;lt;code&amp;gt;row&amp;lt;/code&amp;gt;. The position (0, 0) is the upper left corner.&lt;br /&gt;
&lt;br /&gt;
=== Graphics ===&lt;br /&gt;
; &amp;lt;code&amp;gt;PSET (row,column),color&amp;lt;/code&amp;gt; : Turns on the pixel of the color &amp;lt;code&amp;gt;color&amp;lt;/code&amp;gt; at position (&amp;lt;code&amp;gt;column&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;row&amp;lt;/code&amp;gt;), where 0 ≤&amp;lt;code&amp;gt;column&amp;lt;/code&amp;gt; and 0 ≤ &amp;lt;code&amp;gt;row&amp;lt;/code&amp;gt;. The position (0, 0) is the upper left corner.&lt;br /&gt;
&lt;br /&gt;
=== Control Structures ===&lt;br /&gt;
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 &amp;lt;code&amp;gt;X = 2&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;2 = X&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Decisions ====&lt;br /&gt;
After &amp;lt;code&amp;gt;THEN&amp;lt;/code&amp;gt;, there may be a sequence of statements delimited by &amp;lt;code&amp;gt;ELSE&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ENDIF&amp;lt;/code&amp;gt;. An example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
IF X &amp;lt; 0 THEN&lt;br /&gt;
  PRINT &amp;quot;Negative&amp;quot;&lt;br /&gt;
ELSE&lt;br /&gt;
  PRINT &amp;quot;Non-negative&amp;quot;&lt;br /&gt;
ENDIF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Contrary to other BASICs, statements cannot be put between &amp;lt;code&amp;gt;THEN&amp;lt;/code&amp;gt; and the end of the line.&lt;br /&gt;
&lt;br /&gt;
An if-statement can realize the conditional jump. In this case, after &amp;lt;code&amp;gt;THEN&amp;lt;/code&amp;gt; there may be a label.&lt;br /&gt;
&lt;br /&gt;
==== Looping ====&lt;br /&gt;
In &amp;lt;code&amp;gt;FOR&amp;lt;/code&amp;gt;, after &amp;lt;code&amp;gt;TO&amp;lt;/code&amp;gt; there may be only a number - literal or variable - but not a combined expression. The &amp;lt;code&amp;gt;STEP&amp;lt;/code&amp;gt; clause does not exist in ASIC.&lt;br /&gt;
&lt;br /&gt;
==== Branching ====&lt;br /&gt;
In a &amp;lt;code&amp;gt;GOTO&amp;lt;/code&amp;gt; statement, the label must be followed by a colon.&lt;br /&gt;
&lt;br /&gt;
==== Subroutines ====&lt;br /&gt;
In a &amp;lt;code&amp;gt;GOSUB&amp;lt;/code&amp;gt; statement, the label must be followed by a colon. &lt;br /&gt;
&lt;br /&gt;
== BAS2ASI ==&lt;br /&gt;
This utility, serving to convert [[GW-BASIC]] programs to ASIC syntax, in the version 5.0 does not support some GW-BASIC features. Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;STEP&amp;lt;/code&amp;gt; in the [[for loop]] is not converted. The program&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
10 FOR i=10 TO 1 STEP -1 &lt;br /&gt;
20 PRINT i&lt;br /&gt;
30 NEXT i&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
is converted into&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;QBasic&amp;quot;&amp;gt;&lt;br /&gt;
	REM 10 FOR i=10 TO 1 STEP -1 &lt;br /&gt;
	FOR I@ = 10 TO 1 &lt;br /&gt;
		ASIC0@ = -1 -1 &lt;br /&gt;
		I@ = I@ + ASIC0@ &lt;br /&gt;
		&lt;br /&gt;
		REM 20 PRINT i&lt;br /&gt;
		PRINT I@ &lt;br /&gt;
		&lt;br /&gt;
		REM 30 NEXT i		REM 30 NEXT i		3:  Syntax error &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[exponentiation]] operator &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; is not converted. The program&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
10 a=2&lt;br /&gt;
20 b=a^10&lt;br /&gt;
30 PRINT b&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
is converted into&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;QBasic&amp;quot;&amp;gt;&lt;br /&gt;
	REM 10 a=2&lt;br /&gt;
L10: &lt;br /&gt;
	A@ = 2 &lt;br /&gt;
	&lt;br /&gt;
	REM 20 b=a^10&lt;br /&gt;
	2:  Syntax error&lt;br /&gt;
&lt;br /&gt;
	REM 30 PRINT b	REM 30 PRINT b	3:  Syntax error &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*Simtelnet archive for ASIC 5.0 [ftp://ftp.simtel.net/pub/simtelnet/msdos/basic/asic500.zip]{{dead link|date=May 2025|bot=medic}}{{cbignore|bot=medic}} Dead link --&amp;gt;&lt;br /&gt;
*[http://publish.uwo.ca/~jkiernan/asicinfo.htm ASIC 5.00 + Libraries + Linker]&lt;br /&gt;
* [http://rosettacode.org/wiki/Category:ASIC Category:ASIC] Tasks implemented in ASIC on [http://rosettacode.org rosettacode.org]&lt;br /&gt;
&lt;br /&gt;
{{BASIC}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASIC programming language family]]&lt;/div&gt;</summary>
		<author><name>2A00:23C5:FE1C:3701:E1A1:FB61:A83B:6184</name></author>
	</entry>
</feed>