# Supported assemblers

If you use SkoolKit to generate an ASM version of your disassembly, and you want to assemble it, you will need to use a supported assembler. At the time of writing, the assemblers listed below are known to work with the ASM format generated by skool2asm.py:

- pasmo (v0.5.3)

- SjASMPlus (v1.07-rc7)

- z80asm, the assembler distributed with z88dk (v1.8)

Note

SjASMPlus does not recognise instructions that operate on the high or low half of the IX and IY registers in the default form used by SkoolKit (e.g. `LD A,IXl`). A workaround is to write the ASM file in lower case using the `--lower` option of skool2asm.py.

Note

z80asm does not recognise binary constants in the form supported by SkoolKit (e.g. `%10101010`). If your skool file contains any such constants, the `%` characters must be replaced by `@` (e.g. `@10101010`) after conversion to ASM format.

The following sections give examples of how to use each of these assemblers to create a binary (raw memory) file or a tape file that can be used with an emulator.

## Using pasmo

First, create an ASM version of the disassembly:

    $ skool2asm.py game.skool > game.asm

Then use pasmo to create a binary file named game.bin thus:

    $ pasmo game.asm game.bin

## Using SjASMPlus

First, create an ASM version of the disassembly:

    $ skool2asm.py game.skool > game.asm

Then create a file named game.sjasm with the following contents:

    ; SjASMPlus source file for game.asm
      device zxspectrum48
      include game.asm
      savebin "game.bin",ORG,LENGTH

replacing `ORG` and `LENGTH` with the origin address and the length of the assembled program. Now run sjasmplus on this source file:

    $ sjasmplus game.sjasm

and a binary file named game.bin will be created.

## Using z80asm (z88dk)

First, create an ASM version of the disassembly:

    $ skool2asm.py game.skool > game.asm

Then use z80asm to create a binary file named game.bin thus:

    $ z80asm -rORG -b game.asm

replacing `ORG` with the origin address (in hexadecimal notation) of the program.

## Creating a TAP file

Having created game.bin by using your chosen assembler, you can now create a TAP file by using bin2tap.py:

    $ bin2tap.py game.bin

The resultant TAP file, game.tap, can then be loaded into an emulator.

## Creating a Z80 snapshot

Having created game.bin by using your chosen assembler, you can now create a Z80 snapshot by using bin2sna.py:

    $ bin2sna.py game.bin

The resultant snapshot, game.z80, can then be loaded into an emulator.