xa65/xa/ChangeLog

458 lines
17 KiB
Plaintext

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