2 unstable releases

0.7.0 Aug 14, 2023
0.6.0 Apr 24, 2022

#629 in Embedded development

33 downloads per month
Used in 2 crates (via cpclib-bndbuild)

MIT license

1.5MB
24K SLoC

BASM

Synopsis

Benediction ASseMbler is a modern z80 assembler dedicated to Amstrad CPC plateform. It has been developed and used mainly for the demo CRTC.

No true documentation has been written yet... But some little parts can be found here What can be retained is that:

  • It's parser is definitevely slower than rasm ones, but speed remains still competitive
  • It contains all standard assembler directives (file inclusion, conditional assembling, variables, macros definition, loops, local labels)
  • As well as uncommon ones (functions definition, list and matrices handling, embedding of file by the assembler)

Of course, there are still bugs due to the limited number of users ;) but it worked propelrly with my use cases

Lots of examples are available in <tests/asm> folder.

Help

basm.exe --help`
Profile debug compiled: Fri, 18 Aug 2023 14:05:52 +0000

Benediction ASM -- z80 assembler that mainly targets Amstrad CPC

Usage: basm.exe [OPTIONS] [INPUT]

Arguments:
  [INPUT]  Input file to read.

Options:
      --inline <INLINE>                Z80 code is provided inline
  -o, --output <OUTPUT>                Filename of the output.
      --db                             Write a db list on screen (usefull to get the value of an opcode)    
      --lst <LISTING_OUTPUT>           Filename of the listing output.
      --sym <SYMBOLS_OUTPUT>           Filename of the output symbols file.
      --sym_kind <SYMBOLS_KIND>        Format of the output symbols file [default: basm] [possible values: winape, basm]
      --basic                          Request a Basic header (the very first instruction has to be the LOCOMOTIVE directive).
      --binary                         Request a binary header
      --snapshot                       Generate a snapshot
  -i, --case-insensitive               Configure the assembler to be case insensitive.
  -d, --directives-prefixed-by-dot     Expect directives to by prefixed with a dot
  -I, --include <INCLUDE_DIRECTORIES>  Provide additional directories used to search files
  -D, --define <DEFINE_SYMBOL>         Provide a symbol with its value (default set to 1)
      --m4 <TO_M4>                     Provide the IP address of the M4
  -l <LOAD_SYMBOLS>                    Load symbols from the given file
      --Werror                         Warning are considered to be errors
      --progress                       Show a progress bar.
      --list-embedded                  List the embedded files
      --view-embedded <VIEW_EMBEDDED>  Display one specific embedded file [possible values: inner://crtc.asm, inner://deexo.asm, inner://dzx0_fast.asm, inner://dzx0_standard.asm, inner://firmware/amsdos.asm, inner://firmware/casmng.asm, inner://firmware/gfxvdu.asm, inner://firmware/highkern.asm, inner://firmware/indirect.asm, inner://firmware/kernel.asm, inner://firmware/keymng.asm, inner://firmware/lowkern.asm, inner://firmware/machine.asm, inner://firmware/math6128.asm, inner://firmware/mathnot464.asm, inner://firmware/mathnot6xx.asm, inner://firmware/not464.asm, inner://firmware/scrpack.asm, inner://firmware/sound.asm, inner://firmware/txtvdu.asm, inner://ga.asm, inner://lz48decrunch.asm, inner://lz49decrunch.asm, inner://lz4_docent.asm, inner://opcodes_first_byte.asm, inner://pixels-routs.asm, inner://unaplib.asm, inner://unaplib_fast.asm]
  -h, --help                           Print help
  -V, --version                        Print version

Still a Work In Progress assembler

Dependencies

~36–56MB
~747K SLoC