Skip to content

Releases: envenomator/agon-ez80asm

v2.0

10 Jan 18:47
Compare
Choose a tag to compare

Enhancements:

  • Macros can now call other macros, with a maximum depth level of 8 #100
  • Length of a label can now be 64 characters #102
  • Going forward, only LOCAL labels will be allowed inside a macro body. Local labels are internally expanded with a 'macro expansion ID' to create a unique macro-expansion scope that will also work during recursive macro invocations #103
  • -m option now allows for minimum memory buffer configuration to assemble large programs on the Agon #105
    Large programs like the ez80asm version of BBC Basic can now be assembled directly on the Agon
  • Macro arguments mappings are now displayed during listings #107
  • ALIGN statement at end of file / between DS statements at the end of a file no longer producing unnecessary fillbytes #109
  • Macro arguments not longer accepted when name of argument is a valid number #116
  • Macro bodies are no longer limited to 2K per macro #117
  • Processing 'depth' maximum is raised from 4 to 8 to allow for deeper include levels used in larger programs #119
  • Support for a CPU directive, to limit the opcodes to Z80/Z180 #120
  • Labels and instructions are accepted without preceding spaces #121
  • Support for a relocatable code block using the .relocate directive #122
  • General cleanup of older code, improved code readability
  • Much Improved error handling

Fixed since previous release:

  • -v option quits without throwing an error #101
  • Extremely low memory situations on the Agon didn't always correctly produce an 'Out of memory' error, while the program doesn't exit in an orderly fashion #104
  • Macro call failed using an EQU as an input parameter #106
  • -x option incorrectly displayed output size #108
  • Using comment ';' immediately after macro command without arguments resulted in error 'Incorrect number of macro arguments' #110
  • Expressions with compound escaped literals resulted in an error #111
  • Commented single quoted literal produced an error #112
  • Missing first data value in DB/DW/DW24/DW32 list was not detected #113
  • incbin/include without argument didn't provide an error, program crashed #114
  • including files with long filenames could lead to a crash, when the file couldn't be opened / didn't exist #118
  • Removed excessive empty lines in a listing file with windows builds #123

v1.11

30 Nov 12:06
Compare
Choose a tag to compare

New in this release

  • Support for prioritized operations using [ ] bracketed expressions
  • Small code improvements and optimizations
  • Compiled with AgDev v3.1.0

A number of small fixes in this release

  • .DS directive didn't report fillbytes in listing #89
  • Using long filenames as macro arguments caused aborts #90
  • Updated documentation to reflect order of operations #91
  • Updated documentation to reflect if/endif behavior #92
  • The asciz directive always emitted a 0 in any conditional block #93
  • Labels weren't always handled correctly in a condition if/endif block #94
  • -v flag continued with assembler actions #97
  • Multiple operators without a number/label identifier in between didn't flag an error #99

v1.10

08 Nov 10:23
Compare
Choose a tag to compare

Bugfixes:

  • Fix for Issue #87 - now correctly handling operator statements during a macro expansion with data statements
  • Fix for Issue #88 - now correctly handling data statements enclosed in a conditional if/else/endif block.

New features:
All assembler directives enclosed in if/else/endif directives are now respected. If/else/endif still cannot be nested.

v1.9

02 Nov 09:40
Compare
Choose a tag to compare

Fixes:

  • Fix for issue #86 - .org directive can now be used multiple times with automatic padding using the currently defined fillbyte

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