         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
*                                                                               
*                                                                               
        DO       #MAP                                                           
         DEF      A:MMROOT                                                      
OLAYFLAG EQU      'MMRO'                                                        
         DEF      MMGSTM,MMRSTM,MMFETCH,MMSTORE                                 
         DEF      MMOMFPP,MMFMP,MMMOVE                                          
         DEF      LOADACI,LOADMAP,TDLOAD                                        
         DEF      MMTPAGES,MMTPREQ,MMTBKGP                                      
         DO       #ROLL                                                         
         DEF      MMRGF:RE                                                      
         DEF      MMSTCB,MMAST,MMRSRGSV,ROLL99                                  
         DEF      MMRSTIME,MMRLEVEL,MMRPRIO,MMRTS                               
         DEF      MMRILW                                                        
         DEF      MMTSK99           REENT COUNTER                               
         FIN      #ROLL                                                         
         DO       #SWAP                                                         
         DEF      MMSWAP                                                        
         DEF      MMTSLEV                                                       
         FIN      #SWAP                                                         
         REF      TMACIMC                                                       
         PSYS     0                                                             
         SYSTEM   CPRMON                                                        
         TITLE    '** MMROOT **'                                                
*                                                                               
MMTPAGES DATA     0                 TOTAL PAGES AVAILABLE                       
MMTPREQ  DATA     0                 TOTAL PAGES REQUESTED                       
MMTBKGP  DATA     0                                                             
         DO       #ROLL                                                         
MMRGF:RE DATA     0                 RE ENT COUNTER                              
         BOUND    8                 MEMORY MGMT EXEC STCB                       
MMSTCB   GEN,9,1,22,32  0,1,MMEXEC,0  ENTRY PSD, MMEXEC                         
         DATA     MMSTCB+4,0        INTERMEDIATE PSD                            
         STM,R0   MMSTCB+10         SAVE REG                                    
         BAL,R1   RBMSAVE                                                       
         GEN,8,24 X'B0',LMIRTS+MMLMID PCBPOINT                                  
         GEN,8,24 MMTID,MMSTCB      TCBPOINT                                    
         DATA     TDRDLRET,0        ENTRY PSD TO DISP                           
         RES      16                REGISTER SAVE AREA                          
         GEN,8,24 1,MMAST           AST, ONE WORD LONG                          
         GEN,8,24 16,MMACI          ACI, 16 WORDS LONG                          
         DATA     0,0,0,0           RDL, - , ALT PSD                            
*                                                                               
MMACI    RES      16                ACCESS CODE SPACE                           
MMAST    DATA     0                 AST FOR MMEXEC TO SD ACTIVE                 
MMRSRGSV EQU       %                REGISTER SAVE AREA                          
         DO       MMRSREGS                                                      
         DATA     0                                                             
         FIN                                                                    
ROLL99   DATA     0                 RE-ESTABLISH ROLL-OUT LEVEL                 
MMTSK99  DATA     0                 STI REENT COUNT                             
MMRSTIME DATA     0                 TIME LAST 'ACTIVE FGD..' MSG                
MMRLEVEL DATA     0                 CURRENT ROLL-OUT LEVEL                      
MMRPRIO  DATA     0                 CURRENT ROLL-OUT PRIO                       
*                                                                               
         DO1      #SWAP                                                         
MMTSLEV  DATA     0                 SWAP LEVEL                                  
*                                                                               
MMRTS    TEXT     '*MMROOT*'        STACK AREA; FILL WITH THIS TEXT             
         LIST     0                                                             
         DO1      (MMRTSSZ-4)/2     SAVE FIRST, LAST ENTRIES                    
         TEXT     '*MMEXEC*'                                                    
         LIST     1                                                             
         TEXT     'ENDMMSTK'        END OF STACK MARKER                         
         FIN      #ROLL                                                         
*                                                                               
         TITLE    '** MMROOT - SUB TO GET REAL PAGE OF STM **'                  
*                                                                               
*        MMGSTM   GET SECONDARY TASK MEMORY                                     
*                                                                               
*                 RETURNS THE REAL ADDRESS OF A PAGE OF STM                     
*                 AT ENTRY: R8=LINK                                             
*                           R6=SD ADDRESS                                       
*                 AT EXIT: R0 =DESTROYED                                        
*                          R14=REAL PAGE NUMBER                                 
*                                                                               
*                 RETURNS:TO LINK+1 IF PAGE ACQUIRED (DISABLED)                 
*                         TO LINK IF NO PAGE AVAILABLE (ENABLED)                
*                                                                               
MMGSTM   PUSH     3,R1              SAVE REGISTERS                              
         LB,R2    K:RMPT            FETCH RMPT LENGTH                           
