Action Programming Language
   HOME

TheInfoList



OR:

Action! is a procedural
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
and
integrated development environment An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
written by Clinton Parker for the
Atari 8-bit family The Atari 8-bit family is a series of 8-bit home computers introduced by Atari, Inc. in 1979 as the Atari 400 and Atari 800. The series was successively upgraded to Atari 1200XL , Atari 600XL, Atari 800XL, Atari 65XE, Atari 130XE, Atari 800XE, ...
. The language, which is similar to
ALGOL ALGOL (; short for "Algorithmic Language") is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by the ...
, compiles to high-performance code for the MOS Technologies 6502 of the Atari computers. Action! was distributed on
ROM cartridge A ROM cartridge, usually referred to in context simply as a cartridge, cart, or card, is a replaceable part designed to be connected to a consumer electronics device such as a home computer, video game console or, to a lesser extent, electroni ...
by
Optimized Systems Software Optimized Systems Software (OSS) was a company that produced disk operating systems, programming languages with integrated development environments, and applications primarily for the Atari 8-bit family of home computers. OSS was best known fo ...
starting in 1983. It was one of the company's first bank-switched 16 kB "Super Cartridges". Parker, working with Henry Baker, had previously developed Micro-SPL, a
systems programming language A system programming language is a programming language used for system programming; such languages are designed for writing system software, which usually requires different development approaches when compared with application software. Edsger D ...
for the
Xerox Alto The Xerox Alto is a computer designed from its inception to support an operating system based on a graphical user interface (GUI), later using the desktop metaphor. The first machines were introduced on 1 March 1973, a decade before mass-market G ...
. 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 HomePak, published in 1984 by Batteries Included, is an integrated application written for the Atari 8-bit family and ported to the Commodore 64, Commodore 128, IBM PCjr, and Apple II. It includes a word processor (HomeText), database (HomeFind), ...
'' productivity suite and '' Games Computers Play'' client program—and numerous programs in ''
ANALOG Computing ''ANALOG Computing'' (an acronym for Atari Newsletter And Lots Of Games) was an American computer magazine devoted to the Atari 8-bit family of home computers. It was published from 1981 until 1989. In addition to reviews and tutorials, ''ANAL ...
'' and ''
Antic Alphanumeric Television Interface Controller (ANTIC) is an LSI ASIC dedicated to generating 2D computer graphics to be shown on a television screen or computer display. Under the direction of Jay Miner, the chip was designed in 1977-1978 by ...
'' magazines. The editor inspired the
PaperClip A paper clip (or paperclip) is a tool used to hold sheets of paper together, usually made of steel wire bent to a looped shape (though some are covered in plastic). Most paper clips are variations of the ''Gem'' type introduced in the 1890s or e ...
word processor A word processor (WP) is a device or computer program that provides for input, editing, formatting, and output of text, often with some additional features. Word processor (electronic device), Early word processors were stand-alone devices ded ...
. The language was not ported to other platforms. The assembly language source code for Action! was made available under the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
by the author in 2015.


History


Micro-SPL

While taking his postgraduate studies, Parker started working part-time at
Xerox PARC PARC (Palo Alto Research Center; formerly Xerox PARC) is a research and development company in Palo Alto, California. Founded in 1969 by Jacob E. "Jack" Goldman, chief scientist of Xerox Corporation, the company was originally a division of Xero ...
working on
printer driver In computers, a printer driver or a print processor is a piece of software on a computer that converts the data to be printed to a format that a printer can understand. The purpose of printer drivers is to allow applications to do printing without ...
s. He later moved to the
Xerox Alto The Xerox Alto is a computer designed from its inception to support an operating system based on a graphical user interface (GUI), later using the desktop metaphor. The first machines were introduced on 1 March 1973, a decade before mass-market G ...
project where he wrote several games for the system. His PhD was in
natural language In neuropsychology, linguistics, and philosophy of language, a natural language or ordinary language is any language that has evolved naturally in humans through use and repetition without conscious planning or premeditation. Natural languages ...
parsing and he had worked on compiler theory during his graduate work. Henry Baker and Parker released Micro-SPL in September 1979. Micro-SPL was intended to be used as a
systems programming language A system programming language is a programming language used for system programming; such languages are designed for writing system software, which usually requires different development approaches when compared with application software. Edsger D ...
on the
Xerox Alto The Xerox Alto is a computer designed from its inception to support an operating system based on a graphical user interface (GUI), later using the desktop metaphor. The first machines were introduced on 1 March 1973, a decade before mass-market G ...
workstation computer A workstation is a special computer designed for technical or scientific applications. Intended primarily to be used by a single user, they are commonly connected to a local area network and run multi-user operating systems. The term ''workstat ...
, which was normally programmed in
BCPL BCPL ("Basic Combined Programming Language") is a procedural, imperative, and structured programming language. Originally intended for writing compilers for other languages, BCPL is no longer in common use. However, its influence is still ...
. The Alto used a
microcode In processor design, microcode (μcode) is a technique that interposes a layer of computer organization between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer. Microcode is a laye ...
system which the BCPL compiler output. Micro-SPL output the same format, allowing BCPL programs to call Micro-SPL programs. 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.


