Action!

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 04:42, 3 lip 2009
Miker (Dyskusja | wkład)
(popr. numeru wersji)
← Previous diff
Wersja z dnia 15:11, 9 wrz 2009
KMK (Dyskusja | wkład)
(Linki zewnętrzne)
Next diff →
Linia 117: Linia 117:
* [http://www.strotmann.de/twiki/bin/view/APG/LangACTION Strona z masą źródłówek] * [http://www.strotmann.de/twiki/bin/view/APG/LangACTION Strona z masą źródłówek]
* [http://atariki.krap.pl/images/2/29/Action_cheat_sheet.pdf Szybka podpowiedź] * [http://atariki.krap.pl/images/2/29/Action_cheat_sheet.pdf Szybka podpowiedź]
 +* [http://en.wikipedia.org/wiki/Action! Hasło Action!] na en.wikipedia.org
 +* [http://pl.wikipedia.org/wiki/Action! Hasło Action!] na pl.wikipedia.org
{{stub}} {{stub}}
[[Kategoria:Oprogramowanie Atari 8-bit]] [[Kategoria:Oprogramowanie Atari 8-bit]]
[[Kategoria:Języki programowania]] [[Kategoria:Języki programowania]]

Wersja z dnia 15:11, 9 wrz 2009

Grafika:action.gif

Strukturalny, kompilowany język programowania dla ośmiobitowych Atari. Dzieło programisty OSS nazwiskiem Clinton Parker, sprzedawane od 1983 roku pod marką Action Computer Services. Właścicielem praw autorskich było kolejno OSS, ICD, a w końcu FTe.

Action! łączy w sobie cechy C i Pascala, czyli wygodę programowania z całkiem szybkim kodem wynikowym. Składnia Action! była wzorowana na języku ALGOL 68. Niemałą zaletą Action! jest dość wygodny, pełnoekranowy edytor. W języku tym napisano sporo programów użytkowych (np. DiskRx) i gier, np. Problem Jasia.

Oryginalna wersja języka występuje na cartridge'u, ale krążyła też niemal w pełni funkcjonalna wersja dyskowa. Język na cartridge'u zajmował 16k - w dwóch bankach po 8k (oddzielnie edytor i monitor) - zajmującym te same adresy, co interpreter Atari BASIC, tj. $A000-$BFFF.

Ciekawostką jest spora biblioteka procedur krążąca w sieci, dzięki czemu Action! stał się bardzo rozbudowanym i elastycznym narzędziem pracy dla programistów.

Znane osobistości używające Action! to: Jakub Husak, Gizmo Magic.

Spis treści

Typy danych

W Action! występują trzy typy danych numerycznych: BYTE, CARD i INT. BYTE to ośmiobitowa liczba całkowita bez znaku, CARD - 16-bitowa liczba całkowita bez znaku, INT - 16-bitowa liczba całkowita ze znakiem. Pozostałe typy to CHAR, ARRAY, POINTER i typy deklarowane przez użytkownika, np.

TYPE CORD=[CARD x,y]
 CORD point
 point.x=42
 point.y=23

Lista słów kluczowych

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

Lista procedur bibliotecznych

Break     LIST      PrintCD   SCompare   Close    Locate
PrintCDE  SCopy     color     MoveBlock  PrintCE  SCopyS
device    Note      PrintD    SetBlock   DrawTo   Open
PrintDE   SetColor  EOF       Paddle     PrintE   SndRst
Error     Peek      PrintF    Bound      Fill     PeekC
PrintI    Stick     GetD      Plot       PrintID  StrB
Graphics  Point     PrintIDE  StrC       InputB   Poke
PrintIE   StrI      InputBD   PokeC      Ptrig    Strig
InputC    Position  Put       TRACE      InputCD  Print
PutD      ValB      InputI    PrintB     PutDE    ValC
InputID   PrintBD   PutE      ValI       InputMD  PrintBDE
Rand      XIO       InputS    PrintBE    SAssign  Zero
InputSD   PrintC

Cechy języka

Program pisze się w edytorze, kompiluje natomiast w tzw. monitorze, który ma tez pewne funkcje ułatwiające debugging. Edytor jest pełnoekranowy, pole edycyjne można podzielić na dwa niezależne "okna". Możliwości edytora obejmują kopiowanie bloków, wyszukiwanie i zastępowanie tekstów itp.

Kompilator Action! jest jednoprzebiegowy, kod źrodłowy jest kompilowany z pamięci, co dodatnio wpływa na szybkość kompilatora, ujemnie natomiast na maksymalną wielkość programu. Do obejścia tego problemu można wielopoziomowo wykorzystywać polecenia include. Trzeba tu dodać, że Action! to jeden z najszybszych kompilatorów dostępnych dla ośmiobitowego Atari.

Wszystkie obliczenia dokonywane są w trybie liczb całkowitych ze znakiem. Język nie przewiduje wstawek w asemblerze w postaci mnemoników, podprogramy maszynowe muszą być załączane w postaci tablic wypełnionych stałymi szesnastkowymi lub dziesiętnymi.

Z braku dynamicznego zarządzania pamięcią w Action! niemożliwa jest rekurencja.

Przykład kodu

Przykładowa procedura na sito Eratostenesa napisana w Action!:

 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
     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
         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

Sprawdzenie wersji

Poprzez odczyt komórki pamięci $B000 możemy uzyskać numer wersji naszego ACTION!: wchodzimy do monitora i wpisujemy: ? $B000. Uzyskamy wynik, gdzie znajduje się numer wersji w postaci czterocyfrowej liczbyszesnastkowej. Dwie ostatnie cyfry oznaczają numer wersji, na przykład z wersji wydanej piracko przez Atrax możemy odczytać:

45056,$B000 = 6, $0136 54 310

dzięki temu wiadomo, że jest to wersja 3.6. Po sieci zaś krąży obraz cartridge-a z wersją 02...(numer odczytany z emulatora). Choć pewnie inne też się znajdą.

Ciekawostki

  • Istnieją wersje na cartridge-ach datowane na 1986 oraz 1987 rok, bez nazwy producenta/developera w komunikacie na dole ekranu. Prawdopodobnie ta ostatnia jest wersją z poprawkami, wydaną przez FTe, ale nie jest to informacja potwierdzona.

Linki zewnętrzne


Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.

Personal tools