tavrasm(1)

NAME
tavrasm - AVR macro assembler to Linux

SYNOPSIS
usage: tavrasm [-vwclxmihjgbafd] <infile>
               [-I <includepath>]...
               [-o <outfile>] [-r <rom>] [-e <listfile>]

OPTIONS
       -v verbose
       -w no warnings
       -c case sensitive labels/defines
       -l limit log width to 80 characters
       -x allow local labels
       -m output Motorola S-record format
       -i output Intel HEX format (default)
       -h omit address extension record from
               Intel HEX files
       -j output .obj format
       -g output generic hex
       -b output binary format
       -a wrap relative jumps
       -f allow forward org's
       -d list supported devices

SUPPORTED Atmel AVR DEVICES
 +-------------------------------------------------+
 | Device name | Ram | Flash | Ram | EEPROM |
 | | Start | size | size | size |
 |-------------+-------+----------+-------+--------|
 | GENERIC | 96 | 16777216 | 65536 | 65536 |
 | AT90S1200 | 96 | 512 | 0 | 64 |
 | AT90S2313 | 96 | 1024 | 128 | 128 |
 | AT90S2323 | 96 | 1024 | 128 | 128 |
 | AT90S2343 | 96 | 1024 | 128 | 128 |
 | AT90S4414 | 96 | 2048 | 256 | 256 |
 | AT90S4433 | 96 | 2048 | 256 | 256 |
 | AT90S4434 | 96 | 2048 | 256 | 256 |
 | AT90S8515 | 96 | 4096 | 512 | 512 |
 | AT90S8535 | 96 | 4096 | 512 | 512 |
 | ATMega103 | 96 | 65536 | 4096 | 4096 |
 | ATMega8 | 96 | 4096 | 1024 | 512 |
 | ATMega161 | 96 | 8192 | 1024 | 512 |
 | ATMega162 | 96 | 8192 | 1024 | 512 |
 | ATMega163 | 96 | 8192 | 1024 | 512 |
 | ATMega16 | 96 | 8192 | 1024 | 512 |
 | ATMega323 | 96 | 16384 | 2048 | 1024 |
 | ATMega32 | 96 | 16384 | 2048 | 1024 |
 | ATmega8515 | 96 | 4096 | 512 | 512 |
 | ATmega8535 | 96 | 4096 | 512 | 512 |
 +-------------------------------------------------+

ASSEMBLER MACROS BUILT IN
  STAR DIV MOD
  LS RS
  LE GE LESS GREAT EQ NE
  OR XOR AND
  OROR ANDAND
  LPAR RPAR
  COLON COMMA DOT EQUAL PLUS MINUS
  WAVE NOT
  EOL RESTART ENDOFFILE
  DEF EQU DB DW ORG ALIGN
  CSEG DSEG ESEG
  BYTE SET DEVICE STRING MACRODEF

MORE RESERVED WORDS
  REGISTER REGXYZ SYMBOL INTEGER COUNTER FUNCTION
  IREGREG IREGREGW IIMMIMM IREGIMM IREGIMMW IIMMREG
  IREG IIMM INOARGS IINDIRC ILPM STRING

DESCRIPTION
Toms AVR macro assembler - tavrasm 1.22 tavrasm - A GNU/Linux assembler for the Atmel AVR series of micro-controllers. Copyright (C) 1999-2003 Tom Mortensen. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

INTRODUCTION
tavrasm is an assembler for the Atmel AVR family of micro- controllers. It uses a syntax similar to the one found in the Atmel AVR DOS assembler. Some of the features includes:
   - Super-set of Atmel AVR assembler.
   - Macros in macros.
   - Save Intel HEX, Motorola S-record, Generic
     and binary output.
   - More than 100 warning/error messages.
   - Atmel object files compatible with Atmel's
     AVR Studio.
   - C escape characters in char/string literals.
   - Runs on (win)DOS, Linux, OS/2, Solaris, ...
   - Free software released under GPL.

INSTALLATION
Copy the tavrasm executable to a directory in your path.

INVOKE
Just type 'tavrasm file.asm' or, with some switch above.

COMPILE
tavrasm should compile on most systems that are supported by gcc.

GENERATED MESSAGES
Next lists give the most common feedback lines from tavrasm .

