All VAX: Clarify Opcode Table decode values

the opcode table first word consists of bits:

<7> = FPD is legal for this opcode.
<4:6> = number of specifiers for unimplemented opcodes (VAX subsets)
<3> = unused
<0:2> = number of specifiers

The mask used to be 0x70. The convention is that x_M_y is a mask value
<right-justified>, for a macro like:

#define get_foo(x)        (((x) >> x_V_foo) & x_M_foo)

For a subset VAX (like the 3900), the unimplemented opcodes are those
This commit is contained in:
Mark Pizzolato 2017-03-20 08:10:43 -07:00
parent 33f02ae4d7
commit 6831746400

View file

@ -379,9 +379,9 @@ extern jmp_buf save_env;
#define DR_F 0x80 /* FPD ok flag */
#define DR_NSPMASK 0x07 /* #specifiers */
#define DR_V_USPMASK 4
#define DR_M_USPMASK 0x07 /* #spec, sym_ */
#define DR_GETNSP(x) ((x) & DR_NSPMASK)
#define DR_GETUSP(x) (((x) >> DR_V_USPMASK) & DR_M_USPMASK)
#define DR_M_USPMASK 0x7 /* #spec, sym_ */
#define DR_GETNSP(x) ((x) & DR_NSPMASK) /* #specifiers */
#define DR_GETUSP(x) (((x) >> DR_V_USPMASK) & DR_M_USPMASK) /* #specifiers for unimplemented instructions */
/* Extra bits in the opcode flag word of the Decode ROM array only for history results */