Zum Inhalt springen

Action (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 13. September 2025 um 22:51 Uhr durch imported>Phzh (Form, typo).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Action!

[[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)|150px]]
Basisdaten

Maintainer Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Entwickler Clinton Parker
Erscheinungsjahr August 1983
Aktuelle Version Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value))
Aktuelle Vorabversion Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value))
Betriebssystem Atari 8-bit Family
Programmier­sprache Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Lizenz Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)

Action (auch: Action!) ist eine prozedurale Programmiersprache und ein Compiler für Atari-8-Bit-Heimcomputer (Atari 400/800, XL-Serie, XE-Serie), die 1983 von Clinton W. Parker für Optimized Systems Software zunächst auf Cartridge entwickelt wurde.

Action wurde zur Erstellung von mindestens zwei kommerziellen Produkten verwendet. Dazu gehören HomePak, ein Produktivitätsmanager und Games Computers Play, ein Clientprogramm und vielen weiteren Programmen im ANALOG Computing und Antic Magazin.

Der 1-Pass-Compiler erzeugt 6502-Maschinencode und ist erhältlich unter der GNU General Public Lizenz. Die Sprache enthält Sprachelemente von C, Algol 68 und Pascal.

Geschichte

Clinton W. Parker war enttäuscht von dem fehlenden System für Entwicklung auf der Atari-Plattform, was die Motivation für die Entwicklung von Action! war. Parker wollte das Programm ursprünglich selber veröffentlichen, wobei er sich jedoch später dazu entschied, es über seinen Partner Optimized Systems Software zu vertreiben, welcher damals den Fokus auf Programmiersprachen wie BASIC XL legte.

In einem Interview im Jahre 2015 teilte Parker mit, wie überrascht er über das hohe Interesse, die Programmiersprache am Leben zu halten, ist.<ref>ANTIC The Atari 8-bit Podcast: ANTIC Interview 111 – Clinton Parker, Action! Abgerufen am 18. Mai 2020 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Datentypen

Action unterstützt die drei fundamentalen Datentypen Byte, Cardinal und Integer, welche alle numerisch sind. Sie decken unterschiedliche Wertebereiche ab. Nur der Datentyp Integer unterstützt negative Zahlen. Es ist ebenfalls möglich, benutzerdefinierte Variablentypen einzufügen.

Entwicklungsumgebung

Action ist einer der früheren Beispiele des OSS-SuperCartridge-Formats. Die verwendeten ROM-Kartuschen waren normalerweise auf 8 Kilobyte limitiert, was die Möglichkeit, größere Programme zu erstellen, erschwerte. Die SuperCartridge hatte 16 Kilobyte verteilt in vier 4 Kilobyte-Blöcken, wobei immer zwei der Blöcke sichtbar waren.<ref>AtariWiki V3: Cartridges. Abgerufen am 18. Mai 2020.</ref>

Action verwendete dieses Format, indem es das System in vier Sektionen brach, nämlich den Editor, den Compiler, den Monitor und einer Run-time-Bibliothek. Letzteres war in der Kartusche selber gespeichert. Um eigenständige Applikationen zu verteilen, brauchte man ein weiteres Paket, verkauft von OSS, namens Action! Toolkit.

Der Monitor diente als Debugger und erlaubte, das ganze Programm oder einzelne Funktionen auszuführen, den verwendeten Speicher anzuzeigen und diesen zu modifizieren.

Beispielprogramm

Das folgende zeigt ein Beispielprogramm für Sieve of Eratosthenes, geschrieben in Action, auf. Mit dem Ziel, das Programm zu optimieren, wird der ANTIC-Grafikprozessor deaktiviert, was verhindert, dass die DMA Engine CPU-Zyklen abfängt.

<syntaxhighlight lang="text"> 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 ; reset the clock to zero
 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 ; now run the sieve
   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 </syntaxhighlight>

Literatur

Weblinks

  • Action im Atari-Wiki (englisch)

Einzelnachweise

<references />