xa-2.1.0

  * Rewrite of command line option handling to better look like
    usual (cc) options.
  * Removed ^M from all files.
  * Removed all external declarations to header files,
    and made all static functions static.
    | Now compiles almost without warning with 'gcc -W -Wall'.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 31 Oct, 1996

xa-2.1.0a

  * Introduced concept of code relocation.  Now each label being set to
    the program counter is a 'pointer', that gets an entry in a
    relocation table. Simple arithmetic operations are allowed. The
    relocation table is still just printed unsortedly.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 31 Oct, 1996

xa-2.1.0b

  * Produces some preliminary kind of relocatable file, including header
    etc. Problems -- relocation table does as if file is assembled for
    address 0. Need
    a) a better way to set program counter.
    b) pseudo opcodes for distinguishing segments.
    c) a way to temporarily disable relocation.
    d) a way to include extra headers and options into the file.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 31 Oct, 1996

  * Assembler now produces a relocatable file format, as described in
    the file ``fileformat.txt''. Temporarily disabling relocation is with
    the ``*=value'' directive, while switching back to relocation mode
    goes with ``*='' (without value). New pseudo opcodes ``.text'',
    ``.data'', ``.bss'', ``.zero'' switch between the segments.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 02 Nov, 1996

xa-2.1.0e

  * There was a bug in the arithmetic routine that had set all pointer
    to the text segment, if something was added.
  * There also was a bug in the loader when actually using options.
  * A new pseudo opcode was added -- ``.fopt''.
    | Works like ``.byte'', but puts these bytes in a file option.
    | The length in the file option is automagically set. ``.fopt''
    | may appear anywhere in the file, but it should be at the
    | beginning | (might be mandatory in a later version).

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 06 Nov, 1996

xa-2.1.0f

  * Added a command line switch ``-M'' to ignore colons in a comment
    after a semicolon.
  * Without it, a colon separates complete mnemonics, including
    the semicolon comment.
    | Well, actually this switch is a ``MASM'' compatibility switch, and
    will surely be expanded someday, when I get more info on MASM.
  * Now ``*'' and ``='' can be separated for the definition
    of the program counter and ``.byte'' is also accepted.
    This makes it more MASM compatible. ".end" is ignored.
    Still missing is ``.include''.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 11 Nov, 1996

xa-2.1.0g

  * Started working on ``official'' o65 fileformat.
    If there are no undefined labels, and no relocated code
    is embedded in absolute code, the thing should work.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 21 Dec, 1996

xa-2.1.1

  * ``.dsb'' now has an _optional_ parameter ``fillbyte''.
  * Undefined references are now put into the relocation table
    (i.e. handled correctly) if the ``-c'' option is given.
  * The file format conforms to o65 version 1 file format.
  * Embedding absolute in relocatable code and vice versa is buggy...

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 21 Dec, 1996

xa-2.1.1a

  * Embedding absolute code in relocatable seems to work now.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 21 Dec, 1996

xa-2.1.1e

  * The option to embed relocatable code in absolute code has been
    dropped.  Therefore the command line options
    ``-A'' (make it romable), ``-b?'' (set segment start addresses),
    and ``-G'' (omit exported globals from file) have been added.
  * Internally, the whole thing has been made dynamic; except for the
    preprocessor (and the storage between pass1 and pass2), everything
    uses dynamically allocated tables. m_alloc, which had been
    introduced long time ago because of the buggy malloc
    on the Atari ST is gone now!

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 22 Dec, 1996

xa-2.1.1f

  * Added the ``-a'' and ``-A'' options to file65, so that it can now
    print the start addresses for following files in the ROM when making
    romable code.
  * Added shell (bash) script ``mkrom.sh'' that assembles a given list
    of files and builds a ROMable file. The first two bytes are single
    linked list pointers, and then comes the file.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 02 Jan, 1997

xa-2.1.1g

  * Added the file ``reloc65'', to relocate o65 files without
    reassembling them.
  * Fixed quite some bugs in xa (segment numbering in the globals list
    and switched low/high byte relocation entry type in relocation
    table. Now conforms to documentation, i.e. fileformat.txt)

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 03 Jan, 1997

