Releases: envenomator/agon-ez80asm
v2.0
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
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