          SPACE  4,10
*         CTEXT  CTP$SCI COMPRESS PAGE TABLE.
*
*         THIS DECK CONTAINS A ROUTINE WHICH CAN BE USED TO CREATE
*         THE PAGE TABLE MODIFY BIT MAP AT DEADSTART TIME.
 CPT      SPACE  4,15
**        CPT - COMPRESS PAGE TABLE.
*
*         SCANS THE PAGE TABLE AND SAVES THE MODIFY BITS IN THE PAGE TABLE
*         MODIFY BIT MAP.  THE PAGE TABLE MODIFY BIT MAP IS SAVED AT THE
*         LOCATION SPECIFIED BY THE *RIHT* SSR ENTRY, ONE BIT FOR EACH PAGE
*         TABLE ENTRY.
*
*         ENTRY  (LA - LA+1) = R-REGISTER ADDRESS OF THE PAGE TABLE.
*                (HPTL) = PAGE TABLE LENGTH IN WORDS/100(8).
*
*         EXIT   TO *AAC* IF *RIHT* IS TOO SMALL.
*
*         USES   CM - CM+3, CN - CN+1, T1 - T4, W0 - W7.
*
*         CALLS  SPB.


 CPT      SUBR               ENTRY/EXIT
          SSRE   RIHT        GET R-POINTER FOR PAGE TABLE MODIFY BIT MAP
          CRDL   CM
          RJM    SPB         SET PP BOUNDS
          LDML   HPTL
          STDL   T4          PAGE TABLE LENGTH IN WORDS/64
          SBDL   CM+3        CHECK IF LONG ENOUGH
          ZJN    CPT5        IF PAGE TABLE MODIFY BIT MAP BIG ENOUGH
          MJN    CPT5        IF PAGE TABLE MODIFY BIT MAP BIG ENOUGH
          LDC    DASR        615 - SCI RIHT TOO SMALL
          LJM    AAC         ACTIVATE ANALYSIS CODE ERROR PROCESSOR

*         SCAN THE PAGE TABLE 64 ENTRIES AT A TIME AND SAVE THE
*         MODIFY BITS FOR EACH ENTRY.

 CPT5     LRD    LA
          SRD    CN          R-REGISTER VALUE OF PAGE TABLE
 CPT10    LDN    63D
          STD    T3          INDEX OF WORD IN 64 WORD BLOCK
          LDN    3
          STD    T2          INDEX OF 16 WORD BLOCK IN 64 WORD BLOCK

*         (W4 - W7) = WORDS TO ASSEMBLE MODIFY BITS IN.
*         (CM - CM+3) = R-POINTER FOR PAGE TABLE MODIFY BIT MAP.
*         (CN - CN+1) = R-REGISTER VALUE OF PAGE TABLE.

 CPT15    LDN    0
          STML   W4,T2       CLEAR WORD OF PAGE TABLE BIT MAP
          LDC    SHNI+17D-12D+1
          STM    CPTA        INITIALIZE SHIFT INSTRUCTION
          LDN    15D
          STD    T1          INDEX OF WORD IN 16 WORD BLOCK
          LRD    CN

*         SAVE MODIFY BITS FOR A 16 WORD BLOCK OF THE PAGE TABLE.

 CPT20    LDD    T3
          LMC    RR
          CRDL   W0          PAGE TABLE ENTRY
          LDDL   W0
          LPC    10000       MODIFY BIT
 CPTA     SHN    17D-12D+1   POSITION MODIFY BIT FOR PAGE TABLE BIT MAP
          RAML   W4,T2
          AOM    CPTA        INCREMENT SHIFT COUNT
          SOD    T3          DECREMENT 64 WORD BLOCK COUNT
          SOD    T1          DECREMENT INDEX WITHIN 16 WORD BLOCK
          PJN    CPT20       IF HAVE NOT PROCESSED 16 PAGE TABLE ENTRIES
          SOD    T2          DECREMENT 16 WORD BLOCK INDEX
          PJN    CPT15       IF HAVE NOT PROCESSED 64 PAGE TABLE ENTRIES

*         SAVE THE 64 MODIFY BITS THAT HAVE BEEN ASSEMBLED IN THE PAGE
*         TABLE BIT MAP.

          LRD    CM+1
          LDDL   CM          WORD OFFSET
          LMC    RR
          CWDL   W4          SAVE MODIFY BITS IN PAGE TABLE BIT MAP
          AODL   CM          INCREMENT WORD OFFSET
          AOD    CN+1        INCREMENT PAGE TABLE R-REGISTER VALUE
          SHN    -12D
          RAD    CN
          LRD    CN
          SODL   T4          DECREMENT 64 WORD BLOCK COUNT
          NJP    CPT10       IF PAGE TABLE SCAN NOT COMPLETE
          LJM    CPTX        RETURN

*         ENDX   CTP$SCI COMPRESS PAGE TABLE.

