Per the documentation, it's safe for a Block Move instruction (MVN or MVP) to be interrupted, provided the relevant registers (A, X, and Y) are restored before the RTI. This leads me to two questions:
1) What if the interrupt routine itself performs another block move? Is there anything in the "internal state" of a block move that can be overwritten? For instance, I read in one forum that while the Destination Bank is kept in the Data Bank register, the Source Bank has its own internal, temporary variable. Will an intervening MVP/MVN with a different source bank clobber this? Or does each iteration of the byte copy restore this bank to what it should be?
2) More generally, does a routine that potentially interrupts a MVN/MVP need to preserve the Data Bank register alongside X, Y, and A, or is the destination bank reestablished with each iteration of the byte copy?