Action!

It was during this period that Parker purchased an Atari for use at home, and was disappointed with the lack of development systems for this platform. This was the impetus for the development of Action! Parker initially considered releasing the system himself, but later decided to partner with
Optimized Systems Software Optimized Systems Software (OSS) was a company that produced disk operating systems, programming languages with integrated development environments, and applications primarily for the Atari 8-bit family of home computers. OSS was best known fo ...
(OSS) for sales and distribution. OSS focused on utilities and programming languages like
BASIC XL Optimized Systems Software (OSS) was a company that produced disk operating systems, programming languages with integrated development environments, and applications primarily for the Atari 8-bit family of home computers. OSS was best known fo ...
, so this was a natural fit for Action! Sales were strong enough for Parker to make a living off the royalties for several years. The
IBM PC The IBM Personal Computer (model 5150, commonly known as the IBM PC) is the first microcomputer released in the IBM PC model line and the basis for the IBM PC compatible de facto standard. Released on August 12, 1981, it was created by a team ...
had C compilers available, and Parker decided there was no point in porting Action! to that platform. As the sales of the Atari 8-bit platforms wound down, in North America at least, OSS wound down as well. Late in its history Action! distribution moved from OSS to
Electronic Arts Electronic Arts Inc. (EA) is an American video game company headquartered in Redwood City, California. Founded in May 1982 by Apple employee Trip Hawkins, the company was a pioneer of the early home computer game industry and promoted the d ...
, but they did little with the language and sales ended shortly after. In a 2015 interview, Parker expressed his surprise in the level of support the language continued to receive, suggesting there appeared to be more interest in it then than there had been in the late 1980s.


Development environment

Action! was 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 Bank switching is a technique used in computer design to increase the amount of usable memory beyond the amount directly addressable by the processor instructions. It can be used to configure a system differently at different times; for example ...
between the other three blocks by changing the value in address $AFFF. Action! used this design by breaking the system into four sections, the editor, the compiler, a
monitor Monitor or monitor may refer to: Places * Monitor, Alberta * Monitor, Indiana, town in the United States * Monitor, Kentucky * Monitor, Oregon, unincorporated community in the United States * Monitor, Washington * Monitor, Logan County, West Vir ...
for testing code and switching between the editor and compiler, and the run-time library. 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. Action! constructs were designed to map cleanly to 6502
opcode In computing, an opcode (abbreviated from operation code, also known as instruction machine code, instruction code, instruction syllable, instruction parcel or opstring) is the portion of a machine language instruction that specifies the operat ...
s, to provide high performance without needing complex optimizations in the
one-pass compiler In computer programming, a one-pass compiler is a compiler that passes through the parts of each compilation unit only once, immediately translating each part into its final machine code. This is in contrast to a multi-pass compiler which convert ...
. For example, local variables are assigned fixed addresses in memory, instead of being allocated on the stack of
activation record In computer science, a call stack is a Stack (abstract data type), stack data structure that stores information about the active subroutines of a computer program. This kind of stack is also known as an execution stack, program stack, control st ...
s. 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 Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematics ...
. Unlike the integrated
Atari BASIC Atari BASIC is an interpreter (computing), interpreter for the BASIC programming language that shipped with the Atari 8-bit family of MOS Technology 6502, 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BAS ...
and
Atari Assembler Editor Atari Assembler Editor (sometimes written as Atari Assembler/Editor) is a ROM cartridge-based development system released by Atari, Inc. in 1981. It is used to edit, assemble, and debug 6502 programs for the Atari 8-bit family of home computer ...
environments, the Action! editor does not use line numbers. It features a full-screen, scrolling display capable of displaying two windows, as well as block operations and global search and replace. 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.


Data types

Action! has three fundamental
data type In computer science and computer programming, a data type (or simply type) is a set of possible values and a set of allowed operations on it. A data type tells the compiler or interpreter how the programmer intends to use the data. Most progra ...
s, all of which are numeric.


BYTE

Internally represented as an
unsigned Unsigned can refer to: * An unsigned artist is a musical artist or group not attached or signed to a record label ** Unsigned Music Awards, ceremony noting achievements of unsigned artists ** Unsigned band web, online community * Similarly, the c ...
8-
bit The bit is the most basic unit of information in computing and digital communications. The name is a portmanteau of binary digit. The bit represents a logical state with one of two possible values. These values are most commonly represente ...
integer. Values range from 0 to 255.
The CHAR keyword can also be used to declare BYTE variables. BYTE age= 1 ; declare age and initialize it to the value 21 BYTE leftMargin=82 ; declare leftMargin at address 82


CARDinal

