Shamus Hammons [Sat, 24 Jun 2017 00:03:24 +0000 (19:03 -0500)]
Fixed bad char reporting, revamp of the error/warning system.
Somehow I put a unicode character in my assembly source and RMAC then
barfed up an internal error #2. Chasing this down, I finally determined
that the debug traces weren't lying to me and the input file had a
problem. However, RMAC wasn't reporting the illegal character correctly
either, so that was fixed (who knew that gcc was silently killing bit 7
of chars now?). I also realized that having five separate functions for
reporting errors (and the cruft of using those crippled things) was just
a wee bit insane, so now we have proper variable argument error and
warning functions (they can be used just like a printf). Enjoy!
Shamus Hammons [Tue, 2 May 2017 18:02:47 +0000 (13:02 -0500)]
Fix for bug #77 (ds with negative numbers).
Last time it didn't work because our target number was an unsigned int
(as opposed to a signed int). So now that we know, we have a proper
check for it now.
6502 mode: fix clearing of its RAM space with each .6502 invocation. Also fixed chptr resetting with each .6502 invocation. Also in this mode: dc.b strings with single quotes will get encoded to Atari 800 internal encoding (hardcoded mode for now, can be extended).
6502 support added back from original Madmac sources!
- Source fixed to work with current rmac implementation
- Removed ultra kludgy output mode and replaced it with .com/.exe./.xex output module (activated using -fx)
- Added #< and #> to give low and high bytes off an immediate word
- Included tester in "tests" folder.
- Updated docs.
ggn deserves most of the credit for this, as my job was going through
and tossing out the stuff that wasn't needed. ;-) There might be some
ELFish things that still need fixing; time, as usual, will tell.
This probably won't help on Visual Studio, unless you can tell the build
system there to use a C99 compliant compiler (MS's track record in this
area is abysmal).
Shamus Hammons [Sun, 15 May 2016 23:25:37 +0000 (18:25 -0500)]
Fix for bug #67 (thanks to ggn for reporting!).
Turns out the tokenizer would not properly tokenize DOTx constructs
unless they were hanging off the end of a symbol. This should fix that
once and for all.
Shamus Hammons [Mon, 7 Dec 2015 03:29:06 +0000 (21:29 -0600)]
Removed naked 'abs' (sans leading dot) from mntab.
The problem with having .abs *and* abs (as an alternate) is that the
naked abs conflicts with the RISC asm instruction ABS R#. There's no
good way to detect this ahead time, and it's a bad idea to do so anyway.
So don't do it!
ggn [Fri, 30 Oct 2015 17:30:21 +0000 (19:30 +0200)]
Fix for bug that happened when a called macro inside an if/endif block would have a syntax error: the assembler would get stuck in an infinite loop (Error: mismatched .endif)
Shamus Hammons [Sun, 1 Feb 2015 02:49:38 +0000 (20:49 -0600)]
Fixed a nasty bug that dropped symbols that shouldn't have been.
This stemmed from the fact that EQUR symbols somehow made it on to the
symbol declaration list. If such symbol was later .equrundef'd, it would
find it's way back onto the the sdecl list *twice*, with the result
that any symbols that came after it would be summarily discarded into
the ether. Really, really bad mojo.
Shamus Hammons [Fri, 14 Nov 2014 04:26:00 +0000 (22:26 -0600)]
Fix for bug #29.
Whoever put this stuff together made a HUGE mistake in its alignment
pseudo-ops. Basically, before this fix, alignment directives in a RISC
section had absolutely NO guarantees of efficacy. This is what happens
when you bodge things together without extensive testing! Note that if
you had some RISC code that you had to wave a dead chicken at to get it
to work, it will probably not work any longer as the assembler will now
do what you tell it to. ;-)
This is a big enough change that it merits a minor version bump; we're
now at 1.3.0. :-)
Shamus Hammons [Sat, 17 May 2014 20:56:15 +0000 (15:56 -0500)]
Fixed word reversed fixup problem.
For some reason, there was code in several places that marked fixups/symbols
as belonging to a RISC section when it was clearly not the case. As a result,
it caused serious problems by reversing words in 68K sections just because a
symbol had been seen in a MOVEI # statement in a RISC section. Probably not
the last nasty surprise in this pile of spaghetti. :-/