The Assembler Editor is a two-pass 6502 assembler in an 8KB 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.6
The cartridge starts in EDIT mode. The programmer enters lines of assembly source into the Atari BASIC-like editor. Source text must be prefixed with a line number or it is interpreted as a command. Like Atari BASIC, Assembler Editor includes an ENTER command that can 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.7
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.8 Variable names can be assigned to specific addresses, and this was often combined with an increment *= *+1 to directly encode offsets into tables.9
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.10
Errors are reported with numeric codes that can be looked up in the manual. There are 19 assembler-specific codes and 16 additional codes for operating system input/output errors.11
Code is assembled by typing the ASM command into the editor.12
Assembler Editor was widely derided as the slowest assembler on the platform. Much of this is from sharing code with Atari BASIC, also written by Shepardson Microsystems. Atari BASIC uses slow routines used to convert numeric constants in code to an internal binary-coded decimal representation via operating system routines. All numbers, even line numbers, have to be converted to binary-coded decimal. It also means that 1E2 is a legal line number.13
The debugger, really a monitor, is entered with the BUG command.14 The X command returns to EDIT mode.15 The debugger allows the viewing and changing of registers and memory locations, code tracing, single-step and disassembly.16
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, something programmers at Atari were struggling with. Instead, Bill Wilkinson suggested designing an entirely new version of BASIC, which became Atari BASIC.17
While Atari BASIC was being written, primarily by Paul Laughton, O'Brien's husband, O'Brien worked on the Assembler Editor.18 It was written by punching codes into a punch tape machine, running the tape through an EPROM 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.19
As part of Shepardson's work, a number of common routines were incorporated into the Atari computer's operating system, including the floating point math functions. These were written by O'Brien, the first floating point math code she worked on.20 The low performance of key functions affected both Atari BASIC and the Assembler Editor and was a topic that Wilkinson often wrote about.21
The following is 6502 code for Hello World! written for the Assembler Editor:
These commands can be interactively entered to assemble the code, enter the debugger, run the program, then exit the debugger when it is finished:
Shortly after Shepardson delivered Assembler Editor and Atari BASIC to Atari, Bob Shepardson, the owner, decided to return to being a one-person company.22 O'Brien, Laughton, and Wilkinson formed their own company, Optimized Systems Software (OSS), to continue development of the Atari products. They licensed the original source code for BASIC, Assembler Editor, and Atari DOS, which they had collectively written.23
In 1981, OSS released an improved version of Assembler Editor, EASMD on floppy disk. EASMD was replaced by MAC/65 in 1982. MAC/65 was one of the fastest assemblers on the platform.24 Much of the improved performance of MAC/65 is the result of tokenizing lines of code as they're entered—as is the case with Atari BASIC—to reduce the amount of work needed at assembly time.25
Assembler Editor continued to be available from Atari, and increased in popularity as the price dropped to US$10 or 5 in the latter half of the 1980s.26
Manual 1981, p. 63. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Crawford, Chris (1982). Source Code for Eastern Front (1941). The ATARI Program Exchange. http://www.erasmatazz.com/library/source-code/index.html ↩
The Creative Atari: Dog Daze and Caverns of Mars. 1983. https://www.atariarchives.org/creativeatari/Dog_Daze_and_Caverns_of_Mars.php ↩
Crockford, Douglas (1982). Galahad and the Holy Grail Manual (PDF). The ATARI Program Exchange. http://www.atarimania.com/8bit/files/APX_Galahad_and_the_Holy_Grail.pdf ↩
Ellison, Peter (April 1984). "Interview: Arti Haroutunian". ROM (5): 8. https://www.atarimagazines.com/rom/issue5/interview.php ↩
Hague 2009. - Hague, James (2 August 2009). "A Personal History of Compilation Speed, Part 1". Programming in the 21st Century. http://prog21.dadgum.com/45.html ↩
Manual 1981, p. 15. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Manual 1981, p. 7,31. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Manual 1981, p. 31. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Manual 1981, pp. 10–12. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Manual 1981, pp. 43–44. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Manual 1981, p. 25. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Wetmore 1983, p. 29. - Wetmore, Russ (November 1983). "Atari 8-bit assemblers reviewed". Hi-Res. Vol. 1, no. 1. http://www.atarimagazines.com/hi-res/v1n1/advanceduser.php ↩
Manual 1981, p. 35. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Manual 1981, p. 41. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Manual 1981, pp. 35–41. - Atari Assembler Editor User Manual (PDF). Atari. 1981. https://www.strotmann.de/~cas/Infothek/AtAssemblerEditor/ATARIAssemblerEditorUserManual.pdf ↩
Interview 2015. - Kathleen O'Brien, Kevin Savetz (13 March 2015). Kathleen O'Brien, OSS (Podcast). http://ataripodcast.libsyn.com/antic-interview-21-the-atari-8-bit-podcast-kathleen-obrien-oss ↩
Wilkinson, Bill (February 1985). "INSIGHT: Atari". Compute!. p. 139. ↩
Wilkinson 1982, p. vi. - Wilkinson, Bill (1982). Inside Atari DOS. Optimized Systems Software, Inc. ISBN 0-942386-02-7. Retrieved 2009-04-04. http://www.atariarchives.org/iad/introduction.php ↩
Wilkinson 1982, pp. vi–vii. - Wilkinson, Bill (1982). Inside Atari DOS. Optimized Systems Software, Inc. ISBN 0-942386-02-7. Retrieved 2009-04-04. http://www.atariarchives.org/iad/introduction.php ↩
Ratcliff, Matthew (20 November 1989). "Atari Assembler Editor Reference". http://www.atariarchives.org/cfn/12/02/0090.php ↩