dagenius wrote:
What would be the best assembler to use for the code? I had a look at the ASxxxx and from looking at the docs it's hard to tell what features it has. I'm looking for something that supports macros and works on Windows 10 or Ubuntu 18.04. Does anyone have any suggestions?
As Garth points out, there are a zillion 6502 assemblers that meet these criteria. It probably doesn't matter too much which one you pick, actually, since it's generally not difficult to switch to another one if the one you're currently using doesn't support the features you want. (In 8bitdev I switched from ASxxxx to Macroassembler AS a while back, and even that, with not only significant syntax changes but also major build system changes and writing new tools for the different output format, took me only a day or so.) In fact, it may be worth trying out several over time just to gain the valuable experience and knowledge that comes from having used several different assemblers.
The things you'll want to think about include:
- Does it support the build platform you prefer to use (Unix, Windows, whatever), or do you have the other tools you need for the build platform on which it runs?
- If you have existing code, does the assembler support the assembler syntax used by that code? (For example, does it require you use or not use a colon after a symbol name when declaring a symbol, or let you use either option? Does it support the pseudo-ops the code uses? What macro and function capibilities does it offer to define new syntax that could be used to make it compatible with your existing code?
- Does it provide the output format you need, or can you easily find or write a tool to generate the output format you need?
- Who else do you know that's using it, and are there users of it in whatever forums you frequent? Especially when you're a beginner, it's helpful to have a source of support.
- Does it support the CPUs you're interested in, or may be interested in in the future?
- Does it have macros and other useful features?
My primary reason for starting with
ASxxxx was multiple CPU support (I need at a minimum 6502, 6800, 6809 and Z80), and I also had thought that separate assembly and linking support would be useful. The latter turned out to be dead wrong (for various reasons I won't get into) and I switched to
The Macroassembler AS for better features and whole-program assembly. (It's a bonus that it supports even more CPUs.) But if you're not looking for the kind of multiple-CPU support that I required, you have a much broader range of options than I did.
Again, though, it doesn't matter that much. Rather than worrying about making the perfect decision now (which you won't be able to do anyway), use whatever seems best at the moment and be prepared to switch when it becomes necessary or convenient.