On 09/02/2015 11:05 PM, Jeff Woolsey wrote:
This isn't quite the way I remember the CMU
instructions working.
Nor is it exactly how I've implemented them in my emulator.
Sorry that my explanation was scrambled with a few blown synapses. I'll
try again.
CMU was implemented in the lower Cyber 70 (72,73) and 170 (
720, 730) as instructions 464xx through 467xx. However, what happens
with the upper Cybers varies--the 74 and 176 (as well as the 7600 and
6600) treat them as no-ops (46xxx). However, the 750 and 760 treat
464...467 as illegal instructions and error out.
According to my Cyber 72/73 reference, all CMU instructions must be
located in the first parcel of an instruction word. The Cyber 170
restates this in at least two places in the instruction reference. So
no putting an IM in the second or third parcel. The reference for the
lower 170s states that the machine does not execute any instructions in
the lower 2 parcels of a word.
Of course, the other CMU instructions 465-567 occupy a fullword, so no
problems with alignment.
One of the early "tricks' was to take the IM instruction 464 B KKKKKK
instruction, set up a B register and offset, such that the offset would
be encoded as 46000 - a plain old no-op. So, if your B register was 2,
the first 2 parcels of an instruction word looked like:
46420 46000
Two no-ops to a Cyber 74, 7600, 176 so an RJ to the regular move routine
could be put in the lower half of the word. Worked like a dream.
But when the upper Cyber 170 systems (750, 760) came onto the scene,
that "clever" code quit working. Maybe NOS/NOS-BE recognized the
illegal instruction exception and implemented the IM and other CMU
instructions in software, but I was off onto non-Cyber stuff by then.
Regardless, I do recall some grumbling at the time.
I never knew if the CMU ever amounted to much in the real world other
than for the IM instruction. You pretty much had to build the
instructions for CC CU and DM, which involved a fair amount of setup
code. I'm sure that Don Nelson had a directive from on high to put them
into COBOL, but I never saw any benchmark results--I was off working on
64 bit hardware and 6-bit characters weren't part of my world.
Such is my limited exposure to the late Cyber 70/early Cyber 170
machines re CMU. I have no knowledge of how such stuff worked in 60 bit
mode on the 180s. It's been 40 years after all.
--Chuck