This page (revision-270) was last changed on 26-Mar-2023 02:03 by Administrator 

This page was created on 20-Feb-2010 19:16 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
270 26-Mar-2023 02:03 17 KB Administrator to previous
269 26-Mar-2023 02:02 17 KB Administrator to previous | to last
268 26-Mar-2023 02:01 17 KB Administrator to previous | to last
267 26-Mar-2023 02:00 17 KB Administrator to previous | to last ACTION Source Code ==> Action Source Code
266 26-Mar-2023 01:59 17 KB Administrator to previous | to last
265 26-Mar-2023 01:58 17 KB Administrator to previous | to last
264 26-Mar-2023 01:56 17 KB Administrator to previous | to last Remove links to delete manual pages
263 26-Mar-2023 01:22 17 KB Administrator to previous | to last Fix SF links
262 26-Mar-2023 01:21 17 KB Administrator to previous | to last
261 26-Mar-2023 01:18 17 KB Administrator to previous | to last Move manuals to Sourceforge

Page References

Incoming links Outgoing links
Action

Version management

Difference between version and

At line 6 changed one line
Action! is an Atari-specific programming language written by Clinton Parker and sold by Optimized Systems Software (OSS) in ROM cartridge form starting in August 1983. It is the only language other than [BASIC|Basic] and [assembler] that had real popularity on the platform and saw any significant coverage in the Atari press; type-in programs and various technical articles were found in most magazines. In comparison, languages like [Forth] and [Logo] saw much less use and almost no press coverage.
Action (also Action!) is an Atari-specific programming language written by Clinton Parker and sold by Optimized Systems Software (OSS) in ROM cartridge form starting in August 1983. It is the only language other than [BASIC|Basic] and [assembler] that had real popularity on the platform and saw any significant coverage in the Atari press; type-in programs and various technical articles were found in most magazines. In comparison, languages like [Forth] and [Logo] saw much less use and almost no press coverage.
At line 10 changed one line
Action! uses a greatly cut-down version of the ALGOL syntax, and thus bears strong similarities with [Pascal] and [C], which were also derived from ALGOL. Like those languages, Action! is procedural, with programs essentially consisting of a large collection of functions that call each other. It lacked encapsulation or data hiding, but that is not a serious concern in the limited program sizes available on an 8-bit machine. Syntactically it looks very similar to Pascal, with the exception that it uses ALGOL 68 DO/OD style bracketing rather than Pascal's BEGIN/END.
Action uses a greatly cut-down version of the ALGOL syntax, and thus bears strong similarities with [Pascal] and [C], which were also derived from ALGOL. Like those languages, Action is procedural, with programs essentially consisting of a large collection of functions that call each other. It lacked encapsulation or data hiding, but that is not a serious concern in the limited program sizes available on an 8-bit machine. Syntactically it looks very similar to Pascal, with the exception that it uses ALGOL 68 DO/OD style bracketing rather than Pascal's BEGIN/END.
At line 12 changed one line
Action! included a number of features to allow it to run as fast as possible. Notably, it's main data types were BYTE, INT and CARD, 8-bit and 16-bit signed and unsigned values, respectively. These map directly onto the basic 6502-types. The language also included a syntax to directly refer to these objects in memory so they could be mapped into hardware registers. For instance, one could set a variable to {{BYTE RTCLOK=20}} which defined the 8-bit value at memory location 20 to be the value of the real-time clock. The user could then read or write to that register using the name {{RTCLOK}}.
Action included a number of features to allow it to run as fast as possible. Notably, it's main data types were BYTE, INT and CARD, 8-bit and 16-bit signed and unsigned values, respectively. These map directly onto the basic 6502-types. The language also included a syntax to directly refer to these objects in memory so they could be mapped into hardware registers. For instance, one could set a variable to {{BYTE RTCLOK=20}} which defined the 8-bit value at memory location 20 to be the value of the real-time clock. The user could then read or write to that register using the name {{RTCLOK}}.
At line 14 changed one line
These design details helped increase performance, but the primary reason Action! was much faster than other languages of the era was due to its memory management model. In languages like C and Pascal, procedure calls use a stack of records known as "activation records" that record the values of variables when the procedure was called. This allows a procedure to call itself, as each call can have its own values, and it is this feature that allows recursion. This concept requires the manipulation of a stack, which in the 6502 was a non-trivial prospect given the CPU stack was only 256 bytes.
These design details helped increase performance, but the primary reason Action was much faster than other languages of the era was due to its memory management model. In languages like C and Pascal, procedure calls use a stack of records known as "activation records" that record the values of variables when the procedure was called. This allows a procedure to call itself, as each call can have its own values, and it is this feature that allows recursion. This concept requires the manipulation of a stack, which in the 6502 was a non-trivial prospect given the CPU stack was only 256 bytes.
At line 16 changed one line
Action! solved this problem by simply not implementing activation records. Instead, the storage space for variables was allocated at compile time (not dissimilar to Atari BASIC's model). This meant Action! could not support recursion, but also eliminated the necessity to build and manipulate a complex stack. This dramatically lowers the overhead of procedure calls, and in a language that organizes a program as a series of procedure calls, this represents a significant amount of time.
Action solved this problem by simply not implementing activation records. Instead, the storage space for variables was allocated at compile time (not dissimilar to Atari BASIC's model). This meant Action could not support recursion, but also eliminated the necessity to build and manipulate a complex stack. This dramatically lowers the overhead of procedure calls, and in a language that organizes a program as a series of procedure calls, this represents a significant amount of time.
At line 18 changed one line
Action! had a number of limitations, none of them very serious. Curiously, Action! did not include support for floating-point types, although such support is built into the machine's OS ROM (see [Atari BASIC] for details) and available to any programming language. This is a significant limitation in some roles, although perhaps not for its target market. It also lacked most string handling routines, but made up for this somewhat with a series of PRINT commands that made formatted output easy.
Action had a number of limitations, none of them very serious. Curiously, Action did not include support for floating-point types, although such support is built into the machine's OS ROM (see [Atari BASIC] for details) and available to any programming language. This is a significant limitation in some roles, although perhaps not for its target market. It also lacked most string handling routines, but made up for this somewhat with a series of PRINT commands that made formatted output easy.
At line 20 changed one line
Generally, Action! programs had performance on-par with reasonable-quality [assembler], while being much easier to program. In one review, it ran Byte's Sieve of Eratosthenes 219 times faster than Atari BASIC, while its source was only a few lines longer. In comparison, the assembler version's source ran on for several pages. Such performance, combined with terse code and library functions to access much of the platform's hardware, made it suitable for action games while still having a simple source format suitable for type-in programs. It deserved to be much more popular, and may have been had it been released earlier, or by Atari itself.
Generally, Action programs had performance on-par with reasonable-quality [assembler], while being much easier to program. In one review, it ran Byte's Sieve of Eratosthenes 219 times faster than Atari BASIC, while its source was only a few lines longer. In comparison, the assembler version's source ran on for several pages. Such performance, combined with terse code and library functions to access much of the platform's hardware, made it suitable for action games while still having a simple source format suitable for type-in programs. It deserved to be much more popular, and may have been had it been released earlier, or by Atari itself.
At line 22 changed one line
Action! inspired several similar languages that differ largely in syntax and various features that they do or do not support. Examples include [PL65] and [Quick].
Action inspired several similar languages that differ largely in syntax and various features that they do or do not support. Examples include [PL65] and [Quick].
At line 25 changed one line
!Examples
! Hello World
At line 28 changed one line
; Hello world in Action! programming language for the Atari 8-Bit computers
; Hello world in Action programming language for the Atari 8-Bit computers
At line 34 changed one line
The {{;}} is a comment marker, which was a commonly used as the comment marker in assembler as well. The {{PROC}} is the start of a PROCedure, which ends (perhaps oddly) with {{RETURN}}. In Action!, the last {{PROC}} in the program is the one that runs first, in this case "Hello". This is something of a mix between Pascal where the "global code" defines the program entry point, and C, where the function called "Main" is the entry point. The only line of code in this example is {{PrintE}}, which simply prints a string, while the more common {{PrintF}} is a formatted print similar to {{printf}} in C.
The {{;}} is a comment marker, which was a commonly used as the comment marker in assembler as well. The {{PROC}} is the start of a PROCedure, which ends (perhaps oddly) with {{RETURN}}. In Action, the last {{PROC}} in the program is the one that runs first, in this case "Hello". This is something of a mix between Pascal where the "global code" defines the program entry point, and C, where the function called "Main" is the entry point. The only line of code in this example is {{PrintE}}, which simply prints a string, while the more common {{PrintF}} is a formatted print similar to {{printf}} in C.
At line 58 changed 5 lines
* [Action_manual_3rd-revised_edition_2018_by_GBXL|action_rev_3-6_GBXL_2018.pdf] ; size: 991 KB ; 3rd revised and enlarged edition (p) 2018 by GBXL. There is no better version worldwide! Thank you so much GBXL. We are deep in your debt! :-)))
* [Action-Handbuch-komplett_2016_von_GBXL.pdf] ; Das komplette, vollständige, restaurierte und überarbeitete Action!-Handbuch in deutsch! Der totale Hammer, inkl. Editor, Monitor, Language, Compiler, Library, Run Time, Toolkit. Vollständig überarbeitete Version von 2016 von GoodByteXL. So müssen PDF-Dateien aussehen, es gibt weltweit nichts vergleichbares. AtariWiki empfiehlt die PDF-Datei auf das Wärmste! Wer diese nicht lädt, ist selber schuld. Wir bedanken uns an dieser Stelle sehr, sehr herzlich bei GoodByteXL für seine lange andauernde und intensive Arbeit an diesem Werk, dass er hiermit der Atari-Gemeinschaft zur Verfügung stellt. GoodByteXL mega-Danke für Deine Arbeit, die Gemeinschaft steht tief in Deiner Schuld. :-)))
* [Action_manual_3rd-revised_edition_2015_by_GBXL.pdf] ;The complete Action! manual! Editor, Monitor, Language, Compiler, Library, Run Time, Toolkit. 3rd revised edition 2015 by GoodByteXL. Highly recommended by the AtariWiki! This is, without any(!) doubt, the very best edition worldwide available. Nobody does it better. Mega-thanks to GoodByteXL for this outstanding work and the many hours of work to the community. We are deep in your debt! Thank you so much. :-)))
* [ACTION! Reference Manual]
* [ACTION! Handbuch] (German ACTION! Reference Manual)
* [Action Manual|https://sourceforge.net/p/atari-action/code/ci/master/tree/JAC/doc/action-manual.pdf?format=raw] - The complete latest version of the manual in English. Created and updated by GoodByteXL. There is no better version worldwide! Thank you so much GoodByteXL. We are deep in your debt! :-)))
* [Action Handbuch|https://sourceforge.net/p/atari-action/code/ci/master/tree/JAC/doc/action-manual-de.pdf?format=raw] - Das komplette, vollständige, restaurierte und überarbeitete Action Handbuch in Deutsch! Der totale Hammer, inkl. Editor, Monitor, Language, Compiler, Library, Run Time, Toolkit. Vollständig überarbeitete Version von GoodByteXL. So müssen PDF-Dateien aussehen, es gibt weltweit nichts vergleichbares. AtariWiki empfiehlt die PDF-Datei auf das Wärmste! Wer diese nicht lädt, ist selber schuld. Wir bedanken uns an dieser Stelle sehr, sehr herzlich bei GoodByteXL für seine lange andauernde und intensive Arbeit an diesem Werk, dass er hiermit der Atari-Gemeinschaft zur Verfügung stellt. GoodByteXL mega-Danke für Deine Arbeit, die Gemeinschaft steht tief in Deiner Schuld. :-)))
At line 76 changed one line
* [Larry's ACTION! Tutorial]
* [Larry's Action! Tutorial|Larrys Action Tutorial]
At line 83 changed 3 lines
* [ACTION! Workshop 1] 24. October 2010 "Unperfekthaus" in Essen
* [ACTION! Workshop 2] October 2011 "Unperfekthaus" in Essen
* [ACTION! Workshop 3] 28. October 2012 "Unperfekthaus" in Essen
* [Action! Workshop 1] - 24. October 2010 "Unperfekthaus" in Essen
* [Action! Workshop 2] - 02. October 2011 "Unperfekthaus" in Essen
* [Action! Workshop 3] - 28. October 2012 "Unperfekthaus" in Essen
At line 90 changed one line
* [Action! Programming Language|https://sourceforge.net/projects/] provides the latest [sources|https://sourceforge.net/p/atari-action/code/ci/master/tree/] and [binaries||https://sourceforge.net/projects/files] for Action!
* [Action! Programming Language|https://sourceforge.net/projects/atari-action/] - The latest [sources|https://sourceforge.net/p/atari-action/code/ci/master/tree/] and [binaries|https://sourceforge.net/projects/atari-action/files/action.zip/download] for Action
At line 96 changed 2 lines
!Cross Compiler
* [https://gury.atari8.info/effectus/] ; Thank you soooo much Gury! That is totally incredible, we now can use high end editors, eclipse and have the results in a flash! We are deep in your debt! Thank you so much, really. :-)
! Cross Compiler
* [https://gury.atari8.info/effectus/] - Thank you soooo much Gury! That is totally incredible, we now can use high end editors, eclipse and have the results in a flash! We are deep in your debt! Thank you so much, really. :-)
At line 108 changed one line
* [OSS_ACTION_Programmers_Aid_Disk_100.atr] ; rebuild from damaged discs and files around the world
* [OSS_ACTION_Programmers_Aid_Disk_100.atr] - Rebuild from damaged discs and files around the world
At line 110 changed 4 lines
* [The Action RunTime Disk-Original.atr] protected image copy of the original disk from a good soul from AtariAge
* [The ACTION! RunTime Disk.atr] unprotected copy of the original disk from a good soul from AtariAge
* [Original ACTION! System Runtime Source]
* [Alternative ACTION! Runtime Source]
* [The Action RunTime Disk-Original.atr] - Protected image copy of the original disk from a good soul from AtariAge
* [The ACTION! RunTime Disk.atr] - Unprotected copy of the original disk from a good soul from AtariAge
* [Original Action! System Runtime Source]
* [Alternative Action! Runtime Source]
At line 121 changed one line
!Action! Language and Editor
!Action Language and Editor
At line 125 changed one line
* [ACTION! Source Code]
* [Action! Source Code]
At line 131 changed one line
* [ACTION! Editor Source Code|https://sourceforge.net/p/atari-action/code/ci/master/tree/ALFRED/EDITOR/]
* [Action! Editor Source Code|https://sourceforge.net/p/atari-action/code/ci/master/tree/ALFRED/EDITOR/]
At line 137 removed 5 lines
!! Mini-LIBs (and/or independent Runtime Parts)
* [_Intro] (Eine kleine Einführung zu den Mini-LIBs)
* [Simple PRINT Runtime] (Mini-LIB)
* [ZERO and SETBLOCK] (RT Part)
At line 143 removed one line
At line 150 changed one line
! Source Code
! Mini-Runtime LIBs
* [_Intro] (Eine kleine Einführung zu den Mini-LIBs)
* [Simple PRINT Runtime] (Mini-LIB)
* [ZERO and SETBLOCK] (RT Part)
At line 152 changed one line
* [A pseudo Assembler in ACTION!]
! Examples
* [A pseudo Assembler in Action!]
At line 151 added 2 lines
* [ATARI Rainbow effect]
* [Access SpartaDOS commandline parameters]
At line 154 added one line
* [Atari Picture Mirror Tool]
At line 156 removed one line
* [Backtrack in ACTION!]
At line 157 added one line
* [Backtrack in ACTION!]
At line 162 added one line
* [COM File Segment Dump]
At line 164 removed one line
* [COM File Segment Dump]
At line 166 added 2 lines
* [DLI in ACTION!]
* [DOS Setup] - A small tool to copy some files from disk to ramdisk. can be configured by a textfile.
At line 170 changed 3 lines
* [DLI in ACTION!]
* [DOS Setup] - A small tool to copy some files from disk to ramdisk. can be configured by a textfile.
* [END Procedure] - Call prodedure to leave ACTION! Program
* [END Procedure] - Call procedure to leave an Action Program
At line 183 added one line
* [Jump to DOS DUP]
At line 188 added one line
* [MiniDOS]
At line 190 added one line
* [OS Vectors]
At line 193 changed one line
* [VTEmulator]
* [SourceCodeDisk1] ; SpartaDOS X disk image with Action source code
* [Starburst]
* [Symbol table lister] ACS
* [Timer Programming]
* [Trackball]
* [Using the RAM Under the OS ROM on XL and XE Computers]
At line 203 added one line
* [VTEmulator]
At line 196 removed 3 lines
* [OS Vectors]
* [use RAM under ROM on XL-XE machines]
* [Symbol table lister] ACS
At line 201 removed 9 lines
* [Starburst]
* [Atari Picture Mirror Tool]
* [ATARI Rainbow effect]
* [Access SpartaDOS commandline parameters]
* [Jump to DOS DUP]
* [Trackball]
* [Timer Programming]
* [MiniDOS]
* [SourceCodeDisk1] ; SpartaDOS X disk image with ACTION! source code
At line 216 changed one line
* [Relocator] for ACTION!, relocates ACTION! code to run independent from the code location
* [Relocator] for Action; relocates Action code to run independent from the code location
At line 220 changed one line
!!Still missing: Graphics Utilities Library and Shape Editor
!Missing Tools: Graphics Utilities Library and Shape Editor
At line 234 added 5 lines
! Advertisements
[{Image src='00_first_ad_in_compute_Jul1983.jpg' width=600 height=802 }]
First Action ad in Compute July, 1983 ; please take into account: 128-column screen and for Apple II & Commodore 64. Thanks to GoodByteXL!
At line 239 changed 8 lines
|[Review Action!]|#16 (02/ 84)|en|review
|[An Introduction to ACTION!] |#17 + #18 (03+ 04/ 84)|en|tutorial
|[Stars in 3D]|#20 (07/ 84)|en|demo
|[Bounce in ACTION!]|#20 (07/ 84)|en|game
|[Pulse in ACTION!]|#26 (01/ 85)|en|demo
|[More Fun with Bounce!]|#27 (02/ 85)|en|game
|[Demon Birds]|#28 (03/ 85)|en|game
|[Roto]|#31 (06/ 85)|en|game
|[Review Action!]|#16 (02/ 84)|en|Review
|[An Introduction to ACTION!] |#17 + #18 (03+ 04/ 84)|en|Tutorial
|[Stars in 3D]|#20 (07/ 84)|en|Demo
|[Bounce in ACTION!]|#20 (07/ 84)|en|Game
|[Pulse in ACTION!]|#26 (01/ 85)|en|Demo
|[More Fun with Bounce!]|#27 (02/ 85)|en|Game
|[Demon Birds]|#28 (03/ 85)|en|Game
|[Roto]|#31 (06/ 85)|en|Game
At line 248 changed 7 lines
|[Getting in on the Action! 1]|#32 (07/ 85)|en|ON-LINE Action! Tutorial
|[Getting in on the Action! 2]|#35 (10/ 85)|en|ON-LINE Action! Tutorial
|[Sneak attack]|#36 (11/ 85)|en|game
|[Air hockey]|#38 (01/ 86)|en|game
|[D-Check]|#44 (07/ 86)|en|tool
|[Trails]|#50 (01/ 87)|en|tool for using the KoalaPad in ACTION!
|[ACTION! Zero Free]|#54 (05/ 87) |en|tool
|[Getting in on the Action! 1]|#32 (07/ 85)|en|Tutorial
|[Getting in on the Action! 2]|#35 (10/ 85)|en|Tutorial
|[Sneak attack]|#36 (11/ 85)|en|Game
|[Air hockey]|#38 (01/ 86)|en|Game
|[D-Check]|#44 (07/ 86)|en|Tool
|[Trails]|#50 (01/ 87)|en|Tool for using the KoalaPad in ACTION!
|[ACTION! Zero Free]|#54 (05/ 87) |en|Tool
At line 259 changed 5 lines
|[Demo Pretty]|Vol. 3 #7 (11/ 84)|en|demo from Antic I/O-Board
|[SPLASH in ACTION!]|Vol. 3 #12 (04/ 85)|en|demo
|[Game AMAZING in ACTION!]|Vol. 4 #1 (05/ 85)|en|game
|[View 3D]|Vol. 4 #2 (06/ 85)|en|tool
|[Dark Star]|Vol. 4 #3 (07/ 85)|en|game:Zapping Aliens With Radioactive Waste
|[Demo Pretty]|Vol. 3 #7 (11/ 84)|en|Demo from Antic I/O-Board
|[SPLASH in ACTION!]|Vol. 3 #12 (04/ 85)|en|Demo
|[Game AMAZING in ACTION!]|Vol. 4 #1 (05/ 85)|en|Game
|[View 3D]|Vol. 4 #2 (06/ 85)|en|Tool
|[Dark Star]|Vol. 4 #3 (07/ 85)|en|Game: Zapping Aliens With Radioactive Waste
At line 266 changed 4 lines
|[Video Stretch]|Vol. 5 #6 (10/ 86)|en|tool
|[Killer Chess]|Vol. 6 #10 (02/ 88)|en|game
|[Reardoor]|Vol. 6 #10 (02/ 88)|en|game
|[Frog]|Vol. 6 #10 (02/ 88)|en|game
|[Video Stretch]|Vol. 5 #6 (10/ 86)|en|Tool
|[Killer Chess]|Vol. 6 #10 (02/ 88)|en|Game
|[Reardoor]|Vol. 6 #10 (02/ 88)|en|Game
|[Frog]|Vol. 6 #10 (02/ 88)|en|Game
At line 274 changed 4 lines
|[Schnelle Vektoren in ACTION!]|#1 (1-2/ 87)|ge|tutorial:Action!-Center Teil 1
|[Schnelle Umwege in ACTION!]|#2 (3-4/ 87)|ge|tutorial:Action!-Center Teil 2
|[Interne Variablen]|#3 (5-6/ 87)|ge|tutorial:Action!-Center Teil 3
|[Was ist dran an Action!?]|#4 (7-8/ 87)|ge|tutorial:Action!-Center Teil 4
|[Schnelle Vektoren in ACTION!]|#1 (1-2/ 87)|de|Tutorial: Action!-Center Teil 1
|[Schnelle Umwege in ACTION!]|#2 (3-4/ 87)|de|Tutorial: Action!-Center Teil 2
|[Interne Variablen]|#3 (5-6/ 87)|de|Tutorial: Action!-Center Teil 3
|[Was ist dran an Action!?]|#4 (7-8/ 87)|de| Tutorial: Action!-Center Teil 4
At line 279 removed 5 lines
! CK Computer Kontakt
||Title||Issue||Language||Comment
|[Musik in ACTION] |#10/85|ge| tutorial
|[ACTION! noch schneller] |#6-7/86|ge| tutorial
At line 286 changed one line
|[ACTION! Deel]| |nl|A collection of ACTION! Articles
|[ACTION! Deel]| |nl|A collection of Action Articles
At line 288 changed 3 lines
! ACTION! ads
[{Image src='00_first_ad_in_compute_Jul1983.jpg' width=600 height=802 }]
ACTION! first ad in Compute July, 1983 ; please take into account: 128-column screen and for Apple II & Commodore 64. Thanks to GoodByteXL!
! CK Computer Kontakt
||Title||Issue||Language||Comment
|[Musik in ACTION] |#10/85|ge| Tutorial
|[ACTION! noch schneller] |#6-7/86|ge| Tutorial