SOTE - RPD index values

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.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License