MM0101   LW,R3    PPT,R2            FETCH TYPE AND PCT ADDR                     
         LB,R1    R3                    R1=PART TYPE                            
         AND,R1   XPPTTYPE              MASKED                                  
         CI,R1    PPTTYPE4          4 - PREFERRED                               
         BE       MM0106                                                        
         CI,R1    PPTTYPE5          5 - STM                                     
         BNE      MM0111            ALL OTHERS NOT USABLE                       
MM0102   DISABLE                    TYPE 5, SEC TASK MEMORY, PCT                
         LW,R0    PCTFPAGE,R3           FETCH FREE PAGE COUNT                   
         BEZ      MM0111                NONE, CONTINUE                          
         XPSD,0   MM0112                SWITCH TO UNMAPPED,                     
         SLS,R14  -9                    CHANGE ADDR TO RPN                      
MM0103   MTW,-1   MMTPAGES              DECR PAGES AVAILABLE                    
         AI,R8    1                     EXIT, PAGE FOUND                        
MM0104   PULL     3,R1                                                          
         B        *R8                                                           
*                                                                               
MM0105   MTW,-1   PCTFPAGE,R3           DECR FREE PAGE COUNT                    
         LW,R14   PCTCHAIN,R3           FETCH CHAIN HEAD                        
         LW,R0    *R14                  AND REPLACE WITH NEXT PAGE              
         STW,R0   PCTCHAIN,R3           INTO CHAIN HEAD                         
         LPSD,0   MM0112                SWITCH BACK TO USER MODE                
*                                                                               
MM0106   CW,R3    XPPTSTM           IS PREFERRED PARTITION IN                   
         BAZ      MM0111                STM MODE, NO SKIP IT                    
         PUSH     4,R4              STM PREFERRED                               
         LW,R14   R6                    R14=LOCATOR WORD, SD                    
         AND,R14  M17                   ADDRESS AND STM FLAG                    
         OR,R14   XPCTSTM                                                       
         LW,R4    Y8                    SCAN FOR AN UNALLOCATED                 
         LI,R5    0                     PAGE                                    
         LI,R6    0                     START WITH FIRST PAGE                   
         LW,R7    R3                    R7=ALLOC MAP ADDR                       
         AI,R7    PCTALMP                                                       
MM0107   DISABLE                                                                
         LW,R3    PPT,R2            RECHECK PART FOR STM MODE                   
         CW,R3    XPPTSTM               STIL STM MODE                           
         BAZ      MM0109                TRY ELSEWHERE                           
         LD,R0    *R7                   FETCH ALLOC MAP                         
         OR,R0    R4                    ADD NEW ALLOC BIT                       
         OR,R1    R5                    AND SEE IF IT                           
         CD,R0    *R7                   IS ALREADY SET                          
         BNE      MM0108                NO, CHANGED, USE PAGE                   
         ENABLE                                                                 
         SLD,R4   -1                    YES, TRY NEXT PAGE                      
         AI,R6    1                     R6=PAGES DONE                           
         CB,R6    *R3                   =PAGES IN PARTITION                     
         BL       MM0107                NO, KEEP TRYING                         
         B        MM0110                                                        
MM0108   STD,R0   *R7                                                           
         AI,R7    PCTLOC-PCTALMP        R7=LOCATORS                             
         STW,R14  *R7,R6                SET LOCATOR                             
         LI,R7    PCTSP                 R7=OFFSET TO REAL PAGE                  
         LB,R14   *R3,R7                FETCH BASE REAL ADDR                    
         AW,R14   R6                    ADD OFFSET TO PAGE FOUND                
         PULL     4,R4                  RESTORE REGS                            
         B        MM0103                EXIT, PAGE FOUND                        
*                                                                               
MM0109   ENABLE                     CHANGE MODE WHILE SCANNING                  
MM0110   PULL     4,R4                                                          
MM0111   BDR,R2   MM0101            CONTINUE THROUGH ALL PARTITIONS             
         B        MM0104                ERROR EXIT                              
*                                                                               
         BOUND    8                                                             
MM0112   DATA     0,0                                                           
         DATA     MM0105            NEW INSTRUCTION ADDRESS                     
         DO       #550                                                          
         DATA     X'07000004'       550 INHIBITS AND MODE ALTERED               
         ELSE                       #550                                        
         DATA     X'07800000'       SIGMA INHIBITS AND MODE ALTERED             
         FIN                        #550                                        
         TITLE    '** MMROOT - RELEASE SECONDARY TASK MEMORY **'                
