I've been taste-testing assemblers for '816 and so far every one I've tried (with a few lines of assembly) has at least something wrong with it (or my understanding of how to use it, more likely). Please correct any misconceptions/misunderstandings or add suggestions (I will try to keep this message up to date as much as possible)
I am sticking with free (as in freedom and beer) tools as I need source access and no legal encumbrances. I don't mind paying for software, but it had better be amazing. An assembler that works as intended is hardly amazing (although looking at a lot of modern software, maybe it is...)
I am not bothering with tools I can't easily compile on a standard linux box. 5 minutes of my time and into the trash bin. I will not use tools written in python, java, or anything that changes or requires obscure knowlege, megabyte+ downloads, build systems with their own names, or lingo (5 min limit applies. What the fuck is lenningen? Never mind, I
really don't want to know) except possibly GForth or Common Lisp. Also nothing that requires its own distribution/update mechanisms, or loads 100MB of crap like Electron. In other words, C, C++ (yuck), assembly, CL, Forth.
WDC tools*
Windows only. Registration/crippleware is adding an insult to injury.WTF. With $0.30 ARM chips floating around and things like $3.00 ESP32 systems with everything on-board, are they completely bonkers? As for winders, maybe a crippled version works in Wine, but I have enough layers of scripting to assemble, add headers and pump over a serial port via screen that F**K NO.
64tass -- spoiler...THE WINNER!* @b @w @l indicate operand size (thanks, thedrip). Good listing with hex data.
This one is at the top of my list. It has a number of amazing features, similar to my favourite x86 assembler FASM.
See post from soci for details on controlling addressing modes and size
http://forum.6502.org/viewtopic.php?f=2&t=5834&start=15xa65* Does not generate a listing, and the disassembler does not (yet?) support '816. That means I have to work blindfolded (I am one of those people who likes to see what the assembler/compiler is generating in a listing - especially for '816!).
* Somewhat jarring syntax (.byt instead of a db or even .byte) and a C-like preprocessor (although some would think of it as a feature, not a great fan).
naken_asmSeems to work (and supports dozens of CPUs). Good listings (cycle counts not implemented but at least considered for the future)
Uses suffixes like lda.b to indicate operand size. I can't remember why I stopped using it... I need to look at it some more.
ca65Works independently or as part of cc65. I haven't tried it, but drogon swears by it:
viewtopic.php?f=2&t=5834&start=13Merlin32Apple 2GS focused. After a cursory examination, it looks good but does it output plain binaries? Worth a look.
https://www.brutaldeluxe.fr/products/crossdevtools/merlin/AcmeSeems pretty good, limited to 64K. Worth a look
https://sourceforge.net/projects/acme-crossass//