I'm trying to figure out why emulation of the ASH instruction by my emulator is marked as faulty. I use the XXDP+ "EKBBF0" test to verify its cpu emulation.
If I look at the source-code of EKBBF0, then I see:
3468 006500 072100 ASH R0,R1 ; EXECUTE INSTRUCTION UNDER TEST
...as if 00 means register R0 and 1 means register R1 (R1 being the register to be shifted).
(3468 is the line number, 006500 the addres of the instruction and 072100 the opcode)
In the "PDP-11/70 Handbook 1977/'78" on the other hand,
ASH / Shift Arithmetically / 072RSS
The contents of the register are shifted right or left
the number of times specified by the source op-
erand. The shift count is taken as the low order 6
bits of the source operand. This number ranges
from -32 to +31. Negative is a right shift and
positive is a left shift.
This description makes me think the lower 6 bits are not an "addressing mode + register number" but a signed value instead.
What is the right interpretation?