ggn [Thu, 20 Jul 2017 09:21:20 +0000 (12:21 +0300)]
Various 020+ fixes. In brief, this commit fixes the following:
- Fix warning for \! inside string - we might be evaluating a macro so it's legal.
- Handle (Dn[.w][*scale],label[.l]) ea case.
- Enable scale value in ea to be expression (evaluated) besides constant.
- Fix for ([address[.wl]]). It seems that undefined symbols were not stored properly in eagen0.s (it used aNexpr instead of aNbexpr when storing base displacement).
- Fixes for fmove freg,freg (no size suffix) and ftst freg (no size suffix).
- fmovem now defaults to .x
- Fixed muls.l
Shamus Hammons [Thu, 20 Jul 2017 04:22:01 +0000 (23:22 -0500)]
Fix for bug #101 (bad macro handling).
Just when you thought it was safe to write macros with constants, up
pops a condition you thought was dead and buried yet lurches inexorably
towards your code and causes it to segfault. As it turns out, it was
bad token stream parsing that caused this, with a constant masquerading
as a STRING token being the particular mischief maker. The code that
was in place was an awful mess of horrible garbage code that wasn't
even being used anymore--so that crap is gone, and replaced with
something more (I hope) sane and maintainable. I think that the code
that was there survived purging for so long because nobody really
understood it; now that I understand it, I can't believe that it was
written in the first place (to be fair, some of it was patching done by
me, though the bulk of awfulness didn't come from that code). Onward
and upward...
Shamus Hammons [Wed, 19 Jul 2017 20:27:06 +0000 (15:27 -0500)]
Fixed IREPT blocks to not corrupt memory on 64-bit hosts.
Shamus Hammons [Sat, 24 Jun 2017 00:58:41 +0000 (19:58 -0500)]
Minor code cleanups.
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!
ggn [Mon, 8 May 2017 08:16:18 +0000 (11:16 +0300)]
(c) message in header files and doc mini adjustments.
Shamus Hammons [Sun, 7 May 2017 02:07:36 +0000 (21:07 -0500)]
Code cleanup from last patch, also, version bump for same. :-)
ggn [Sat, 6 May 2017 15:00:34 +0000 (18:00 +0300)]
Increase line lengths for listing and line parser.
ggn [Fri, 5 May 2017 14:51:11 +0000 (17:51 +0300)]
Initial commit for 68020/30/40/60/68881/68882/68851 support.
Shamus Hammons [Fri, 5 May 2017 13:33:31 +0000 (08:33 -0500)]
Version bump for last commit. :-)
ggn [Thu, 4 May 2017 16:53:48 +0000 (19:53 +0300)]
Fix for bug where in alcyon mode the tokenizer would read past the end of the line.
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.
Shamus Hammons [Thu, 27 Apr 2017 13:14:08 +0000 (08:14 -0500)]
Version bump for last commits. :-)
ggn [Thu, 27 Apr 2017 07:51:48 +0000 (10:51 +0300)]
Doc fixes/updates.
ggn [Thu, 27 Apr 2017 07:24:37 +0000 (10:24 +0300)]
Added -l* to enable listing without pagination. Fix bug where a wrong malloc would lead to explosions with listing enabled.
Shamus Hammons [Tue, 25 Apr 2017 03:30:42 +0000 (22:30 -0500)]
Fixed code to remove warnings. Inching closer towards zero. :-)
Shamus Hammons [Fri, 21 Apr 2017 21:36:06 +0000 (16:36 -0500)]
Minor tweaking from last round of patching, version bump. :-)
ggn [Fri, 21 Apr 2017 19:58:11 +0000 (22:58 +0300)]
Much better implementation for A8 strings - introduced a new token called STRINGA8. Also, all this time we forgot to update mntab :).
Shamus Hammons [Fri, 21 Apr 2017 19:31:10 +0000 (14:31 -0500)]
Possible fix for bug #92.
Shamus Hammons [Fri, 21 Apr 2017 18:59:50 +0000 (13:59 -0500)]
Version bump for last commit. ;-)
ggn [Fri, 21 Apr 2017 11:49:33 +0000 (14:49 +0300)]
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).
Shamus Hammons [Thu, 20 Apr 2017 21:09:14 +0000 (16:09 -0500)]
Tweaks to new 6502 assembler (ggn), added dependency info for makefile.
Shamus Hammons [Thu, 20 Apr 2017 20:41:10 +0000 (15:41 -0500)]
Add missing files. I hate when that happens! >:-U
Shamus Hammons [Thu, 20 Apr 2017 19:29:31 +0000 (14:29 -0500)]
Code cleanup, version bump for last commit. :-)
ggn [Wed, 19 Apr 2017 16:42:26 +0000 (19:42 +0300)]
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.
Shamus Hammons [Wed, 19 Apr 2017 02:01:00 +0000 (21:01 -0500)]
Version bump for last patch. :-)
ggn [Tue, 18 Apr 2017 14:22:48 +0000 (17:22 +0300)]
Fix movep size optimising when +o3 is enabled. Show available optimisations in the usage message.
Shamus Hammons [Tue, 18 Apr 2017 14:18:04 +0000 (09:18 -0500)]
Update makefile to fix bug #89.
Shamus Hammons [Sun, 16 Apr 2017 17:53:35 +0000 (12:53 -0500)]
Fix for bug #88 (allow DS in all sections).
Shamus Hammons [Sat, 15 Apr 2017 01:05:08 +0000 (20:05 -0500)]
Version bump for last commit. :-)
ggn [Fri, 14 Apr 2017 21:47:23 +0000 (00:47 +0300)]
Make .incbin and object writing work ok under MinGW.
Shamus Hammons [Fri, 14 Apr 2017 20:52:31 +0000 (15:52 -0500)]
ELF support for RMAC.
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.
Graeme Hinchliffe [Tue, 21 Jun 2016 08:01:12 +0000 (09:01 +0100)]
Improved indexed reg error
- Added more helpful Indexing error message
- Added error condition for EQUR Indexing errors
- Updated patch # and copyright year
Shamus Hammons [Tue, 27 Sep 2016 15:46:14 +0000 (10:46 -0500)]
Version bump. :-)
ggn [Tue, 13 Sep 2016 16:48:44 +0000 (19:48 +0300)]
.incbin now uses the same directory sets as .include. Also some small cosmetic fixes.
Shamus Hammons [Thu, 22 Sep 2016 15:53:23 +0000 (10:53 -0500)]
Version bump for last patch. :-)
ggn [Tue, 13 Sep 2016 08:59:38 +0000 (11:59 +0300)]
Fixed bug when expanding macros with comments that have @, \, etc.
Signed-off-by: Shamus Hammons <jlhamm@acm.org>
Shamus Hammons [Thu, 22 Sep 2016 15:44:16 +0000 (10:44 -0500)]
Fix for bug #81. Thanks to ggn for the patch!
Shamus Hammons [Tue, 13 Sep 2016 03:27:30 +0000 (22:27 -0500)]
Version bump. :-)
ggn [Wed, 7 Sep 2016 11:18:24 +0000 (14:18 +0300)]
Added .opt directive with similar syntax to command line. Example syntax: '.opt "~all" "+o1"' etc.
Signed-off-by: Shamus Hammons <jlhamm@acm.org>
Shamus Hammons [Tue, 13 Sep 2016 02:34:19 +0000 (21:34 -0500)]
Version bump for last commit. ;-)
ggn [Wed, 7 Sep 2016 10:00:55 +0000 (13:00 +0300)]
Removed -w flag, added +o[n], ~o[n] switches to control individual optimisations on/off, as well as +oall, ~oall for all optimisations.
Signed-off-by: Shamus Hammons <jlhamm@acm.org>
Shamus Hammons [Tue, 13 Sep 2016 01:58:37 +0000 (20:58 -0500)]
Fix for bug #77. Thanks for ggn for reporting. :-)
Shamus Hammons [Tue, 13 Sep 2016 01:37:51 +0000 (20:37 -0500)]
Fix for bug #78: Thanks to ggn for reporting and supplying the patch.
Bug fix for .w access for alcyon target, added new optimisation that
converts 0(ax) to (ax).
Shamus Hammons [Tue, 13 Sep 2016 00:16:03 +0000 (19:16 -0500)]
Small fix to make compilation C99 compliant.
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, 9 May 2016 18:13:41 +0000 (13:13 -0500)]
Possible fix for bug #72 (no warning on unclosed .ifs).
Shamus Hammons [Sun, 8 May 2016 13:56:55 +0000 (08:56 -0500)]
Version bump. Thanks to ggn for the report & patch (bug #73)!
ggn [Wed, 27 Apr 2016 19:58:42 +0000 (22:58 +0300)]
When selecting ST .o output (-fa), don't write a .prg but an object file instead.
Shamus Hammons [Fri, 15 Apr 2016 14:56:45 +0000 (09:56 -0500)]
Fix for bug #71 (thanks to ggn for reporting! :-)
Shamus Hammons [Thu, 7 Jan 2016 13:35:17 +0000 (07:35 -0600)]
Hopefully final fix for bug #68 (crash on ARM).
Shamus Hammons [Thu, 24 Dec 2015 20:36:53 +0000 (14:36 -0600)]
Possible fix for bug #68 (crash when running on ARM).
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!
Shamus Hammons [Tue, 17 Nov 2015 20:01:56 +0000 (14:01 -0600)]
Bump version #.
ggn [Tue, 17 Nov 2015 16:59:56 +0000 (18:59 +0200)]
.error and .warn directives implemented.
ggn [Tue, 17 Nov 2015 17:05:00 +0000 (19:05 +0200)]
Moved some messages from -v to -x
ggn [Tue, 17 Nov 2015 17:19:39 +0000 (19:19 +0200)]
The rest of the .PRGFLAGS patch. Sorry!
Shamus Hammons [Tue, 17 Nov 2015 13:42:32 +0000 (07:42 -0600)]
Bump version #.
ggn [Mon, 16 Nov 2015 11:53:02 +0000 (13:53 +0200)]
Extended switch -s to also warn about automatically applied 68000 optimisations. Added switch -w to turn off all automatic optimisations.
ggn [Mon, 16 Nov 2015 11:54:03 +0000 (13:54 +0200)]
TEXT/DATA/BSS sizes printed at the end of assembly only when -v is invoked.
ggn [Mon, 16 Nov 2015 11:49:53 +0000 (13:49 +0200)]
ASCII art logo, because why not.
ggn [Mon, 16 Nov 2015 11:39:50 +0000 (13:39 +0200)]
Fix for assembly getting stuck in an infinite loop when a INCLUDEd file inside an if/endif statement contains unbalanced if/endifs.
Shamus Hammons [Sat, 14 Nov 2015 21:24:43 +0000 (15:24 -0600)]
Bump version #, also create "docs" subdir for documentation. :-)
ggn [Sat, 14 Nov 2015 17:57:21 +0000 (19:57 +0200)]
New directive: PRGFLAGS sets GEMDOS PRG flags (such as Fastload, etc)
Shamus Hammons [Sat, 14 Nov 2015 16:42:53 +0000 (10:42 -0600)]
Bump version #.
ggn [Fri, 13 Nov 2015 08:27:46 +0000 (10:27 +0200)]
Fix for initial plus in expression throwing a "bad expression error"
ggn [Wed, 11 Nov 2015 13:43:34 +0000 (15:43 +0200)]
Fix segfaulting when building .prg target on linux and cygwin.
Shamus Hammons [Wed, 11 Nov 2015 03:44:44 +0000 (21:44 -0600)]
Tentative fix for bug #55. Thanks to ggn for reporting!
Shamus Hammons [Wed, 11 Nov 2015 02:42:11 +0000 (20:42 -0600)]
Bump version #.
ggn [Tue, 10 Nov 2015 20:46:53 +0000 (22:46 +0200)]
New keyword ^^ABSCOUNT counts bytes defined in current .abs section.
ggn [Tue, 10 Nov 2015 09:06:38 +0000 (11:06 +0200)]
Re-introduced .abs mnemonic (it was renamed to .offset for some reason) like madmac.
Shamus Hammons [Tue, 10 Nov 2015 19:38:30 +0000 (13:38 -0600)]
Fix for bug where ^^FOO mnemonics were parsed incorrectly.
Shamus Hammons [Tue, 10 Nov 2015 00:35:20 +0000 (18:35 -0600)]
Complete MADMAC manuals. Thanks to ggn for contributing this!
ggn [Mon, 9 Nov 2015 21:02:48 +0000 (23:02 +0200)]
Change extension to .prg when invoked with -p.
Shamus Hammons [Tue, 10 Nov 2015 00:30:16 +0000 (18:30 -0600)]
Bumping the patch level for the last commit. :-P
ggn [Mon, 9 Nov 2015 21:03:47 +0000 (23:03 +0200)]
Fix for bug #51. Apparently 10 tokens weren't enough for modern programming!
Shamus Hammons [Sun, 1 Nov 2015 15:30:22 +0000 (09:30 -0600)]
Removed generated file from project.
Shamus Hammons [Sun, 1 Nov 2015 15:14:52 +0000 (09:14 -0600)]
Fix for bug #46 (thanks to ggn for reporting!).
Shamus Hammons [Sun, 1 Nov 2015 14:53:46 +0000 (08:53 -0600)]
Bump version # again. :-)
ggn [Sat, 31 Oct 2015 13:36:34 +0000 (15:36 +0200)]
Force -fa when user passes -p.
Shamus Hammons [Sun, 1 Nov 2015 14:44:51 +0000 (08:44 -0600)]
Bump version number.
ggn [Sat, 31 Oct 2015 11:02:40 +0000 (13:02 +0200)]
A few compiler warnings pacified.
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)
ggn [Thu, 22 Oct 2015 16:41:58 +0000 (19:41 +0300)]
Fixed compilation on MinGW.
Shamus Hammons [Wed, 7 Oct 2015 16:53:50 +0000 (11:53 -0500)]
Fix NULL pointer dereference bug.
Shamus Hammons [Wed, 7 Oct 2015 15:44:48 +0000 (10:44 -0500)]
Fix for bug #34 (equated reg in 1st operand of MOVEI).
Thanks to Linkovitch for reporting!
Shamus Hammons [Wed, 7 Oct 2015 15:21:55 +0000 (10:21 -0500)]
Fix for bug #33. Thanks to Linkovitch for reporting!
Shamus Hammons [Wed, 7 Oct 2015 03:23:59 +0000 (22:23 -0500)]
Fixed WARNING macro to be system agnostic, added doco for -p switch.
ggn [Sun, 30 Aug 2015 18:12:34 +0000 (21:12 +0300)]
Visual Studio 2015 project files. A few warnings about unused variables fixed.
Signed-off-by: Shamus Hammons <jlhamm@acm.org>
Shamus Hammons [Wed, 7 Oct 2015 02:09:15 +0000 (21:09 -0500)]
Applied patches from ggn for bugs #38, 40, & 41. Thanks!
Shamus Hammons [Wed, 4 Mar 2015 03:12:13 +0000 (21:12 -0600)]
Fix for incorrect PACK/UNPACK generation. Thanks to A. Seed for reporting.
Shamus Hammons [Thu, 19 Feb 2015 16:04:29 +0000 (10:04 -0600)]
Fix for bad division in expressions. Thanks to A. Seed for reporting!
Shamus Hammons [Thu, 19 Feb 2015 14:56:14 +0000 (08:56 -0600)]
Fix for "*" getting bad section attributes, reported by A. Seed.
Shamus Hammons [Sun, 1 Feb 2015 03:16:15 +0000 (21:16 -0600)]
Removed spurious printf.
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, 16 Jan 2015 17:16:33 +0000 (11:16 -0600)]
Misc. whitespace cleanups, removal of unneeded code.
Shamus Hammons [Fri, 16 Jan 2015 14:24:24 +0000 (08:24 -0600)]
Fix for spurious 'undefined register equate' error.
Shamus Hammons [Tue, 13 Jan 2015 17:06:11 +0000 (11:06 -0600)]
Fixed bug with -l switch.
Turns out that the tokenClass buffer was too small, leading the eval()
function to dip into random memory. *facepalm*
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. :-/