Skip to content

Releases: informedcitizenry/6502.Net

Version 2.6.1

23 Apr 12:45
Compare
Choose a tag to compare

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

22 Jan 20:36
Compare
Choose a tag to compare

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

15 Jan 13:58
Compare
Choose a tag to compare

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 and im n.
  • Referencing a label in an expression where it is being defined should now raise an error as expected.

Version 2.4.3.6

08 Jan 14:36
Compare
Choose a tag to compare

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

31 Dec 13:16
Compare
Choose a tag to compare

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 functions cbmflt() and cbmfltp() 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

23 Dec 14:50
Compare
Choose a tag to compare

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

18 Dec 14:11
Compare
Choose a tag to compare

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

11 Dec 14:01
Compare
Choose a tag to compare

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

04 Dec 13:43
Compare
Choose a tag to compare

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 assembling rep and sep.
  • The --autosize-registers command-line option allows for autosizing registers when assembling rep and sep.
  • 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

25 Nov 13:20
Compare
Choose a tag to compare

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 and mvp instructions
  • .else directive will no longer allow expressions
  • Setting logical PC directly will set the started flag.