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

Reply via email to