xa-2.1.2

  * Added ``ld65'', a simple linker for o65 files.
  * Another bug in xa fixed now. 

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 04 Jan, 1997

xa-2.1.3

  * Allows to use ``.data'' etc in absolute mode, too. No relocation
    entries are generated then. Segment start can be set with ``-b?''
    command line options, though. Also the data segment is discarded
    with this method!  This allows to use the normal ``.data'' etc
    syntax even when assembling a ROM (which is done in absolute mode.)
  * Fixed a bug where ``.dsb'' in a data segment didn't fill with the
    right value

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 25 Mar, 1997

xa-2.1.3e

  * Added preprocessor continuation lines, and .block and .bend
    pseudo-opcodes (They map to ``.('' and ``.)'' respectively.)

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 27 Jul, 1997

xa-2.1.4

  * Do not leave output file around after an error -- this is
    better for ``make''.
  * Also it seems to have settled for a while, so I can release
    a new version.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 11 Sep, 1997

xa-2.1.4c

  * Fixed a nasty bug that prevented correct relocation table
    entries when a ``label2=label1'' contruct was used and
    ``label2'' was accessed.
  * Added ``-I'' option.
 
 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 30 Dec, 1997

xa-2.1.4d

  * fixed align code. Now inserts NOP opcodes into text segment, and
    sets file mode appropriately.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 26 Jan, 1998

xa-2.1.4e

  * Changed o65 fileformat and adopted it in xa.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 26 Jan, 1998

xa-2.1.4g

  * Fix handling of !zeropageaddress, that was broken (did not result
    in absolute address, but gave error message.)
  * Add cross reference list to labels if switched on on command line.
  * Fix the filename when multiple files are given on the command line
    (used to give the first filename for all errors in second pass.)

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 25 Nov, 1998

xa-2.1.4h

  * In file65 added support for undefined labels and globals,
    also for (some known) file options.
  * Fix a preprocessor bug.

 -- Andr Fachat <a.fachat@physik.tu-chemnitz.de> 12 Dec, 1998

xa-2.2.0-p1-1

  * Update COPYING to the latest version (Y2K-fixed + new address to GNU)
  * Lots of fixes to the Makefiles
  * Cleaned up the structure of the TODO file
  * Added manual-pages for file65, ld65, printcbm, reloc65, uncpk, and xa
  * Commented out LIB-flags -lm, -lcurses and -ltermcap,
    since they are all unused
  * Added `--help' and `--version' to all binaries
  * Removed `-h', `-?' and `-v' options where applicable
  * Created a file containing the version-function; version.h
  * Moved common macros to a separate file; xad.h
  * Restructuring of printcbm to become more readable
  * Added ifndef/define/endif traps to all header-files
  * Fixed a few typos
  * Renamed romadr to romaddr
  * Renamed all functions matching *such* to *search*
  * Fixed all warnings
  * Cleaned up all header-files
  * Reformatted xa.log

 -- David Weinehall <tao@acc.umu.se> 20 Aug, 2002

