Skip to content

Releases: envenomator/agon-ez80asm

v1.8

02 Jul 08:36
Compare
Choose a tag to compare

Fixes:

  • Buffer overrun on strcpy in parse_operand #84
  • Macro expansion at a label line ignores label definition #85

v1.7

29 Jun 10:57
Compare
Choose a tag to compare

Enhancements:

  • Additional context provided at warning/error levels - Macro error messages are unhelpful #82
    Fixes:
  • Negative numbers error during macro expansion #81

v1.6

21 Apr 08:54
Compare
Choose a tag to compare

Enhancements:

  • Possibility to set ADL offset for non-ADL code #78

Fixes:

  • Loading a ',' literal produces an error #76
  • .DS directive should only define empty space #79
  • Always return code 0, as MOS only supports non-posix error codes, avoiding the way AgDev works around this

v1.5

07 Apr 08:34
Compare
Choose a tag to compare

Starting release 1.5, ez80asm only supports MOS versions that provide /bin/ folder support for command execution, such as Console8 MOS 2.2.0+. This removes the need for the assembler to use and maintain a MOSlet loader, while providing extra memory to the assembler in the 0x0B0000 - 0x0B7FFF (MOSlet) memory area.

v1.4

14 Mar 12:53
Compare
Choose a tag to compare

This release shows a significant (+/- 40%) performance increase, due to a number of internal changes, specifically

  • Storing local labels in memory, expanding them into the global label space, not requiring file I/O for local labels
  • Buffering all source files in memory, not needing to re-open/fseek them in pass 2
  • A re-implementation of macros, buffering all macros in memory instead of in files
  • Not looking up values/labels during pass 1, when their value wouldn't make a difference in the length/addressing of the binary output, saves a significant amount of processing

Performance might not be relevant when the assembler is running on a modern PC, but running natively on the Agon platform this upgrade is really noticeable.

Fixes:

  • Better reporting of macro errors during macro expansion; reporting in which file and on what line the macro expansion has an error
  • Macro expansion issue with indirect operands #74

v1.3

01 Mar 20:22
Compare
Choose a tag to compare

Stability release, mostly resolving a number of smaller issues in error reporting, but also fixing some bugs.
Thanks to everyone who reported issues and helped tracking them down.

Fixed in this release:

  • Presence of just a single '' in a string isn't always detected as an error, sometimes ignored during emission #57
  • Failure to detect missing source operand #58
  • Failure to detect single shift character as operator (< or >) #59
  • Failure to detect missing operand after operator #60
  • Parsing errors not displaying correctly #61
  • macro issue (seen on v1 and 1.2) random - line 1 - Invalid number format (other issues also pointing toward not opening Include files seen) #62
  • fillbyte directive defective #63
  • blk* defines not using fillbyte, if no explicit init value given #64
  • Macro expansions not correctly allowing comments #65
  • Labels named as a valid number, aren't marked as invalid label #66
  • Defines missing an operand aren't correctly reported as error #67
  • Missing ADL statement after assume directive crashes assembler #68
  • Missing value after equ statement crashed the assembler in some cases #69
  • Missing value after if crashes the assembler #70
  • String type definition with dw/dl/dw32 has incorrect error #71
  • Incorrect negative bounds checking in data directives for 8/16/24 bit values #72
  • 32bit values in DW32/BLKL not emitting MSB correctly #73

v1.2

22 Feb 19:24
Compare
Choose a tag to compare

Increased performance, is the main purpose of this release.

The code was ported to the AgDev compiler suite and numerous parts where rewritten for optimal performance. The assembler makes heavy use of the underlying filesystem, where IO calls to the MOS are costly. Additional steps have been taken to make the absolute minimum number of IO calls. Pearson hash tables are now in use, which are optimized for 8/16bit systems and parts of old ZDSII code, which were necessary before the AgDev standard library came into existence, have been removed completely.
The mosloader (the ez80asm.bin file) that loads the ez80asm.ldr payload to 0x40000 from the /mos moslet area has been rewritten (in ez80asm assembly) to allow it to be easily adaptable to other payloads.

Overall, this release shows a 30% performance increase compared to v1.0 (on actual hardware)

Additional features:

  • The '-x' commandline option shows job statistics

Additionally, the following bugs were fixed:

  • Labels aren't case sensitive (issue #55)
  • MACROs fail to understand EQU (issue #49) - in some cases where a replacement argument is larger than the target, the assembler failed to recognize the defined EQU statement or crashed
  • Number literals containing operator symbols, like '+', '-' were not correctly parsed in all cases
  • String format error in release v1.1 (issue #56)

v1.0

15 Dec 20:45
Compare
Choose a tag to compare

Fixes:

  • comments are now allowed after .include / .incbin statements
  • 0x number format had issues when the given value ended with a 'b'

Functionality:

  • Displaying total assembly time at completion
  • Implied displacement on direct and indirect operands - e.g. - LD A, (IX) now implies 0 as displacement, as does LEA IX, IX

v0.106

14 Nov 20:04
Compare
Choose a tag to compare

Fixes:

  • Parser bug that invalided the name of a label, starting with pe/po

New functionality

  • Capital letters are now allowed in hex/bin number specifiers, e.g. 0x0A / 1011b / 1Ah were allowed. Now also 0X0A / 1011B / 1AH are allowed
  • Significant speed boost due to profiler/statistical analysis, performance tweaks in heavily used code paths, priority-parsing of most frequently used mnemonics, not writing/reading non-existing local label space using EQU (label) statements and further reduction in the number of mos I/O operations.

v0.105

11 Nov 14:22
Compare
Choose a tag to compare

Fixes:

  • blkb/blkw/blkp/blkl had a limit of producing 65535 values ($10000 - 1)
  • Fixed listing bug when producing >255 list lines
  • unary operators '-', '+', '~' now working correctly