Anals Of Atari Assemblers

Dialects

Whilst higher level languages converged on standards that allowed code to easily migrate from one to another; assembly language has always been a bit of a wild west, with each assembler having its own unique syntax and features.

So join me, friends, as we embark on a whirlwind tour of the assemblers that shaped Atari coding. Some of these you will remember, others have been lost to time, like tears in rain.

But due to hard work from the RG team, with rg-asm we are bringing them back to life; like, erm, sweat in sunshine!

22 dialects 3 coming soon
1985 Back In The Day
  1. AS68 usage line printed to the console
    Help · captured under emulation
    1985

    AS68 / Alcyon

    Digital Research · Alcyon · shipped in the Atari Developer Kit

    The official assembler that came with the ST. It was a CP/M-68K port, slow and lacking native macros, only for the hardest of the hard core. But this was the thing that built TOS itself.

    If you look at the original TOS source code, you’re looking at AS68 source. Also brought us the original DRI format.

    * DRI AS68 — tab fields, bare equ/text/end
    VAL	equ	$42
    	text
    	moveq	#VAL,d0
    	rts
    	end
  2. K-Seka box art
    Box · Atarimania
    1986

    A-SEKA / K-Seka

    Andelos Systems · distributed by Kuma Computers

    The first in RAM assembler. Whilst previous assemblers forced developers to load and assemble from disk, the tiny 17KB k-seka allowed you to edit and write entirely in memory. This was not a GEM UI though, it was custom and clunky, so slicker editors would give programmers a more comfortable experience, but this was a big step forward for the time.

    The original SEKA was an Amiga product, but later versions were ported to the Atari ST.

    ; Andelos SEKA — BLK not DS, trailing colon labels
     CODE
    start:
     BLK.W 4
     moveq #0,d0
     rts
     END
1986 Out Of The Darkness
  1. GST-ASM binder packaging
    Binder · Atarimania
    1986

    GST-ASM

    GST Holdings Ltd. (UK)

    The first glimmerings of light. A GEM shell. Macros. And that glorious GST object format that Metacom and Devpac would go on to use.

    Compared to the mainframe like tooling that had come before, this felt like a real step forward. It did require devs to live DRI-land and migrate to GST.

    * GST ASM — MODULE + SECTION link model
            MODULE  hello
            SECTION TEXT
    start   MOVEQ   #0,D0
            RTS
            END
  2. Metacomco Macro Assembler box art
    Box · WorthPoint
    1986

    Metacomco Macro Assembler

    MetaComCo (ASSEM / MCC)

    The closest early replacement for AS68 if this was your thang and also wanted local labels. Also bonus of having GEM library sources on the disk.

    Not the fastest tool on the shelf, but it worked with GST (and later DRI), so it plugged into the rest of Metacomco’s language stack.

    * MetaComCo — bare TEXT / DATA / BSS
            TEXT
    STARTUP
            MOVE.L  _MARK,D0
            DS.W    40
            DATA
    _MARK   DC.L    1
  3. MADMAC assembler screenshot
    Screen · Atarimania
    ~1986

    MADMAC

    Landon M. Dyer · Atari Corp. · later revived as rmac

    Atari’s own answer to AS68: fast, macro-happy, and paired with the ALN linker. Laid down some hella funky syntax like ?1 macro args, ^^defined, and .iif. A cult classic.

    You didn't have to be mad to use this (but it helped)

    ; MADMAC — :: export + confined .locals
    zero::	subq.w	#1,d1
    	bmi.s	.ret
    .loop:	clr.w	(a0)+
    	dbra	d0,.loop
    .ret:	rts
  4. DevpacST version 1 box art
    Box · WTS Retro
    1986

    DevpacST / GenST v1

    HiSoft Systems

    The first public face of what became the big daddy. Debuted the full holy trinity of editor, GenST assembler and MonST debugger. This is where life began.

    What I learned from revisiting this box - HiSoft was short for "High Quality Software". Maybe they should have branded themselves HQSoft.

    * GenST 1.01 — period locals only (no :: / 1234$)
    entry:
    	nop
    .lab:
    	nop
    other:
    	rts
  5. AssemPro Abacus Software disk label
    Disk · Atarimania
    1986

    AssemPro

    Data Becker (DE) / Abacus Software (US) · Peter Schultz · Atarimania

    Data Becker / Abacus may be better known for their books (including the nobel prize winning "ST Internals"), but they had a side hustle in nifty little ST tools, like this fella. Mainly used as a supplement to their tutorial books, but had a few extra operators that set it apart from plain Motorola syntax.

    ; AssemPro — backslash locals between globals
    GLOBAL_1:
    \LOCAL_1 = 27
    	moveq	#\LOCAL_1,d0
    GLOBAL_2:
    	rts
  6. ProfiMat ST integrated editor and assembler (ST-Computer review)
    Screen · ST-Computer 02/1987 (stcarchiv)
    1987 disk hunt

    ProfiMat ST

    Data Becker · AtariUpToDate

    Not AssemPro under another hat. Data Becker’s next integrated GEM suite — editor, macro assembler, built-in reassembler, and debugger all resident at once, so you flip between windows without reloading chunks from disk.

    The ST-Computer review (02/1987) highlights tokenized (non-ASCII) source files, conditional and repeat assembly, a fat shipped macro library for GEMDOS/BIOS/XBIOS/VDI/AES, and reference tables you can browse from any module. The debugger even offered a 68020 emulation mode. Standalone binaries only — no linker objects for mixing into C toolchains.

    ; ProfiMat ST — semicolon comments; tokenized sources on disk
    ; ST-Computer 02/1987 IDE (reassembler listing) — not AssemPro syntax
    decode6:
    	move.b	#'b',(text_pos)+	; 'b' in den Textpuffer
    	move.w	(prg_zeiger),daten	; 1. Prg.-Datenwort -> D0
    	andi.w	#$f00,daten
    	cmp.w	#$200,daten
    	bpl	norm_bed
    	lsr.w	#7,daten
    	lea	endung,adresse
    	move.b	0(adresse,daten),(text_pos)+
    norm_bed:
    	bsr	bed_aus
    kein_bed:
    	move.w	(prg_zeiger),daten
    	andi.l	#$ff,daten
  7. Mark Williams C for the Atari ST box art
    Box · Computing History
    1986

    Mark Williams C as

    Mark Williams Company · Atarimania · MWC 3.0

    Marky "Mark" Williams rolled out his funky bunch take on atari development with the snazzily named Mark Williams C.

    The lack of an apostrophe makes this sound like a test score, not the mid 80s development kit it was.

    But it didn't just do C, there was an assembler there too. Fun for the whole family!

    / Mark Williams C as — slash comments, .prvi sections
    .prvi
    	moveq	$0,d0
    	rts
  8. Manx Aztec C 68k slipcase
    Slipcase · Patric Sokoll
    1987–88

    Aztec C assembler

    Manx Software Systems

    Another side assembler as part of a C development package, the Aztec C was appropriately named as it actually has roots back in the Aztec era.

    If you like calling your sections CSEG and DSEG then this will be your jam.

    ; Manx Aztec — column-1 CSEG / DSEG
    CSEG
    _start:
    	move.l	#_msg,a0
    	rts
    DSEG
    _msg:
    	dc.b	"hi",0
