*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
 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 
          CON    A
          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 
          CON    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
  
          CHIN   IAN,7000B
          CHIN   OAN,7200B
          CHIN   ACN,7400B
          CHIN   DCN,7500B
          CHIN   FAN,7600B
  
          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 
          CON    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 
          CON    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 
 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. 
          ENDM
          ENDX
