From RoadsideThoughts ...
A Bit of Vectrex History
Mine Storm
Fortress of
Dark Tower

Vectrex Programmers Guide

The ACT09 Assembler


At Western Technologies, we used the Avocet 6809 cross-assembler. A cross-assembler is a tool that takes the source code written on the development machine and translates it to some form of executable code (called hex or binary). When Mark Indictor and I moved to GCE, we chose to use the ACT09 6809 assembler. In our case, we wrote our source code on a CP/M-based development system and the cross-assembler translated it to 6809 executable code. If the assembly was clean (no errors), the resulting hex code would be downloaded to either the ROM emulator or to the EPROM programmer.

Why did we switch? That I can't recall. I imagine that there was probably some esoteric ACT09 feature that we liked better than the Avocet - but I can't remember what made the decision. I would comment that looking between the code for the Avocet and the code for ACT09, the ACT09 seems to have been the more modern assembler.

ACT09 Command Line Syntax

Parameter Description
H=d: Output .HEX file to the specified disk ('d:')
(Default: output to input file drive)
H=d:file.ext Output .HEX file to the specified disk ('d:'),file name and extension
H=0 Suppress .HEX file output
L Output listing to printer
L=d: Output .PRN file to the specified disk ('d:')
L=CON: Output listing to user's console
L=LP: Output listing to printer
L=0 Suppress .PRN file output (Default)
O=n Preset values of 'Origin' and location counters (Default value is $0000)
PS Set page size to 63 (Default is 61)
PS=n Set page size to <n> source lines per page.
PS=0 Do not print title line and page ejects to list file
S Select normal SYSTEXT file ('A:SYSTEXT.AST')
S=d:file.ext Select alternate SYSTEXT file. User may specify as many SYSTEXT's as desired (so long as combined number of SYSTEXT's and LINK files does not exceed LINK file limit).
S=0 No SYSTEXT for this assembly is required (Default).
R=F Include full reference map in listing file.
R=S Include short reference map in listing file.
R=0 Suppress reference map (Default).
SL Set listing line length to 80 characters (Default value is 180 characters).
SL=n Set line length to <n> characters.

All numeric argument values may be specified according to the general syntax for numbers. An explicit post-radix (B, H, N, or Q) used.

All lower case letters on the command line are normalized (to upper case) before interpretation.

ACT09 execution may be prematurely terminated by the operator by typing a 'Control C' on the console.

If a disk write error happens, ACT09 displays a message on the console. The offending file (.HEX or .PRN) is erased and further writes to it are suppressed. Assembly then continues normally.

ACT09 Expression Operators

Operator Description
+ Sum
- Difference
* Multiply
/ Divide
NOT Unary = bit-by-bit complement
AND Logical products, conjunction
OR Logical sum, disjunction, inclusive OR
XOR Logical difference, inequivalence, exclusive OR
lop Where .lop. may be: NE(<>) EQ(+) LT(<) LE(<=) GT(>) GE(>=)
SHL Left shift N bits
SHR Right shift N bits
HIGH Unary, high value to 8 bit field (x / 256)
LOW Unary, low value to 8 bit field (x MOD 256)
MOD Modulus function
REV Unary ((LOW x) SHL 8) + HIGH x)
EF Unary, logical = TRUE if symbol previously defined.

ACT09 Operator Precedence

HIGH     LOW         DEF     REV
*     /     MOD     SHL     SHR
+ (monadic)
+ (dyadic)
=     <>     <     <=     >     >=     NE     EQ     LT     LE     GT     GE
OR     XOR

ACT09 Expression Operands

Operand Description
* Current location counter
*L Same as * (Refer to LOC psuedo-op)
*O Current value of Origin counter (Refer to ORG psuedo-op)
*P Current position counter (Refer to VFD psuedo-op)

ACT09 Error Codes

Errors are flagged by a single letter code in column one of the output listing. Lines containing errors are always written to the console, regardless of the listing selection.

Error Description
A Addressing mode conflict. Instruction specified does not support the addressing mode selected.
C CPU conflict. The instruction specified is not available on the machine type selected (CPU psuedo-op). The generated hex will be correct for the illegal machine.
D Duplicate label (last value assigned the given label is used).
E Expression error, ill formed expression in address field.
F Bad nesting of IF / ELSE / ENDIF statements. On the END line, indicates that an IF was not terminated.
I Instruction field not recognized, a long no-op is generated. On the END line, indicates a MACRO or ECHO was not terminated.
L Label field has either an illegal character in field, is too long or is missing.
M MACRO statement error.
N Error in number: digit exceeds radix.
O Stack table overflow occurred in evaluating expression (user should simplify expression), too many LINK files or too many PROCs (255 maximum).
S Syntax error.
U Reference to an undefined symbol.
V Expression overflow: truncated or register conflict.
W Field width on VFD not (1 <= width <= 16).
Y Opcode misused: Extraneous ENDM.


Sitemap Privacy
of Use


Please keep in mind that we can not guarantee the accuracy or timeliness of the information on this website, so use with care. We encourage you to double-check the information that is critical to you.

If you've found an error or have additional information that you would like to share, please don't hesitate to write. Click here to contact us.

Copyright 2019
All Rights Reserved
This page was last modified: 26 Feb 2021
By John Hall