Releases: envenomator/agon-ez80asm
v1.11
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
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
v1.8
v1.7
v1.6
v1.5
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
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
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
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)