SOTE - RPD index values
How is RPD index register usage kept across page faults?
ABUSE_CT_HOLD2 is used to retain the index register number used by the even instruction in a RPD. This information is needed to update that register after the odd instruction is completed.
The emulator saves the value in unused bit in the CU so that it is retained after page faults.
DH02-01 dps8asm Jun84 - Unknown", pages 536-541, (7-333 - 7-338)
AL39, pg 187.
RJ78 pg 933 (12-69).
cpu_test exercises the corner case:
eppbp name epplb table even eax2 0 rpda 8,1,tnz lda bp|0,2 cmpa lb|0,2 ttf failure
AL39 is not helpful
The repetition cycle consists of the following steps: a. Execute the pair of repeated instructions b. C(X0)0,7 - 1 C(X0) → 0,7 Modify C(X-even) and C(X-odd) as described below. c. If C(X0)0,7 = 0, then set the tally runout indicator ON and terminate. d. If a terminate condition has been met, then set the tally runout indicator OFF and terminate. e. Go to step a.
Note that is says that the pair is executed, then xEven and xOdd are updated. To do this, the value of xEven must be retained across potential page faults.
Interestly, AL39 is not helpful about faults:
"If a fault occurs during the execution of the instruction pair, the repetition
loop is terminated"
I am assuming that 'faults' here refers of operation faults (eg overflow) and not page faults.
OTOH, RJ78 ps 12-71 implies that the X registers are updated as each instruction is executed.