ZooEY

ZooEY is a crossassembler designed for 6502 processors. Binaries are generated specially for 8-bit Atari systems (AtariDosII and SpartaDOS X formats supported). This tool is compatible with Quick Assembler, one of the most popular assemblers in Poland.

options

qa incompatibilities

ZooEY is a Quick Assembler descendant. As such it should work well with any code written for Quick Assembler, but while porting original QA sources, keep in mind that there are some OPT arguments which are not supported. The implemented ones control binary headers and compile-time listing. For details, look at pseudo directives section below and -z switch.

values and types

A numeric value is a number from 0 to $FFFF (0-65535). It can be put down in any of the following ways, which defines how it is treated by the assembler: The following arithmetic/logic operations are supported:

macros

A macro must be contained within the scope of "mac" and "endm" directives. An argument of macro can be invoked from within the macro by the '\' character followed by the argument number, given as a decimal. To use a macro you just call its name and arguments like: macro_name arg1,arg...,argN.
INOTICE: Macros can be nested but constants cannot be defined within macros.
An example:
Defining a macro:
blah mac
  lda \1
  sta \2
enm

Using the macro:
  blah $2000,$2001

The macro above will be expanded by assembler into:
  lda $2000
  sta $2001

conditional assembling

The following directives are supported:
  .if condition
  .ifdef label
  .elif condition
  .else
  .fi
where 'condition' is any arithmetical or logical expression. An example:
wait_for_sync equ 1

  .if wait_for_sync
  lda 20
  cmp 20
  beq *-2
  .fi

additional directives

Those two are automatic. I.e. assembler recognizes the EOLs anyway. If, for some reason the assembler can't parse the EOLs, those directives can force it into a specified EOL mode. The assembling of unpublished (illegal) or extended (65C02) instructions.
By default ZooEY uses the op-code list of a generic vanilla MOS6502. If you want to extend the instruction set use the following:

pseudodirectives

extra tools

There are also three scripts:

authors

reporting bugs

Report bugs to ten.egrofecrous.stsil@leved-8irata.