Jump to content

MAC/65

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Garychisholm (talk | contribs) at 21:34, 16 November 2021. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

MAC/65
Original author(s)Steven D. Lawrow
Developer(s)Optimized Systems Software
Initial release1982; 42 years ago (1982)
Final release
4.20 / 1994; 30 years ago (1994)
PlatformAtari 8-bit family
Size16 KB
TypeAssembler
LicenseProprietary software

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" from OSS followed in January 1984 for US$99,[1] occupying only 8 KB.

MAC/65 is structured similarly to the Atari Assembler Editor cartridge, combining a line editor, assembler, and debugger into a single package. Its reputation was based on being much faster than either the Assembler Editor or the standalone Atari Macro Assembler. Brian Moriarty of Infocom wrote, "No assembler [at the time] on the C64 even comes CLOSE to MAC/65. Take it from someone who looked for one."[2] It was used to write numerous commercial games and applications, and the majority of assembly language listings in ANALOG Computing were written with MAC/65.

According to Lawrow, MAC/65 was used to compile not only itself, but BASIC XL and BASIC XE.

Overview

Like Atari BASIC, source code in MAC/65 uses line numbers and is tokenized as it is entered. The entry scanner converts the line number to a 16-bit integer, converts the assembly mnemonic to an 8-bit code, and then replaces any constants or variable references with their value or address. As part of this process, any syntax errors are immediately found and reported, and as multi-character keywords and names are replaced by a single byte, the code is much smaller in memory.

The main advantage to this approach, however, is that "compiling" the program is a simplified task of copying out the tokens at the correct starting address, as the tokens are the ultimate instruction opcodes. This makes the entire compiling process dramatically faster than a system that has to parse the code from its original text format. Source files can be saved and loaded in either tokenized format or as text files.

Unlike the Atari Assembler Editor, MAC/65 provides macro processing and conditional assembly.

The cartridge version added 65C02 opcode support as well as a condensed version of Dunion's Debugging Tool (DDT) by Jim Dunion, the full version of which was originally sold through the Atari Program Exchange.[3] DDT replaced the BUG/65 debugger which shipped with the disk version of MAC/65.

MAC/65 ToolKit

The ToolKit was a floppy diskette filled with source code and examples for use with the MAC/65 assembler. The ToolKit required an Atari 8-bit with 48K of memory, a disk drive and the MAC/65 cartridge.

The following is example code for Hello World! using the MAC/65 ToolKit:

0100     .OPT NO LIST
0110 ;
0120 ; HELLO.M65
0130 ; ---------
0140 ;
0150 ; THE HELLO WORLD TEST USING
0160 ; THE MAC/65 TOOLKIT
0170 ;
0180 RUNAD = $02E0   ; RUN ADDRESS
0190 EOL =   $9B     ; END-OF-LINE
0200     *=  $4000
0210 ;
0220 MSG .BYTE "HELLO WORLD!",EOL
0230 ;
0240     .INCLUDE #D:KERNEL.M65
0250 ;
0260 START
0270     PRINT  0,MSG ; CHANNEL 0
0280    RTS         ; RETURN TO DOS
0290 ;
0300    *=  RUNAD
0310    .WORD START
0320    .END

ASM ,,#D:HELLO.COM
DOS
HELLO.COM

Legacy

MAC/65 along with other OSS products became part of ICD's catalog of Atari products in January 1988. In 1994, Fine Tooned Engineering obtained limited rights to ICD's 8-bit products, including MAC/65.[4]

The open source ATasm project was written as a MAC/65-compatible cross assembler.[5]

References

  1. ^ "OSS Newsletter". archive.org. January 1984.
  2. ^ "INFOCOM On Line: Transcript with Brian Moriarty".
  3. ^ "Dunion's Debugging Tool". Atari Mania.
  4. ^ "Fine Tooned Engineering".
  5. ^ "ATasm: 6502 cross-assembler".