The Easycoder assembler used here is actually a cross-assembler that is built-in to the Virtual H2000. It currently implements a lot, but not all, of the features described for OS/2000.
Supported assembler directives:
|LITORG||Same as ORG. Literals not supported.|
|RESV||also supports RESV,fill form using CLEAR|
|DSA||supports only a single address, does not support use as general instruction operands|
|REP||Only for DCW, DC, and DSA. No limit on count.|
|EX||Code must "B 130" to resume assembly/loading|
|XFR||Code must "B 130" to resume assembly/loading|
|RANGE||Stored in BRT as a pair of "set address" control codes|
|CLEAR||Only in BRT format output or immediate execution|
It is not known if all possible operands will work with the above directives.
In addition, all of the punctuation modifiers (Set I and Set II) are supported.
It also supports indirect and indexed addressing.
Macros are supported, but currently only Virtual Macros. These require a "MAC name" line to setup the macro definitions, and this line must be after a valid ORG but outside of any default executable path. This looks for a class named "MacroLibname" which must exist in the JAR or classpath. The class constructor must take a single parameter which is an instance of Assembler. See MacroDef.java for more interface requirements. See MacroLibTEST.java for an example.
None of the pseudo-opcode forms are currently supported, that is, the short-hand instructions for specific variant character values.
This assembler is a crude two-pass assembler. It should, however, detect re-definition (duplicate instances) of labels as well as undefined labels. Error handling is also not perfect. In some cases, assembly continues. In others, it will abort.
"Alternate card format" (symbolic tags of up to ten characters, "A" in PROG col 75) is not supported.
In general, any features not described in the Programmer's Reference Manual are not supported, since the detailed Easycoder documentation is not available.
The assembler, or rather the front panel which runs the assembler, may need help to fully understand a program's memory range. If the program uses a block of memory that is not specifically reserved or defined, it may be necessary to mark that boundary. For example, the "machin.ezc" program has a label "TOP" which specifies the highest memory location it will use. Just prior to the END directive, there is an ORG TOP and a RESV 1 to provide the necessary boundary. The RANGE directive is intended for this, but either method requires that this information be stored in the output or somehow made known when the program is run. Such a method is not yet know.
The following ASCII characters may be used for Honeywell special characters that have no equivalent in 7-bit ASCII: