ASIC (زبان برنامه‌نویسی)

ASIC یک کامپایلر و محیط توسعه یکپارچه برای زیر مجموعه ای از زبان برنامه‌نویسی بیسیک است. این نرم‌افزار برای  MS-DOS و سیستم‌های سازگار به عنوان  Shareware منتشر شد. توسط Dave Visti با نرم‌افزار ۸۰/۲۰ نوشته شده، یکی از معدود کامپایلرهای BASIC بود که به‌طور قانونی برای  دانلود از  BBSes در دسترس بود. ASIC اجازه کامپایل یک فایل EXE یا COM را می‌دهد. یک فایل COM برای برنامه  Hello world تعداد ۳۶۰ بایت دارد.

ASIC پشتیبانی کمی از  عملگرهای منطقی،  ساختارهای کنترلی، و محاسبات ممیز شناور دارد. این کاستی‌ها منجر به شعار زبان در گونه، "ASIC: تقریباً اساسی است!"

امکانات 
ASIC در مقایسه با BASICهای هم نسل خود به شدت ضعیف است. ویژگی‌های ASIC به گونه‌ای انتخاب شده‌اند که یک برنامه به راحتی و مستقیماً به زبان ماشین کامپایل شود؛ بنابراین، بسیاری از ساختارهای زبان ASIC معادل ساختارهای زبان اسمبلی هستند.

اصطلاحات 
ASIC عملگر  توان ^ ندارد.

ASIC عملگرهای بولی (AND ، OR ، NOT و …) ندارد).

ورودی و خروجی 
آرگومان‌های PRINT باید دقیق یا متغیر باشند. PRINT اجازه استفاده از عبارات ترکیبی را به عنوان آرگومان‌های خود نمی‌دهد و همچنین اجازه استفاده از  رشته‌های الحاق شده با ; یا + را هم نمی‌دهد.

اگر دستور PRINT با ; یا , باشد، دستور PRINT بعدی در موقعیتی که این دستور متوقف شده، از سر گرفته می‌شود، درست مثل اینکه آرگومان آن به آرگومان دستور PRINT قبلی اضافه شده‌است.

LOCATE row, column :

مکان نما متن را به موقعیت (column ، row)، که در آن ۰ ≤ column و ۰ ≤ row است، حرکت می‌دهد. موقعیت (۰، ۰) گوشه بالا سمت چپ است.

گرافیک 
PSET (row,column),color

پیکسل color رنگ را در موقعیت (column ، row)، که در آن ۰ ≤ column و ۰ ≤ row . موقعیت (۰، ۰) گوشه بالا سمت چپ است.

ساختارهای کنترلی

تصمیمات 
یک شرط بولی در IF ممکن است فقط مقایسه اعداد یا رشته‌ها باشد، اما مقایسه عبارات ترکیبی نیست.

پس از THEN ، ممکن است دنباله ای از عبارات با ELSE یا ENDIF محدود شده باشد. یک مثال:

IF X < 0 THEN
  PRINT "Negative"
ELSE
  PRINT "Non-negative"
ENDIF

برخلاف سایر BASICها، دستورها را نمی‌توان بین THEN و انتهای خط قرار داد.

یک IF شرطی اگر می‌تواند پرش شرطی را انجام دهد. در این مورد، پس از THEN ممکن است یک برچسب Label وجود داشته باشد.

حلقه زدن 
در FOR ، بعد از TO ممکن است فقط یک عدد - دقیق یا متغیر - وجود داشته باشد اما یک عبارت ترکیبی نمی‌تواند باشد. STEP در ASIC وجود ندارد.

شاخه زدن یا انشعاب 
در یک عبارت GOTO ، برچسب باید با یک (دو نقطه): دنبال شود.

زیر برنامه‌ها 
در یک عبارت GOSUB ، برچسب باید با (دو نقطه): استفاده شود.

BAS2ASI 
این ابزار برای تبدیل برنامه‌های GW-BASIC به شکل ASIC نسخه ۵٫۰ است که از برخی ویژگی‌های GW-BASIC پشتیبانی نمی‌کند. مثال‌ها:

STEP در  حلقه for تبدیل نمی‌شود.

برنامه
10 FOR i=10 TO 1 STEP -1
20 PRINT i
30 NEXT 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:  Syntax error
عملگر  توان ^ تبدیل نشده‌است.

برنامه
10 a=2
20 b=a^10
30 PRINT b
تبدیل می‌شود به
REM 10 a=2
L10:
A@ = 2

REM 20 b=a^10
2:  Syntax error

REM 30 PRINT b REM 30 PRINT b 3:  Syntax error

منابع

پیوند به بیرون 

ASIC 5.00 + کتابخانه‌ها + لینکر
 موضوع: وظایف ASIC در ASIC در rosettacode.org پیاده‌سازی شده‌است

خانواده‌های زبان‌های برنامه‌نویسی بیسیک