Skip to content

Releases: Clownacy/clownassembler

v1.1.1

14 Aug 23:29
Compare
Choose a tag to compare

Note

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.

Can assemble...

Added features

  • PURGE.
    • Undefines a macro.
  • Alternate operand syntax.
    • (Label,pc,d0.w)
    • (4,a0,d0.w)

Fixes

  • Macros not being redefinable.

v1.1

12 Aug 21:42
Compare
Choose a tag to compare

Note

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.

Added features

  • Warnings about opcodes having a dot but no size now only print when pedantic warnings are enabled.
  • Automatic even.
    • Forces DC, DCB, DS, and RS which are word- or longword-sized to begin at the next even address.
    • Enabled with ae+.
  • DS directive.
    • Allocates spaces and fills it with 0s.
  • Default arguments for the C++ interface.

Fixes

  • Special macro arguments (like \_) not always being substituted.
  • Functions like DEF and STRCMP returning 1 instead of 0xFFFFFFFF.
  • IF, ELSE, ENDC, ENDR, and similar keywords not being detected if they are hidden inside a short macro (declared with MACROS keyword).
  • MOVE not being compatible with having a register list as either of its operands.
  • INCBIN's start offset not being optional whilst a length is specified.
  • Non-string macro arguments not being converted to lowercase when case-insensitivity is enabled.
  • DC directive range errors printing numbers as decimal rather than hexadecimal.
  • Special macro arguments not absorbing their trailing backslash.
  • Got C++ interface wrapper working again.
  • Macro arguments and string constants not all being applied in order from left to right.
    • Previously, macro arguments were always applied first, even if string constants occurred before them.
  • Fixed 'symbol redefined' errors for macro-local variables which use forward references.

v1.0.1

28 Jul 20:56
Compare
Choose a tag to compare

Note

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.

Added features

  • 'FILESIZE' function.
  • Alternate opcodes from axm68k.

Fixes

  • 'MACROS' not being able to create dangling if-statements.
  • 'STRCMP' being treated as 'STRLEN'.
  • '_' potentially containing trailing garbage data.
  • 'SUBSTR' not allowing its end to be before its start.
  • 'EQUS' not being able to use a string constant as its input.

v1.0

28 Jul 03:31
Compare
Choose a tag to compare

Read the full update report on my blog!

Note

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.

Can assemble...

Added features

  • Eliminated 1024-character line length limit.
  • Comments in listing files.
  • EQU/SET/RS values in listing files.
  • EQUS SUBSTR, and INSTR (string-processing).
  • Expansion of all macros in listing files (/m command line option).
  • Forward-references to variables.
  • PUSHO and POPO (push and pop options state).
  • OPT (set options).
  • Escaped quotes within strings.
  • PUSHP and POPP (push and pop string constants).
  • Custom option wp+ (enables pedantic warnings).
  • SHIFT (removes a macro argument).
  • MEXIT (prematurely terminates macro expansion).
  • LOCAL (limits a symbol's visibility to the surrounding macro).
  • Alternative local label signifiers ('l+', 'l-', etc. options).

Fixes

  • Listing files not showing include directives.
  • Trailing white-space being included in macro arguments.
  • Nested REPT directives still not working.
  • Nested WHILE directives not working.
  • Macros modifying the input of REPT directives rather than their output.
  • Greatly improved the accuracy of inserting arguments into macro expansions.
  • NARG being a preprocessor constant instead of an assembler variable.
  • NARG never being 0.
  • Code overwritten using ORG being reverted if the overwritten code contained a forward-reference.
  • 'and.w #1,sr', or.b #1,ccr, and similar instructions failing to assemble.

v0.4

31 May 17:06
Compare
Choose a tag to compare

Note

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.

Added features

  • The \_ macro parameter specifier.
  • The strcmp function.

Fixes

  • Macro parameters sometimes not being substituted.
  • Empty strings not being recognised as strings.

v0.3.1

08 Mar 10:56
Compare
Choose a tag to compare

Note

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.

Added Features

  • C++ wrapper, for easily integrating this assembler into other projects.

Fixes

  • RS labels being able to be used before they were defined (#13).
  • Directives beginning with '.' causing a crash (#16).
  • Nested REPT directives conflicting with each other (#17).

v0.3

18 Mar 17:25
Compare
Choose a tag to compare

Note

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.

Added Features

  • The '\@', '\#', and '\$' macro parameters.
  • The OBJ and OBJEND directives.
  • Passing RSRESET a parameter.
  • The ORG directive.
  • The FAIL directive.
  • The DEF directive.
  • The '/e' command line parameter, allowing constants to be defined.
  • The 'label.w' and 'label.l' absolute address syntax.
  • Misused instructions are automatically corrected to the appropriate instruction, instead of producing an error.
  • The '/v' command line parameter, allowing local labels to be included in the symbol file.
  • The 'w+' and 'w-' options, allowing warnings to be enabled and disabled.

Fixes

  • Made RS, RSSET, and RSRESET behave accurately to asm68k.
  • Fixed using constants for INCBIN parameters.
  • Fixed asm68k-style frontend ignoring all options after the first one.
  • Renamed '__RS' to '__rs' to match asm68k.
  • Fixed broken dictionary logic which was causing symbols to be missing from the symbol file (#10).
  • Fixed true 'ELSEIF' directives causing later conditions to be processed incorrectly (#9).

v0.2

09 Sep 11:33
Compare
Choose a tag to compare

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom interface that is incompatible.

Can assemble...

Changes:

  • Added support for nested macros.
  • Fixed identifiers being mistaken for registers.
  • Fixed uppercase Z80 hexadecimal numbers not being recognised
  • Fixed integers that are too large being saturated instead of truncated.
  • Fixed random crashes and nonsensical 'symbol undefined' errors (bugged dictionary).
  • Added support for macros using their associated label using '\*' (this is needed by MainMemory's MapMacros).
  • Fixed 'else' following 'elseif' being treated as always true.
  • Fixed CNOP sometimes padding to the second-next boundary instead of the first-next.

v0.1

18 Jul 23:15
Compare
Choose a tag to compare

Initial release. Can assemble the Sonic 1 Git disassembly and SuperEgg's Sonic 2 Nick Arcade disassembly.

clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom interface that is incompatible.