          SPACE  4,10
          BASE   M
*         COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992
 IOPCCHI  SPACE  4
***       IOPCCHI - REDEFINE I/O INSTRUCTIONS.
*         G. R. MANSFIELD.  70/10/04.
 IOPCCHI  SPACE  4
***              IOPCCHI 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 *IOPCCHI* 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
          BASE   O

          CHIM   AJM,6400
          CHIM   IJM,6500
          CHIM   FJM,6600
          CHIM   EJM,6700
          CHIM   IAM,7100
          CHIM   OAM,7300
          CHIM   FNC,7700

          CHIN   IAN,7000
          CHIN   OAN,7200
          CHIN   ACN,7400
          CHIN   DCN,7500
          CHIN   FAN,7600
          BASE   *

          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
          SPACE  4,10
          BASE   *
          ENDX
