اکشن!
اکشن! (Action!) یک زبان برنامه نویسی، با ویرایشگر، اشکال زدا و کامپایلر 6502 مجتمع است که برای ریزرایانههای خانواده آماری 8 بیتی طراحی شده است . ACTION توسط clinton parker ساخته و توسط optimized systems software در سال 1983 روی کارتریج عرضه شد و گرامر ان شبیه به گرامر Algol68 است . Action به خاطر کارایی بالا یش که امکان نوشتن بازی ها و هوهای گرافیکی را در یک زبان سطح بالا بدون استفاده از کد های نوشته شده توسط انسان زبان اسمبلی را می دهد، قابل توجه است . ساختار های زبان ACTION به گونه ای طراحی شده بودند که با شفافیت 6502 کد عملیات را نگاشت کنند . یک کتابخانه توسعه به عنوان یک محصول جداگانه با نام ACTION TOOLKIT در دسترس بود . Action!برای توسعه حداقل دو محصول تجاری استفاده شد: مجمو عه بهره وری Homepak و برنامه اجرای بازی های رایانهای. این زبان هرگز به سیستم های دیگر منتقل نشد . در سال 2007 این زبان الهام بخش Effectus یک کامپایلر متقابل که اکنون روی پنجره هایی که هدفشان آتار ی 8 بیتی است اجرا می شود، شد. Effectus گرامر Action را شبیه سازی می کند و به گونه ساخت یافته که تا حد ممکن با ACTION سازگار باشد .
محتویات |
انواع دادهای : [ویرایش]
ACTION : سه نوع داده ای پایه ای دارد که همه آن ها عددی هستند .
Byte : [ویرایش]
به طور داخلی معادل یک عدد صحیح بدون علامت 8 بیتی با بازه مقداری 0 تا 255 است . کلمه کلیدی char نیز می تواند برای توصیف متغیر های byte استفاده شود .
BYTE age=[21] ; declare age and initialize it to the value 21 BYTE leftMargin=82 ; declare leftMargin and store it at address 82
CARDinal : [ویرایش]
معادل با عدد صحیح بدون علامت 16 بیتی است با بازه مقداری 0 تا 65.535
CARD population=$600 ; declare population and store it at address 1536 and 1537 CARD prevYear, curYear, nextYear ; use commas to declare multiple variables
Integr : [ویرایش]
معادل با عدد صحیح دارای علامت 16 بیتی با بازه مقداری 32768 – تا 32767 + می باشد .
INT veryCold = [-10]
INT profitsQ1, profitsQ2, ; declaring multiple variables can
profitsQ3, profitsQ4 ; span across multiple lines
ACTION همچنین ارایه ها، اشاره گر ها و انواع داده ای تعریف شده توسط کاربر را دارد .اما هیچ پشتیبانی از ممیز شناور ارایه نشده است . یک مثال از یک نوع تعریفی کاربر :
TYPE CORD=[CARD x,y] CORD point point.x=42 point.y=23
کلمات کلیدی : [ویرایش]
کلمه کلیدی هر کلمه یا نمادی است که کامپایلر 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 یک کامپایلر یک راهه است که کل کد برنامه در حافظه و یا در یک فایل را یکجا کامپایل می کند که یک سرعت عالی را ارائه می دهد ولی میزان کد قابل کامپایل را محدود می کند . متغیر های محلی دارای ادرس ها ی ثابت در حافظه هستند به جای آن که در پشته قرار بگیرند . این کار امکان ایجاد کدهای بسته در 6502 را می دهد و استفاده از بازگشتی را تحت تاثیر قرار می دهد .
کد مثال [ویرایش]
کد زیر یک مثال برای الگوریتم برای یافتن اعداد اول است که در Action نوشته شده است برای افزایش کارایی این پردازش گر همرمان گرافیکی ANTCC را غیر فعال می کند که باعث جلوگیری از دزدیده شدن سیکل های cpu توسط موتور dma آن در زمان محاسبه می شود.
BYTE RTCLOK=20, ; addr of sys timer
SDMCTL=559 ; DMA control
BYTE ARRAY FLAGS(8190)
CARD COUNT,I,K,PRIME,TIME
PROC SIEVE()
SDMCTL=0 ; shut off Antic
RTCLOK=0 ; only one timer needed
COUNT=0 ; init count
FOR I=0 TO 8190 ; and flags
DO
FLAGS(I)='T ; "'T" is a compiler-provided constant for True
OD
FOR I=0 TO 8190 ; and flags
DO
IF FLAGS(I)='T THEN
PRIME=I+I+3
K=I+PRIME
WHILE K<=8190
DO
FLAGS(K)='F ; "'F" is a compiler-provided constant for False
K==+PRIME
OD
COUNT==+1
FI
OD
TIME=RTCLOK ; get timer reading
SDMCTL=34 ; restore screen
PRINTF("%E %U PRIMES IN",COUNT)
PRINTF("%E %U JIFFIES",TIME)
RETURN
</references>
منابع [ویرایش]
Wikipedia contributors, "Action!," Wikipedia, The Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Action!&oldid=367911134 (accessed December 29, 2010).