COMPCHI 
COMMON
          CTEXT  COMPCHI - REDEFINE I/O INSTRUCTIONS. 
          SPACE  4,10 
          BASE   M
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 COMPCHI  SPACE  4
***       COMPCHI - REDEFINE I/O INSTRUCTIONS.
*         G. R. MANSFIELD.  70/10/04. 
 COMPCHI  SPACE  4
***              COMPCHI REDEFINES THE I/O INSTRUCTIONS TO PRODUCE
*         A CHANNEL TABLE BY REMOTE CODE. 
* 
*         IF *LCHI$* IS DEFINED, THE CHANNEL TABLE WILL BE PRODUCED 
*         USING *CONL* INSTRUCTIONS, RATHER THAN *CON* INSTRUCTIONS.
*         THIS ALLOWS *COMPCHI* TO BE USED WITH CODE WHICH RESIDES
*         AT ADDRESSES ABOVE 7777B IN A CONCURRENT PP.
* 
*         IF *RICHI$* IS UNDEFINED, THE CHANNEL INSTRUCTIONS WILL BE
*         REDEFINED AT THE TIME *COMPCHI* IS ASSEMBLED AND THE MACRO
*         *RICHI* WILL NOT BE CREATED.  IF *RICHI$* IS DEFINED, 
*         HOWEVER, THE MACRO *RICHI* WILL BE CREATED AND INSTRUCTION
*         REDEFINITION WILL NOT TAKE PLACE UNTIL *RICHI* IS CALLED. 
*         THE MACROS *RICHI* AND *RSTC* CAN BE USED TO ENABLE OR
*         DESABLE INSTRUCTION REDEFINITION. 
* 
*         ORIGINAL FORM MAY BE USED BY APPENDING A *.* TO THE ORIGINAL
*         OPCODE. 
* 
*         INSTRUCTIONS REDEFINED -
*                AJM
*                IJM
*                FJM
*                EJM
*                IAM
*                OAM
*                SCF
*                CCF
*                SFM
*                CFM
*                FNC
*                IAN
*                OAN
*                ACN
*                DCN
*                FAN
 CHIM     SPACE  4
**        CHIM - REDEFINE M-TYPE CHANNEL INSTRUCTIONS.
* 
* 
*         CHIM   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
          PURGMAC CHIM
 CHIM     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   7,CODE 
 OPC      MACRO  M,D
          LOCAL  A
 A        OPC.   M,D
          RMT 
 LCHI$    IF     DEF,LCHI$
          CONL   A
 LCHI$    ELSE
          CON    A
 LCHI$    ENDIF 
          RMT 
 OPC      ENDM
 CHIM     ENDM
 CHIN     SPACE  4
**        CHIN - REDEFINE N-TYPE CHANNEL INSTRUCTIONS.
* 
* 
*         CHIN   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
          PURGMAC CHIN
 CHIN     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   4,CODE 
 OPC      MACRO  D
          LOCAL  A
 A        OPC.   D
          RMT 
 LCHI$    IF     DEF,LCHI$
          CONL   A
 LCHI$    ELSE
          CON    A
 LCHI$    ENDIF 
          RMT 
 OPC      ENDM
 CHIN     ENDM
 RICHI    SPACE  4
***       RICHI - REDEFINE CHANNEL INSTRUCTIONS.
* 
*         RICHI 
*         EACH TIME *RICHI* IS CALLED, INSTRUCTION REDEFINITION OCCURS. 
*         *RICHI* IS CREATED ONLY IF *RICHI$* IS DEFINED. 
  
  
          IF     DEF,RICHI$,2 
          PURGMAC RICHI 
 RICHI    MACRO 
  
          CHIM   AJM,6400 
          CHIM   SCF,6440 
          CHIM   IJM,6500 
          CHIM   CCF,6540 
          CHIM   FJM,6600 
          CHIM   SFM,6640 
          CHIM   EJM,6700 
          CHIM   CFM,6740 
          CHIM   IAM,7100 
          CHIM   OAM,7300 
          CHIM   FNC,7700 
  
          CHIN   IAN,7000 
          CHIN   OAN,7200 
          CHIN   ACN,7400 
          CHIN   DCN,7500 
          CHIN   FAN,7600 
  
          ENDM
 CHTE     SPACE  4
***       CHTE - CREATE CHANNEL TABLE ENTRY.
* 
* 
*         CHTE   ADDRESS
*         ENTRY  (ADDRESS) = ADDRESS TO INSERT IN CHANNEL TABLE.
  
  
          PURGMAC CHTE
 CHTE     MACRO  A
          LOCAL  B
 B        EQU    A
          RMT 
 LCHI$    IF     DEF,LCHI$
          CONL   B
 LCHI$    ELSE
          CON    B
 LCHI$    ENDIF 
          RMT 
          ENDM
 CHTL     SPACE  4
***       CHTL - CREATE LAST ENTRY IN CHANNEL TABLE.
* 
* 
*         CHTL   ADDRESS
*         ENTRY  (ADDRESS) = ADDRESS TO INSERT AS LAST ENTRY IN CHANNEL 
*         TABLE.
* 
*         NOTE-  WHEN THIS CALL IS USED CHANNEL TABLE WILL NOT
*         TERMINATE WITH A ZERO BYTE. 
  
  
          PURGMAC CHTL
 CHTL     MACRO  A
          LOCAL  B
 B        EQU    A
 CHTL     RMT 
 LCHI$    IF     DEF,LCHI$
          CONL   B
 LCHI$    ELSE
          CON    B
 LCHI$    ENDIF 
 CHTL     RMT 
          ENDM
 CHTB     SPACE  4
***       CHTB - DEFINE CHANNEL TABLE.
*         CHANNEL TABLE IS TERMINATED BY A ZERO WORD. 
* 
* 
*LOC      CHTB
*         ENTRY  *LOC* = FWA OF CHANNEL TABLE.
  
  
          PURGMAC CHTB
          MACRO  CHTB,A 
          LOCAL  B,C
 A        BSS    0
          HERE
 B        SET    *
 CHTL     HERE
 C        SET    *
          IFEQ   B,C,1       IF NO SPECIAL TERMINATOR 
 A_E      DATA   0           TERMINATE TABLE
          ENDM
 RSTC     SPACE  4
***       RSTC - RESTORE CHANNEL INSTRUCTIONS.
* 
* 
*         RSTC
  
  
          PURGMAC RSTC
 RSTC     MACRO 
          PURGMAC AJM 
          PURGMAC SCF 
          PURGMAC IJM 
          PURGMAC CCF 
          PURGMAC FJM 
          PURGMAC SFM 
          PURGMAC EJM 
          PURGMAC CFM 
          PURGMAC IAN 
          PURGMAC IAM 
          PURGMAC OAN 
          PURGMAC OAM 
          PURGMAC ACN 
          PURGMAC DCN 
          PURGMAC FAN 
          PURGMAC FNC 
 AJM      OPSYN  AJM. 
 SCF      OPSYN  SCF. 
 IJM      OPSYN  IJM. 
 CCF      OPSYN  CCF. 
 FJM      OPSYN  FJM. 
 SFM      OPSYN  SFM. 
 EJM      OPSYN  EJM. 
 CFM      OPSYN  CFM. 
 IAN      OPSYN  IAN. 
 IAM      OPSYN  IAM. 
 OAN      OPSYN  OAN. 
 OAM      OPSYN  OAM. 
 ACN      OPSYN  ACN. 
 DCN      OPSYN  DCN. 
 FAN      OPSYN  FAN. 
 FNC      OPSYN  FNC. 
          ENDM
          SPACE  4,10 
          BASE   *
          ENDX
