- MAC/65
MAC/65 was an
assembler produced byOptimized Systems Software for theAtari 8-bit family ofmicrocomputer s. It was a direct descendant of OSS's EASMD. Much like theAtari Assembler Editor cartridge, MAC/65 combined a line editor, assembler, and debugger into a single package. MAC/65 was notable for being significantly faster than the assemblers produced by Atari. It was used to write numerous commercial games and program listings for magazines such as ANALOG Computing.MAC/65 was written by Stephen D. Lawrow and was first released on disk in 1982. A cartridge version came later.
Features
MAC/65 featured two-pass compiling, with a third-pass for macros. Object code was generated in memory only when explicitly declared, unlike the
Atari Assembler Editor cartridge. Source was either MAC/65 token format or text files. Editing source required line numbers otherwise MAC/65 would treat lines as commands. MAC/65 also did syntax checking in EDIT mode. MAC/65" converted all strings to uppercase unless they were embedded with double quotes.Much like
Atari BASIC , source code in MAC/65 was tokenized as it was entered. This resulted in smaller data sizes (important when both the source and object code were in memory) and shorter assembly times.Unlike the Atari Assembler Editor, MAC/65 provided true macro processing and conditional assembly.
The cartridge version added
65C02 op-code support as well as "Dunion's Debugging Tool (DDT)" by Jim Dunion, of APX fame. Dunion later wrote "EXDDT (EXtended DDT)" forANTIC Software .Example Code
The following is example code for Hello World! written in "MAC/65":
10 ; HELLO.ASM20 ;30 ; THIS SIMPLE MAC/65 DEMO WILL40 ; PRINT THE "HELLO WORLD"50 ; MESSAGE TO THE SCREEN60 ;0100 ; = CIO EQUATES =0110 *= $0340 ;START OF IOCB0120 IOCB0130 ;0140 ICHID *= *+1 ;DEVICE HANDLER0150 ICDNO *= *+1 ;DEVICE NUMBER0160 ICCOM *= *+1 ;I/O COMMAND0170 ICSTA *= *+1 ;I/O STATUS0180 ICBAL *= *+1 ;LSB BUFFER ADDR0190 ICBAH *= *+1 ;MSB BUFFER ADDR0200 ICPTL *= *+1 ;LSB PUT ROUTINE0210 ICPTH *= *+1 ;MSB PUT ROUTINE0220 ICBLL *= *+1 ;LSB BUFFER LEN0230 ICBLH *= *+1 ;MSB BUFFER LEN0240 ICAX1 *= *+1 ;AUX BYTE 10250 ICAX2 *= *+1 ;AUX BYTE 10260 ;0270 GETREC = 50280 PUTREC = 90290 ;0300 CIOV = $E4560310 ;0320 RUNAD = $02E0 ;RUN ADDRESS0330 ;0340 ; = SETUP FOR CIO =
0350 ;0360 *= $06000370 START LDX #0 ;IOCB 00380 LDA #PUTREC ;WANT OUTPUT0390 STA ICCOM,X ;ISSUE CMD0400 LDA #MSG&255 ;LOW BYTE OF MSG0410 STA ICBAL,X ; INTO ICBAL0420 LDA #MSG/256 ;HIGH BYTE0430 STA ICBAH,X ; INTO ICBAH0440 LDA #0 ;LENGTH OF MSG0450 STA ICBLH,X ; HIGH BYTE0460 LDA #$FF ;255 CHAR LENGTH0470 STA ICBLL,X ; LOW BYTE0480 ;0490 ; = CALL CIO TO PRINT =
0500 ;0510 JSR CIOV ;CALL CIO0520 RTS ;EXIT0530 ;0540 ; = OUR MESSAGE =
0550 ;0560 MSG .BYTE "HELLO WORLD!",$9B0570 ;0580 ; = INIT RUN ADDRESS =
0590 *= RUNAD0600 .WORD START
Bugs
There is a bug in the "MAC/65" cartridge which gives an error on a
JSR
orJMP
to a zero page address. A temporary fix would be to use macros in the source code. As examples, try these:1000 .MACRO @JSR 1010 .BYTE $20 1020 .WORD %1 1030 .ENDM
1040 .MACRO @JMP 1050 .BYTE $4C 1060 .WORD %1 1070 .ENDM
To invoke the macro, type
@JSR
(or@JMP
) in place of theJSR
orJMP
instruction, and the proper hex code will be generated.Add-ons
MAC/65 Toolkit
This was a disk filled with
source code and examples for use with the "MAC/65" assembler. Available on disk, required 40K of memory.DDT
"
Dunion's Debugging Tool (DDT)" was built into the cartridge version of "MAC/65". Based on the originalAtari Program Exchange software, "DDT" provided monitoring of program code while keeping as much of the display screen intact. The version that was supplied with "MAC/65" was a condensed version of the APX original.Trivia
*According to Matthew J. Ratcliff of "ANALOG Computing", "MAC/65" was used by C64 programmers to assemble C64 projects on Atari computers.
*According to Stephen D. Lawrow, "MAC/65" was used to compile not only itself, but "BASIC XL" and "BASIC XE".Aftermath
"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 the rights to ICD's 8-bit products, including "MAC/65".
References
* "A reference manual for MAC/65" by OSS, Rev. 1.2. 1983
* "Atari Home Computer System - Technical Reference Notes". Atari, Inc. C016555 REV A.
* Andrews, Mark (1984). "Atari Roots: A Guide to Atari Assembly Language". DATAMOST, Inc. ISBN 0-88190-171-7. [http://www.atariarchives.org/roots/]
* Chasin, Mark (1984). "Assembly Language Programming for the Atari Computers". Byte Books, McGraw-Hill Paperbacks. ISBN 0-07-010679-7. [http://www.atariarchives.org/alp/]
* Chadwick, Ian (1985). "Mapping the Atari Revised Edition". COMPUTE! Publications, Inc. ISBN 0-87455-004-1. [http://www.atariarchives.org/mapping/]
* Leventhal, Lance A. (1986). "6502 Assembly Language Programming 2nd Edition". Osborne/McGraw-Hill. ISBN 0-07-881216-X.
* Leventhal, Lance A. (1982). "6502 Assembly Language Subroutines". Osborne/McGraw-Hill. ISBN 0-931988-59-4.
* Mansfield, Richard (1983). "Machine Language for Beginners". COMPUTE! Publications, Inc. ISBN 0-942386-11-6. [http://www.atariarchives.org/mlb/]
* Mansfield, Richard (1984). "The Second Book of Machine Language". COMPUTE! Publications, Inc. ISBN 0-942386-53-1. [http://www.atariarchives.org/2bml/]
* Zaks, Rodnay (1983). "Programming the 6502 (Fourth Edition)". Sybex, Inc. ISBN 0-89588-135-7.
* Zaks, Rodnay (1982). "Advanced 6502 Programming". Sybex, Inc. ISBN 0-89588-089-X.
* "OSS Newsletter - Spring 1984"
* "OSS Newsletter - October 1984"External links
* [http://retrobits.net retrobits.net] Dan's OSS Supercart Page
* [http://www.atariage.com/software_page.html?SoftwareLabelID=2674 AtariAge - Atari 800/XL/XE] MAC/65 (OSS)
* [http://www.8bitclassics.com/product_info.php?products_id=525 8-bit Classics] - MAC/65 Assembler Cartridge (manual)
* [http://www.atarimagazines.com/compute/issue43/177_1_REVIEWS_MAC_65.php Compute! Magazine] - Review: MAC/65, Issue 43, Dec 1983
* [http://www.atarimagazines.com/v2n7/nightmare.html Antic Vol. 2, No. 7 - Oct 1983] Nightmare Mission - MAC's the one for the job (Atari assemblers review)
* [http://www.atarimagazines.com/v4n1/product_reviews.html Antic Vol. 4, No. 1 - May 1985] Product Review - MAC/65 Toolkit
* [http://www.ifarchive.org/if-archive/infocom/info/moriarty-online.txt INFOCOM Online Transcript] Interview with Brian Moriarty, talks briefly about MAC/65
* [http://atari.ksiders.tzo.com/a8programming.html Programming tools] Ken's Atari 8-bit Zone
Wikimedia Foundation. 2010.