Atari Assembler Editor (sometimes written as Atari Assembler/Editor) is a
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, electron ...
-based development system released by
Atari, Inc.
Atari, Inc. was an American video game developer and home computer company founded in 1972 by Nolan Bushnell and Ted Dabney. Atari was a key player in the formation of the video arcade and video game industry.
Based primarily around the Sunny ...
in 1981. It is used to edit,
assemble, and
debug
In computer programming and software development, debugging is the process of finding and resolving ''bugs'' (defects or problems that prevent correct operation) within computer programs, software, or systems.
Debugging tactics can involve int ...
6502 programs 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 ...
of home computers without the need for additional tools. It was programmed by Kathleen O'Brien of
Shepardson Microsystems, the company which wrote
Atari BASIC
Atari BASIC is an interpreter for the BASIC programming language that shipped with the Atari 8-bit family of 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC a ...
, and Assembler Editor shares many design concepts with that language implementation.
Assembly times are slow, making the cartridge challenging to use for larger programs. In the manual, Atari recommended the Assembler Editor as a tool for writing subroutines to speed up
Atari BASIC
Atari BASIC is an interpreter for the BASIC programming language that shipped with the Atari 8-bit family of 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC a ...
, which would be much smaller than full applications. The Atari Macro Assembler was offered as an alternative with better performance and more features, such as macros, but it was disk-based,
copy-protected, and did not include an editor or debugger. Despite the recommendation, commercial software was written using the Assembler Editor, such as the games ''
Eastern Front (1941)
''Eastern Front (1941)'' is a computer wargame for the Atari 8-bit family created by Chris Crawford and published through the Atari Program Exchange (APX) in 1981. A scenario editor and assembly language source code for the game were also sold ...
'', ''
Caverns of Mars
''Caverns of Mars'' is a vertically scrolling shooter for the Atari 8-bit family of home computers. It was programmed by Greg Christensen, with some features added by Richard Watts, and published by the Atari Program Exchange (APX) in 1981. ''Cav ...
'', ''
Galahad and the Holy Grail'', and ''
Kid Grid
''Kid Grid'' is a grid capture game which borrows heavily from the 1981 arcade video game ''Amidar''. Written by Arti Haroutunian for the Atari 8-bit family, it was published by Tronix in 1982. A Commodore 64 port from the same programmer was r ...
''.
The
source code
In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
to the original Assembler Editor was licensed to
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 for ...
who shipped
EASMD based on it.
Development environment
The Assembler Editor is
two-pass 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 microprocessor that was designed by a small te ...
assembler in an 8
KB cartridge. Both source and object code can be in memory simultaneously, allowing repeated editing, assembly, and running of the resulting code without accessing a disk or tape drive.
Edit
The cartridge starts in EDIT mode. The programmer enters lines of assembly
source into the
Atari BASIC
Atari BASIC is an interpreter for the BASIC programming language that shipped with the Atari 8-bit family of 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC a ...
-like
editor
Editing is the process of selecting and preparing written, photographic, visual, audible, or cinematic material used by a person or an entity to convey a message or information. The editing process can involve correction, condensation, ...
. Source text must be prefixed with a line number, or it is interpreted as a command. Like Atari BASIC, Assembler Editor included an
ENTER
command that could be used to combine files together into a single larger program listing. Unlike Atari BASIC, Assembler Editor includes commands for automatically creating spaced-out line numbers, as well as renumbering lines and deleting them ''en masse''. A
FIND
command is useful when working with labels.
Instructions are listed in the order they will be placed in memory. The starting point for instructions is specified with the
*=
directive, so, for instance, code intended to be placed in the special "page six" would be prefixed with the line
*= $0600
. Variable names can be assigned to specific addresses, and this was often combined with an increment
*= *+1
to directly encode offsets into tables.
Values following instructions are normally interpreted as "the value at this memory address", but an actual numeric value can be provided as an "immediate operand" by appending it with a hash, like
LDA #12
, which loads the accumulator with the decimal value 12. Hexadecimal is indicated with a dollar sign,
LDA #$12
loads the accumulator with 12 hex, or 18 decimal. Indirect addressing is supported using parentheses;
LDA ($600)
uses the values in location $600,$601 to produce a 16-bit address, and then loads the accumulator with the value found at that location.
Errors are reported with numeric codes that can be looked up in the manual, with about 50 such codes in total.
Assemble
Code can be assembled at any time by typing the
ASM
command into the editor.
Assembler Editor was widely derided as the slowest assembler on the platform. Much of this was due to it sharing much of the editor code with Atari BASIC, which had also been written by Shepardson Microsystems. Atari BASIC was notorious for the very slow routines used to convert numerical constants in code into an internal representation, which used
binary-coded decimal
In computing and electronic systems, binary-coded decimal (BCD) is a class of binary encodings of decimal numbers where each digit is represented by a fixed number of bits, usually four or eight. Sometimes, special bit patterns are used fo ...
(BCD) routines in the Atari's
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
. This meant that all numbers, even line numbers, had to be converted to BCD. Oddly, it also meant that
1E2
was a legal line number.
Debug
The
debugger
A debugger or debugging tool is a computer program used to test and debug other programs (the "target" program). The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execut ...
, really 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 ...
, is entered with the
BUG
command. The
X
command returns to EDIT mode. The debugger allows the viewing and changing of
registers and memory locations, code tracing, single-step and
disassembly
A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler. A disassembler differs from a decompiler, which targets a high-level language rather than an assembly l ...
.
History
Assembler Editor was written by Kathleen O'Brien of
Shepardson Microsystems. The company had been hired by Atari to help fit
Microsoft 6502 BASIC onto an 8KB
ROM
Rom, or ROM may refer to:
Biomechanics and medicine
* Risk of mortality, a medical classification to estimate the likelihood of death for a patient
* Rupture of membranes, a term used during pregnancy to describe a rupture of the amniotic sac
* ...
, something programmers at Atari were struggling with. Instead, Bill Wilkinson suggested designing an entirely new version of BASIC, which became
Atari BASIC
Atari BASIC is an interpreter for the BASIC programming language that shipped with the Atari 8-bit family of 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC a ...
.
While Atari BASIC was being written, primarily by Paul Laughton, O'Brien's husband, O'Brien worked on the Assembler Editor. It was written by punching codes into a
punch tape
Five- and eight-hole punched paper tape
Paper tape reader on the Harwell computer with a small piece of five-hole tape connected in a circle – creating a physical program loop
Punched tape or perforated paper tape is a form of data storage ...
machine, running the tape through an
EPROM
An EPROM (rarely EROM), or erasable programmable read-only memory, is a type of programmable read-only memory (PROM) chip that retains its data when its power supply is switched off. Computer memory that can retrieve stored data after a power ...
burner, and then testing the resulting ROM in an Atari 800. The cartridge was completed before Atari BASIC, and O'Brien spent some time working on portions of that project as well.
As part of Shepardson's work, a number of common routines were incorporated into the Atari computer's
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
, including the
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 r ...
math functions. These were written by O'Brien, the first floating point math code she worked on. The low performance of key functions affected both Atari BASIC and the Assembler Editor and was a topic that Wilkinson often wrote about.
Example code
The following is 6502 code for
Hello World! written for the Assembler Editor:
10 ; HELLO.ASM
20 ; ---------
30 ;
40 ; THIS ATARI ASSEMBLY PROGRAM
50 ; WILL PRINT THE "HELLO WORLD"
60 ; MESSAGE TO THE SCREEN
70 ;
0100 ; CIO EQUATES
0110 ;
0120 *= $0340 ;START OF IOCB
0130 IOCB
0140 ;
0150 ICHID *= *+1 ;DEVICE HANDLER
0160 ICDNO *= *+1 ;DEVICE NUMBER
0170 ICCOM *= *+1 ;I/O COMMAND
0180 ICSTA *= *+1 ;I/O STATUS
0190 ICBAL *= *+1 ;LSB BUFFER ADDR
0200 ICBAH *= *+1 ;MSB BUFFER ADDR
0210 ICPTL *= *+1 ;LSB PUT ROUTINE
0220 ICPTH *= *+1 ;MSB PUT ROUTINE
0230 ICBLL *= *+1 ;LSB BUFFER LEN
0240 ICBLH *= *+1 ;MSB BUFFER LEN
0250 ICAX1 *= *+1 ;AUX BYTE 1
0260 ICAX2 *= *+1 ;AUX BYTE 1
0270 ;
0280 GETREC = 5 ;GET TEXT RECORD
0290 PUTREC = 9 ;PUT TEXT RECORD
0300 ;
0310 CIOV = $E456 ;CIO ENTRY VECTOR
0320 RUNAD = $02E0 ;RUN ADDRESS
0330 EOL = $9B ;END OF LINE
0340 ;
0350 ; SETUP FOR CIO
0360 ; -------------
0370 *= $0600
0380 START LDX #0 ;IOCB 0
0390 LDA #PUTREC ;WANT OUTPUT
0400 STA ICCOM,X ;ISSUE CMD
0410 LDA #MSG&255 ;LOW BYTE OF MSG
0420 STA ICBAL,X ; INTO ICBAL
0430 LDA #MSG/256 ;HIGH BYTE
0440 STA ICBAH,X ; INTO ICBAH
0450 LDA #0 ;LENGTH OF MSG
0460 STA ICBLH,X ; HIGH BYTE
0470 LDA #$FF ;255 CHAR LENGTH
0480 STA ICBLL,X ; LOW BYTE
0490 ;
0500 ; CALL CIO TO PRINT
0510 ; -----------------
0520 JSR CIOV ;CALL CIO
0530 RTS ;EXIT TO DOS
0540 ;
0550 ; OUR MESSAGE
0560 ; -----------
0570 MSG .BYTE "HELLO WORLD!",EOL
0580 ;
0590 ; INIT RUN ADDRESS
0600 ; ----------------
0610 *= RUNAD
0620 .WORD START
0630 .END
These commands can be interactively entered to assemble the code, enter the debugger, run the program, then exit the debugger when it is finished:
ASM
BUG
G600
X
Legacy
Shortly after Shepardson delivered Assembler Editor and Atari BASIC to Atari, Bob Shepardson, the owner, decided to return to being a one-person company. O'Brien, Laughton, and Wilkinson formed their own company,
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 for ...
(OSS), to continue development of the Atari products. They licensed the original
source code
In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
for BASIC, Assembler Editor, and
Atari DOS
Atari DOS is the disk operating system used with the Atari 8-bit family of computers. Operating system extensions loaded into memory were required in order for an Atari computer to manage files stored on a disk drive. These extensions to ...
, which they had collectively written.
In 1981, OSS released an improved version of Assembler Editor,
EASMD on
floppy disk
A floppy disk or floppy diskette (casually referred to as a floppy, or a diskette) is an obsolescent type of disk storage composed of a thin and flexible disk of a magnetic storage medium in a square or nearly square plastic enclosure lined ...
. EASMD was replaced by
MAC/65
MAC/65 is a 6502 assembler written by Stephen D. Lawrow for the Atari 8-bit family of home computers. MAC/65 was first released on disk by Optimized Systems Software in 1982, with the program requiring 16 KB RAM. A bank switched "SuperCartridge ...
in 1982. MAC/65 was one of the fastest assemblers on the platform. Much of the improved performance of MAC/65 is the result of tokenizing lines of code as they're entered—at is the case with Atari BASIC—to reduce the amount of work needed at assembly time.
Assembler Editor continued to be available from Atari, and increased in popularity as the price dropped to in the latter half of the 1980s.
References
Citations
Bibliography
*
*
*
*
*{{cite book
, last=Wilkinson , first=Bill
, title=Inside Atari DOS
, year=1982
, url=http://www.atariarchives.org/iad/introduction.php, publisher=Optimized Systems Software,Inc.
, isbn=0-942386-02-7
, access-date=2009-04-04
External links
Assembler Editorat Atari Mania, including manual
information
1981 software
Assemblers
Atari 8-bit family software