On Wed, 18 Feb 2026 21:23:41 -0500 (EST) Will Cooke via cctalk <[email protected]> wrote:
> Here is a link to a family of assemblers that you should look at. I > have no idea if the syntax will match, but I know the author goes to > a good deal of pain to match manufacturer syntax for most of them. > In the limited use I have made of a few of them, they have served me > well. The author is VERY responsive to bug fixes and they are still > under active development. http://john.ccac.rwth-aachen.de:8000/as/ That's two votes for as/asl then, thanks. Thank you for all the replies so far. I've loved working in assembler since first touching a Z80 at school in 1982, but moving between different processors (particularly older ones) has always been a bit of a jarring experience because of the tools. I think "assemblers, yeah, they're a solved problem, a mature set of tools" and then I realise that, in many cases, "mature" means "rotten" and "unmaintained"! The first assembler I looked at for this was Ken Stauffer's as31, despite it not having a macro facility: as Richard noted, macro processing can easily be a bolt-on if necessary. However, it is written in something like C90, and gcc threw so many warnings that I feared it wouldn't produce an executable. When it did, I realised that, even changing "db" to ".byte" throughout wasn't going to get my code to assemble. The parser gets itself confused between binary and hexadecimal constants if you use suffixed numbers. What is "0bch"? as31 can't work it out. Wasn't going to spend time doing wholesale replacements for that and its quirks of single/double quoting. Today, I'm working with W. W. Heinz's asem51, which is freeware, not FOSS, but it has "standard" directives for specifying data and it rebuilt a correct ROM binary for me with just a single textual change. That is enough to keep me on track while I wrangle the code for now. As far as emulator/simulators go, I've started with Jari Komppa's emu8051, which I will no doubt outgrow, but it has a really simple ncurses interface that allows me to jump around the code and try out various routines to check my understanding of 8051 behaviour. Case in point: there was a table-searching routine which was supposed to return Z or NZ for a result, but it was looping with DJNZ which, in my Z80 brain, will always flag Z when it runs to completion. Aha! On the 8051, DJNZ does not affect flags - weird! I'll take a look at Seemanta Dutta's gSim51 at some point. I braved the popups of Sourceforge, ignored its "alpha" status and the fact it was last updated 13 years ago and downloaded it. Loving the 8051 and this VT320 code so far. Thank goodness for the availabilty of schematics and ancient datasheets. Regards, Paul
