cleaned up previous fix
Incompatible change
Thanks for reporting this. It looks like I created this bug in r419. It should be fixed in r424, please re-test.
added regression test for previous fix
fixed bug introduced in rev 419 (see ticket #25, thanks for reporting!)
refactored string handling
refactored !bin, !fill and !align a bit
refactored last commit
now ignores BOM at start of source file
fixed bug where "!skip" areas at start/end were included in output file
fixed bug where a segment warning could cause another segment warning to disappear
refactored "segment list" functions
moved segment checks to final pass, made v0.98 force --strict-segments
throwing of some errors can now be delayed until symbol changes are done
small fix so "label" and "label=*" throw the same error if pc undefined
a bit of refactoring concerning "unpseudopc"
fixed bug in anonymous backward labels
tiny refactoring
added code so release 0.98 will always use the smallest possible addressing mode
added dec() and hex() functions
Yes, that is to be expected: "-Wno-old-for" does the same as "--dialect 0.94.8", and that will disable string symbols because they were introduced in release 0.97, much later. The "--dialect" switches are meant for assembling older sources and shouldn't really be used with new projects. Now obviously it would be possible to change the "support older versions" mechanism to enable things like combining "all the features of 0.98" with "use the ancient !for syntax" - but I would really prefer to keep...
added missing sanity check
added code to tell "symbol already defined" (in this pass) and "symbol
"symbol twice" error now outputs location of previous definition,
refactored "macro twice" code. messages about initial definitions and macro
refactored error/warning stuff
refactored program counter / outbuffer stuff
finally removed the 64 KiB limit, the outbuffer size is now determined at
writing to output buffer now only happens in final pass
added "output pass", to ease adding of new features.
rearranged struct, no change in functionality
in future versions, program counter in pseudopc blocks no longer silently wraps around to zero
renamed struct component, no change in functionality
will be fixed in release 0.98 (it's already fixed, but because of backward compatibility, the old behavior is still used by default. you can test the new behavior using "--dialect future")
should be fixed now
I haven't written the docs for that feature yet, but if you compile ACME from source, you can already test it: Basically ?(SYMBOL) in the source code will be replaced with the contents of SYMBOL. So you'd pass the macro name as a string and then use the syntax given above to insert that string where it is needed. ...but please do not try to insert colons, braces, newlines etc. using this method.
fixed bug in "file too large for apple format" message
more test files for symbol substitutions
changed experimental feature "dynamic symbol names" to "dynamic <ANYTHING>"
added test files for symbol substitutions
renamed some functions (to be moved to a separate file)
in report file: macros are expanded, everything in loops is suppressed
got rid of input_now pointer
replaced known bugs in report generator code with new and improved ones
"input_now" ptr is no longer exported
yet more refactoring
more refactoring of input
moved filename-used-for-resolving-relative-paths out of input struct
renamed fn and moved between files, no change in functionality
moved enum from .h to .c file
small fix, added "const"
inputstate enum is now only used in input.c
more refactoring of input
fixed bug where "--dialect future" with file refs in macros could cause crashes
started refactoring input
added REC pinout info to library
in addition to "-DSYMBOL=VALUE", now "-D SYMBOL=VALUE" is also accepted
added examples to docs on how to iterate over list args in macros
moved "GotByte" var to input.{ch}
This works since the 0.97 release: !macro example1 @listarg { !for @index, 0, len(@listarg)-1 { !warn @listarg[@index] } } +example1 [2,3,5,7] ; <- macro will iterate over list items +example1 "string" ; <- macro will iterate over characters If you compile from source, you can also use this newer, simpler syntax, which is not in the docs yet: !macro example2 @listarg { !for @item in @listarg { !warn @item } } +example2 [2,3,5,7] ; <- macro will iterate over list items +example2 "string" ; <- macro...
This works since the 0.97 release: !macro example1 @listarg { !for @index, 0, len(@listarg)-1 { !warn @listarg[@index] } } +example1 [2,3,5,7] ; <- macro will iterate over list items +example1 "string" ; <- macro will iterate over characters If you compile from source, you can also use this newer, simpler syntax, which is not in the docs yet: !macro example2 @listarg { !for @item in @listarg { !warn @item } } +example2 [2,3,5,7] ; <- macro will iterate over list items +example2 "string" ; <- macro...
Thanks for the suggestion. I'm working on a feature for the next version that will allow something like this (in addition to some other things).
just some comments
cleaned up error messages
added another test file and did a bit of cleanup
moved code around, no change in functionality
fixed Makefile for MingW compiler
changed some longs to ints because using 64 bits is overkill
a bit of cleanup
added ugly kluge to fix ugly limitation in RISC OS version
small fix concerning pass numbers
more cleanup
tweaked pathname parsing for Amiga, DOS and RISC OS
fixed example programs to not throw warnings
small change to prepare for new feature
next version's filespecs will be relative to current file for output files as well.
added check for absolute paths so current dir is not used as prefix
added more error checking when writing files
search paths (given via -I) are now also displayed in error messages.
more cleanup, needed for next change
improved "macro twice" error output and did some cleanup...
Un-pseudopc-operator '&' can now be applied to all address symbols, not only
more cleanup
fixed bug introduced in previous commit
fixed a bug in "unpseudopc" operator "&" and did some cleanup
another tiny bit of cleanup
more cleanup and preparations for new features
added another choice for "--dialect"
added test files for "--dialect", a bit of cleanup
fixed a bug and added more test files
two more test files and a tiny bit of cleanup
fixed bug where labels could be used before pc definition,
more cleanup
more test files
forgot test files
fixed two bugs, added test files, did cleanup
more cleanup
more automatic testing
fixed a bug and added test files
added a few more tests and Makefiles to automate them