Pasmo is a multi-platform Z80 cross assembler.

  Add it to your Download Basket!

 Add it to your Watch List!


Rate it!
send us
an update
GPL (GNU General Public License) 
ROOT \ Programming \ Assembler Tools
Pasmo project is a Z80 cross assembler, written in standard C++ that compiles easily in multiple platforms. Actually can generate object code in the following formats: raw binary, Intel HEX, PRL for CP/M Plus RSX, Plus3Dos (Spectrum +3 disk), TAP, TZX and CDT (Spectrum and Amstrad CPC emulators tape images), AmsDos (Amstrad CPC disk) and MSX (for use with BLOAD from disk in Basic).

Starting with version 0.5.0, can also generate 8086 code from Z80 sources, in binary format for Ms-dos COM files or in CP/M 86 CMD format.

Pasmo is a multiplatform Z80 cross-assembler, easy to compile and easy to use. It can generate object code in several formats suitable for many Z80 machines and emulators.
Pasmo generates fixed position code, can not be used to create relocatable object files for use with linkers.

Pasmo is compatible with the syntax used in several old assemblers, by supporting several styles of numeric and string literals and by providing several names of the most used directives.
However, in Pasmo the Z80 mnemonics, register and flags names and directives are reserved words, this may require changes of symbol names conflicting in some programs.

Pasmo can also generate the 8086 equivalent to the z80 assembly code. It can create COM files for ms-dos, by using the binary generation mode, or CMD files for CP/M 86, by using the --cmd generation mode. This feature is experimental, use with care.


To compile you need gcc version 2.95 or later, with the c++ language included (usually a package called g++-something).
Others compilers may also be used, any reasonable standard complaint c++ compiler must compile it with few or none corrections.
Just execute 'make' in the pasmo directory, and the excutable will be generated. There is no install, you must manually copy the executable to a directory in the PATH, if you want.

Pasmo is invoked from command line as:

pasmo [options] file.asm file.bin [file.symbol [file.publics] ]

Where file.asm is the source file, file.bin is the object file to be created and optionally file.symbol is the file where the symbol table will be written and file.publics is the file for the public symbols table. Both symbol file names can be an empty string for no generation or - to write in the standard output. When the --public option is used this is handled in another way, see below.

Options can be zero or more of the following:

Show debug info during second pass of assembly.
-1 (digit 'one')
Show debug info during both passes of assembly.
Same as --w8080
Verbose mode. Show progress information about loading of files, progress of assembly and maybe other things.
-I (upper case i)
Add directory to the list for searching files in INCLUDE and INCBIN.
Same as --bracket
Same as --equ
Generate 8086 code instead of Z80. This feature is experimental.
Generate the object file in raw binary format without headers.
Generate the object file in Intel HEX format.
Generate the object file in CP/M PRL format.
Generate the object file in CP/M 86 CMD format.
Generate the object file in .tap format.
Generate the object file in .tzx format.
Generate the object file in .cdt format.
Same as --tap but adding a Basic loader before the code.
Same as --txz but adding a Basic loader before the code.
Same as --cdt but adding a Basic loader before the code.
Generate the object file in PLUS3DOS format.
Generate the object file in Amsdos format.
Generate the object file in MSX format.
Only the public symbols table is generated, using the file.symbol name, file.symbol must not be specified when using this option.
Name to put in the header in the formats that use it. If unspecified the object file name will be used.
Direct error messages to standard output instead of error output (except for errors in options).
Make identifiers case insensitive.
Use autolocal mode. In this mode all labels that begins with '_' are locals. See the chapter about labels for details.
Use bracket only mode. In this mode the parenthesis are valid only in expressions, for indirections brackets must be used.
Predefine a symbol. Predefined symbol are treated in a similar way as defineds with EQU. Some possible uses are exemplified in the black.asm example file. The syntax is: '--equ label=value' where label must be a valid label name and value a numeric constant in a format valid in pasmo syntax. The part =value is optional, if not specified the value asigned is FFFF hex.

Show warnings when Z80 instructions that have no equivalent in 8080 are used. Makes easy to write programs for 8080 processor using Z80 assembler syntax.

When no option for code generation is specified, --bin is used by default.

The -d option is intended to debug pasmo itself, but can also be useful to find errors in asm code. When used the information is showed in the standard output. Error messages goes to error ouptut unless the --err option is used.

What's New in This Release:

· This release fixes several bugs and adds warnings for unused LOCAL and PUBLIC symbols.

Last updated on January 14th, 2007

#cross assembler #Z80 cross assembler #portable assembler #Pasmo #assembler #Z80 #portable

Add your review!