tniASM - Macro Assembler

tniASM v1.0 is a powerful yet easy to use processor-agnostic and assembly-agnostic macro assembler for 32-bit Windows and 64-bit Linux.

It is ideal for customized assembly, custom FPGA CPU, and even does non-assembly work like file manipulation. Continuing tniASM tradition, great care has been taken in remaining very easy to use while providing powerful features.

The most important feature, the base of everything, is the powerful macro processor. It provides:

  • Multiple CPU support, even within the same source file
  • Customized assembly, use the (pseudo-)instructions YOU like
  • Ability to be compatible with other assemblers

Other features include:

  • Multi-pass design
  • Conditional assembly
  • Local label mechanism
  • Extensive expression parser with precedence levels
  • Source and binary file inclusion
  • Nestable block comments
  • Output to multiple files
  • Update/patch existing files

tniASM v1.0 comes with macro definitions for:

  • Z80, R800, Gameboy Z80 (GBZ80), Z180 and Z380 CPU, as well as 6502 and 65816 CPU
  • Code, data and reserved data sections
  • tniASM v0.45, asMSX and Sjasm compatibility

Additional contributions include a (Windows-only) MemMan TSR Development Kit by Albert Beevendorp.

tniASM v1.0 is in production use for all projects by The New Image and several others.

Freeware version

Versions in the v0.x release series are freeware, but do not support macros.

tniASM v0.45 is a Z80, R800 and GBZ80 cross assembler running in Windows. Version v0.3 (also) runs in MS-DOS.

tniASM is written by Patriek Lesparre, © 2000-2023 by The New Image


2 November 2011 - In celebration of the official death of the v0.x series of tniASM, a bugfix version v0.45 with codename "Magnum mercy shot" was released. At the same time, a sponsorship program identical to the one in place for MoonSound Music Studio was launched for the upcoming tniASM v1.0, which is poised to replace it (and pretty much any other assembler you've ever used).

What's new:

  • Fixed: Generate error for LD L,IXL (or similar) instead of simply outputting LD IXL,IXL.
  • Now supports using expressions for the fixed numeric operands in IM, RST, BIT, RES and SET instructions. Previously generated an error or wrong result!
  • Officially the last version of the v0.x series. See Chapter 3.3 of the manual for more information about tniASM v1.0.

2 March 2005 - Released v0.44! Another quick fix release.

What's new in v0.44:
- Fixed: $ during PHASE