> My curiosity is why MVCLE sets the CC, thus forcing user code to branch back.
> Why not just not update the PSW instruction address until all the data is
> processed? Still allow the interrupt like MVCL does, of course. I understand
> why the interrupt is necessary, especially in a single CP environment. Does
> anybody know? Is it a "millicode" thing?
Well it *is* a millicode "thing" in so far as the instruction is implemented in
millicode. So why does it work this way? The idea is that the instruction can
come up for air somewhere in the middle and give the application the
opportunity to do something else before continuing/resuming the move. Examples
would be (perhaps) checking I/O completion, kicking off (another) I/O request,
processing some business logic on the data being moved etc. Can't say I have
ever come across a situation where that actually happens. But they are at least
theoretically possible with MVCLE and *not* with the plain old fashioned MVCL.
Realistically the only time that this would come into play is while doing very
large moves on a busy system. Otherwise the MVCLE just does its thing and
control passes to the next instruction.
CC