1988 Devpac becomes the dialect
  1. Devpac ST 2 box art
    Box · Computing History
    1988

    Devpac ST 2 / GenST2

    HiSoft · DevpacST v2 manual (PDF)

    Some sequels far surpass the original, and the HiSoft Empire struck back in devastating fashion with this legendary package.

    They posed two simple questions: "Are you a DEveloper?" and "Do you need a PAC"? If the answer to either, both or none of these questions was "hmmm ... maybe?" - this was the development package for you.

    A game changer. A life changer. Devpac is life. Life is Devpac.

    * Devpac ST 2 — :: export, .locals, 1234$ numerics
    	opt	l2
    entry::
    	moveq	#0,d0
    .loop:
    	dbf	d0,.loop
    	bra.s	100$
    100$:
    	rts
  2. TurboAss IDE screenshot
    Screen · TurboAss source repo
    ©1989 / ~1990

    TurboAss / Omikron.Assembler

    Markus Fritze & Sören Hellwig (Σ-Soft) · sarnau.info

    Fritze and Hellwig put a turbo button ON YOUR ASSEMBLER. Hold onto your bums boys as we are gonna go fast!

    Originally sold commercially as Omikron.Assembler, then released as shareware TurboAss where it really picked up steam. Powering through 1.3 million lines a second, this was for developers in a hurry, not for those British Tea Drinking layabouts. But performance came with a price; not only did you have to sign away your soul and your sense of humour, but also macros and includes were on the chopping block.

    Bugaboo also gained popularity in its own right as an alternative to MonST.

    * TurboAss — OUTPUT PRG + @@ local labels
    	OUTPUT 'OUT.PRG'
    entry:
    	nop
    @@lab:
    	nop
    @@done:
    	rts
    	END
  3. GFA Assembler source-load screen
    Screen · captured under emulation
    1988

    GFA Assembler

    GFA Systemtechnik (+ Ostrowski) · Atarimania

    GFA are well known for their BASIC, but did you know they also shipped an assembler?

    It wasn't just a command line either; it had a full user interface, although with some non standard controls.

    ST Format readers found this on a cover disk, and probably promptly formatted it to copy the latest Automation menu onto.

    ; GFA Assembler — path + include, colon labels
    	path	"."
    	include	"inc_stub.s"
    start:
    	moveq	#0,d0
    	rts
  4. Sozobon jas version banner printed to the console
    Help · captured under emulation
    ~1989

    Sozobon jas

    Sozobon, Limited (Johann Ruegg et al.) · scbin20 archive

    Hey Joe! What are you doing with that Assembler in your hand?

    Welcome to Joe’s Assembler, hand crafted by Mr Joe Treat as an Alcyon-compatible backend for Sozobon C. This did some optimising around short branches so could generate smaller object files than the competition.

    Your files better not be bigger than 32K or things will get ugly. Keep it short and sweet!

    * Sozobon jas — @ octal radix in DC
    	moveq	#0,d0
    	rts
    	data
    vals:	dc.w	@10,@17,$ff
    	even
    	end
