fbpx
Wikipedia

Action! (programming language)

Action! is a procedural programming language and integrated development environment written by Clinton Parker for the Atari 8-bit family. The language, which is similar to ALGOL, compiles to high-performance code for the MOS Technology 6502 of the Atari computers. Action! was distributed on ROM cartridge by Optimized Systems Software starting in 1983. It was one of the company's first bank-switched 16 kB "Super Cartridges". The runtime library is stored in the cartridge; to make a standalone application requires the Action! Toolkit which was sold separately by OSS.

Action!
Fullscreen editor
Original author(s)Clinton Parker
Developer(s)Optimized Systems Software
Initial releaseAugust 1983; 40 years ago (1983-08)
Final release
v3.6 / November 4, 1983; 39 years ago (1983-11-04)
PlatformAtari 8-bit family
Size16K bank-switched cartridge

Parker, working with Henry Baker, had previously developed Micro-SPL, a systems programming language for the Xerox Alto. Action! is largely a port of Micro-SPL concepts to the Atari with changes to support the 6502 processor and the addition of an integrated fullscreen editor and debugger.

Action! was used to develop at least two commercial products—the HomePak productivity suite and Games Computers Play client program—and numerous programs in ANALOG Computing and Antic magazines. The editor inspired the PaperClip word processor. The language was not ported to other platforms.

The assembly language source code for Action! was made available under the GNU General Public License by the author in 2015.[1]

Development environment Edit

Action! is one of the earlier examples of the OSS SuperCartridge format. ROM cartridges on the Atari were normally limited to 8 kB, which limited its ability to support larger programs. The SuperCartridge had 16 kB organized as four 4 kB blocks, two of which were visible at any time. The lower 4 kB did not change, and system could bank switch between the other three blocks by changing the value in address $AFFF.[2][3]

Action! used this design by breaking the system into four sections, the editor, the compiler, a monitor for testing code and switching between the editor and compiler, and the run-time library.[3] The run-time library is stored in the cartridge itself. To distribute standalone applications requires a separate run-time package which was sold by OSS as the Action! Toolkit.[4]

Action! constructs were designed to map cleanly to 6502 opcodes, to provide high performance without needing complex optimizations in the one-pass compiler.[5] For example, local variables are assigned fixed addresses in memory, instead of being allocated on a stack of activation records. This eliminates the significant overhead associated with stack management, which is especially difficult in the case of the 6502's 256-byte stack. However, this precludes the use of recursion.[4]

Unlike the integrated Atari BASIC and Atari Assembler Editor environments, the Action! editor does not use line numbers. It has a fullscreen, scrolling display capable of displaying two windows, and includes block operations and global search and replace.[4]

The monitor serves as a debugger, allowing an entire program or individual functions to be run, memory to be displayed and modified, and program execution to be traced.[4]

Language Edit

Data types Edit

Action! has three fundamental data types, all of which are numeric.

BYTE is internally represented as an unsigned 8-bit integer. Values range from 0 to 255.
The CHAR keyword can also be used to declare BYTE variables.

 BYTE age=[21]  ; declare age and initialize it to the value 21 BYTE leftMargin=82 ; declare leftMargin at address 82 

CARDinal is internally represented as an unsigned 16-bit integer. Values range from 0 to 65,535.

 CARD population=$600  ; declare population and store it at address 1536 and 1537 CARD prevYear, curYear, nextYear ; use commas to declare multiple variables 

INTeger is internally represented as a signed 16-bit integer. Values range from -32,768 to 32,767.

 INT veryCold = [-10] INT profitsQ1, profitsQ2,  ; declaring multiple variables can profitsQ3, profitsQ4  ; span across multiple lines 

Action! also has ARRAYs, POINTERs and user-defined TYPEs. No floating point support is provided.

An example of a user-defined TYPE:

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

Reserved words Edit

A reserved word is any identifier or symbol that the Action! compiler recognizes as something special. It can be an operator, a data type name, a statement, or a compiler directive.

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

Example code Edit

The following is example code for Sieve of Eratosthenes written in Action!. In order to increase performance, it disables the ANTIC graphics coprocessor, preventing its DMA engine from "stealing" CPU cycles during computation.

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 

History Edit

Micro-SPL Edit

While taking his postgraduate studies, Parker started working part-time at Xerox PARC working on printer drivers. He later moved to the Xerox Alto project where he wrote several games for the system.[6] His PhD was in natural language parsing and he had worked on compiler theory during his graduate work.[7]

Henry Baker and Parker released Micro-SPL in September 1979. Micro-SPL was intended to be used as a systems programming language on the Xerox Alto workstation computer, which was normally programmed in BCPL. The Alto used a microcode system which the BCPL compiler output. Micro-SPL output the same format, allowing BCPL programs to call Micro-SPL programs.[8]

