Tatara

Version 1.2.0 · for MSX-DOS2 and Nextor

A Z80 assembler and linker that runs on the MSX

Tatara turns programs written in Z80 assembly language into programs that run on an MSX. You write, assemble, link and run on the same machine, or in an emulator. It reads the assembly language of Microsoft’s MACRO-80, so programs and books written for MACRO-80 can be used with it.

Download Tatara 1.2.0 Read the manual

Free software under the Apache License 2.0. The manual is in English and Japanese, online and as PDF.

A:\TATARA\EXAMPLES\HELLO>tatara hello.as hello.tro
Tatara MSX Macro-Assembler v1.2.0
Copyright (C) 2026 Javier Lavandeira
https://tatara.tools

ended at HELLO.AS(22)

A:\TATARA\EXAMPLES\HELLO>tanren /o:hello.com hello.tro
Tatara MSX Linker v1.2.0
Copyright (C) 2026 Javier Lavandeira
https://tatara.tools

1 module, 7 records, ends at EOF.
Wrote HELLO.COM, 0100-0121 (34 bytes), entry 0100.

A:\TATARA\EXAMPLES\HELLO>hello
Hello from Tatara.
The first program in the manual, assembled, linked and run.

Two programs in one package

TATARA the assembler

Reads your source files and turns them into object files: machine code, but not yet a program you can run.

TANREN the linker

Joins one or more object files, decides where in memory each part goes, and writes the finished program.

What it can do

Long symbol names

Names of up to 255 characters, and case-sensitive names with the /C option.

Macros and conditional assembly

Write a piece of code once and use it many times, and include or leave out parts of a program when it is assembled.

Custom data, code, and transient segments

Keep code and data in separate segments, and give them names. In a transient segment, data that only one part of a program needs at a time shares the same memory.

Full support for subdirectories

Sources, include files and object files can be anywhere in the MSX-DOS2 directory tree. Included files are looked for in three places, and the TATARA and TANREN environment variables add more.

Include files for the whole MSX system

Nine include files define the BIOS and SUB ROM entry points, the hooks, the system work area, the MSX-DOS2 functions and error codes, the I/O ports and the extended BIOS, with the names the MSX documentation uses. Write CHPUT, H.TIMI or _STROUT instead of looking up their addresses and numbers.

Build large programs

Tables, and the program being linked, are kept in the memory mapper. The limit is the memory in your MSX, not what MSX-DOS leaves free.

Read instructions from an external file

Give TANREN its list of files and its options in a text file, beyond the 127 characters of an MSX-DOS command line.

Errors that point to your line

A message names the file and the line you wrote, even when the line came from a macro or an included file.

Build ROMs, .COMs and binaries for BLOAD

TANREN writes ROM cartridge images, programs for MSX-DOS, binaries for MSX-BASIC’s BLOAD, and code images for any address.

R800 instructions

MULUB and MULUW, the multiplication instructions of the MSX turbo R.

Undocumented instructions

SLL, and the instructions that use IXH and IXL, as MSX programs use them.

What you need

  • An MSX2 or later running MSX-DOS2 or Nextor, or an emulator that runs them.
  • A memory mapper. Every MSX that runs MSX-DOS2 already has one.
  • An editor that saves plain text files.

Getting started explains how to install Tatara and build a first program.

Where the names come from

A tatara (たたら) is the clay furnace in which iron sand and charcoal are burnt, over about three days, into raw steel. Tanren (鍛錬) is the forging that follows: the smith heats, hammers and folds the steel until it becomes a blade. The assembler and the linker do the same two jobs for a program.