Hi guys
Ages (years) ago I started writing my own 6502 cross assembler, mainly targetd at the WD's 65C02 for my own projects. The 'feel' was initially based off the assembler in the BBC Micro in the 80's, although I've since moved away from that and made it more conformist to what most people expect (using .org to set the assembly address, semi colon for comments, labels with <name>: and $ as the default hex prefix, etc.).
I then left it for quite a long time, picked it up, put it down again and then picked it up again. During that time I converted it to command-line only, rewrote it from the ground up as it was a tad messy, and finally moved it from .NET Framework to .NET Core 5 (so I can later port it to linux - hopefully).
It's mostly complete now, with me clearing up bugs, adding finishing touches and now expanding the supported assembler-base commands.
Supported capabilities listed here:
https://6502ca.net/Now, part of the reason I'm posting this is to get peoples' over-all opinion, but also to ask for any additional suggestions for commands and for a review of the IF command that I've just implemented (based on a previous suggestion from Garth a while back).
There are two versions of IF:
Code:
IF <(!)flag or operator> JUMP <address>
IF <(!)flag or operator> BEGIN
<some code>
END
The operator comparison is based on the status flags set by CMP, CPX, CPY.
A full description can be found here (scroll down to the IF command), along with the code assembled:
https://6502ca.net/index.php?Commands.
If anyone is interested in taking it for a test run you can download the setup EXE (windows 10 & 11 tested, windows 7 tested but needs SP1 and to be fully patched):
https://6502ca.net/index.php?Downloads (also has a link for downloading the PDF manual).
You can also download a language XML file for notepad++ from:
https://6502ca.net/index.php?EditorOther pages on the site show more information on command-line switches, but basically you can just type (once installed): 6502ca <filename> and it will attempt to assemble your source code. If you don't put a file extension then it assumes '.6502ca'.
If anyone spots any bugs then I'd be interested to know as I haven't had anyone put it through it's paces - just me testing.