Pasmo 0.6.0.20061009.0 review

Download
by rbytes.net on

Pasmo project is a Z80 cross assembler, written in standard C++ that compiles easily in multiple platforms

License: GPL (GNU General Public License)
File size: 124K
Developer: Julian
0 stars award from rbytes.net

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.

Installation:

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:

-d
Show debug info during second pass of assembly.
-1 (digit 'one')
Show debug info during both passes of assembly.
-8
Same as --w8080
-v
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.
-B
Same as --bracket
-E
Same as --equ
--86
Generate 8086 code instead of Z80. This feature is experimental.
--bin
Generate the object file in raw binary format without headers.
--hex
Generate the object file in Intel HEX format.
--prl
Generate the object file in CP/M PRL format.
--cmd
Generate the object file in CP/M 86 CMD format.
--tap
Generate the object file in .tap format.
--tzx
Generate the object file in .tzx format.
--cdt
Generate the object file in .cdt format.
--tapbas
Same as --tap but adding a Basic loader before the code.
--tzxbas
Same as --txz but adding a Basic loader before the code.
--cdtbas
Same as --cdt but adding a Basic loader before the code.
--plus3dos
Generate the object file in PLUS3DOS format.
--amsdos
Generate the object file in Amsdos format.
--msx
Generate the object file in MSX format.
--public
Only the public symbols table is generated, using the file.symbol name, file.symbol must not be specified when using this option.
--name
Name to put in the header in the formats that use it. If unspecified the object file name will be used.
--err
Direct error messages to standard output instead of error output (except for errors in options).
--nocase
Make identifiers case insensitive.
--alocal
Use autolocal mode. In this mode all labels that begins with '_' are locals. See the chapter about labels for details.
--bracket
Use bracket only mode. In this mode the parenthesis are valid only in expressions, for indirections brackets must be used.
--equ
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.
--w8080

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:
The AND and OR operators now are recognized in 8080 mode.

Pasmo 0.6.0.20061009.0 search tags