view old-trunk/ChangeLog @ 372:90de73ba0cac

Created a useful debug framework and adjusted lw_expr_print() to return a "static" dynamic string
author lost@starbug
date Thu, 22 Apr 2010 18:19:06 -0600
parents eb230fa7d28e
children
line wrap: on
line source

The following includes the various changes in each release of LWTOOLS.

Each item is prefixed by a flag in []. The flags mean:

[*] Project structure or other "meta" change
[!] critical bug fix - code generation error, etc.
[+] new feature
[-] feature removed
[b] minor bugfix
[ ] general improvement

Also, the software affected may follow in [].

Version 3.0

[*] Completely new architecture
[b] Fixed bug that caused segfault on pass 2 if bad expression [LWASM]

Version 2.5

[!] Fixed error in the fix for invalid operands included in 2.4 [LWASM]
[b] Fixed bug with "include" directive operand parsing [LWASM]
[b] Fixed additional parsing errors with pseudo ops [LWASM]
[b] Fixed parsing error with various conditional nesting situations [LWASM]
[+] Added includebin directive to include the literal contents of a binary
    file at the current assembly address. [LWASM]
[+] Added || and && as boolean or and boolean and respectively [LWASM]
[+] Added COPY, COPY-, IMP, EXP, TFRP, TFRM, TFRS, TFRR as alternatives to
    the TFM instruction variations for compatibility with other assemblers
    [LWASM]
[+] Added --6809/-9 switch to cause 6309 instructions to be rejected; also
    included --6309/-3 switch to force default allow of 6309 instructions
    [LWASM]
[+] ALIGN now takes an optional padding value (ALIGN align,pad) to specify
    the byte value that will be used for padding if needed [LWASM]
[+] Added OS9 module target along with the OS9, MOD, and EMOD pseudo ops
    to allow building OS9 modules [LWASM]
[+] Added pragma "dollarlocal"/"nodollarlocal" and "dollarnotlocal"/
    "nodollarnotlocal" to control whether $ localizes a symbol [LWASM]
[ ] Fixed a few cosmetic issues with error reporting

Version 2.4

[!] Fixed off by one relocation offest for base page external references
    generated by lwasm [LWASM]
[b] Fixed segfault in "extern" pseudo op and allowed a symbol list as the
    operand just like "export" [LWASM]
[b] Fixed lack of error when there are extraneous characters at the end
    of the operand. This did not cause incorrect code generation for correct
    code but would silently generate incorrect code for some easy errors
[+] 8 bit immediate operands can now be external references [LWASM]

Version 2.3

[*] added support for compiling using MinGW and added portions of gnulib
    to support argp, among other things. Yah! A Windows build!
[+] added library search path (-L) and library specification (-l) to LWLINK
[+] added ability to specify section base addresses on the command line to
    LWLINK (they get prepended to the built in link script)
[+] added ability to output a "linkmap" to lwlink (--map, -m)
[+] added LWEX0 (LWOS simple binary) target to LWLINK
[+] added ability to extract files in LWAR
[+] added ability to "replace" members in LWAR
[+] added support for "sym=expr" in the opcode field; this will define a
    global symbol (non-section) if it resolves to a constant
[+] added operator ~ as a prefix operator for a 1s complement in LWASM
[+] allow exporting multiple symbols (export sym,sym,sym...)
[+] allow extern references in base page addresing mode, possibly buggy
    still (LWASM)
[+] handle 8 bit external references, possibly buggy still (LWLINK)
[+] arranged for unused members of library files (archives) to be ignored
    during linking to keep the final size of the binary down (LWLINK)
[b] arranged for output files for lwasm/lwlink to be removed if the assembly
    or linking fails
[b] fixed incorrect handling of library search path which caused only the
    last directory to ever matter
[ ] DECB output of LWLINK now collapses contiguous output blocks into single
    single blocks in the output file; this eliminates the explosion of
    preambles that previously occurred
[ ] LWLINK now displays *all* undefined symbols and references instead of
    bailing out after the first one

Version 2.2

[*] created LWAR to manage library/archive files
[+] cescapes pragma to allow C-style string escapes in FCC, FCS, and FCN
[+] .area alias for SECTION
[+] .globl alias for EXPORT; also accept name of symbol as operand
[+] various compatibility directive aliases for FCB, FDB, FQB, RMB, FCC,
    FCS, and FCN
[+] accept "*" has a prefix for base page addressing mode
[+] sections named "bss" or ".bss" in any case are now assumed to be
    BSS sections. The "!bss" flag can be used to remove that assumption.
[+] ignore lines starting with # to permit C pre-processor output to be used
    as input to lwasm
[+] allow "0x" and "0X" as prefixes to identify hexadecimal numbers
[+] added support for a simple library/archive file format to LWLINK
[b] actually show assembly errors when no list requested
[b] pragma and --pragma now actually take multiple pragmas as documented

Version 2.1

[*] merged LWLINK (1.0) and LWASM to create LWTOOLS
[+] [LWASM] pragmas can be specified on the command line
[+] [LWASM] undefextern pragma added (undefined symbols treated as external)
[+] documentation
[b] [LWASM] made pragmas case insensitive
[b] [LWASM] made EXTERN symbols never be part of a section in symbol table


LWASM Version 2.0

[*] major rewrite of the entire assembler
[+] object file support


LWLINK Version 1.0

[*] initial released version