Internally represented as an
unsigned Unsigned can refer to: * An unsigned artist is a musical artist or group not attached or signed to a record label ** Unsigned Music Awards, ceremony noting achievements of unsigned artists ** Unsigned band web, online community * Similarly, the c ...
16-
bit The bit is the most basic unit of information in computing and digital communications. The name is a portmanteau of binary digit. The bit represents a logical state with one of two possible values. These values are most commonly represente ...
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

Internally represented as a signed 16-
bit The bit is the most basic unit of information in computing and digital communications. The name is a portmanteau of binary digit. The bit represents a logical state with one of two possible values. These values are most commonly represente ...
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 In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be ...
support is provided. An example of a user-defined TYPE: TYPE CORD= ARD x,y CORD point point.x=42 point.y=23


Reserved words

A
reserved word In a computer language, a reserved word (also known as a reserved identifier) is a word that cannot be used as an identifier, such as the name of a variable, function, or label – it is "reserved from use". This is a syntactic definition, and a re ...
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 + > /nowiki> CHAR INCLUDE RSH - >= /nowiki> DEFINE INT SET * < " DO LSH STEP / <= ' ELSE MOD THEN & $ ; ELSEIF MODULE TO % ^ EXIT OD TYPE ! @


Example code

The following is example code for
Sieve of Eratosthenes In mathematics, the sieve of Eratosthenes is an ancient algorithm for finding all prime numbers up to any given limit. It does so by iteratively marking as composite (i.e., not prime) the multiples of each prime, starting with the first prime n ...
written in Action!. In order to increase performance, it disables the
ANTIC Alphanumeric Television Interface Controller (ANTIC) is an LSI ASIC dedicated to generating 2D computer graphics to be shown on a television screen or computer display. Under the direction of Jay Miner, the chip was designed in 1977-1978 by ...
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


Reception

Brian Moriarty Brian Moriarty (born 1956) is an American video game developer who authored three of the original Infocom interactive fiction titles, ''Wishbringer'' (1985), ''Trinity'' (1986), and ''Beyond Zork'' (1987), as well as ''Loom'' (1990) for LucasArt ...
, in a February 1984 review for ''
ANALOG Computing ''ANALOG Computing'' (an acronym for Atari Newsletter And Lots Of Games) was an American computer magazine devoted to the Atari 8-bit family of home computers. It was published from 1981 until 1989. In addition to reviews and tutorials, ''ANAL ...
'', 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."
Leo Laporte Leo Laporte (; born November 29, 1956) is the host of ''The Tech Guy'' weekly radio show and a host on TWiT.tv, an Internet podcast network focusing on technology. He is also a former TechTV technology host (1998–2008) and a technology author. O ...
reviewed Action in the May/June 1984 edition of ''
Hi-Res Image resolution is the detail an image holds. The term applies to digital images, film images, and other types of images. "Higher resolution" means more image detail. Image resolution can be measured in various ways. Resolution quantifies how cl ...
''. He began the review, "This is the best thing to happen to Atari since
Nolan Bushnell Nolan Kay Bushnell (born February 5, 1943) is an American businessman and electrical engineer. He established Atari, Inc. and the Chuck E. Cheese's Pizza Time Theatre chain. He has been inducted into the Video Game Hall of Fame and the Consume ...
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 Atari BASIC is an interpreter (computing), interpreter for the BASIC programming language that shipped with the Atari 8-bit family of MOS Technology 6502, 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BAS ...
, concluding that "This language is like a finely tuned racing car." ''
BYTE The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable unit ...
'' in 1985 praised the compilation and execution speed of software written in Action! Using their
Byte Sieve The Byte Sieve is a computer-based implementation of the Sieve of Eratosthenes published by ''Byte'' as a programming language performance benchmark. It first appeared in the September 1981 edition of the magazine and was revisited on occasion. Al ...
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." Ian Chadwick wrote in ''
Mapping the Atari ''Mapping the Atari'', written by Ian Chadwick and published by COMPUTE! Publications in 1983, is a location-by-location explanation of the memory layout of the Atari 8-bit family of home computers. The introduction is by Optimized Systems So ...
'' 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."


See also

*''
PaperClip A paper clip (or paperclip) is a tool used to hold sheets of paper together, usually made of steel wire bent to a looped shape (though some are covered in plastic). Most paper clips are variations of the ''Gem'' type introduced in the 1890s or e ...
'', Atari 8-bit word processor from a different author and company, based on the Action! editor


References


Citations


Bibliography

* * *


External links

*{{sourceforge, atari-action
Action! Programming Language Version 3.6 - Source Code
by Optimized Systems Software at archive.org
Action! info at Retrobits.comThe ACTION! ArchiveAction! language reference Effectus cross-compiler
Atari 8-bit family software ALGOL 68 dialect Optimized Systems Software Procedural programming languages Programming languages created in 1983 Statically typed programming languages Free and open-source software Formerly proprietary software Systems programming languages