2012-02-27 21:14:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
ACME
|
|
|
|
|
|
|
|
...the ACME Crossassembler for Multiple Environments
|
|
|
|
|
|
|
|
--- change log ---
|
|
|
|
|
|
|
|
|
|
|
|
This text only contains descriptions of changes independent of the
|
|
|
|
platform used. There should be another help file in this archive
|
|
|
|
outlining the platform specific changes.
|
|
|
|
|
|
|
|
|
2020-06-28 18:56:55 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.97
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
FINALLY strings can be assigned to symbols!
|
|
|
|
"anything in double quotes" is a string, while characters in
|
|
|
|
single quotes are, just as before, immediately converted to their
|
|
|
|
character code. Go and read "docs/Upgrade.txt" to learn about
|
|
|
|
compatibility issues.
|
|
|
|
Added backslash escaping in all string literals:
|
|
|
|
\0 is a null byte, \t is a TAB, \n is a line feed, \r is a
|
|
|
|
carriage return, \" is a double quote, \' is a single quote and
|
|
|
|
\\ is a backslash. Go and read "docs/Upgrade.txt" to learn about
|
|
|
|
compatibility issues.
|
|
|
|
Added "--dialect" CLI switch:
|
|
|
|
Because string symbols and backslash escaping introduce a few
|
|
|
|
incompatibilities to older versions, ACME can now be told to mimic
|
|
|
|
the behavior of older versions. So it's still possible to assemble
|
|
|
|
older sources.
|
|
|
|
Added lists:
|
|
|
|
Lists can be used to pass an arbitrary number of arguments to
|
|
|
|
macros, or to store any number of items (including other lists) in
|
|
|
|
a single symbol. Example: my_list = [1, 2, label, "string", 9]
|
|
|
|
Added "len()" operator:
|
|
|
|
This returns the number of elements in a string or list.
|
|
|
|
Added "[]" operator (for indexing):
|
|
|
|
This returns a single element from a string or list. Negative
|
|
|
|
indices are supported as well, they access the string/list from
|
|
|
|
the other end. Examples: a = my_list[2] b = my_string[-1]
|
|
|
|
Added "&" operator:
|
|
|
|
This operator converts labels or the program counter from its
|
|
|
|
value inside a "!pseudopc" block to the value outside of that
|
|
|
|
block. Thanks to markusC64 for the suggestion!
|
|
|
|
Added "!while {}" pseudo opcode.
|
|
|
|
Added "else if", "else ifdef" and "else ifndef" possibilities.
|
|
|
|
Added "M65" cpu:
|
|
|
|
This instruction set includes the MEGA65 extensions, namely 32-bit
|
|
|
|
pointers and 32-bit data operations using prefix bytes.
|
|
|
|
Added "NMOS6502" as an alias for "6510" cpu.
|
|
|
|
Improved NMOS6502/6510 mode:
|
|
|
|
DOP and TOP can now also be written as NOP.
|
|
|
|
Improved 65816 mode:
|
|
|
|
MVN and MVP can now also be written with '#' before arguments.
|
|
|
|
Added "--test" CLI switch:
|
|
|
|
This is for people who want to help test experimental features.
|
|
|
|
Improved error messages:
|
|
|
|
"Garbage data at end of statement" now includes the unexpected
|
|
|
|
character.
|
|
|
|
"Symbol not defined" is only output once per symbol.
|
|
|
|
Added warning:
|
|
|
|
ACME complains about binary literals with an "unusual" number of
|
|
|
|
digits. Thanks to groepaz for the suggestion!
|
|
|
|
The warning can be disabled using the "-Wno-bin-len" CLI switch.
|
|
|
|
Added warning:
|
|
|
|
All mnemonics without indirect addressing now complain about
|
|
|
|
unneeded parentheses.
|
|
|
|
Fix: Characters are now unsigned (had been architecture-dependent).
|
|
|
|
Improved error handling of "--cpu" and "--format" switches.
|
|
|
|
Added opcode table for NMOS6502 cpu to docs.
|
|
|
|
Added some test sources.
|
|
|
|
Fixed some minor bugs no-one ever seems to have encountered.
|
|
|
|
Rewritten "docs/Upgrade.txt".
|
|
|
|
|
|
|
|
|
2020-04-14 00:28:31 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.96.5
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Allowed C++-style comments via "//". Thanks to awsm for the
|
|
|
|
suggestion (and please accept my apologies for taking so long to
|
|
|
|
release this)
|
|
|
|
Added "--ignore-zeroes" CLI switch. This disables the "leading zeroes
|
|
|
|
determine number size" algorithm. Thanks to groepaz for the
|
|
|
|
suggestion.
|
|
|
|
Added "--strict-segments" CLI switch. This changes warnings about
|
|
|
|
overlapping memory segments into errors. Thanks to groepaz for the
|
|
|
|
suggestion.
|
|
|
|
Added 6502 family tree to docs/cpu_types/all.txt
|
|
|
|
|
|
|
|
|
2017-12-22 22:55:36 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.96.4
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Bugfix: Removed warnings about zero page wrap-around for the 65816's
|
|
|
|
24-bit pointers (because wrap-around does not actually happen).
|
|
|
|
Thanks to Johann Klasek for reporting this.
|
|
|
|
Added "!xor" pseudo opcode to compensate for the shortcomings of the
|
|
|
|
"!scrxor" pseudo opcode. Thanks to spider-j for the initial bug
|
|
|
|
report.
|
|
|
|
Added "-I" CLI switch to add search paths for input files. Thanks to
|
|
|
|
peiselulli for the suggestion.
|
|
|
|
|
|
|
|
|
2017-10-29 23:29:07 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.96.3
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Added "!h"/"!hex" pseudo opcode: Now external source code generator
|
|
|
|
tools can easily put data in sources with minimal syntax overhead.
|
|
|
|
Added "!skip" pseudo opcode: "!skip N" works like "*=*+N" without
|
|
|
|
starting a new segment.
|
|
|
|
Added "cheap locals": Labels with '@' prefix have automatic scoping,
|
|
|
|
bounded by the preceding and the following global labels.
|
|
|
|
Added "--fullstop" CLI switch to change pseudo opcode prefix from '!'
|
|
|
|
to '.' (so other assemblers' sources need less conversion work)
|
|
|
|
Fixed a bug where expressions like "1)+1" crashed ACME. Thanks to
|
|
|
|
Bitbreaker for reporting this.
|
|
|
|
Added warning when using zp-indirect addressing modes where argument
|
|
|
|
is $ff because pointer wraps around to $00. Thanks to Gerrit for
|
|
|
|
the suggestion.
|
|
|
|
|
|
|
|
|
2017-03-10 12:19:15 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.96.2
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Added "--color" CLI switch to enable colored error output using ANSI
|
|
|
|
escape codes. Thanks to Clifford Carnmo for submitting this patch.
|
|
|
|
|
|
|
|
|
2017-01-05 10:39:19 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.96.1
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed bug where 65ce02's "(zp),z" addressing mode could be used in
|
|
|
|
65816 mode.
|
|
|
|
|
|
|
|
|
2016-12-28 20:32:00 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.96
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Added experimental support for instruction sets of Rockwell 65C02,
|
|
|
|
WDC 65C02(S), CSG 65CE02 and CSG 4502.
|
|
|
|
Stack indexing can now be given either as ",s" or as ",sp" (only
|
|
|
|
relevant for 65816 and 65CE02).
|
|
|
|
|
|
|
|
|
2016-10-08 12:19:12 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95.8
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Warnings and errors inside macros now cause the call stack to be
|
|
|
|
displayed as well (does not yet work for serious errors, though).
|
|
|
|
|
|
|
|
|
2016-02-16 23:11:04 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95.7
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
New pseudo opcodes:
|
|
|
|
"!be16", "!be24" and "!be32" for big-endian byte order output.
|
|
|
|
"!le16", "!le24" and "!le32" for little-endian byte order output.
|
2016-10-08 12:19:12 +00:00
|
|
|
The old pseudo opcodes ("!16", "!24", "!32") will now use the
|
|
|
|
correct byte order for the chosen CPU (which is always little-
|
|
|
|
endian, because there is no support for any big-endian CPU yet.;))
|
2016-02-16 23:11:04 +00:00
|
|
|
|
|
|
|
|
2015-06-14 23:16:23 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95.6
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed a bug: The "C64 DTV2" does not support the undocumented
|
|
|
|
("illegal") opcodes 0x0b and 0x2b, therefore the "ANC #8"
|
|
|
|
mnemonic was removed from the "!cpu c64dtv2" mode. Thanks to
|
|
|
|
peiselulli for testing and reporting this.
|
|
|
|
"Value not defined" error message now includes the name of the
|
|
|
|
undefined symbol. Thanks to Thomas Woinke for suggesting this
|
|
|
|
improvement.
|
|
|
|
Fixed a bug in type system: "!for" loop counters were not correctly
|
|
|
|
flagged as "address" or "non-address".
|
|
|
|
The "addr()" function can now also be written as "address()".
|
|
|
|
Fixed a bug in report listing generator: CR characters in input caused
|
|
|
|
additional blank lines in output. Thanks to Johann Klasek for
|
|
|
|
submitting this patch.
|
|
|
|
|
|
|
|
|
2015-02-05 18:29:01 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95.5
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed a bug causing crashes on program exit (a pointer to a local
|
|
|
|
struct kept being used later on, trashing the stack). Thanks to
|
|
|
|
Hoeppie for reporting this.
|
|
|
|
|
|
|
|
|
2014-11-25 23:57:15 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95.4
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Added the last remaining undocumented ("illegal") opcodes: LAS, TAS,
|
|
|
|
SHA, SHX, SHY and ANE.
|
|
|
|
|
|
|
|
|
2014-11-23 23:40:01 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95.3
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Added "c64dtv2" cpu type so you can use its SIR, SAC and BRA opcodes;
|
|
|
|
along with the undocumented ("illegal") opcodes of the 6510.
|
2020-06-28 12:18:35 +00:00
|
|
|
Added "--msvc" CLI switch so error output can be configured to be in
|
|
|
|
Visual Studio format. Thanks to Martin Piper for writing this
|
|
|
|
patch!
|
2014-11-23 23:40:01 +00:00
|
|
|
Merged third-party patch (who wrote it?) to output label dump in VICE
|
|
|
|
format. Still needs work to be configurable about the types of
|
|
|
|
symbols actually output.
|
|
|
|
|
|
|
|
|
2014-11-22 01:36:02 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95.2
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Changed "save labels" to "symbol list" in a lot of code, error
|
|
|
|
messages and docs.
|
|
|
|
Added "!symbollist" alias for "!sl" pseudo opcode.
|
|
|
|
Change in undocumented ("illegal") opcodes: ANC #8 now generates 0x0b
|
|
|
|
instead of 0x2b (both opcodes do the same thing).
|
|
|
|
Added experimental support for generating a report listing. Thanks to
|
|
|
|
Johann Klasek for writing this extension patch.
|
|
|
|
|
|
|
|
|
2014-06-07 00:12:10 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95.1
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed a bug: Anonymous forward labels were allowed to be redefined.
|
|
|
|
Tweaked type system: When negating a value, address reference count
|
|
|
|
will now be negated as well.
|
|
|
|
When using type system, label dump file will now contain "!addr" to
|
|
|
|
mark addresses.
|
|
|
|
Changed "label" to "symbol" in a lot of code, error messages and docs.
|
|
|
|
|
|
|
|
|
2014-06-02 00:47:46 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.95
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Added an experimental type system to tell addresses and non-addresses
|
|
|
|
apart (per default disabled; must be activated using the
|
|
|
|
"-Wtype-mismatch" CLI switch). The new "!address" pseudo opcode is
|
|
|
|
used to mark label definitions as setting address values.
|
|
|
|
Added "-Wno-old-for" switch to disable warning about old "!for"
|
|
|
|
syntax. However, this will in turn enable warnings about using the
|
|
|
|
*new* syntax.
|
|
|
|
|
|
|
|
|
2014-05-31 00:46:55 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.12
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Finally created new "!for" syntax so counting can start at zero. The
|
|
|
|
old syntax still works, but gives a warning. See AllPOs.txt for
|
|
|
|
more info.
|
|
|
|
Added "0b" as alternative prefix for binary values.
|
|
|
|
|
|
|
|
|
2014-05-28 21:39:15 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.11
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
If !warn, !error and !serious are called with numbers, those will now
|
|
|
|
be output in hex format as well. Also mentioned this in docs.
|
|
|
|
|
|
|
|
|
2014-05-17 09:40:55 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.10
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Warning about shift-space as first character of label name now works
|
|
|
|
for UTF-8 as well.
|
|
|
|
Operator priority list in docs now contains built-in function calls.
|
|
|
|
|
|
|
|
|
2014-05-06 22:16:41 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.9
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
C-style equality checking ("==" operator) is now recognized (but gives
|
|
|
|
a warning). Thanks to groepaz for the suggestion.
|
|
|
|
|
|
|
|
|
2014-03-10 00:17:10 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.8
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Finally disabled pseudo opcode "!cbm". It now gives an error instead
|
|
|
|
of a warning.
|
|
|
|
Finally disabled pseudo opcode "!realpc". It now gives an error
|
|
|
|
instead of a warning. Therefore, "!pseudopc" now *must* be used
|
|
|
|
with a block in {} braces.
|
|
|
|
Finally disabled pseudo opcode "!subzone". It now gives an error
|
|
|
|
instead of a warning.
|
|
|
|
Added support for one more undocumented ("illegal") opcode: lxa. See
|
|
|
|
Illegals.txt for more info.
|
|
|
|
Removed "Offset assembly still active at end of segment" warning. New
|
|
|
|
segments can now be started even from within pseudopc sections.
|
|
|
|
|
|
|
|
|
2014-03-05 23:33:19 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.7
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed bug: Setting the program counter to an address > $ffff and
|
|
|
|
writing a byte hung ACME. Thanks to groepaz/VICEteam for reporting
|
|
|
|
this.
|
|
|
|
Verbose output now uses "0x" instead of "$" to indicate hexadecimal in
|
|
|
|
more places.
|
|
|
|
|
|
|
|
|
2014-01-16 18:16:24 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.6
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Made "power-of" operator right-associative.
|
|
|
|
|
|
|
|
|
2013-06-26 23:01:00 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.5
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed bug: wrap-around branches (from $ff80+ to zp and back) were
|
2014-03-05 23:33:19 +00:00
|
|
|
reported as errors. Thanks to Bitbreaker/VOZ for reporting this.
|
2013-06-26 23:01:00 +00:00
|
|
|
Fixed bug: left-shifting float values went wrong for large shifts.
|
|
|
|
New error message: "Target not in bank (0xTARGET)" for branches.
|
|
|
|
Fixed example program to get it to assemble with current library.
|
|
|
|
Streamlined "Floats.txt" docs.
|
|
|
|
|
|
|
|
Changes in library files:
|
|
|
|
<cbm/basicWHATEVER.a> files now contain opcode_* constants in addition
|
|
|
|
to macros.
|
|
|
|
Added <cbm/mflpt.a>, containing a macro to store a float value in the
|
|
|
|
five-byte format used by CBM basic (and while writing that macro,
|
|
|
|
found the left-shift-float bug mentioned above, so the macro needs
|
|
|
|
this fixed version to work).
|
|
|
|
Added <cbm/c64/float.a>, containing definitions for using the BASIC
|
|
|
|
interpreter's float functions and constants.
|
|
|
|
|
|
|
|
|
2012-10-25 15:36:35 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.4
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Added "apple" output format.
|
|
|
|
|
|
|
|
|
2012-03-16 20:21:09 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.3
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
2016-10-08 12:19:12 +00:00
|
|
|
"Target out of range" error now includes info on how much the range
|
|
|
|
was exceeded. Thanks to Bitbreaker/VOZ for the suggestion.
|
2012-03-16 20:21:09 +00:00
|
|
|
|
|
|
|
|
2012-02-27 21:14:46 +00:00
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.2
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
2012-02-27 21:35:16 +00:00
|
|
|
Added missing newline after "no output file specified" message.
|
2016-10-08 12:19:12 +00:00
|
|
|
Fixed bug in "!to" and "!sl" (colon in filename is interpreted as
|
|
|
|
command separator in later passes).
|
2012-02-27 21:35:16 +00:00
|
|
|
Changed verbose output hex prefix from $ to 0x.
|
|
|
|
Changed --help output
|
2016-10-08 12:19:12 +00:00
|
|
|
Changed EOR to XOR in docs and comments (the ACME operator, not the
|
|
|
|
6502 opcode)
|
2012-02-27 21:14:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.94.1
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
New CLI switch: "-D" allows to set global labels via the command line.
|
|
|
|
New CLI switch: "-Wno-label-indent" switches off warnings about
|
|
|
|
indented implicit label definitions.
|
|
|
|
New PO: "!ifndef" (finally a companion for "!ifdef"...)
|
2014-03-10 00:17:10 +00:00
|
|
|
When setting the program counter via "* =", modifiers ("overlay" and
|
2012-02-27 21:14:46 +00:00
|
|
|
"invisible") allow to suppress warnings about segment overlap.
|
|
|
|
Float values without leading digits are now accepted.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.93
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Change: If "Offset assembly still active at end of segment", it no
|
|
|
|
longer gets switched off.
|
|
|
|
Change: Operators ASR and LSL/ASL now can also handle FP (LSR still
|
|
|
|
makes no sense).
|
|
|
|
Change: Added distinction between '/' and "DIV" operators: DIV always
|
|
|
|
gives integer results, while '/' depends on operands.
|
|
|
|
New functions: added int() and float() functions.
|
|
|
|
Internal change: default fill value for !align is now CPU-specific
|
|
|
|
(but still 234)
|
|
|
|
New CLI switch: "--use-stdout" prints errors to stdout instead of
|
|
|
|
stderr (a fix for the "Relaunch64" IDE I have nothing to do with)
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.92
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Text versions of arithmetic/logic operators (XOR, DIV, MOD, etc.) no
|
|
|
|
longer need to be in upper case.
|
|
|
|
Experimental support for floating point maths.
|
|
|
|
Support for mathematical functions:
|
|
|
|
sin(), cos(), tan(), arcsin(), arccos(), arctan()
|
|
|
|
New errors:
|
|
|
|
"Argument out of range.", "Unknown function."
|
|
|
|
These operators always deliver ints:
|
|
|
|
not, and, or, xor, lowbyteof, highbyteof, bankbyteof, mod, asl,
|
|
|
|
lsl, asr, lsr
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.91
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Added anonymous labels (- + -- ++ --- +++ etc.). Every other assembler
|
|
|
|
seems to support them, so I added them to ACME as well... :)
|
|
|
|
New POs: "!warn MESSAGE", "!error MESSAGE", "!serious MESSAGE"
|
|
|
|
New CLI option: "--maxdepth NUMBER" sets maximum recursion depth for
|
|
|
|
macro calls and the "!source" pseudo opcode.
|
|
|
|
ACME now gives a warning when assembling JMP($xxff) on 6502/6510
|
|
|
|
because that instruction is broken on those CPUs.
|
|
|
|
After giving the error "Target out of range", the error "Number out of
|
|
|
|
range" is now suppressed.
|
|
|
|
Corrected code example in QuickRef.txt (why didn't anyone tell me? :))
|
|
|
|
Added additional example source code.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.90
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Arithmetic shift right now has some watchdog code and should work
|
|
|
|
regardless of compiler.
|
|
|
|
Corrected some typos in error messages and docs.
|
|
|
|
New CLI option: "--cpu CPU_TYPE"
|
|
|
|
The output file format chosen with "--format FORMAT" is now used as
|
|
|
|
default when "!to" is used without format keyword.
|
|
|
|
Again: Tidier code.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.89
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Support for more undocumented ("illegal") opcodes: anc, arr, asr, sbx,
|
|
|
|
dop, top, jam. See Illegals.txt for more info.
|
|
|
|
Change in shift operators: Logical shift right (">>" or "LSR") has on
|
|
|
|
most platforms actually been an arithmetic shift right all the
|
|
|
|
time! Therefore, ">>" now *officially* performs an arithmetic
|
|
|
|
shift right (can also be written as "ASR"), while ">>>" has been
|
|
|
|
added to perform a logical shift right (can also be written as
|
|
|
|
"LSR"). Note: This is about ACME's maths parser and has nothing to
|
|
|
|
do with the 6502 mnemonics "asl" and "lsr".
|
|
|
|
Finally added a "-o" command line option to set the output file! See
|
|
|
|
QuickRef.txt for info on the other new CLI options (--format,
|
|
|
|
--labeldump, --maxerrors, --setpc, --initmem, --version).
|
|
|
|
Fixed bug: "!align" could be used while program counter undefined.
|
|
|
|
Fixed bug: Numbers before mnemonics are no longer skipped (or rather,
|
|
|
|
implicit label definitions are no longer accepted if the label
|
|
|
|
name starts with a digit).
|
|
|
|
Change: Much better algorithm to compute to-the-power-of (read: it's
|
|
|
|
no longer braindead).
|
|
|
|
Some more internal tidying.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.88
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed architecture-dependent bug introduced in release 0.87.
|
|
|
|
Fixed bug: Unknown !cpu keywords could cause crashes.
|
|
|
|
Fixed bug in !ct "filename" nesting.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.87
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Support for some undocumented ("illegal") opcodes: slo, rla, sre, rra,
|
|
|
|
sax, lax, dcp, isc. To use these, choose the 6510 cpu.
|
|
|
|
Two error messages gone: "Sorry, feature not yet implemented." and
|
|
|
|
"Chosen CPU does not support this command and/or addressing mode."
|
|
|
|
Explanation of new error message ("There's more than one character.")
|
|
|
|
added to docs.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.86
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
The "!convtab" pseudo opcode can now be given the file name of a
|
|
|
|
conversion table. The file must hold exactly 256 bytes.
|
|
|
|
Improved docs a bit (more and better examples, more info on verbosity
|
|
|
|
CLI switch).
|
|
|
|
If no "!to" pseudo opcode has been found, ACME will tell you so.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.86 beta
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Macros can now be used with call-by-reference semantics, therefore
|
|
|
|
allowing some kind of return value. Call-by-reference is
|
|
|
|
indicated by prefixing the relevant parameter(s) with a '~'
|
|
|
|
character. This has to be done at both the macro definition and
|
|
|
|
the macro call.
|
|
|
|
Different macros are allowed to have the same name as long as their
|
|
|
|
parameter lists differ in size (number of arguments) or type
|
|
|
|
(call-by-value vs. call-by-reference)
|
|
|
|
Macros do not have a limit on parameter count anymore.
|
|
|
|
Macro size is unlimited now.
|
|
|
|
The expression parser does not have a limit on recursion depth
|
|
|
|
anymore, so you can use as many parentheses as you like.
|
|
|
|
Loop block size is unlimited now.
|
|
|
|
Label name and string lengths are unlimited now.
|
|
|
|
The recursion depth of "!source" and macro calls is set to 64. The
|
|
|
|
only reason there still *is* a limit is to be able to spot
|
|
|
|
infinite recursions.
|
|
|
|
Offset assembly now has block support and can be nested. Using the old
|
|
|
|
syntax still works, but gives a warning.
|
|
|
|
Pseudo opcodes "!convtab", "!cpu", "!al", "!as", "!rl" and "!rs" now
|
|
|
|
have block support and can be nested.
|
|
|
|
Using "!to" without file format indicator now gives a warning (but
|
|
|
|
still works).
|
|
|
|
Fixed bug: The statement
|
|
|
|
!to "outfile" ANY_SPECIAL_CHARACTER_BUT_COMMA GARBAGE
|
|
|
|
wasn't flagged as an error.
|
|
|
|
Fixed bug: The statement
|
|
|
|
!source "a file that cannot be opened"
|
|
|
|
did not give an error, but was just ignored.
|
|
|
|
If a global label starts with a shift-space character, a warning is
|
|
|
|
issued (because it is highly likely that it is a typing error).
|
|
|
|
*Much* cleaner internals. *Very* *much* cleaner internals actually.
|
|
|
|
More bug checking at runtime.
|
|
|
|
Tree lookups should be a bit faster.
|
|
|
|
Initialising the memory should be a bit faster.
|
|
|
|
Writing the output file should be a bit faster.
|
|
|
|
The expression parser now uses repeated multiplication instead of the
|
|
|
|
math library's pow() call, so it is no longer necessary to include
|
|
|
|
the C math library when compiling.
|
|
|
|
The number of errors displayed before assembly stops was reduced from
|
|
|
|
20 to 10. I really should make this configurable via a CLI switch.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.85 alpha
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed bug: Handling of parentheses in new expression parser was badly
|
|
|
|
screwed up. Thanks go to Nathan Smith for reporting that bug.
|
|
|
|
Verbosity messages for segments and output file now contain size info.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.84 alpha
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Some changes in documentation (mainly corrected typos)
|
|
|
|
Usage count for labels (Unused ones are marked in label dump file)
|
|
|
|
New PO: "!8" (for 8-bit values, as "!byte" / "!by" / "!08")
|
|
|
|
Finally removed the dreaded only-two-input-files restriction
|
|
|
|
Improved PO: "!to" has parameter for choosing output file format
|
|
|
|
Fixed bug: Blanks after "!for"'s "}" character stopped assembly
|
|
|
|
Rewritten expression parser and label tree handler (should be faster)
|
|
|
|
Generally tidied up the source.
|
|
|
|
Skipped some version numbers to get a "less frightening" one. :)
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.08 beta
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed really serious bug: The 65816's indirect DP addressing caused
|
|
|
|
wrong opcodes to be generated. Thanks to Doc Bacardi/The Dreams
|
|
|
|
for reporting it.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.07 beta
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed really serious bug: Indirect JMP / JSR were assembled without
|
|
|
|
target addresses. Thanks to YTM/Alliance for reporting that one.
|
|
|
|
Fixed bug in value parser's handling of parentheses: Expressions like
|
|
|
|
"a*(b-c)+d" gave "a*((b-c)+d)", obviously not the same.
|
|
|
|
Fixed bug: "!set LABEL = VALUE" now *really* works correctly.
|
|
|
|
Fixed bug: ACME gave "too late for postfix" error when reading a
|
|
|
|
predefined label of known size. Only occurred when using macros.
|
|
|
|
Fixed bug: Error messages given from within macro definitions used
|
|
|
|
truncated file names.
|
|
|
|
Fixed bug: Calling of local macros didn't work at all.
|
|
|
|
Fixed bug: "}" chars directly after macro calls were not found.
|
|
|
|
Fixed bug: Spaces after ":" and "{" gave syntax errors.
|
|
|
|
Fixed bug: Line counting inside loops was screwed up.
|
|
|
|
Fixed bug: Changed argument order of MVP and MVN (now it's "opcode,
|
|
|
|
source, target")
|
|
|
|
New PO: "!08" (for 8-bit values, as "!byte" / "!by")
|
|
|
|
New PO: "!16" (for 16-bit values, as "!word" / "!wo")
|
|
|
|
New PO: "!24" (for 24-bit values)
|
|
|
|
New PO: "!32" (for *signed* 32-bit values)
|
|
|
|
New PO: "!pseudopc" (starts offset assembly)
|
|
|
|
New PO: "!realpc" (ends offset assembly)
|
|
|
|
New PO: "!for LABEL, TIMES { LINES }" for easier loops.
|
|
|
|
New PO: "!initmem BYTE" to define empty memory.
|
|
|
|
New PO: "!endoffile" (short "!eof") replaces "!end".
|
|
|
|
New PO: "!ifdef" (only use this if you *really* know what you are
|
|
|
|
doing. Otherwise, just don't use it)
|
|
|
|
New PO: "!convtab CONVERSION" (short "!ct") selects the default
|
|
|
|
character conversion, making "!cbm" obsolete.
|
|
|
|
Improved PO: "!binary" now has "skip" parameter.
|
|
|
|
Change: "!cbm" outputs a warning when used - use "!ct pet" instead.
|
|
|
|
Change: "!end" no longer works - use "!eof" instead.
|
2014-03-10 00:17:10 +00:00
|
|
|
Change: "* = VALUE" is now segment change instead of offset assembly.
|
2012-02-27 21:14:46 +00:00
|
|
|
Change: Argument order of MVN/MVP is now as is standard.
|
|
|
|
The typecast system has been rewritten - now it works as intended.
|
|
|
|
BIT without any parameters no longer works - use a macro instead.
|
|
|
|
Leading zeros are stored in label structures and acted upon.
|
|
|
|
The documentation is in several files now.
|
|
|
|
Negative numbers are now handled much more sensibly.
|
|
|
|
'ACME' environment variable only needed when *really* needed.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.05 beta
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Fixed bug: No more multiple error messages.
|
|
|
|
Fixed bug: Zone names now work correctly (First char wasn't stored).
|
|
|
|
Fixed bug: "!set label = label" now works correctly (I hope).
|
|
|
|
Fixed bug: "stz ...,y" gave "number too big" instead of "illegal
|
|
|
|
combination of command and addressing mode"
|
|
|
|
New PO: "!subzone" (short "!sz") for nested zones.
|
|
|
|
Added support for library tree when using "!source" or "!binary".
|
|
|
|
Single-character strings can now be given in single quotes as well.
|
|
|
|
Real icons.
|
|
|
|
Startup errors now exit correctly with EXIT_FAILURE code.
|
|
|
|
Example program now includes "Expected_Output" file.
|
|
|
|
Further tidied up the sources.
|
|
|
|
Tidied up the general help file:
|
|
|
|
-Changed "Freeware" to "free software"
|
|
|
|
-Corrected the information given on "!align".
|
|
|
|
-Added examples for most of the pseudo opcodes.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.04 beta
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Corrected some small bugs.
|
|
|
|
New PO: "!zone" (short "!zn") replaces "!module" (short "!mod")
|
|
|
|
Tidied up the sources a lot.
|
|
|
|
Changed bad style C code reported by lint.
|
|
|
|
Added GNU GPL hint in every source file.
|
|
|
|
Added startup message in verbose mode.
|
|
|
|
Added "Error: " to startup error messages.
|
|
|
|
Added Amiga, Linux and OS/2 versions
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.03 beta
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Generally tidied up the source.
|
|
|
|
Moved RISC OS-specific CLI options to platform file.
|
|
|
|
Added pathname conversion from UNIX style to current platform style.
|
|
|
|
Added context variables (enabling "!source"s and macros).
|
|
|
|
Translated all documentation to english.
|
|
|
|
Changed string pseudo opcodes to allow numeric values.
|
|
|
|
Added verbose mode (CLI option "v").
|
|
|
|
Added output buffer, removing the need for additional output pass (and
|
|
|
|
now the "!to" pseudo opcode can be placed anywhere).
|
|
|
|
More than one "label = pc" definition per statement now illegal.
|
|
|
|
Instead added possibility to have several statements on a single line
|
|
|
|
by using ":" as a separator character.
|
|
|
|
Added new keywords: "!set", "!if", "else", "!do", "until", "while" and
|
|
|
|
"!macro"
|
|
|
|
Added support for "!source".
|
|
|
|
Added basic support for blocks.
|
|
|
|
Added support for "!if {...} else {...}".
|
|
|
|
Added support for zone titles.
|
|
|
|
Added support for loops (endless loops are only detected if producing
|
|
|
|
code).
|
|
|
|
Added support for macros (even nested definitions are possible now).
|
|
|
|
Added DOS version.
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Section: New in release 0.02 alpha
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Er, I don't know anymore. It was a bad ugly hack and it only ran on
|
|
|
|
RISC OS. :-)
|