+/*
+ * With the 1981 VAX architecture reference manual,
+ * DEC defined and named two byte opcodes.
+ * In addition, DEC defined four new one byte instructions for
+ * queue manipulation.
+ * The assembler was patched in 1982 to reflect this change.
+ *
+ * The two byte opcodes are preceded with an escape byte
+ * (usually an ESCD) and an opcode byte.
+ * For one byte opcodes, the opcode is called the primary opcode.
+ * For two byte opcodes, the second opcode is called the primary opcode.
+ *
+ * We store the primary opcode in I_popcode,
+ * and the escape opcode in I_eopcode.
+ *
+ * For one byte opcodes in the basic arhitecture,
+ * I_eopcode is CORE
+ * For one byte opcodes in the new architecture definition,
+ * I_eopcode is NEW
+ * For the two byte opcodes, I_eopcode is the escape byte.
+ *
+ * The assembler checks if a NEW or two byte opcode is used,
+ * and issues a warning diagnostic.
+ */
+/*
+ * For upward compatability reasons, we can't have the two opcodes
+ * forming an operator specifier byte(s) be physically adjacent
+ * in the instruction table.
+ * We define a structure and a constructor that is used in
+ * the instruction generator.
+ */
+struct Opcode{
+ u_char Op_eopcode;
+ u_char Op_popcode;
+};
+
+#define BADPOINT 0xAAAAAAAA
+/*
+ * See if a structured opcode is bad
+ */
+#define ITABCHECK(o) ((itab[o.Op_eopcode] != (Iptr*)BADPOINT) && (itab[o.Op_eopcode][o.Op_popcode] != (Iptr)BADPOINT))
+/*
+ * Index the itab by a structured opcode
+ */
+#define ITABFETCH(o) itab[o.Op_eopcode][o.Op_popcode]
+