*                                                                               
*        MMRSTM   RELEASE SECONDARY TASK MEMORY PAGE                            
*                                                                               
*                 AT ENTRY:                                                     
*                             R8 =LINK                                          
*                             R14=REAL PAGE NUMBER TO BE RELEASED               
*                                                                               
*                 AT EXIT:    R0 =DESTROYED                                     
*                                                                               
*                             RETURN IS TO LINK                                 
*                                                                               
*                                                                               
MMRSTM   PUSH     3,R6              SAVE REGISTERS                              
         SLS,R14  9                 FORM WORD ADDRESS                           
         BAL,R8   MMFMP             FIND MEM PARTITION                          
         B        MM0200                ERROR, CRASH                            
         LW,R7    PPT,R7                R7=TYPE, PCT ADDRESS                    
         LB,R6    R7                    R6=PARTITION TYPE                       
         AND,R6   XPPTTYPE              ISOLATE                                 
         CI,R6    PPTTYPE5              5 - STM                                 
         BE       MM0201                                                        
         CI,R6    PPTTYPE4              4 - PREFERRED                           
         BE       MM0204                                                        
MM0200   CRASH    'MMRSTM ERROR'                                                
*                                                                               
MM0201   XPSD,0   MM0206            SWITCH TO UNMAPPED, MA                      
MM0202   ENABLE                     EXIT ENABLED                                
         PULL     3,R6              EXIT                                        
         B        *R8                                                           
MM0203   MTW,1    PCTFPAGE,R7       INCR FREE PAGE COUNT                        
         MTW,1    MMTPAGES          INCR TOTAL FREE PAGES                       
         LW,R0    PCTCHAIN,R7           R0=OLD CHAIN HEAD                       
         STW,R14  PCTCHAIN,R7           R14=NEW CHAIN HEAD                      
         STW,R0   *R14                                                          
         LPSD,0   MM0206            RETURN TO USER MODE                         
*                                                                               
MM0204   PUSH     4,R2              SAVE MORE REGS                              
         LW,R4    Y8                    R4,R5=BIT MAP                           
         LI,R5    0                                                             
         SLS,R14  -9                    R14=RPN                                 
         LI,R6    PCTSP                 R6=OFFSET TO RPN, OTH                   
         LB,R6    *R7,R6                PAGE OF PREF PART                       
         SW,R6    R14                   R6=-REL PAGE NUMBER                     
         SLD,R4   0,R6                                                          
         LCW,R6   R6                    R6=POSITIVE OFFSET TO PG                
         AI,R7    PCTALMP               R7=ADDR OF ALLOC MAP                    
         DISABLE                                                                
         LD,R2    *R7                   FETCH ALLOC MAP                         
         OR,R2    R4                    AND MAKE SURE PAGE                      
         OR,R3    R5                    IS ALLOCATED                            
         CD,R2    *R7                   CRASH IF NOT                            
         BNE      MM0200                                                        
         EOR,R2   R4                                                            
         EOR,R3   R5                                                            
         STD,R2   *R7                                                           
         AI,R7    PCTEXU-PCTALMP    INCR MMTPAGES IF REQD                       
         LI,R0    1                                                             
         EXU      *R7                                                           
         AI,R7    PCTLOC-PCTEXU         R7=START ADDR OF LOC WRDS               
         LI,R0    0                     ZERO LOCATOR FOR PAGE                   
         STW,R0   *R7,R6                                                        
         PULL     4,R2              RESTORE REGS                                
         B        MM0202                EXIT                                    
*                                                                               
         BOUND    8                 XPSD                                        
MM0206   DATA     0,0                                                           
         DATA     MM0203            NEW INSTRUCTION ADDRESS                     
         DO       #550                                                          
         DATA     X'07000004'       550 INHIBITS AND MODE ALTERED               
         ELSE                       #550                                        
         DATA     X'07800000'       SIGMA INHIBITS AND MODE ALTERED             
         FIN                        #550                                        
         TITLE    '** MMROOT - FIND MEMORY PARTITION **'                        
*                                                                               
*        MMFMP    FIND MEMORY PARTITION                                         
*                                                                               
*                 AT ENTRY:                                                     
*                          R8 =LINK                                             
*                          R14=ADDRESS WITHIN PARTITION                         
*                                                                               
*                 AT EXIT: R7 =PPT INDEX IF EXIT TO LINK+1                      
*                                   PARTITION FOUND                             
*                          R7 =0 IF EXIT TO LINK,                               
*                                   PARTITION NOT FOUND                         
*                                                                               
MMFMP    EQU      %                                                             
         LI,R7    1                 SEARCH RMPT FROM BEGINNING                  