ERROR MESSAGES
  * Undefined variable referenced
  * Undefined variable referenced in bit number
  * Undefined variable referenced in I/O port address
  * Undefined variable referenced in branch
  * Undefined variable referenced in bit mask
  * Undefined variable referenced in constant
  * Undefined variable referenced in address
  * Undefined variable referenced in displacement
  * Undefined variable referenced in relative call
  * Undefined variable referenced in relative jump
  * Undefined variable referenced in jump/call
  * Undefined variable referenced in constant in .db
  * Undefined variable referenced in constant in .dw
  * Undefined variable referenced in offset
  * Undefined variable referenced in constant in .byte
  * Division by zero
  * Invalid register (r16-r31)
  * Invalid register SSS
  * Branch out of range by XX words (backwards)
  * Branch out of range by XX words (forward)
  * Invalid register (r24/r26/r28/r30)
  * Invalid source register rXX (X/Y/Z)
  * Invalid destination register rXX (X/Y/Z)
  * Call out of range by XX words (backwards)
  * Call out of range by XX words (forward)
  * Jump out of range by XX words (backwards)
  * Jump out of range by XX words (forward)
  * Label 'SSS' already defined at line XX in 'SSS'
  * Label 'SSS' already defined at line XX in 'SSS'
  * Variable 'SSS' already defined as label at line XX
    in 'SSS'
  * .dw in DSEG (only allowed in CSEG and ESEG)
  * .db in DSEG (only allowed in CSEG and ESEG)
  * Macro 'SSS' already defined (or duplicates label)
  * Program code in DSEG (only allowed in CSEG)
  * Program code in ESEG (only allowed in CSEG)
  * Unable to include file 'SSS' - include depth exceeded
  * Invalid include filename specified
  * Unable to open file 'SSS'
  * Unable to expand macro - context depth exceeded
  * End of file reached in macro definition
  * Filename too long at line XX in 'SSS'
  * Invalid filename
  * Register expected
  * Invalid register specified
  * Invalid register or immediate
  * Invalid immediate constant
  * No argument expected
  * Unknown opcode
  * Expected ID = register
  * Expected value (,value ,...)
  * No arguments should be specified
  * Expected value/label
  * Expected ID = expression
  * Expected device name
  * Variable declaration in CSEG
  * Macro with no name
  * Undefined escape sequence 'SSS'
  * No filename specified
  * Macro used before it is defined
  * Undefined escape sequence 'CHR'
  * Unexpected .endmacro directive
  * Macro definition within macro not allowed
  * Expected register, displacement
  * Expected displacement, register
  * No displacement can be specified for X (use Y/Z)
  * Invalid register rXX (expected r23-r31)
  * Displacement can not be specified here
  * Invalid register specified, expected 'Z'
  * Pre-increment is invalid here (use 'Z' or 'Z+')
  * Invalid register rXX (expected rXX-rXX)
  * Invalid register rXX (expected r0, r2, ...)
  * Undefined variable referenced in constant in .align
  * .align value not a power of two

FATAL ERRORS
  * No fatal error
  * Out of memory
  * Line too long in 'SSS'
  * Macro line too long at line XX in 'SSS'
  * Unable to open input file 'SSS'
  * Unable to open list file 'SSS'
  * Unable to open output file 'SSS'
  * Unable to open rom file 'SSS'
  * Too many files included
  * Code size exceeded
  * EEPROM size exceeded
  * Max macro depth exceeded

MESSAGES
  * No message
  * Empty rom file
  * Can not save rom file with .obj format
  * No input filename specified
  * Unknown option 'SSS'
  * More than one of m/i/j/b/h specified
  * No rom filename specified
  * Rom filename too long
  * Illegal rom filename
  * No list filename specified
  * List filename too long
  * Illegal list filename
  * No output filename specified
  * Output filename too long
  * Illegal output filename
  * Multiple output files specified
  * Input filename too long
  * Illegal input filename
  * Multiple input files specified
  * Errors : XX
  * Warnings : XX
  * Code : XX
  * Rom : XX
  * Data : XX
  * Unused Code : XX
  * Unused Rom : XX
  * No code generated
  * | Device name | Ram start | Flash Size | Ram size |
    | EEPROM Size |
  * No include path found after '-I' flag
  * Too many include paths specified
  * Include pathname too long

AUTHORS
  Copenhagen, December 2004, Tom Mortensen
                        E-mail : tom@tavrasm.org
                        WWW : http://www.tavrasm.org