Releases: informedcitizenry/6502.Net
Releases · informedcitizenry/6502.Net
Version 2.6.1
Release 2.6.1
Features
- Added
labels-addresses-only
option to refine label assembly output. - Added
long-addressing
option to enable 24-bit (long) addressing. Output can exceed the 64KiB boundary when this option is enabled.
Changes
- Re-targeted the project to .Net 5. Source is still .Net Core 3.x (C# 8.0) compatible.
- Improved error output. Errors in source are now highlighted.
- Improved reporting of Z80 relative branching errors.
- Symbols inside macros are accessible when their expansions are labeled.
- By default, the
.bank
directive will no longer reset the Program Counter. To enable this behavior pass the--reset-pc-on-bank
option.
Fixes
- Program overflow errors will now only occur after first pass.
- The
.initmem
directive will now properly initialize memory. - Some errors were duplicating, particularly in loop constructions.
Version 2.5.2
Release 2.5.2
Fixes
- Instructions without operands followed by colons should not throw errors (e.g.,
nop:nop
) - Fixed some 65816 and R65C02 instructions.
- Switching between Z80 and i8080 modes is now possible.
- Fixed ability for user-defined functions to change the values of passed parameters.
Version 2.5.1
Release 2.5.1
Features
- Support for the MEGA65 and Intel 8080 CPUs.
Changes
- Empty string parameters are not allowed.
- The conditional directives no longer scope symbols within the conditional block. See the Conditional section in the wiki for details for this change.
Fixes
- Fixed a bug where the
.cpu
directive was not checking whether the CPU parameter was valid. - The Z80 instructions
set 1,e
andim
n. - Referencing a label in an expression where it is being defined should now raise an error as expected.
Version 2.4.3.6
Release 2.4.3.6
Features
- The
--patch
option will patch an existing file in option-o
with the assembled bytes at the given byte offset in the output file.
Changes
- When used on strings, the
.foreach
directive defines the enumeration variable as a string element.
Fixes
- Certain valid constant expressions were causing errors.
- Improved performance in certain expressions where symbol is not known on first pass.
- Assembling uninitialized data would report invalid program counter assignment errors in certain situations.
Version 2.4.3.5
Release 2.4.3.5
Features
- The
char
function will return its char representation in a string expression, or its mapped value in the selected encoding.
Changes
- The
.addr
and.rta
pseudo-ops expect integrals (valid address). - International support for the
-D
option. - Cheap locals were considered in-scope to the most recently defined block, even if they were defined outside the block. Cheap locals are now only local to the most recent non-scoped blocked label.
- The
format
string function will only cast floating point parameters as integers if the format represents the value as hexadecimal. - Improved error for invalid use of
.break
.
Fixes
- The
.cbmflt
and.cbmfltp
directives, as well as their corresponding functionscbmflt()
andcbmfltp()
were not taking into account host architecture byte order. - Certain invalid symbols were being allowed for the
.namespace
directive. - Sections could be defined without having to be selected. This is now fixed.
- The
.if
directive would hang under certain circumstances. - Some Z80 implied accumulator disassembly statements were not listing correctly.
Version 2.4.3.4
Release 2.4.3.4
Features
- Added
.tfradp
and.tfrbdp
directives to set the direct page register and the page mode in the assembler.
Fixes
- Improved boolean expression checking.
- Fixed an issue with colons terminating semi-colon comments
- In M6809, register names are no longer available as symbol names.
Version 2.4.3.3
Release 2.4.3.3
Features
- The
--no-stats
option will supress display of statistics on successfully assembly.
Changes
- Improved detection of indirect addressing versus non-indirect addressing for Z80 instructions.
.errorif
and.warnif
directives will display a better error if the optional custom error parameter is not a string.
Fixes
- The
--createconfig
option from arguments was creating section names with quotes. - Certain block errors would cause the assembler to hang.
- Functions were allowed to be declared without a name. This has been fixed.
- Fixed certain defects related to symbols starting with underscores, as well as integral constants with underscore separators.
- Some macros were not being defined correctly, and macro names were not checked against instruction names for conflicts.
- Directives
.mx8
and.mx16
were not correctly applying to the index registers.
Version 2.4.3.2
Release 2.4.3.2
Changes
- Variables redefined in inner blocks (including conditional and loop blocks) will not be considered to be in separate scope. The only exception is variables redefined in separate function calls.
Fixes
- Some operations that should not have been valid were allowed in M6800 mode.
- The
.unmap
directive was not processing range operations correctly. - Several directives did not check parameters correctly.
Version 2.4.3.1
Release 2.4.3.1
Features
General
- Two new pseudo-ops,
.bstring
and.hstring
, allow for inserting binary and hex data as simple strings.
65816-Related
- Two new directives,
.auto
and.manual
, allow for autosizing registers when assemblingrep
andsep
. - The
--autosize-registers
command-line option allows for autosizing registers when assemblingrep
andsep
. - The
.dp
directive, which previously was only for M6809 direct page assembly, now is supported for 65816 direct page assembly as well.
Changes
- The
--dsections
option no longer requires the section name to be enclosed in quotes. - The dark theme for the VS Code syntax highlighting extension is improved.
Fixes
- Escape sequences were not assembling correctly in strings.
- The
.map
directive should now allow two values for a range (e.g.,.map 'A', 'Z', 0
). - Cheap locals were not calculating correctly.
- Some scoped symbols were not being referenced correctly if a symbol with the same name but in a outer scope was defined first.
- Warning message for
--config
command-line option should only display if--config
option is not the only option. - Formatting of disassembly and source in listing files.
- Extended indirect mode for m6809 was not assembling correctly.
- Assembling uninitialized data for
.cbmflt
/.cbmfltp
pseudo-ops - The 65CE02 instruction set should be correct now.
- Passing a string variable to the
format
function as a parameter was throwing an error. - Numeric constants with underscore separators were not assembling.
- Variables could be re-defined as labels, which should not be allowed. This has been fixed.
Release 2.4.2
Features
- Added new
.foreach
directive for list and string enumeration - Syntax highlighting support for VS Code and Notepad++
Changes
- Verbose disassembly listing format
- Refactored/simplified
ErrorLog
class
Fixes
- Some assembly errors reported the incorrect line number
- Assigning and assembling string variables
- Unknown instruction will only error once
- Statements split by colons will share same line number in error/warning outputs.
- Fixed a bug in pseudo branch assembly
- Fixed the 65816
mvn
andmvp
instructions .else
directive will no longer allow expressions- Setting logical PC directly will set the started flag.