MM0601   CLM,R14  RMPT,R7                                                       
         BCS,9    MM0602            B IF NOT THIS PARTITION                     
         AI,R8    1                 NORMAL EXIT                                 
         B        *R8               RETURN                                      
MM0602   AI,R7    1                 GO TO NEXT PARTITION                        
         CB,R7    K:RMPT            DONE                                        
         BLE      MM0601                NO, CONTINUE                            
         B        *R8               NOT FOUND EXIT                              
         TITLE    '** MMROOT - SUB TO ROLL-IN LW TASK **'                       
*******************                                                             
*    MMRILW       *    SUBR TO START ROLL-IN OF A LW TASK                       
*******************    ENTERED WHEN TASK COMES OFF LW                           
*                                                                               
* ENTRY  BAL,R8   MMRILW                                                        
*                 ENTER DISABLED                                                
* EXIT   +1                                                                     
* REGISTERS USED: RO-R9                                                         
*          SAVED: R1-R9                                                         
* STACK WORDS:    9                                                             
* SUBROUTINES:    NONE                                                          
*                                                                               
MMRILW   EQU      %                                                             
         LW,R0    STITCB,R4         CHECK IF TASK IS TERMING                    
         CW,R0    XSTIT             AND IF SO SKIP ROLL-IN LOGIC                
         BANZ     *R8               RETURN IF TASK IS TERMING                   
         PUSH     9,R1              SAVE REGISTERS                              
         LB,R5    STILMID,R4            R5=LMID                                 
         LH,R1    LMISTAT,R5        CHECK IF TERMING                            
         CI,R1    LMIT              TERMING                                     
         BANZ     MMRILW8A          B IF YES                                    
*        THE ABOVE CHECK IS NEEDED BECUSE TTCLS TURNS                           
*        OFF STIT BIT TO DO CLOSES.                                             
         LW,R1    YFFFF                 R1=PRIO MASK                            
         LS,R0    STIPRIO,R4            R0-TASK PRIO                            
         LW,R7    STITCB,R4                                                     
         AND,R7   XSTINLW           REMOVE LONG WAIT                            
         DO1      #SWAP                                                         
         AND,R7   XNTIBL            REMOVE TERM-IN AND BLOCKED FLAGS            
         STW,R7   STITCB,R4                                                     
         MTW,1    ROLL99                                                        
         LW,R7    STCBAST,R7            R7=AST                                  
MMRILW1  LW,R6    0,R7              SEARCH FOR ANY RD BITS                      
         CW,R6    XASTRD                                                        
         BANZ     MMRILWGO              YES, DO THE ROLL IN                     
         AI,R7    1                     CONTINUE THROUGH ALL                    
         MTB,-1   R7                    ASTS UNTIL DONE                         
         BNEZ     MMRILW1               IF NO RD BITS                           
         DO       #SWAP                                                         
         LB,R0    STISTAT,R4                                                    
         AND,R0   XSTINSWP          REMOVE SWAPPED STATE FOR SAFTY              
         STB,R0   STISTAT,R4                                                    
         FIN      #SWAP                                                         
MMRILWX  EQU      %                                                             
         B        MMRILW8A          EXIT                                        
MMRILWGO LB,R9    STISTAT,R4            SET ROLLED BIT IN STI                   
         DO1      #SWAP                                                         
         AND,R9   XSTINSWP          REMOVE SWAPPED STATE                        
         OR,R9    XSTIROLL                                                      
         STB,R9   STISTAT,R4                                                    
         DO       #SWAP                                                         
         LI,R9    0                 CLEAR SLICING CONTROL VALUES                
         STB,R9   STIQMAX,R4        AND GIVE HIM ANOTHER                        
         LW,R9    QMIN              GET CURRENT TIME QUANTUM                    
         STB,R9   STIQMIN,R4        AND GIVE HIM ONE                            
         FIN      #SWAP                                                         
         LW,R2    LMISECB,R5        ECB CHAIN HEAD SHOULD BE                    
         BEZ      MMRILW7               NON-EXIST (BEING CREATED)               
         LW,R9    ECBCTL,R2             ROLL-IN ECB                             
         AND,R9   M16                                                           
         CI,R9    ECBTMM                                                        
         BNE      MMRILW7               NO, (BEING CREATED)                     
         AND,R2   M17                                                           
         STS,R0   ECBPC,R2              CHANGE PRIO                             
         LI,R4    MMTID             NOW SET R4=MEM EXEC TID                     
         LI,R5    MMLMID                R5=MM LMID                              
         LW,R7    LMIRECB,R5        FETCH R-CHAIN HEAD                          
         MTB,1    R7                RECB COUNT INCREMENT                        
         STW,R7   LMIRECB,R5        RESTORE IN TABLE                            
         LI,R6    0                     R6=PREV ECB ADDR                        
MMRILW2  AND,R7   M17                   END OF CHAIN?                           
         BEZ      MMRILW3               YES                                     
         CS,R0    ECBPC,R7              PRIO > OR = THIS ECB                    
         BL       MMRILW3           CHAIN IT UP HERE                            
         CW,R2    R7                MAKE SURE ECB ISNT ALREADEY IN              
         BE       MMRILW10          THE CHAIN, SHOULD NOT BE, BUT               
         B        MMRILW4           CHECK TO PREVENT DISASTER                   
MMRILW3  CI,R6    0                     REPLACING CHAIN HEAD                    
         BE       MMRILW5               YES                                     
         STB,R5   R2                    POINT PREV ECB                          
         STW,R2   ECBRECB,R6            TO THIS ONE                             
         B        MMRILW6               CONTINUE AND REMOVE ECB                 
MMRILW4  LW,R6    R7                SET R6=PREV ECB                             
         LW,R7    ECBRECB,R7            AND CHAIN ON                            
         B        MMRILW2                                                       
MMRILW5  LW,R9    LMIRECB,R5        R9=OLD CHAIN HEAD (R7)                      
         LB,R9    R9                    FETCH AND SAVE COUNT                    
         STB,R9   R2                    AND CHAIN TO NEW ECB                    
         STW,R2   LMIRECB,R5            FOR CHAIN HEAD                          
MMRILW6  STB,R5   R7                    R7=NEW FWD CHAIN                        
         STW,R7   ECBRECB,R2                                                    
MMRILW9  CS,R0    STIPRIO,R4        MMEXEC PRIO CORRECT                         
         BGE      MMRILW7           AS HIGH OR HIGHER, OK                       
         LW,R7    LMIRECB,R5        FETCH CHIAN HEAD                            
         LW,R0    ECBPC,R7              R0=HIGHEST PRIO ECB                     
         CS,R0    STIPRIO,R4            EQUAL TO MEM EXEC                       
         BE       MMRILW7               YES                                     
         STS,R0   STIPRIO,R4            NO, SET NEW PRIO                        
         XPSD,0   TMDQ                  AND REQUEUE                             
MMRILW7  EQU      %                                                             
         LI,R4    MMTID                                                         
         LI,R5    STISTRT           START BIT                                   
         STS,R5   STIPRIO,R4        SET START PENDING FLAG                      
MMRILW8  EQU      %                                                             
         BAL,R8   TMRDLTRG                                                      
MMRILW8A EQU      %                                                             
         PULL     9,R1              RESTORE REGISTERS                           
         B        *R8               RETURN                                      
*                                                                               
MMRILW10 RES      0                                                             
         LW,R7    LMIRECB,R5        RESTORE ITEM COUNT                          
         MTB,-1   R7                FOR RECB CHAIN                              
         STW,R7   LMIRECB,R5                                                    
         B        MMRILW9                                                       
MMRILWCR CRASH    'MMRILW-ERROR'                                                
         TITLE    '** MMROOT - SUB TO LOAD ACI AND MAP **'                      
******************                                                              
*    LOADMAP     *       SUBROUTINES TO LOAD THE MAP AND ACI OR ONLY            
*    LOADACI     *            ACI FOR A TASK                                    
******************                                                              
*                                                                               
* ENTRY  BAL,R8   LOADMAP OR LOADACI                                            
* EXIT   +1       LOADING COMPLETED                                             
* REGISTERS USED: R0                                                            
*          SAVED: R1-R15                                                        
* STACK WORDS:    15                                                            
* SUBROUTINES:    TDLOAD                                                        
*                                                                               
LOADMAP  PUSH     10,R1             SAVE REGISTERS                              
         LI,R2    0                     LOAD MAP AND ACI                        
         B        MMLOAD0                                                       
LOADACI  PUSH     10,R1             SAVE REGISTERS                              
         LI,R2    1                     LOAD ACI ONLY                           
MMLOAD0  LB,R4    TCBPOINT              POINT TO CURRENT TASK                   
         STB,R2   R4                    LOADING MODE TO BYTE 0                  
*        DISABLE                         DELETED                                
MMLOAD2  RES      0                                                             
         LI,R0    0                                                             
         STW,R0   TDLAST            FORCE A RELOAD                              
         BAL,R8   TDLOAD                ENTER MAP LOADING SUBR                  
         B        MMLOAD1               ERROR                                   
         PULL     10,R1             RESTORE REGISTERS                           
         B        *R8                   EXIT, ONE EXIT ONLY                     
MMLOAD1  BAL,R8   TMRDLTRG          WAIT FOR DS TO GO AWAY                      
         B        MMLOAD2                                                       
         TITLE    '** MMROOT - SUB TO LOAD MAP AND ACI **'                      
*******************                                                             
*    TDLOAD       *    LOAD MAP AND ACI SUBR                                    
*******************                                                             
*                                                                               
* ENTRY  R4       TASK ID, BYTE 0=NON 0 TO LOAD ACI ONLY                        
*        BAL,R8   TDLOAD      LOADS ACI, OPTIONALLY MAP                         
* EXITS: +1       TASK CAN NOT BE DISPATCHED                                    
*        +2       NORMAL EXIT                                                   
*                                                                               
* REGISTERS USED: R0,R1,R2,R5-R7,R9,R10                                         
*           SAVED: R3,R4,R8,R11-R15                                             
* STACK WORDS:NONE                                                              
* SUBROUTINES:NONE                                                              
*                                                                               
*                                                                               
TDLOAD   EQU      %                                                             
         CW,R4    TDLAST            IS NEXT TASK TO BE LOADED                   
         BE       TMLOADX           SAME AS LAST TASK LOADED                    
*                                   IF YES DONT BOTHER TO LOAD                  
*                                   MAP AND ACI BECAUSE ITS STILL               
*                                   INTACT FROM LAST LOAD                       
         LI,R0    0                                                             
         STW,R0   TDLAST            RESET INCASE OF DISPATCH                    
         LW,R5    STITCB,R4         SET R1=STCB ADDRESS                         
         LW,R2    STCBACI,R5            R2=ACI                                  
         BNEZ     TMLOADB               NO ACI FOR TASK                         
         MTB,0    R4                                                            
         BEZ      TMLOAD8                                                       
         B        TMLOAD9           LOAD ALL NO ACCESS                          
TMLOADB  RES      0                 MOVE ACT PROTTYPE TO TCB-ACI                
         AI,R2    -1                                                            
         LI,R1    16                                                            
         LW,R0    TMACIMC+1,R1                                                  
         STW,R0   *R2,R1                                                        
         BDR,R1   %-2                                                           
         AI,R2    1                                                             
TMLOAD8  LW,R9    STCBAST,R5            R10=AST ADDRESS AND BYTE 0 =            
         CW,R9    YFF                      AST LENGTH                           
         BAZ      TMLOAD7               NO AST'S                                
TMLOAD1  LW,R5    *R9               SET R5=SD ADDRESS FROM AST                  
         BLEZ     TMLOAD6           ADDRESS NOT PRESENT, DO NEXT                
         LD,R6    *R5               SET R6 AND R7= MMC REGS                     
         BGEZ     TMLOAD1A          IS DS SET  IF NO, TEST ACTIVE               
         CW,R5    XASTDS            DID THIS TASK CAUSE DS                      
         BANZ     TMLOAD1A          YES,  IGNORE DS                             
         B        *R8                        SKIP DISPATCHING                   
TMLOAD1A EQU      %                                                             
         CW,R5    XASTACT           IS THE SEGMENT ACTIVE                       
         BAZ      TMLOAD6           NO, TEST NXT AST                            
*                                                                               
TMLOAD2  MTB,0    R4                LOADING THE MAP?                            
         BNEZ     TMLOAD3               NO                                      
         DO       #SIGMA9M                                                      
         MMC,R6   5                 LOAD MAP, SIGMA 9 (13 BIT) FORMAT           
         ELSE     #SIGMA9M                                                      
         MMC,R6   4                 LOAD MAP, SIGMA 7 (8 BIT) FORMAT            
         FIN      #SIGMA9M                                                      
         LW,R7    1,R5              RESET R7=CONTROL START AFTER MMC            
