COMPRLI 
COMMON
          CTEXT  COMPRLI - RELOCATABLE OVERLAY MACROS.
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 MACROS   SPACE  4
***       COMPRLI - RELOCATABLE OVERLAY MACROS. 
*         G. R. MANSFIELD.  70/10/04. 
 MACROS   SPACE  4
***              APPROPRIATE INSTRUCTIONS ARE RE-DEFINED SUCH THAT
*         PROPER CODE IS ASSEMBLED FOR RELOCATABLE OVERLAYS.
*         A RELOCATION TABLE IS GENERATED FOR ALL INSTRUCTIONS
*         WHICH MUST BE RELOCATED.  -M- TYPE INSTRUCTIONS ARE 
*         RELOCATED USING (LA) IF POSSIBLE. 
*         IF THE SYMBOL *REL$* IS SET NON-ZERO, ALL -M- INSTRUCTIONS
*         WILL BE RELOCATED BY THE RELOCATION TABLE.
*         THE ORIGINAL DEFINITION OF THE INSTRUCTION MAY BE USED
*         WHERE APPROPRIATE, BY APPENDING A *.* TO THE OPCODE.
*         A *.* AFTER A -C- TYPE INSTRUCTION (LDC., LMC., ADC.) WILL
*         CAUSE RELOCATION, OTHERWISE THESE INSTRUCTIONS WILL NOT BE
*         RELOCATED.
* 
*         IF THE SYMBOL *RLI$* IS NOT DEFINED, RESULTANT CODE 
*         WILL NOT BE QUALIFIED.  THIS QUALIFIER (*REL*) IS LEFT
*         IN EFFECT, THEREFORE ALL CODE ASSEMBLED THEREAFTER WILL 
*         BE QUALIFIED.  THIS IS NECESSARY FOR THE RELOCATION MACROS
*         TO WORK PROPERLY, SINCE INSTRUCTIONS REFERENCING UNQUALIFIED
*         SYMBOLS ARE NOT RELOCATED.
* 
*         IF THE SYMBOL *RINST$* IS DEFINED, INSTRUCTIONS WILL BE 
*         RESTORED ON EXIT FROM THIS DECK.
 RLIM     SPACE  4
**        RLIM - DEFINE RELOCATION FOR -M- TYPE INSTRUCTIONS. 
* 
* 
*         RLIM   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
 RLIM     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   5,CODE 
 OPC      MACRO  M,D
          LOCAL  A
 .1       MICRO  1,1, M 
          IFC    GE,$".1"$0$,3
          IFC    LE,$".1"$9$,2
          OPC.   M,D
 .1       SKIP
          IF     DEF,//M,2
          OPC.   M,D
 .2       SKIP
          IFEQ   REL$,,3
          IFEQ   D,,2 
          OPC.   M,LA 
 .3       SKIP
          OPC.   M,D
 A        EQU    *-1
          RMT 
          USE    REL
          CON    A
          RMT 
          ENDIF 
 OPC      ENDM
 RLIM     ENDM
  
          RLIM   LJM,0100 
          RLIM   RJM,0200 
          RLIM   LDM,5000 
          RLIM   ADM,5100 
          RLIM   SBM,5200 
          RLIM   LMM,5300 
          RLIM   STM,5400 
          RLIM   RAM,5500 
          RLIM   AOM,5600 
          RLIM   SOM,5700 
 RLIO     SPACE  4
**        RLIO - DEFINE RELOCATION FOR -I/O- INSTRUCTIONS.
* 
* 
*         RLIO   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
 RLIO     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   7,CODE 
 OPC      MACRO  M,D
          LOCAL  A
 .1       MICRO  1,1, M 
          IFC    GE,$".1"$0$,3
          IFC    LE,$".1"$9$,2
          OPC.   M,D
 .2       SKIP
          IF     DEF,//M,2
          OPC.   M,D
 .3       SKIP
          OPC.   M,D
 A        EQU    *-1
          RMT 
          USE    REL
          CON    A
          RMT 
          ENDIF 
 OPC      ENDM
 RLIO     ENDM
  
          RLIO   CRM,6100 
          RLIO   CWM,6300 
          RLIO   AJM,6400 
          RLIO   IJM,6500 
          RLIO   FJM,6600 
          RLIO   EJM,6700 
          RLIO   IAM,7100 
          RLIO   OAM,7300 
 RLIC     SPACE  4
**        RLIC - DEFINE RELOCATABLE FORM FOR -C- TYPE INSTRUCTIONS. 
* 
* 
*         RLIC   OPC
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
  
  
 RLIC     MACRO  OPC
 OPC.     MACRO  C
          LOCAL  A
          OPC    C
 A        EQU    *-1
          RMT 
          USE    REL
          CON    A
          RMT 
          ENDM
  
          RLIC   LDC
          RLIC   ADC
          RLIC   LMC
 RSTR     SPACE  4
***       RSTR - RESTORE ALL REDEFINED INSTRUCTIONS.
* 
* 
*         RSTR
*         ENTRY  NONE.
  
  
          PURGMAC RSTR
 RSTR     MACRO 
          PURGMAC LJM 
          PURGMAC RJM 
          PURGMAC LDM 
          PURGMAC ADM 
          PURGMAC SBM 
          PURGMAC LMM 
          PURGMAC STM 
          PURGMAC RAM 
          PURGMAC AOM 
          PURGMAC SOM 
          PURGMAC CRM 
          PURGMAC CWM 
          PURGMAC AJM 
          PURGMAC IJM 
          PURGMAC FJM 
          PURGMAC EJM 
          PURGMAC IAM 
          PURGMAC OAM 
 LJM      OPSYN  LJM. 
 RJM      OPSYN  RJM. 
          PURGMAC LDC.
          PURGMAC ADC.
          PURGMAC LMC.
 LDM      OPSYN  LDM. 
 ADM      OPSYN  ADM. 
 SBM      OPSYN  SBM. 
 LMM      OPSYN  LMM. 
 STM      OPSYN  STM. 
 AOM      OPSYN  AOM. 
 RAM      OPSYN  RAM. 
 SOM      OPSYN  SOM. 
 CRM      OPSYN  CRM. 
 CWM      OPSYN  CWM. 
 AJM      OPSYN  AJM. 
 IJM      OPSYN  IJM. 
 FJM      OPSYN  FJM. 
 EJM      OPSYN  EJM. 
 IAM      OPSYN  IAM. 
 OAM      OPSYN  OAM. 
          ENDM
 REL      SPACE  4
**        REL - RELOCATE INSTRUCTIONS.
  
  
          ORG    5
 REL$     SET    0
          IF     -DEF,RLI$
          QUAL   REL
          ENDIF 
          USE    REL
          USE    REL. 
          USE 
          RMT 
          USE    REL
 REL      SUBR               ENTRY/EXIT 
          LDC    .REL-1      SET FIRST ENTRY
          ADD    LA 
          STD    T1 
 REL1     AOD    T1 
          LDI    T1 
          ZJN    RELX        RETURN IF END OF TABLE 
          ADD    LA 
          STD    T2 
          LDD    LA 
          ADC    770000B     FORCE ADD OF END AROUND CARRY
          RAI    T2 
          UJN    REL1        LOOP 
 .REL     BSS    0
          USE    REL. 
          CON    0
          RMT 
  
  
          IF     DEF,RINST$ 
          RSTR               RESTORE INSTRUCTIONS 
          ENDIF 
          SPACE  4
          ENDX