xa-2.3.0

  * Version number jump for all the unofficial xa's out there
  * Fixed addressing bugs for @, ! and completed 65816 merge
    Thanks to David for the report
  * Moderate legibility overhaul to xat.c (will continue on this)
  * More compiler warnings corrected
    Thanks to David for the report
  * man files completed
  * Documentation updated
  * Last line bug corrected (where last line not assembled if no newline)
    Thanks to silverdr for the report
  * ld65 is now ldo65 to avoid conflicts with cc65 package
  * Post-defined labels work better, or at least somewhat (no longer attempts
    to optimize in pass 2 and generate bad code). Can be forced with `
    Thanks to silverdr for the report
  * Makefile bugs multiplied
  * @ now mostly obligatory for 24-bit addressing

 -- Cameron Kaiser <ckaiser@floodgap.com> 2 Apr, 2006

xa-2.3.2

  * Introduced switch to convert values in quotes to different character
    sets. Currently supported are ASCII (default) and PETSCII
  * Fixed some quote bugs

 -- Andr Fachat <afachat@gmx.de> 23 Dec, 2006

  Thomas Giesel's reports and suggestions, thank you:
    * -M works on colons in comments and nowhere else, as documented 
    * macro function arguments are properly recursively evaluated
    * cpp output now grokked for more complex pre-parsing, rather than
      reinvent the wheel
  Other things:
  * .xl, .xs, .al, .as weren't documented, and now they are (always worked)
    for 65816 mode
  * ! for forward-defined labels calculated wrong instruction length, fixed
  * xap.c cleaned up some, xat.c cleaned up some more
    Legibility work is going to be a long-term project.
  * -x is now deprecated
  * Documentation updated

 -- Cameron Kaiser <ckaiser@floodgap.com> 13 Jan, 2007

xa-2.3.3

  * Compatibility update for Microsoft Visual Studio and mingw/MSYS (thanks
    Fabian Nunez and Mikkel Holm Olsen).

 -- Cameron Kaiser <ckaiser@floodgap.com> 15 May, 2007

xa-2.3.4

  * -p to define alternate synonym for # for preprocessor to avoid cpp/xa
    preprocessor clashes and messes.
  * Direct linking into output stream of binary files (.bin).
  * Minor overhaul of error system to facilitate future expansion.
  * Documentation updated.

 -- Cameron Kaiser <ckaiser@floodgap.com> 1 July, 2008

xa-2.3.5

  Most of this was suggested by Martin Wendt.
  * Fixed bug where .bin was affected by the current character set.
  * Added PETSCREEN and HIGH character sets.
  * Added .aasc.
  * Some more legibility work.
  * Documentation updated.

 -- Cameron Kaiser <ckaiser@floodgap.com> 7 February, 2009

xa-2.3.6

  * 'make test' for regression testing framework (requires Perl).
  * Changed getline() to xa_getline() to avoid collision with glibc 2.10+
  * Fixed compile problems with misc/.
  * Fixed message offsets.

 -- Cameron Kaiser <ckaiser@floodgap.com> 11 July 2014

xa-2.3.7

  * Fixed buffer overflow and test failure with gcc 4.9 (thanks Adam Sampson).
  * mvn and mvp now use the standard syntax (thanks Alessandro Gatti).
  * Copyright message is no longer put in the error log to simplify testing.
  * Makefile properly triggers a relink for testing or source changes.
  * Spurious messages quelled.
  * Documentation updated.
  * Testsuite expanded.

 -- Cameron Kaiser <ckaiser@floodgap.com> 29 December 2014

xa-2.3.8

  * Fixed issue with colons in string literals being treated as separators
    (thanks Simon Rowe).
  * Testsuite expanded.

 -- Cameron Kaiser <ckaiser@floodgap.com> 29 June 2017

xa-2.3.9

  * Fixed issue on Windows and DOS systems with the .bin pseudo-op (thanks
    Bago Zonde).
  * Documentation updated.
  * Testsuite expanded.
  * For the thirty year anniversary of xa, we're changing the name to xxxa.
    (Just kidding.)

 -- Cameron Kaiser <ckaiser@floodgap.com> 31 January 2019

xa-2.3.10

  * Three fixes, all from Andre:
    - Don't crash if a useless segment is referenced outside of relocating
      mode (thanks Laszlo Barath for the report).
    - Don't substitute within strings, for better cpp compatibility (thanks
      Glenn Holmer for the report). I added the -S option for backwards
      compatibility for the old behaviour; it will be removed in 2.4 and later.
    - Fix underflow issue if a variable is late-bound (with -L) when that
      variable is used in computations with negative offsets.
  * Deprecated options will be removed in 2.4 and everything is warned.
  * Documentation updated.
  * Testsuite expanded.

 -- Cameron Kaiser <ckaiser@floodgap.com> 9 November 2019

xa-2.3.11

  * Compilation fix for gcc 10 (thanks Dan Horak).
  * Allow pointer arithmetic in relocating mode within the same segment, since
    the result is segmentless (thanks Andre for the report).
  * .dsb with negative quantities shouldn't work (thanks Andre for the report).
  * Stop a divide-by-zero floating point exception (thanks Frederic Cambus).
  * Testsuite expanded.

 -- Cameron Kaiser <ckaiser@floodgap.com> 4 May 2020

xa-2.3.12

  * Regression fix for address size validation in 65816 mode (thanks Sam
    Falvo; we had a pending fix for this but I like his test case).
  * Testsuite expanded. 

-- Cameron Kaiser <ckaiser@floodgap.com> 26 November 2021

xa-2.3.13

  * Fix // and /* */ in quoted strings. Incredible no one ever hit this
    before (thanks ZornsLemma).
  * Segfault fixes for file65, reloc65 and xa. Remember, kids, if you ever
    run xa as root all kittens will die. Please save the kittens (thanks
    Stephen Kitt).
  * Just compare to null in the preprocessor (thanks Bas Wassink).
  * Testsuite expanded.

-- Cameron Kaiser <ckaiser@floodgap.com> 25 March 2022

xa-2.3.14

  * Fix a segfault when a recursive macro has a smaller arity than the
    macro it references (thanks Emil Johansson for the report).
  * Fix for recursive comments, which was a regression from 2.3.13 (note:
    this may be reexamined for 2.4), and some improvements to the comment
    parser to fix more edge cases. (Andre)
  * Now you can just do 'make test TESTS=test,test,test' instead of running
    ./tests/harness with specific options. ('make test' by itself of course
    still works fine to run the whole suite.)
  * Testsuite expanded.

-- Cameron Kaiser <ckaiser@floodgap.com> 7 February 2023

xa-2.4.0

  * Listing feature in plain text or HTML, along with .listbytes to control
    how hex bytes get listed in the output.
  * Add -E commandline option to not stop after 20 errors, but show all
    of them.
  * Introduce -X compatibility set commandline option, to distinguish 
    between MASM and CA65 compatibility options; also adds C option for
    0x and 0 to specify hex or octal. As a result, -M is now deprecated,
    and colons in comments may become the default in a future version.
  * Implement CA65 "cheap local labels", ":=" label definitions,
    and various pseudo-opcodes (.include, .import, .importzp,
    .zeropage, .proc (anonymous only), .endproc, .code, .org, .reloc).
  * -U option to allow all undefined labels in relocation mode; this
    allows exporting them to an o65 file and link at a later time (or
    specify one at a time with -L).
  * Globals may also be specified manually with -g.
  * #error allows preprocessor-level assertions.
  * .assert allows assembler-level assertions.
  * Better fix for segfault with smaller arity macro issue.
  * Main Makefile fixes.
  * Fixed parallel make in tests, incorporating a patch from Sergei
    Trofimovich.
  * Added a test case that failed in 2.3.14 from Tom Hargreaves.
  * Some 2.3.x features still allowed with -XXA23, which is obviously
    deprecated.
  * The quote escape character is now the \ (backslash), except if -XXA23.
  * Recursive /* */ comments are no longer allowed, except if -XXA23.
  * XA_MAJOR and XA_MINOR predefined macros, except if -XXA23.
  * Testsuite greatly expanded.
  * The old loader/ testsuite and doc/ archive are now in attic/, which is
    the repository for old unsupported components. It may be purged in a
    future version.
  * -M is now deprecated (use -XMASM), just in case you forgot.
  * printcbm(1) is now deprecated (use VICE petcat, it does a lot more).
  * Previously deprecated options (16-bit mvn/mvp argument, -S, -x) finally
    removed. If you need this support, you must use 2.3.x.

 -- Andr Fachat <afachat@gmx.de> and
 -- Cameron Kaiser <ckaiser@floodgap.com>, 18 November, 2023

xa 2.4.1

  * Allow colon-based unnamed labels to be used separately of CA65 mode
    (such as with 65816) with -a. Implies -XMASM.
  * Restore ^ syntax for generating control sequences (e.g., "^m^j" evaluates
    as 0d 0a) with -k.
  * Fix a bug using cheap local labels in expressions.
  * Properly tag and match CPU types in o65 objects during relocation and
    linking.
  * Fix a bug with .align when aligning segments.
  * Better validation of arguments to indexed opcodes.
  * Testsuite expanded.

 -- Andr Fachat <afachat@gmx.de> and
 -- Cameron Kaiser <ckaiser@floodgap.com>, 5 March, 2024


