HOME

TheInfoList



OR:

Action! is a procedural
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
and
integrated development environment An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
written by Clinton Parker for the
Atari 8-bit computers The Atari 8-bit computers, formally launched as the Atari Home Computer System, are a series of home computers introduced by Atari, Inc., in 1979 with the Atari 400 and Atari 800. The architecture is designed around the 8-bit MOS Technology 650 ...
. 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 Technology 6502 The MOS Technology 6502 (typically pronounced "sixty-five-oh-two" or "six-five-oh-two") William Mensch and the moderator both pronounce the 6502 microprocessor as ''"sixty-five-oh-two"''. is an 8-bit computing, 8-bit microprocessor that was desi ...
of the Atari computers. Action! was distributed on
ROM cartridge A ROM cartridge, usually referred to in context simply as a cartridge, cart, cassette, 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, ...
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 Atari 8-bit computers. The founders of OSS previously developed A ...
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. Parker, working with Henry Baker, had previously developed Micro-SPL, a systems programming language for the
Xerox Alto The Xerox Alto is a computer system developed at Xerox PARC (Palo Alto Research Center) in the 1970s. It is considered one of the first workstations or personal computers, and its development pioneered many aspects of modern computing. It featu ...
. 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 ''ANALOG Computing'' was an American computer magazine devoted to Atari 8-bit computers. It was published from 1981 until 1989. In addition to reviews and tutorials, ''ANALOG'' printed multiple programs in each issue for users to type in. Almo ...
'' 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 b ...
'' 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 ...
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. Early word processors were stand-alone devices dedicated to the function, but current word ...
. 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 Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
by the author in 2015.


Development environment

Action! is one of the earlier examples of the OSS SuperCartridge format. Although ROM cartridges for the Atari could support 16 kB, OSS opted for bank-switching 16 kB, organized as four 4 kB blocks, mapped onto 8kB of
address space In computing, an address space defines a range of discrete addresses, each of which may correspond to a network host, peripheral device, disk sector, a memory cell or other logical or physical entity. For software programs to save and retrieve ...
. The lower 4 kB did not change, and system could bank switch between the other three blocks by changing the value in address $AFFF. This allowed for more
RAM Ram, ram, or RAM most commonly refers to: * A male sheep * Random-access memory, computer memory * Ram Trucks, US, since 2009 ** List of vehicles named Dodge Ram, trucks and vans ** Ram Pickup, produced by Ram Trucks Ram, ram, or RAM may also ref ...
available for user programs. 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, Wes ...
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) is an enumerated value that specifies the operation to be performed. Opcodes are employed in hardware devices such as arithmetic logic units (ALUs), central processing units (CPUs), and ...
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 processes each compilation unit only once, sequentially translating each source statement or declaration into something close to its final machine code. This is in contrast to a mul ...
. For example, local variables are assigned fixed addresses in memory, instead of being allocated on a stack of
activation record In computer science, a call stack is a stack data structure that stores information about the active subroutines and inline blocks of a computer program. This type of stack is also known as an execution stack, program stack, control stack, run- ...
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 occurs when the definition of a concept or process depends on a simpler or previous version of itself. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in m ...
. Unlike the integrated
Atari BASIC Atari BASIC is an interpreter for the BASIC programming language that shipped with Atari 8-bit computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC and differs in significant way ...
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. 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.


Language


Data types

Action! has three fundamental
data type In computer science and computer programming, a data type (or simply type) is a collection or grouping of data values, usually specified by a set of possible values, a set of allowed operations on these values, and/or a representation of these ...
s, all of which are numeric. BYTE is internally represented as an unsigned 8-
bit The bit is the most basic unit of information in computing and digital communication. 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 represented as ...
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 is internally represented as an unsigned 16-
bit The bit is the most basic unit of information in computing and digital communication. 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 represented as ...
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 The bit is the most basic unit of information in computing and digital communication. 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 represented as ...
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 on subsets of real numbers formed by a ''significand'' (a signed sequence of a fixed number of digits in some base) multiplied by an integer power of that base. Numbers of this form ...
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 programming language, a reserved word (sometimes known as a reserved identifier) is a word that cannot be used by a programmer as an identifier, such as the name of a variable, function, or label – it is "reserved from use". In brief, an '' ...
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 number, composite (i.e., not prime) the multiples of each prime, starting with ...
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 b ...
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


Micro-SPL

While taking his postgraduate studies, Parker started working part-time at
Xerox PARC Future Concepts division (formerly Palo Alto Research Center, PARC and Xerox PARC) is a research and development company in Palo Alto, California. It was founded in 1969 by Jacob E. "Jack" Goldman, chief scientist of Xerox Corporation, as a div ...
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 with ...
s. He later moved to the
Xerox Alto The Xerox Alto is a computer system developed at Xerox PARC (Palo Alto Research Center) in the 1970s. It is considered one of the first workstations or personal computers, and its development pioneered many aspects of modern computing. It featu ...
project where he wrote several games for the system. His PhD was in
natural language A natural language or ordinary language is a language that occurs naturally in a human community by a process of use, repetition, and change. It can take different forms, typically either a spoken language or a sign language. 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 on the
Xerox Alto The Xerox Alto is a computer system developed at Xerox PARC (Palo Alto Research Center) in the 1970s. It is considered one of the first workstations or personal computers, and its development pioneered many aspects of modern computing. It featu ...
workstation computer, 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 f ...
. The Alto used a
microcode In processor design, microcode serves as an intermediary layer situated between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer. It consists of a set of hardware-level instructions ...
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 computer for use at home. He was disappointed with the lack of development systems for it, which was the impetus for creating Action! Parker considered releasing the system himself, but 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 Atari 8-bit computers. The founders of OSS previously developed A ...
(OSS) for sales and distribution. OSS focused on utilities and programming languages like BASIC XL, 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 List of IBM Personal Computer models, IBM PC model line and the basis for the IBM PC compatible ''de facto'' standard. Released on ...
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 computers wound down in North America, 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 former Apple Inc., Apple employee Trip Hawkins, the company was a pioneer of the early home computer game industry ...
, but they did little with the language and sales ended shortly after. 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.


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 LucasA ...
, in a February 1984 review for ''
ANALOG Computing ''ANALOG Computing'' was an American computer magazine devoted to Atari 8-bit computers. It was published from 1981 until 1989. In addition to reviews and tutorials, ''ANALOG'' printed multiple programs in each issue for users to type in. Almo ...
'', 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 former host of ''The Tech Guy'' weekly radio show and founder of TWiT.tv, an Internet podcast network focusing on technology. He is also a former TechTV technology host (1998–2008) and a technology a ...
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 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 Consu ...
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 for the BASIC programming language that shipped with Atari 8-bit computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC and differs in significant way ...
, 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 un ...
'' in 1985 praised the compilation and execution speed of software written in Action!. Using the 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". 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."


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.comAction! ArchiveAction! reference manualEffectus cross-compiler
Atari 8-bit computer software ALGOL 68 dialect Optimized Systems Software Procedural programming languages Programming languages created in 1983 Statically typed programming languages Systems programming languages