*COMDECK  COMPCHI 
          CTEXT  COMPCHI - REDEFINE I/O INSTRUCTIONS. 
*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
 COMPCHI  SPACE  4
***       COMPCHI - REDEFINE I/O INSTRUCTIONS.
*         G. R. MANSFIELD.  70/10/04. 
*         R. A. MATTHEWS.    78/01/03. MODIFIED.
 COMPCHI  SPACE  4
***              COMPCHI REDEFINES THE I/O INSTRUCTIONS TO PRODUCE
*         A CHANNEL TABLE BY REMOTE CODE. 
* 
*         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
*                FNC
*                IAN
*                OAN
*                ACN
*                DCN
*                FAN
*                MCLR 
*                CMCH 
*                CHCM 
*                SFM
*                CFM
 CHIML    SPACE  4
**        CHIML - REDEFINE 16 BIT M-TYPE CHANNEL INSTRUCTIONS.
* 
* 
*         CHIML   OPC,CODE
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
          PURGMAC CHIML 
 CHIML    MACRO  OPC,CODE,D 
          PURGMAC OPC.
 OPC.     MACRO  M,D
          CONL   CODE+D 
          CONL   M
 OPC.     ENDM
          PURGMAC OPC 
 OPC      MACRO  M,D
          LOCAL  A
 A        OPC.   M,D
          RMT 
          CONL   A
          RMT 
 OPC      ENDM
 CHIML    ENDM
**        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 
          CONL   A
          RMT 
 OPC      ENDM
 CHIM     ENDM
 CHINL     SPACE  4 
**        CHINL - REDEFINE 16 BIT N-TYPE CHANNEL INSTRUCTIONS.
* 
* 
*         CHINL   OPC,CODE
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
          PURGMAC CHINL 
 CHINL    MACRO  OPC,CODE,D 
          PURGMAC OPC.
 OPC.     MACRO  D
          CONL   CODE+D 
 OPC.     ENDM
          PURGMAC OPC 
 OPC      MACRO  D
          LOCAL  A
 A        OPC.   D
          RMT 
          CONL   A
          RMT 
 OPC      ENDM
 CHINL    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 
          CONL   A
          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,6400B
          CHIM   IJM,6500B
          CHIM   FJM,6600B
          CHIM   EJM,6700B
          CHIM   IAM,7100B
          CHIM   OAM,7300B
          CHIM   FNC,7700B
          CHIML  CHCM,107000B,C 
          CHIML  CMCH,107200B,C 
          CHIML  SFM,6640B,C
          CHIML  CFM,6740B,C
  
          CHIN   IAN,7000B
          CHIN   OAN,7200B
          CHIN   ACN,7400B
          CHIN   DCN,7500B
          CHIN   FAN,7600B
          CHINL  MCLR,107400B,C 
  
          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 
          CONL   B
          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 
          CONL   B
 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 IJM 
          PURGMAC FJM 
          PURGMAC EJM 
          PURGMAC IAN 
          PURGMAC IAM 
          PURGMAC OAN 
          PURGMAC OAM 
          PURGMAC ACN 
          PURGMAC DCN 
          PURGMAC FAN 
          PURGMAC FNC 
          PURGMAC MCLR
          PURGMAC CMCH
          PURGMAC CHCM
          PURGMAC SFM 
          PURGMAC CFM 
 AJM      OPSYN  AJM. 
 IJM      OPSYN  IJM. 
 FJM      OPSYN  FJM. 
 EJM      OPSYN  EJM. 
 IAN      OPSYN  IAN. 
 IAM      OPSYN  IAM. 
 OAN      OPSYN  OAN. 
 OAM      OPSYN  OAM. 
 ACN      OPSYN  ACN. 
 DCN      OPSYN  DCN. 
 FAN      OPSYN  FAN. 
 FNC      OPSYN  FNC. 
 MCLR     OPSYN  MCLR.
 CHCM     OPSYN  CHCM.
 CMCH     OPSYN  CMCH.
 SFM      OPSYN  SFM. 
 CFM      OPSYN  CFM. 
          ENDM
          ENDX
