Action! (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Action!
linguaggio di programmazione
AutoreOptimized Systems Software
Data di origine1983
Ultima versione3.6
Utilizzogeneral-purpose
ParadigmiProgrammazione strutturata
TipizzazioneForte
Influenzato daALGOL, Pascal, C, Ada
Implementazione di riferimento
LicenzaCopyright 1994 Fine Tooned Engineering

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[modifica | modifica wikitesto]

Action! ha 3 tipi di dati fondamentali, tutti numerici.

BYTE[modifica | modifica wikitesto]

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[modifica | modifica wikitesto]

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[modifica | modifica wikitesto]

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[modifica | modifica wikitesto]

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[modifica | modifica wikitesto]

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[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  • 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.
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica