COMPRLM 
COMMON
          CTEXT  COMPRLM - RELOCATABLE OVERLAY MACROS.
          BASE   M
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
*****     COMPRLM - RELOCATABLE OVERLAY MACROS. 
* 
*         P. D. HAAS.        79/07/16.
          SPACE  4,10 
***              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 *RLM$* 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.
* 
*         NOTE THAT NO TEST IS MADE FOR UNQUALIFIED SYMBOLS IN THE
*         PROCESS OF SETTING UP THE RELOCATION TABLE.  IF AN UNQUAL-
*         IFIED SYMBOL IS TO BE REFERENCED, A *.* MUST BE APPENDED
*         TO THE -M- TYPE INSTRUCTION OPCODE. 
* 
*         IF THE SYMBOL *RINST$* IS DEFINED, INSTRUCTIONS WILL BE 
*         RESTORED ON EXIT FROM THIS DECK.
 RLIM     SPACE  4,10 
**        RLIM - DEFINE RELOCATION FOR -M- TYPE INSTRUCTIONS. 
* 
* 
*         RLIM   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
          PURGMAC RLIM
 RLIM     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   5,CODE 
 OPC      MACRO  M,D
          LOCAL  A
 .1       MICRO  1,1, M 
 .A       IFC    GE,$".1"$0$
 .A       IFC    LE,$".1"$9$
          OPC.   M,D
 .A       ELSE
 .B       IFEQ   RLM$,0 
 .B       IFEQ   D,0
          OPC.   M,LA 
 .B       ELSE
          OPC.   M,D
 A        EQU    *-1
          RMT 
          USE    RLM
          CON    A
          RMT 
 .A       ENDIF 
 .B       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,10 
**        RLIO - DEFINE RELOCATION FOR -I/O- INSTRUCTIONS.
* 
* 
*         RLIO   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
          PURGMAC RLIO
 RLIO     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   7,CODE 
 OPC      MACRO  M,D
          LOCAL  A
 .1       MICRO  1,1, M 
 .A       IFC    GE,$".1"$0$
 .A       IFC    LE,$".1"$9$
          OPC.   M,D
 .A       ELSE
          OPC.   M,D
 A        EQU    *-1
          RMT 
          USE    RLM
          CON    A
          RMT 
 .A       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,10 
**        RLIC - DEFINE RELOCATABLE FORM FOR -C- TYPE INSTRUCTIONS. 
* 
* 
*         RLIC   OPC
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
  
  
          PURGMAC RLIC
 RLIC     MACRO  OPC
          PURGMAC OPC.
 OPC.     MACRO  C
          LOCAL  A
          OPC    C
 A        EQU    *-1
          RMT 
          USE    RLM
          CON    A
          RMT 
 RLIC     ENDM
  
          RLIC   LDC
          RLIC   ADC
          RLIC   LMC
 RSTR     SPACE  4,10 
**        RSTR - RESTORE ALL REDEFINED INSTRUCTIONS.
* 
* 
*         RSTR
  
  
          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 
          PURGMAC LDC.
          PURGMAC ADC.
          PURGMAC LMC.
 LJM      OPSYN  LJM. 
 RJM      OPSYN  RJM. 
 LDM      OPSYN  LDM. 
 ADM      OPSYN  ADM. 
 SBM      OPSYN  SBM. 
 LMM      OPSYN  LMM. 
 STM      OPSYN  STM. 
 RAM      OPSYN  RAM. 
 AOM      OPSYN  AOM. 
 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. 
 RSTR     ENDM
 RLI      SPACE  4,10 
**        RLI - RELOCATE INSTRUCTIONS.
  
  
          ORG    5
 RLM$     SET    0
          USE    RLM
          USE    RLM. 
          USE 
          RMT 
          USE    RLM
  
 RLI      SUBR               ENTRY/EXIT 
          LDC    .RLI-1      SET FIRST ENTRY
          ADD    LA 
          STD    T1 
 RLI1     AOD    T1 
          LDI    T1 
          ZJN    RLIX        IF END OF TABLE
          ADD    LA 
          STD    T2 
          LDD    LA 
          ADC    770000      FORCE ADD OF END AROUND CARRY
          RAI    T2 
          UJN    RLI1        LOOP 
  
 .RLI     BSS    0
          USE    RLM. 
          CON    0           TERMINATE TABLE
          RMT 
  
  
          IF     DEF,RINST$ 
          RSTR               RESTORE INSTRUCTIONS 
          ENDIF 
          SPACE  4,10 
          ENDX
