Action!: Różnice pomiędzy wersjami
dr. meryt. |
m + ciekawostki |
||
| Linia 88: | Linia 88: | ||
</pre> | </pre> | ||
== 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 == | == Linki zewnętrzne == | ||
* [http://www.cyberroach.com/analog/an16/action.htm Oficjalny opis języka] | * [http://www.cyberroach.com/analog/an16/action.htm Oficjalny opis języka] | ||
Wersja z 20 lip 2008, 07:52
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.
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
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.
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
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.
