[comp.sys.apple2] sideaffect of MVN/MVP instruction

acmfiu@serss0.fiu.edu (ACMFIU) (05/28/91)

someone want to explain to me why the MVN/MVP instructions don't restore
the data bank register? (yes, i'm moving data in different banks).

albert

ujmurphy@KING.MCS.DREXEL.EDU (Jim Murphy) (05/30/91)

albert recently asked:

>someone want to explain to me why the MVN/MVP instructions don't restore
>the data bank register? (yes, i'm moving data in different banks).

     Well, because they don't. The instruction set reference plainly states
that the data bank register holds the destination bank value when these
instructions are finished. If you'd look at the detailed instruction operation
listing in the '816 data sheet, you can see it there too. Is a PHB/PLB sequence
too difficult?

Jim Murphy                             "I know that you believe you understand
Internet:  ujmurphy@mcs.drexel.edu     what you think I said. But I am not sure
GEnie:     J.MURPHY7                   you realize that what you heard is not 
AOL:       Jim Murphy                  what I meant."

toddpw@nntp-server.caltech.edu (Todd P. Whitesel) (05/30/91)

acmfiu@serss0.fiu.edu (ACMFIU) writes:

>someone want to explain to me why the MVN/MVP instructions don't restore
>the data bank register? (yes, i'm moving data in different banks).

Because. No explanation was given in the 65816 data sheet, although I
suppose it could be argued that the data bank is set to the destination data
so you can use absolute addressing on it right away...

I think the real reason is that there only one temporary bank latch, so the
other one ended up being the data bank register. What's stupid is that there
"should" be a way to do it without modifying the data bank register. It has
been speculated that the MVP/MVN instructions were originally different and
somewhat useless instructions, and that Mensch hacked in the move code at
the last minute -- this would easily explain the 7 cycle/byte timing (the
instruction is fetched repeatedly for each byte copied -- blech!) and the
side effects. Besides, it took them long enough to get the original 65816
ready (the GS ROM 00 was tested with 65802's because they were all that
was available -- evidence of this is buried in the softswitch list in the
firmware ref).

Todd Whitesel
toddpw @ tybalt.caltech.edu

jb10320@uxa.cso.uiuc.edu (Jawaid Bazyar) (05/30/91)

toddpw@nntp-server.caltech.edu (Todd P. Whitesel) writes:

>It has
>been speculated that the MVP/MVN instructions were originally different and
>somewhat useless instructions, and that Mensch hacked in the move code at
>the last minute -- this would easily explain the 7 cycle/byte timing (the
>instruction is fetched repeatedly for each byte copied -- blech!) and the
>side effects. 

   Might the fetch of the instruction over and over be a result of making
the MVP/MVN instructions interruptable?

>Besides, it took them long enough to get the original 65816
>ready (the GS ROM 00 was tested with 65802's because they were all that
>was available -- evidence of this is buried in the softswitch list in the
>firmware ref).

   Amen- it was what, almost three years after the Apple //x rumors started
that we finally got the GS? 

--
Jawaid Bazyar               |  "Twenty seven faces- with their eyes turned to
Graduated!/Comp Engineering |    the sky. I have got a camera, and an airtight
bazyar@cs.uiuc.edu          |     alibi.."
   Apple II Forever!        |  I need a job... Be privileged to pay me! :-)

acmfiu@serss0.fiu.edu (ACMFIU) (05/31/91)

In article <9105300228.AA00543@mcs.drexel.edu> ujmurphy@KING.MCS.DREXEL.EDU (Jim Murphy) writes:
}albert recently asked:
}
}}someone want to explain to me why the MVN/MVP instructions don't restore
}}the data bank register? (yes, i'm moving data in different banks).
}
}     Well, because they don't. The instruction set reference plainly states
}that the data bank register holds the destination bank value when these
}instructions are finished. If you'd look at the detailed instruction operation
}listing in the '816 data sheet, you can see it there too. Is a PHB/PLB sequence
}too difficult?
}
}Jim Murphy                             "I know that you believe you understand
}Internet:  ujmurphy@mcs.drexel.edu     what you think I said. But I am not sure
}GEnie:     J.MURPHY7                   you realize that what you heard is not 
}AOL:       Jim Murphy                  what I meant."

no, a phb/plb sequence is not difficult. you have no choice, really. but
that wasn't my question. i was just curious as to why it has the side affect
of not restoring the data bank register. i think it should.

albert

ericmcg@pnet91.cts.com (Eric Mcgillicuddy) (06/01/91)

>someone want to explain to me why the MVN/MVP instructions don't restore
>the data bank register? (yes, i'm moving data in different banks).
>
>albert

Because it does. It also modifyies the X, Y and A registers. The accumulator
is left with a -1 when the instruction completes. 

It might help if you think of the MVN/MVP as subroutines written in microcode
rather than opcodes.

UUCP: bkj386!pnet91!ericmcg
INET: ericmcg@pnet91.cts.com