On Thu, Oct 15, 2015 at 9:48 AM, Robin Vowels <robi...@dodo.com.au> wrote:
<snip> > > The reason is that they wanted the ability to move up to 256 bytes. > Had zero been a "no-op" as you suggest, then MVC could move up to > only 255 bytes (1:255). > I can accept that, but the difference between moving 255 vs 256 maximum seems a bit strange. Well, maybe it's a power of 2 type of thing. > > I agree about the need to move exactly k bytes, where k is given in a > register. > > IBM should have produced a special EXC instruction for characters, > that did what EX does, but accepts k, the number of bytes to move (or > compare, etc), > tests for zero (and performs a no-op if it is), subtracts 1, and then > executes MVC. > Now that is a very good idea. Going beyond that, I have often wanted a "execute next instruction on condition". I.e. check the CC value, like a branch does, if the condition is TRUE, then execute the next instruction, otherwise skip it. I have too many times had sequences somewhat like: LTR R?,R? JZ AROUND AHI R?,-1 AROUND DS 0H The z13 has some specialized instructions like this, such as LOC (Load On Condition) and STOC (STore On Condition). -- Schrodinger's backup: The condition of any backup is unknown until a restore is attempted. Yoda of Borg, we are. Futile, resistance is, yes. Assimilated, you will be. He's about as useful as a wax frying pan. 10 to the 12th power microphones = 1 Megaphone Maranatha! <>< John McKown