          EJECT
*         CTEXT CTP$DFT_SAVE_CONTROL_STORE
*
*         THIS DECK CONTAINS ROUTINES TO READ AND SAVE THE
*         CONTROL STORE ADDRESS IN THE SCRATCH SUPPORTIVE
*         STATUS BUFFER.
 SCS      SPACE  4,15
**        SCS - SAVE CONTROL STORE ADDRESS.
*
*         THE CONTROL STORE ADDRESS REGISTER IS SAVED IN THE APPROPRIATE
*         (PRE-HALT OR AFTER HALT) WORD IN THE SCRATCH SUPPORTIVE STATUS
*         BUFFER.  IF AFTER HALT, THEN THE STATUS SUMMARY REGISTER IS
*         ALSO SAVED.
*
*         ENTRY  (A) = 0 IF BEFORE HALT.
*                    = 1 IF AFTER HALT.
*
*         USES   EC, T2.
*
*         CALLS  GCA, PAC, SPB.
*
*         MACROS READMR.


 SCS      SUBR               ENTRY/EXIT
          STM    SCSA
          LDN    VER4
          RJM    VCK         CHECK VERSION
          MJN    SCSX        IF LESS THAN VERSION 4
          LRD    DP+1
          RJM    SPB         SET PP BOUNDS TO WRITE INTO DFT BUFFER
          LDM    CPUO        GET CPU ORDINAL
          NJN    SCS1        IF NOT CPU-0
          LDM    CP0CC       PROCESS CPU-0
          UJN    SCS2        CONTINUE

 SCS1     LDM    CP1CC       PROCESS CPU-1
 SCS2     STD    EC
          LDML   CSAR
          STDL   RN          SET CONTROL STORE ADDRESS REGISTER NUMBER
          READMR RDATA
          RJM    PAC         PACK REGISTER DATA

*         WRITE CONTROL STORE ADDRESS TO SCRATCH SUPPORTIVE STATUS BUFFER.

          RJM    GCA         GET CONTROL STORE WORDS ADDRESS
          ADM    SCSA        ADD ONE IF AFTER HALT
          CWML   MRVAL,ON    WRITE TO BUFFER
          LDM    SCSA
          ZJN    SCS3        IF BEFORE HALT

*         SAVE SUMMARY STATUS REGISTER.

          READMR RDATA,,SSMR
          RJM    PAC
          RJM    GCA         GET CONTROL STATUS WORDS ADDRESS
          ADN    2           SKIP TO SAVE SUMMARY STATUS WORD
          CWML   MRVAL,ON
 SCS3     LJM    SCSX        RETURN

 SCSA     CON    0           BEFORE/AFTER HALT CONDITION
 GCA      SPACE  4,10
**        GCA - GET CONTROL STORE WORDS ADDRESS.
*
*         RETURNS THE ADDRESS OF THE FIRST SAVE CONTROL STORE WORD
*         IN THE SCRATCH SUPPORTIVE STATUS BUFFER.
*
*         EXIT   (A) = ADDRESS OF THE PRE-HALT CONTROL STORE WORD
*                      IN THE SCRATCH SUPPORTIVE STATUS BUFFER.
*
*         USES   CM - CM+3.
*
*         CALLS  IDA.


 GCA      SUBR               ENTRY/EXIT
          LDN    SSBP
          RJM    IDA
          CRDL   CM
          LDN    5           OFFSET TO SAVE CONTROL STORE WORDS
          RADL   CM
          LRD    CM+1
          ADC    RR
          UJN    GCAX        RETURN

*         END CTP$DFT_SAVE_CONTROL_STORE