Aside from differences in syntax, the main difference between Micro-SPL and BCPL, and the reason for its existence, was that Micro-SPL produced code that was many times faster than the native BCPL compiler. In general, Micro-SPL programs were expected to run about ten times as fast as BCPL, and about half as fast as good hand-written microcode. In comparison to microcode, they claimed it would take half as long to write and 10% of the time to debug it.[8]

Action! Edit

It was during this period that Parker purchased an Atari computer for use at home. He was disappointed with the lack of development systems for it, which was the impetus for creating Action![9] Parker considered releasing the system himself, but decided to partner with Optimized Systems Software (OSS) for sales and distribution. OSS focused on utilities and programming languages like BASIC XL, so this was a natural fit for Action![10] Sales were strong enough for Parker to make a living off the royalties for several years.[11]

The IBM PC had C compilers available, and Parker decided there was no point in porting Action! to that platform.[12] As the sales of the Atari 8-bit computers wound down in North America, OSS wound down as well. Late in its history Action! distribution moved from OSS to Electronic Arts, but they did little with the language and sales ended shortly after.[13] In a 2015 interview, Parker expressed his surprise in the level of interest in the language continued to receive, suggesting it was greater than it had been in the late 1980s.[14]

Reception Edit

Brian Moriarty, in a February 1984 review for ANALOG Computing, concluded that Action! was "one of the most valuable development tools ever published for the Atari." He cited the manual as the only weak point of the package, claiming it "suffers from lack of confidence, uncertain organization and a shortage of good, hard technical data."[15]

Leo Laporte reviewed Action in the May/June 1984 edition of Hi-Res. He began the review, "This is the best thing to happen to Atari since Nolan Bushnell figured out people would play ping-pong on a TV screen." Laporte praised the editor, noting its split-screen and cut and paste capabilities and describing it as a "complete word processing system that's very responsive." He said that Action! ran about 200 times as fast as Atari BASIC, concluding that "This language is like a finely tuned racing car."[16]

BYTE in 1985 praised the compilation and execution speed of software written in Action! Using their Byte Sieve benchmark as a test, ten iterations of the sieve completed in 18 seconds in Action!, compared to 10 seconds for assembly and 38 minutes in BASIC. The magazine also lauded the language's editor. BYTE reported that the language resembled C closely enough to "routinely convert programs between the two", and approved of its pointer support. The magazine concluded that "Action! is easy to use, quick, and efficient. It can exploit the Atari's full power. Action! puts programming for the Atari in a whole new dimension."[17]

Ian Chadwick wrote in Mapping the Atari that "Action! is probably the best language yet for the Atari; it's a bit like C and Pascal, with a dash of Forth. I recommend it."[18]

References Edit

Citations Edit

  1. ^ Action! Source Code - Page 2, Alfred (Chopper Commander) Posted Mon Feb 2, 2015 1:38 PM, AtariAge Forums, This is the original Action! source as I received it from ICD. It uses the ICD cross assembler which is not included in the zip. It can be easily converted to other formats
  2. ^ "RAM/ROM Control On An XL/XE Computer". AtariWiki.
  3. ^ a b Moriarty 1984, p. 55.
  4. ^ a b c d Moriarty 1984.
  5. ^ ACTION! in Atariki (PL)
  6. ^ Parker 2015, 6:00.
  7. ^ Parker 2015, 6:30.
  8. ^ a b Baker & Parker 1979, p. 1.
  9. ^ Parker 2015, 7:00.
  10. ^ Parker 2015, 28:00.
  11. ^ Parker 2015, 20:00.
  12. ^ Parker 2015, 21:30.
  13. ^ Parker 2015, 2:45.
  14. ^ Parker 2015, 1:00.
  15. ^ Moriarty 1984, p. 60.
  16. ^ Laport, Leo (May–June 1984). "Lights, Camera, ACTION!". Hi-Res. p. 72.
  17. ^ Schneeflock, Ed (March 1985). "Action! A Poor Man's C?". BYTE. p. 273. Retrieved 19 March 2016.
  18. ^ Chadwick, Ian (1985). "Author's Preface To The Revised Edition". Mapping the Atari. Greensboro, North Carolina: Compute! Publications, Inc. pp. v–vi. ISBN 0-87455-004-1.

Bibliography Edit

  • Baker, Henry; Parker, Clinton (September 1979). Micro-SPL (PDF) (Technical report). Synapse Computer Services. CiteSeerX 10.1.1.126.6877.
  • Parker, Clinton (31 December 2015). "ANTIC Interview 111, Clinton Parker, Action!" (podcast). Interviewed by Randy Kindig.
  • Moriarty, Brian (February 1984). "Action! - A new language for the Atari!". ANALOG Computing. No. 16. pp. 54–61.

