L'Action! è un linguaggio di programmazione per gli home computer della Famiglia Atari 8-bit. Integra un editor, un debugger ed un compilatore per il processore MOS 6502.
L'Action! fu sviluppato da Clinton Parker e distribuito su cartuccia dalla Optimized Systems Software nel 1983. La sua sintassi è simile a quella dell'ALGOL 68.
L'Action! era un linguaggio prestante che permetteva la scrittura di videogiochi e di demo grafiche in un linguaggio di alto livello senza l'uso di codice scritto in linguaggio Assembly.
Era disponibile anche una libreria separata di funzioni chiamata Action! Toolkit. L'Action! fu utilizzato per creare almeno due prodotti commerciali: la suite di produttività Homepak ed il programma Games Computers Play.
Del linguaggio non ne fu mai fatto un porting per altri sistemi.
Tipi di dati
Action! ha 3 tipi di dati fondamentali, tutti numerici.
BYTE
Rappresentato internamente come un intero a 8 bit privo di segno. I valori vanno da 0 a 255.
BYTE age=[21] ; dichiara la variabile age e la inizializza con il valore 21
BYTE leftMargin=82 ; dichiara la variabile leftmargin e la memorizza all'indirizzo 82
CARDinal
Rappresentato come un intero a 16 bit privo di segno. Valori da 0 a 65535.
CARD population=$600 ; dichiara la variabile e la memorizza agli indirizzi 1536 e 1537
CARD prevYear, curYear, nextYear ; si utilizza la virgola per dichiarare più variabili
INTeger
Rappresentato con un intero a 16 bit con segno. Valor da -32768 a 32767.
INT veryCold = [-10]
INT profitsQ1, profitsQ2, ; la dichiarazione di più variabili può spaziare su
profitsQ3, profitsQ4 ; più linee di codice
Action! ha anche i tipi di dato ARRAY, POINTER ed i tipi di dato definiti dall'utente (user-defined TYPEs).
Non sono presenti tipi di dati floating point.
Un esempio di tipo di dato definito dall'utente:
TYPE CORD=[CARD x,y]
CORD point
point.x=42
point.y=23
Parole chiave
Una parola chiave o keyword è ogni stringa o simbolo che il compilatore ACTION! riconosce come speciale. Può essere un operatore, un nome di tipo di dato, uno statement oppure una direttiva di compilazione.
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 ! @
Esempio di codice
Il seguente esempio rappresenta il codice dell'algoritmo del Crivello di Eratostene scritto in Action!. Per aumentare le prestazioni viene disabilitato il coprocessore grafico ANTIC.
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
Bibliografia
- (EN) Lights, Camera, Action!, in Hi-Res, vol. 1, n. 4, maggio/giugno 1984, p. 72.
- (EN) Action! (JPG), in ANALOG Computing, n. 16, Cherry Valley, ANALOG 400/800 Corp., febbraio 1984, p. 54, ISSN 0744-9917 (WC · ACNP). Trascrizione del testo, su cyberroach.com.
Voci correlate
Collegamenti esterni
- Action!, su retrobits.net. URL consultato il 22 gennaio 2010 (archiviato dall'url originale il 1º marzo 2012).
- ACTION!, su atariwiki.org.
- The ACTION! Archive, su joyfulcoder.net. URL consultato il 22 gennaio 2010 (archiviato dall'url originale il 15 luglio 2009).
- effectus, su gury.atari8.info.