TMLOAD3  CI,R2    0                 SKIP ACI LOGIC IF NO ACI                    
         BEZ      TMLOAD6                                                       
         LI,R6    SDACCIMG*4            R6=OFFSET INTO ACI BYTES IN SD          
         AND,R7   M17                   R7=CONTROL START                        
         SLS,R7   -11               SET R2=BYTE IN ACI TO BE MODIFIED=          
         LB,R1    *R5                   CONTROL START/2048                      
         AND,R1   X3                    R3=MASK ID                              
         LB,R0    *R2,R7                GET BYTE FROM ACI                       
         AND,R0   TMLOADM,R1            MASK OFF OLD A/C OF NO-ACCESS           
         LB,R10   *R5,R6                GET BYTE FROM SD                        
         AND,R10  TMLOADN,R1                                                    
         OR,R0    R10                   COMBINE                                 
         STB,R0   *R2,R7                STORE INTO AC                           
         LW,R0    R1                                                            
         LI,R1    SDVPCNT           COMPUTE # OF BYTES IN A/C                   
         LB,R1    *R5,R1                R3 # OF PAGES IN SEG                    
         AW,R1    R0                    BYTES=(# PAGES+APM+3)/4                 
         AI,R1    3                     TRUNCATED                               
         SLS,R1   -2                                                            
         B        TMLOAD5                                                       
TMLOAD4  LB,R0    *R5,R6            GET NEXT BYTE FROM SD                       
         STB,R0   *R2,R7            STORE INTO ACI                              
TMLOAD5  AI,R6    1                 INCR OFFSET INTO SD                         
         AI,R7    1                      OFFSET INTO ACI                        
         BDR,R1   TMLOAD4           DECR BYTE COUNT                             
TMLOAD6  AI,R9    1                 DO NEXT AST                                 
         MTB,-1   R9                                                            
         BNEZ     TMLOAD1                                                       
TMLOAD7  CI,R2    0                 LOAD STANDARD ACI IF NOT USED               
         BEZ      TMLOAD9                                                       
         LW,R6    R2                ACI ADDRESS                                 
         LW,R7    TMACIMC+1         NR WORDS, STARTING VIRT ADDR                
TMLOADA  MMC,R6   2                 LOAD ACI                                    
*                                   NORMAL EXIT, ACI AND OPTIONAL               
TMLOADX  AI,R8    1                     MAP LOADED                              
         STW,R4   TDLAST            SAVE TASK ID THAT IS IN MAP:                
         B        *R8                                                           
TMLOAD9  LD,R6    TMACIMC           SET ACI TO THE NO-ACCESS ONE                
         B        TMLOADA                                                       
TMLOADM  DATA     X'00',X'C0',X'F0',X'FC'    0,2,4,6 LJ 1 BITS                  
TMLOADN  DATA     X'FF',X'3F',X'0F',X'03'    8,6,4,2 RJ 1 BITS                  
         TITLE    '** MMROOT - FETCH SUBROUTINE **'                             
*                                                                               
*        BAL,R8   MMFETCH           R1=ADDRESS (REAL)                           
*        RETURN                     R0=CONTENT                                  
*                                                                               
MMFETCH  XPSD,0   MM5802            SWITCH MODE                                 
         B        *R8               RETURN                                      
         BOUND    8                                                             
MM5802   DATA     0,0               SAVED PSD                                   
         DATA     MM5804            NEW INSTRUCTION ADDRESS                     
         DO       #550                                                          
         DATA     X'07000004'       550 INHIBITS AND MODE ALTERED               
         ELSE                       #550                                        
         DATA     X'07800000'       SIGMA INHIBITS AND MODE ALTERED             
         FIN                        #550                                        
MM5804   LW,R0    0,R1                                                          
         LPSD,0   MM5802                                                        
         TITLE    '** MMROOT - STORE SUBROUTINE **'                             
*                                                                               
*        BAL,R8   MMSTORE           R1 - ADDR TO STORE INTO                     
*        RETURN                     R0 - CONTENT                                
*                                                                               
MMSTORE  XPSD,0   MM5902            STORE UNMAPPED                              
         B        *R8               RETURN                                      
         BOUND    8                                                             
MM5902   DATA     0,0               SAVED PSD                                   
         DATA     MM5904            NEW INSTRUCTION ADDRESS                     
         DO       #550                                                          
         DATA     X'07000004'       550 INHIBITS AND MODE ALTERED               
         ELSE                       #550                                        
         DATA     X'07800000'       SIGMA INHIBITS AND MODE ALTERED             
         FIN                        #550                                        
MM5904   STW,R0   0,R1              STORE                                       
         LPSD,0   MM5902                                                        
         TITLE    '** MMROOT - SUB TO MOVE A PAGE **'                           
*******************                                                             
*    MMMOVE       *    SUBR TO MOVE A PAGE                                      
*******************                                                             
*                                                                               
* ENTRY  R14      ADDRESS TO RECEIVE PAGE                                       
*        R2       ADDRESS OF SEND PAGE                                          
*        BAL,R8   MMMOVE                                                        
* EXIT   +1       PAGE MOVED                                                    
* REGISTERS USED: R0                                                            
*          SAVED: R1-R15                                                        
* STACK WORDS:    1                                                             
* SUBROUTINES:    NONE                                                          
*                                                                               
MMMOVE   PUSH     R7                SAVE R7                                     
         XPSD,0   MM6106            SWITCH TO UNMAPPED AND MOVE                 
         PULL     R7                    PAGE, RESTORE REG                       
         B        *R8                   AND EXIT                                
*                                                                               
MM6102   LI,R7    511               SET # OF WORDS                              
MM6104   EQU      %                                                             
         LW,R0    *R2,R7            MOVE 511 WORDS                              
         STW,R0   *R14,R7                                                       
         BDR,R7   MM6104                                                        
         LW,R0    0,R2              MOVE 512TH (ZEROTH) WORD                    
         STW,R0   *R14                                                          
         LPSD,0   MM6106                EXIT                                    
         BOUND    8                                                             
MM6106   DATA     0,0                                                           
         DATA     MM6102            NEW INSTRUCTION ADDRESS                     
         DO       #550                                                          
         DATA     X'00000004'       550 INHIBITS AND MODE ALTERED               
         ELSE                       #550                                        
         DATA     X'00800000'       SIGMA INHIBITS AND MODE ALTERED             
         FIN                        #550                                        
         TITLE    '** MMROOT - CALL TO OMANFPP IN ROOT **'                      
*******************                                                             
*    MMOMFPP      *    SUBR TO CALL OMANFPP                                     
*******************                                                             
*                                                                               
* ENTRY  R14      REAL PAGE ADDRESS TO BE RELEASED                              
*        BAL,R8   MMOMFPP                                                       
* EXIT   +1       PAGE RELEASED                                                 
* REGISTERS USED: R0                                                            
*          SAVED: R1-R15                                                        
* STACK WORDS:    1                                                             
* SUBROUTINES:    OMANFPP                                                       
*                                                                               
MMOMFPP  EQU      %                                                             
         PUSH     2,R8                                                          
         BAL,R8   OMANFPP           RELEASE PAGE                                
         B        MM6202            HE DID NOT HAVE IT                          
         PULL     2,R8              NORMAL EXIT                                 
         B        *R8                   (REDISPATCH RESTORES OLAY)              
MM6202   CRASH    'MMOMFPP ERROR'                                               
         DO       #SWAP                                                         
         TITLE    '** MMROOT - MM SWAP CONTROL **'                              
*                                                                               
*                                                                               
*                                                                               
MMSWAP   EQU      %                                                             
         PUSH     5,R0              SAVE R0-R4                                  
         LW,R2    LMIRECB+MMTID     ANYTHING FOR MMEXEC TO DO                   
         BEZ      MMSWAPX           NOTHING                                     
         LW,R0    ECBPC,R2          GET MMEXEC PRIORITY                         
         LW,R1    XECBPR            MASK                                        
         CS,R0    STIPRIO,R4        IS MMEXEC LOWER PRIO                        
         BG       MMSWAPX           B IF YES                                    
*                                   EQUAL OR HIGHER                             
         LI,R4    MMTID                                                         
         LB,R0    STISTAT,R4                                                    
         CI,R0    STISTOP                                                       
         BAZ      MMSWAPX           B IF MMEXEC IS NOT STOPPED,                 
*                                   SINCE IT WONT HELP TO START HIM             
         PUSH     2,R8                                                          
         LW,R0    STIPRIO,R4                                                    
         OR,R0    XSTISTRT          START MMEXEC                                
         STW,R0   STIPRIO,R4                                                    
         MTW,R1   ROLL99            FORCE RESCAN                                
         BAL,R8   TMTRIG            TRIGGER DISPATCHER                          
         PULL     2,R8                                                          
         AI,R8    1                 TAKE SWAPPER EXIT                           
MMSWAPX  PULL     5,R0              RESTORE R0-R4                               
         B        *R8                                                           
*                                                                               
         FIN      #SWAP                                                         
MMROOT   TEXT     'MMRO0821'                                                    
A:MMROOT EQU      MMROOT                                                        
         SPACE    2                                                             
        FIN      #MAP                                                           
         END                                                                    