External links Edit

  • Action! (programming language) on SourceForge
  • Action! Programming Language Version 3.6 - Source Code, by Optimized Systems Software at archive.org
  • The ACTION! Archive
  • Action! language reference
  • Effectus cross-compiler

action, programming, language, this, article, about, programming, language, other, uses, action, disambiguation, action, procedural, programming, language, integrated, development, environment, written, clinton, parker, atari, family, language, which, similar,. This article is about the programming language For other uses see Action disambiguation Action is a procedural programming language and integrated development environment written by Clinton Parker for the Atari 8 bit family The language which is similar to ALGOL compiles to high performance code for the MOS Technology 6502 of the Atari computers Action was distributed on ROM cartridge by Optimized Systems Software starting in 1983 It was one of the company s first bank switched 16 kB Super Cartridges The runtime library is stored in the cartridge to make a standalone application requires the Action Toolkit which was sold separately by OSS Action Fullscreen editorOriginal author s Clinton ParkerDeveloper s Optimized Systems SoftwareInitial releaseAugust 1983 40 years ago 1983 08 Final releasev3 6 November 4 1983 39 years ago 1983 11 04 PlatformAtari 8 bit familySize16K bank switched cartridgeParker working with Henry Baker had previously developed Micro SPL a systems programming language for the Xerox Alto Action is largely a port of Micro SPL concepts to the Atari with changes to support the 6502 processor and the addition of an integrated fullscreen editor and debugger Action was used to develop at least two commercial products the HomePak productivity suite and Games Computers Play client program and numerous programs in ANALOG Computing and Antic magazines The editor inspired the PaperClip word processor The language was not ported to other platforms The assembly language source code for Action was made available under the GNU General Public License by the author in 2015 1 Contents 1 Development environment 2 Language 2 1 Data types 2 2 Reserved words 2 3 Example code 3 History 3 1 Micro SPL 3 2 Action 4 Reception 5 References 5 1 Citations 5 2 Bibliography 6 External linksDevelopment environment EditAction is one of the earlier examples of the OSS SuperCartridge format ROM cartridges on the Atari were normally limited to 8 kB which limited its ability to support larger programs The SuperCartridge had 16 kB organized as four 4 kB blocks two of which were visible at any time The lower 4 kB did not change and system could bank switch between the other three blocks by changing the value in address AFFF 2 3 Action used this design by breaking the system into four sections the editor the compiler a monitor for testing code and switching between the editor and compiler and the run time library 3 The run time library is stored in the cartridge itself To distribute standalone applications requires a separate run time package which was sold by OSS as the Action Toolkit 4 Action constructs were designed to map cleanly to 6502 opcodes to provide high performance without needing complex optimizations in the one pass compiler 5 For example local variables are assigned fixed addresses in memory instead of being allocated on a stack of activation records This eliminates the significant overhead associated with stack management which is especially difficult in the case of the 6502 s 256 byte stack However this precludes the use of recursion 4 Unlike the integrated Atari BASIC and Atari Assembler Editor environments the Action editor does not use line numbers It has a fullscreen scrolling display capable of displaying two windows and includes block operations and global search and replace 4 The monitor serves as a debugger allowing an entire program or individual functions to be run memory to be displayed and modified and program execution to be traced 4 Language EditData types Edit Action has three fundamental data types all of which are numeric BYTE is internally represented as an unsigned 8 bit integer Values range from 0 to 255 The CHAR keyword can also be used to declare BYTE variables BYTE age 21 declare age and initialize it to the value 21 BYTE leftMargin 82 declare leftMargin at address 82 CARDinal is internally represented as an unsigned 16 bit integer Values range from 0 to 65 535 CARD population 600 declare population and store it at address 1536 and 1537 CARD prevYear curYear nextYear use commas to declare multiple variables INTeger is internally represented as a signed 16 bit integer Values range from 32 768 to 32 767 INT veryCold 10 INT profitsQ1 profitsQ2 declaring multiple variables can profitsQ3 profitsQ4 span across multiple lines Action also has ARRAYs POINTERs and user defined TYPEs No floating point support is provided An example of a user defined TYPE TYPE CORD CARD x y CORD point point x 42 point y 23 Reserved words Edit A reserved word is any identifier or symbol that the Action compiler recognizes as something special It can be an operator a data type name a statement or a compiler directive AND FI OR UNTIL ARRAY FOR POINTER WHILE lt gt BYTE FUNC PROC XOR CARD IF RETURN gt CHAR INCLUDE RSH gt DEFINE INT SET lt DO LSH STEP lt ELSE MOD THEN amp ELSEIF MODULE TO EXIT OD TYPE Example code Edit The following is example code for Sieve of Eratosthenes written in Action In order to increase performance it disables the ANTIC graphics coprocessor preventing its DMA engine from stealing CPU cycles during computation 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 lt 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 RETURNHistory EditMicro SPL Edit While taking his postgraduate studies Parker started working part time at Xerox PARC working on printer drivers He later moved to the Xerox Alto project where he wrote several games for the system 6 His PhD was in natural language parsing and he had worked on compiler theory during his graduate work 7 Henry Baker and Parker released Micro SPL in September 1979 Micro SPL was intended to be used as a systems programming language on the Xerox Alto workstation computer which was normally programmed in BCPL The Alto used a microcode system which the BCPL compiler output Micro SPL output the same format allowing BCPL programs to call Micro SPL programs 8 Aside from differences in syntax the main difference between Micro SPL and BCPL and the reason for its existence was that Micro SPL produced code that was many times faster than the native BCPL compiler In general Micro SPL programs were expected to run about ten times as fast as BCPL and about half as fast as good hand written microcode In comparison to microcode they claimed it would take half as long to write and 10 of the time to debug it 8 Action Edit It was during this period that Parker purchased an Atari computer for use at home He was disappointed with the lack of development systems for it which was the impetus for creating Action 9 Parker considered releasing the system himself but decided to partner with Optimized Systems Software OSS for sales and distribution OSS focused on utilities and programming languages like BASIC XL so this was a natural fit for Action 10 Sales were strong enough for Parker to make a living off the royalties for several years 11 The IBM PC had C compilers available and Parker decided there was no point in porting Action to that platform 12 As the sales of the Atari 8 bit computers wound down in North America OSS wound down as well Late in its history Action distribution moved from OSS to Electronic Arts but they did little with the language and sales ended shortly after 13 In a 2015 interview Parker expressed his surprise in the level of interest in the language continued to receive suggesting it was greater than it had been in the late 1980s 14 Reception EditBrian Moriarty in a February 1984 review for ANALOG Computing concluded that Action was one of the most valuable development tools ever published for the Atari He cited the manual as the only weak point of the package claiming it suffers from lack of confidence uncertain organization and a shortage of good hard technical data 15 Leo Laporte reviewed Action in the May June 1984 edition of Hi Res He began the review This is the best thing to happen to Atari since Nolan Bushnell figured out people would play ping pong on a TV screen Laporte praised the editor noting its split screen and cut and paste capabilities and describing it as a complete word processing system that s very responsive He said that Action ran about 200 times as fast as Atari BASIC concluding that This language is like a finely tuned racing car 16 BYTE in 1985 praised the compilation and execution speed of software written in Action Using their Byte Sieve benchmark as a test ten iterations of the sieve completed in 18 seconds in Action compared to 10 seconds for assembly and 38 minutes in BASIC The magazine also lauded the language s editor BYTE reported that the language resembled C closely enough to routinely convert programs between the two and approved of its pointer support The magazine concluded that Action is easy to use quick and efficient It can exploit the Atari s full power Action puts programming for the Atari in a whole new dimension 17 Ian Chadwick wrote in Mapping the Atari that Action is probably the best language yet for the Atari it s a bit like C and Pascal with a dash of Forth I recommend it 18 References EditCitations Edit Action Source Code Page 2 Alfred Chopper Commander Posted Mon Feb 2 2015 1 38 PM AtariAge Forums This is the original Action source as I received it from ICD It uses the ICD cross assembler which is not included in the zip It can be easily converted to other formats RAM ROM Control On An XL XE Computer AtariWiki a b Moriarty 1984 p 55 a b c d Moriarty 1984 ACTION in Atariki PL Parker 2015 6 00 Parker 2015 6 30 a b Baker amp Parker 1979 p 1 Parker 2015 7 00 Parker 2015 28 00 Parker 2015 20 00 Parker 2015 21 30 Parker 2015 2 45 Parker 2015 1 00 Moriarty 1984 p 60 Laport Leo May June 1984 Lights Camera ACTION Hi Res p 72 Schneeflock Ed March 1985 Action A Poor Man s C BYTE p 273 Retrieved 19 March 2016 Chadwick Ian 1985 Author s Preface To The Revised Edition Mapping the Atari Greensboro North Carolina Compute Publications Inc pp v vi ISBN 0 87455 004 1 Bibliography Edit Baker Henry Parker Clinton September 1979 Micro SPL PDF Technical report Synapse Computer Services CiteSeerX 10 1 1 126 6877 Parker Clinton 31 December 2015 ANTIC Interview 111 Clinton Parker Action podcast Interviewed by Randy Kindig Moriarty Brian February 1984 Action A new language for the Atari ANALOG Computing No 16 pp 54 61 External links EditAction programming language on SourceForge Action Programming Language Version 3 6 Source Code by Optimized Systems Software at archive org Action info at Retrobits com The ACTION Archive Action language reference Effectus cross compiler Retrieved from https en wikipedia org w index php title Action programming language amp oldid 1166965097, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.