<--  back   Last regenerated: 2022-04-20 17:31:36 kio

zasm - Z80 Assembler – Version 4.4

Command Line Options

-T --test

Until version 4.1.4: Run zasm's built-in self test. This requires that you have zasm's project directory at hand, because zasm will compile a bunch of source files and compare the output with the files present there. You can append the directory path of the project to the command, else zasm will use the current working directory. You can also append the path to the c compiler with '-c'. Assembler directives: #if, #elif, #else, #endif
Pseudo instructions: if, endif
If no c compiler is given, then zasm looks for sdcc in subdirectory sdcc/bin/ or sdcc/bin-Linux32/ or sdcc in your $PATH. Assembler directives: #if, #elif, #else, #endif
Pseudo instructions: if, endif
If the c compiler cannot be found, then some testcases will fail. (currently one testcase.)

$> zasm -T ./Test

Since version 4.1.5: Run all regression tests in a directory. The directory is scanned recursively. Only files which Pseudo instructions: end, .end
8080 pseudo instructions: END
end with ".asm" and which start with a Shebang '#!' in line 1 are assembled and compared. Symbolic links, whether files or folders, are ignored.

A single regression test case consists of a proper assembler source with a shell-style first line, which was (or could have been used) to assemble this file originally, and the output file created that way.

Formerly the arguments in line 1 are not evaluated by zasm (except Assembler directives: #if, #elif, #else, #endif
Pseudo instructions: if, endif
if running the regression tests). They are evaluated by the shell, Assembler directives: #if, #elif, #else, #endif
Pseudo instructions: if, endif
if you run this file as a command. Since version 4.3.4 zasm itself also evaluates some of these options. You may use this trick and always execute your source files to save you some typing in your own projects.

$> # create test case from file test1.asm
$> # edit test1.asm and Pseudo instructions: defl, set and '='
Labels: SET
set line 1 to:
#!/usr/Assembler directives: #local, #endlocal, .local and .endlocal
Pseudo instructions: #local, #endlocal, .local and .endlocal
Including C Source Files: #local, #endlocal, .local and .endlocal
local/zasm # without any option or #!/usr/Assembler directives: #local, #endlocal, .local and .endlocal
Pseudo instructions: #local, #endlocal, .local and .endlocal
Including C Source Files: #local, #endlocal, .local and .endlocal
local/zasm --Command Line Options: --z180
Pseudo instructions: .z80, .z180 and .8080
z180 -o original/ # add options and a output directory $> cd /my/test/dir # must stay in source's dir when creating the reference file $> chmod u+x test1.asm # make source executable $> ./test1.asm # execute it to create the reference file $> # later: $> zasm -T # run all tests in the current directory or $> zasm -T /my/test/dir # in the named directory or $> zasm -T -v # with additional options for all test cases zasm: +++ Regression Test +++ zasm: scanning directory for test sources ... zasm: found 3 test source files assemble file: /pub/Develop/Projects/zasm-4.0/Test/8080/zasm-test-opcodes-8080.asm assembled file: zasm-test-opcodes-8080.asm 412 lines, 1 pass, 0.0037 sec. no errors assemble file: /pub/Develop/Projects/zasm-4.0/Test/Command Line Options: --z180
Pseudo instructions: .z80, .z180 and .8080
Z180/zasm-test-opcodes-180.asm assembled file: zasm-test-opcodes-180.asm 1999 lines, 2 passes, 0.0121 sec. no errors assemble file: /pub/Develop/Projects/zasm-4.0/Test/Command Line Options: --z80
Pseudo instructions: .z80, .z180 and .8080
Targets: #target Z80
Z80/CPM22.asm assembled file: CPM22.asm 3741 lines, 2 passes, 0.0171 sec. no errors total time: 0.0329 sec. zasm: no errors $>

A regression test file must successfully assemble and produce an output file.

Line 1 is parsed by zasm when running the regression test. Therefore no sophisticated Bash tricks should be used here.

Assembler directives: #if, #elif, #else, #endif
Pseudo instructions: if, endif
If no output directory is specified in line 1, then the source file's directory is used. The directory path may be a partial path. Then the regression test uses the source file's directory as the starting point. Therefore you should cd into the source directory before running the source to create the reference file, to make sure that the regression test can find it.

There are two unusual instructions which are specially useful in these tests, though they may be used in any source:

Check an assumption:

Assembler directives: #assert
Pseudo instructions: #assert
#ASSERT my_boolean_value

Use '!' in column 1 to check that a source line fails:

!   sub de,bc

Valid HTML   Valid CSS