1990 Rise of C Suites
  1. HiSoft Lattice C 5 magazine advertisement
    Magazine ad · Atarimania
    ~1990

    Lattice C 5 ASM

    HiSoft / Lattice

    Lattice pray! Devpac creators' foray into the world of C development suites came with a lot of the goodies you would expect from these legends, including a fully symbolic debugger!

    Paved the road for a transition from assembly only to mixed C+asm projects.

    * Lattice C — indented CSECT text,CODE
     CSECT text,CODE
     moveq #1,d0
     rts
     END
  2. Pure C and Pure Pascal ASH manuals and disks
    Box · WorthPoint
    ~1989–91 →

    Pure C PASM

    Borland Turbo C → Pure Software → ASH · living Pure-compatible line continued by AHCC (Henk Robbers)

    A similar, but better product to Lattice C, especially given the quality of the C compiler.

    This was a full suite of tools including an assembler, linker, debugger.

    From an assembly perspective, the advantage over lattice c was the move from stdcall to fastcall. Whilst lattice passed its arguments on the stack, you could pass everything in registers with purec.

    Started life as Turbo C’s MAS assembler, grew into PASM. Henk Robbers’ AHCC keeps a Pure-compatible C+asm toolchain alive.

    * Pure C PASM — named macro params (not \1)
    	MACRO	PushW parm
    	move.w	parm,-(sp)
    	ENDM
    	text
    	PushW	d0
    	rts
    	end
1992 Falcon era
  1. GenPC banner and assembly statistics printed to the console
    Assembly log · GenPC via DOSBox
    1991 dialect soon

    GenPC

    Ziggy Stardust / OVR · STNICCC · Ziggy / OVR

    Ziggy Stardust from the Overlanders had always been ahead of the curve, and again showed his prescience by making a 68k cross assembler on the IBM PC years before this concept took off.

    Whilst the rest of the scene was still dwelling in devpac land, this slow burn production quietly gathered momentum. Later versions would be used heavily by Leonard/Oxygene, and another Overlander (Ben) would pick up the baton and take this to greater heights.

    * GenPC — Devpac-compatible text/end
    	text
    	move.l	#42,d0
    	rts
    	end
  2. Devpac 3 box art
    Box · Atarimania
    1992

    Devpac 3 / Gen / Gen030

    HiSoft · Devpac 3 manual

    When the Falcon rolled into town, we wanted an assembler that was comfortable speaking 68030 (and 68881). Devpac 3 was the model for the falcon generation.

    Compared to the solidity of devpac 2, this always felt a little rough around the edges. It crashed more. The 030 debugging experience wasn't quite as good. It missed some 030 instruction variations, so you had to dc.b them. But it was the big D. What can you say?

    * Devpac 3 — __G2 ($2B) + OPT LIST/NOLIST
    	opt	list
    exported::
    	move.w	#__G2,d0
    	rts
    	opt	nolist
  3. Brainstorm Assemble command-line usage printed to the console
    Help · captured under emulation
    1993–95

    Brainstorm Assemble

    Brainstorm (FR) · vendor page

    An ambitious French project that aimed squarely for the Falcon market. It sensed HiSoft's weaknesses and pounced. It had its own debugger (ADEBUG) and claimed 300k lines a minute assembly speed!

    You didn't need a brain to use this one, but it helped.

    * Brainstorm — Pascal-order PARGS (not CARGS)
    foo:	PARGS	par1.w,par2.l
    	move.w	par1(sp),d0
    	move.l	par2(sp),d1
    	rts
  4. Josy version banner printed to the console, reading Sozobon Assembler
    Help · captured under emulation
    1995

    Josy

    Volker Hemsen · AtariUpToDate

    A fork of Joe's Assembler (jas) that was distributed in the public domain.

    It added some FPU ops and 32 bit multiplies/divides.

    * Josy — Line-A needs # immediate
    	linea	#0
    	rts
  5. Avena Assembler screenshot
    Screen · captured under Falcon emulation
    1996 dialect soon

    Avena Assembler

    Avena (Jet / Fried: Martin Friedel, Michael Wiegers) · Demozoo #95575

    A demoscene production from Falcon sceners that launched with an as yet uncopied violet, magenta and cyan colour scheme. It burst onto the scene at Symposium 96, and impressed with a slick editor, multiple source buffers, source folding and configurable compile options.

    The demo version was not an assembler in its own right, but added some markup to the source code to allow for folding. Being a Falcon production, it gave you 768 pixels of blissful text space for editing. It also came with that essential 90s accesory - a built in calculator.

    Big logos. Edgy fonts. Swagger. Mark Williams dreamt of being this cool.

    * Avena — PART folding wraps a text section
    	PART 'main'
    	text
    	move.l	#42,d0
    	rts
    	ENDPART
    	end
