اکشن!
اکشن! (Action!) یک زبان برنامهنویسی، با ویرایشگر، اشکال زدا و کامپایلر ۶۵۰۲ مجتمع است که برای ریزرایانههای خانواده آماری ۸ بیتی طراحی شدهاست. ACTION توسط clinton parker ساخته و توسط optimized systems software در سال ۱۹۸۳ روی کارتریج عرضه شد و گرامر ان شبیه به گرامر Algol۶۸ است. Action به خاطر کارایی بالا یش که امکان نوشتن بازیها و هوهای گرافیکی را در یک زبان سطح بالا بدون استفاده از کدهای نوشته شده توسط انسان زبان اسمبلی را میدهد، قابل توجه است. ساختارهای زبان ACTION به گونهای طراحی شده بودند که با شفافیت ۶۵۰۲ کد عملیات را نگاشت کنند . یک کتابخانه توسعه به عنوان یک محصول جداگانه با نام ACTION TOOLKIT در دسترس بود . Action!برای توسعه حداقل دو محصول تجاری استفاده شد: مجموعه بهرهوری Homepak و برنامه اجرای بازیهای رایانهای. این زبان هرگز به سیستمهای دیگر منتقل نشد . در سال ۲۰۰۷ این زبان الهام بخش Effectus یک کامپایلر متقابل که اکنون روی پنجرههایی که هدفشان آتار ی ۸ بیتی است اجرا میشود، شد. Effectus گرامر Action را شبیهسازی میکند و به گونه ساخت یافته که تا حد ممکن با ACTION سازگار باشد .
انواع دادهای
ACTION : سه نوع داده ای پایهای دارد که همه آنها عددی هستند .
Byte
بهطور داخلی معادل یک عدد صحیح بدون علامت ۸ بیتی با بازه مقداری ۰ تا ۲۵۵ است. کلمه کلیدی char نیز میتواند برای توصیف متغیرهای byte استفاده شود .
BYTE age=[۲۱] ; declare age and initialize it to the value 21 BYTE leftMargin=۸۲ ; declare leftMargin and store it at address 82
CARDinal
معادل با عدد صحیح بدون علامت ۱۶ بیتی است با بازه مقداری ۰ تا ۶۵٫۵۳۵
CARD population=$۶۰۰ ; declare population and store it at address 1536 and 1537 CARD prevYear, curYear, nextYear ; use commas to declare multiple variables
Integer
معادل با عدد صحیح دارای علامت ۱۶ بیتی با بازه مقداری ۳۲۷۶۸ – تا ۳۲۷۶۷ + میباشد .
INT veryCold = [-۱۰] INT profitsQ1, profitsQ2, ; declaring multiple variables can profitsQ3, profitsQ۴ ; span across multiple lines
ACTION همچنین ارایهها، اشاره گرها و انواع دادهای تعریف شده توسط کاربر را دارد .اما هیچ پشتیبانی از ممیز شناور ارائه نشده است. یک مثال از یک نوع تعریفی کاربر :
TYPE CORD=[CARD x,y] CORD point point.x=۴۲ point.y=۲۳
کلمات کلیدی
کلمه کلیدی هر کلمه یا نمادی است که کامپایلر ACTION به عنوان یک چیز خاص میشناسد . که میتواند یک عملگر، یک نام نوع دادهای یک عبارت یا یک رهنمود کامپایلر باشد .
AND FI OR UNTIL = ( ARRAY FOR POINTER WHILE <> ) BYTE FUNC PROC XOR # . CARD IF RETURN + > [ CHAR INCLUDE RSH - >= ] DEFINE INT SET * <" DO LSH STEP / <= ' ELSE MOD THEN & $ ; ELSEIF MODULE TO % ^ EXIT OD TYPE ! @
برنامهنویسی
برنامهنویسی در ACTION نیازمند کار با ویرایشگر و کامپایل یا اشکال زدایی روی نماشگر است. ویرایشگر شامل یک نمایش تمام صفحه با قابلیت پیمایش با امکان نمایش دو پنجره است. ویرایشگر همچنین شامل عملگرهای بلاکی و عمومی جستجو و جایگزینی میشود . کامپایل نمایشگر، هر حالتی که اجازه کامپایل و اشکال زدایی را میدهد انجام میشود . ACTION یک کامپایلر یک راهه است که کل کد برنامه در حافظه یا در یک فایل را یکجا کامپایل میکند که یک سرعت عالی را ارائه میدهد ولی میزان کد قابل کامپایل را محدود میکند . متغیرهای محلی دارای ادرسها ی ثابت در حافظه هستند به جای آن که در پشته قرار بگیرند . این کار امکان ایجاد کدهای بسته در ۶۵۰۲ را میدهد و استفاده از بازگشتی را تحت تأثیر قرار میدهد .
کد مثال
کد زیر یک مثال برای الگوریتم برای یافتن اعداد اول است که در Action نوشته شدهاست برای افزایش کارایی این پردازش گر همرمان گرافیکی ANTCC را غیرفعال میکند که باعث جلوگیری از دزدیده شدن سیکلهای cpu توسط موتور dma آن در زمان محاسبه میشود.
BYTE RTCLOK=۲۰, ; addr of sys timer SDMCTL=559 ; DMA control
BYTE ARRAY FLAGS(8190)
CARD COUNT,I,K,PRIME,TIME
PROC SIEVE()
SDMCTL=۰ ; shut off Antic RTCLOK=۰ ; only one timer needed
COUNT=۰ ; init count FOR I=۰ TO ۸۱۹۰ ; and flags DO FLAGS(I)='T ; "'T" is a compiler-provided constant for True OD
FOR I=۰ TO ۸۱۹۰ ; and flags DO IF FLAGS(I)='T THEN PRIME=I+I+۳ K=I+PRIME WHILE K<=۸۱۹۰ DO FLAGS(K)='F ; "'F" is a compiler-provided constant for False K==+PRIME OD COUNT==+۱ FI OD TIME=RTCLOK ; get timer reading SDMCTL=۳۴ ; restore screen
PRINTF("%E %U PRIMES IN",COUNT) PRINTF("%E %U JIFFIES",TIME) RETURN
منابع
Wikipedia contributors, "Action!," Wikipedia, The Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Action!&oldid=367911134 (accessed December 29, 2010).