1998+ Cross assemblers
  1. BEN / OVR as68 command-line help (sc68-mirror host build)
    Help · BEN / OVR as68 (host binary)
    1999 dialect soon

    as68 (BEN · OVR · PC cross)

    Ben / OVR & Ziggy Stardust / OVR (1991 core)

    Don't get confused with the same named old Alcyon assembler, this was the overlanders bringing their French touch to the cross assembler scene.

    Whilst Ziggy's original assembler was an early MS-DOS creation, Ben modernise things with a portable C code integrated with GNU tools to allow it to be run on a range of modern platforms.

    Macro syntax is Mot-flavoured and deliberately does not match Devpac. Assemble on PC, push flat binaries to real ST hardware, this was the new workflow for sceners heading into the new millennium.

    ; BEN as68 — brace macros (not Devpac endm / not GenST)
    testmac macro
    {
    	nop
    }
    	text
    start
    	testmac
    	rts
  2. GNU as plate with the GNU head
    Period plate: host CLI tool
    ~1998+

    GNU as (m68k)

    FSF · MiNT / mintelf ports (Flohr, Naumann, Rivière, Otto, Kropáček…)

    Mammoth toolkit that supports every piece of hardware under the sun, including our beloved 680x0. As sceners moved to developing atari prods on non-atari hardware, cross platform toolchains became the norm, and the GNU stuff was the big daddy. Downside - the most horrendous assembler syntax OF ALL TIME

    | GNU as — % register sigil, dotted .text
    	.text
    start:
    	move.l %d0,%d1
    	rts
  3. GAS --mri plate with the GNU head
    Period plate: host CLI tool
    ~1980s → GAS --mri

    GAS MRI / Microtec mode

    Microtec Research lineage · exposed today as GNU as --mri

    You want to be rolling with the Microtec Research ASM68K style syntax in the 2020s? GNU got chu you fam. With this GAS variation, you can write readable code again! No more % everywhere, just smooth 68k code.

    * MRI / GAS --mri — elsec (not else)
    Z equ 0
    	ifeq Z
    	nop
    	elsec
    	illegal
    	endc
  4. vasm module version banners
    Version · host binary
    ~2002–

    vasm (default)

    Volker Barthelmann · Frank Wille · sun.hasenbraten.de/vasm

    Volker and Frank are absolute kings of the cross-assembler scene, and their work took the world by storm. Their vbcc and vlink tools are popular and fast C compilers for retro machines, and their vasm assembler is the perfect backend. Supporting a wide range of architectures including our beloved atari platforms, vasm and its surrounding tools became a staple of the retro scene.

    * vasm Mot — db/dw/dl data aliases
    	text
    	db	$11,$22
    	dw	$3344
    	dl	$55667788
    	rts
  5. rmac command-line usage printed to the console
    Help · host binary (full Usage)
    2008 / 2011–

    rmac

    Landon Dyer → SubQMod → Shamus + GGN · rmac.is-slick.com

    Return of MADMAC. Return of MADMAC. You knew I'd be back!

    A classic is reborn. When old atari boy Landon Dyer released the source code for his old MADMAC assembler, little did he know what it would unleash. It first came to prominence in the Jaguar scene, where it was used to assemble code for the Jag's Tom and Jerry chips. Atari scene legend, GGN, later added support for atari TOS binary output and the scene clasped to their bosom and has never let go.

    ; rmac — .phrase / .long alignment pseudo-ops
    	.text
    	dc.b	1
    	.phrase
    	dc.b	2,3
    	.long
    	dc.b	4

We are still hunting disks and manuals for other atari assemblers like Easyrider, Hippo-C and your own weird and whacky favourites. If you are hoarding old atari assemblers in your barn, please get in touch and we will add them to the list.