COMPCHL 
COMMON
          CTEXT  COMPCHL - REDEFINE I/O INSTRUCTIONS. 
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 COMPCHL  SPACE  4
***       COMPCHL - REDEFINE I/O INSTRUCTIONS.
*         G. R. MANSFIELD.  70/10/04. 
*         R. J. THIELEN.     75/11/20. MODIFIED.
 COMPCHL  SPACE  4
***              COMPCHL REDEFINES THE I/O INSTRUCTIONS TO PRODUCE
*         CHANNEL INSTRUCTIONS THAT ARE LINKED BACKWARDS TO THE 
*         PREVIOUS CHANNEL INSTRUCTION OR LINKED FORWARD TO THE 
*         FOLLOWING CHANNEL INSTRUCTION.  THE LINKAGE INFORMATION 
*         (BACKWARD OR FORWARD DISPLACEMENT) IS STORED IN THE *D* FIELD 
*         OF THE CHANNEL INSTRUCTIONS.  THE ASSEMBLED *D* FIELD WILL BE 
*         THE SUM OF THE LINKAGE DISPLACEMENT AND ANY VALUE PLACED IN 
*         THE *D* FIELD OF THE SYMBOLIC INSTRUCTION.  THIS ALLOWS BIT 5 
*         TO BE OPTIONALLY SPECIFIED FOR CONTROLLING CHANNEL HANGS. 
* 
*         LINKAGE DIRECTION IS CONTROLLED BY THE SYSBOL FWDL$ - 
* 
*         FWDL$ = UNDEFINED TO PRODUCE BACKWARD LINKED INSTRUCTIONS.
*         FWDL$ = DEFINED TO PRODUCE FORWARD LINKED INSTRUCTIONS. 
*                 THIS FORM TAGS EACH INSTRUCTION WITH A TAG OF THE 
*                 FORM CHNN$, WHERE NN RANGES FROM 01 TO THE NUMBER OF
*                 CHANNEL INSTRUCTIONS + 1 AND IS LIMITED TO 99.  THE 
*                 LAST INSTRUCTION IS TAGGED TWICE. 
* 
*         THE TIME AT WHICH INSTRUCTION REDEFINITION OCCURS IS
*         CONTROLLED BY THE SYMBOL RICHL$ - 
* 
*         RICHL$ = UNDEFINED TO CAUSE THE CHANNEL INSTRUCTIONS TO BE
*                  REDEFINED AT THE TIME *COMPCHL* IS ASSEMBLED.  THE 
*                  MACRO *RICHL* WILL NOT BE CREATED. 
*         RICHL$ = DEFINED TO CAUSE THE MACRO *RICHL* TO BE CREATED AND 
*                  TO DEFER INSTRUCTION REDEFINITION UNTIL *RICHL* IS 
*                  CALLED.  THE MACROS *RICHL* AND *RSTCHL* CAN BE USED 
*                  TO ENABLE OR DISABLE 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
 CHLM     SPACE  4
**        CHLM - REDEFINE M-TYPE CHANNEL INSTRUCTIONS.
* 
* 
*         CHLM   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
          PURGMAC CHLM
 CHLM     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   7,CODE 
 OPC      MACRO  M,D
          IF     -DEF,TCHS,1
 TCHS     SET    *
 FWD.BWD  IF     -DEF,FWDL$  IF REVERSE LINKING SPECIFIED 
          ERRPL  *-TCHS-40   REVERSE LINK OUT OF RANGE
          OPC.   M,*-TCHS+D  REVERSE LINKED CHANNEL INSTRUCTION 
 FWD.BWD  ELSE               PROCESS FORWARD LINKING
          IF     -DEF,CH1$,2 IF INSTRUCTION TAG COUNTER NEVER USED
 CH1$     SET    1           INITIALIZE INSTRUCTION TAG COUNTER 
 CH2$     DECMIC CH1$,2      INITIALIZE INSTRUCTION TAG 
 CH"CH2$"$ EQU   *           TAG CURRENT INSTRUCTION
 CH1$     SET    CH1$+1      INCREMENT INSTRUCTION TAG
 CH2$     DECMIC CH1$,2 
          ERRPL  CH"CH2$"$-*-40  FORWARD LINK OUT OF RANGE
          OPC.   M,CH"CH2$"$-*+D  FORWARD LINKED CHANNEL INSTRUCTION
 FWD.BWD  ENDIF 
 TCHS     SET    *-2
 OPC      ENDM
 CHLM     ENDM
 CHLN     SPACE  4
**        CHLN - REDEFINE N-TYPE CHANNEL INSTRUCTIONS.
* 
* 
*         CHLN   OPC
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
          PURGMAC CHLN
 CHLN     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   4,CODE 
 OPC      MACRO  D
          IF     -DEF,TCHS,1
 TCHS     SET    *
 FWD.BWD  IF     -DEF,FWDL$  IF REVERSE LINKING SPECIFIED 
          ERRPL  *-TCHS-40   REVERSE LINK OUT OF RANGE
          OPC.   *-TCHS+D    REVERSE LINKED CHANNEL INSTRUCTION 
 FWD.BWD  ELSE               PROCESS FORWARD LINKING
          IF     -DEF,CH1$,2 IF INSTRUCTION TAG COUNTER NEVER USED
 CH1$     SET    1           INITIALIZE INSTRUCTION TAG COUNTER 
 CH2$     DECMIC CH1$,2      INITIALIZE INSTRUCTION TAG 
 CH"CH2$"$ EQU   *           TAG CURRENT INSTRUCTION
 CH1$     SET    CH1$+1      INCREMENT INSTRUCTION TAG
 CH2$     DECMIC CH1$,2 
          ERRPL  CH"CH2$"$-*-40  FORWARD LINK OUT OF RANGE
          OPC.   CH"CH2$"$-*+D  FORWARD LINKED CHANNEL INSTRUCTION
 FWD.BWD  ENDIF 
 TCHS     SET    *-1
 OPC      ENDM
 CHLN     ENDM
 RICHL    SPACE  4
***       RICHL - REDEFINE CHANNEL INSTRUCTIONS.
* 
*         RICHL 
*         EACH TIME *RICHL* IS CALLED, INSTRUCTION REDEFINITION OCCURS. 
*         *RICHL* IS CREATED ONLY IF *RICHL$* IS DEFINED. 
  
  
          IF     DEF,RICHL$,2 
          PURGMAC RICHL 
 RICHL    MACRO 
  
          CHLM   AJM,6400 
          CHLM   SCF,6440 
          CHLM   IJM,6500 
          CHLM   CCF,6540 
          CHLM   FJM,6600 
          CHLM   SFM,6640 
          CHLM   EJM,6700 
          CHLM   CFM,6740 
          CHLM   IAM,7100 
          CHLM   OAM,7300 
          CHLM   FNC,7700 
  
          CHLN   IAN,7000 
          CHLN   OAN,7200 
          CHLN   ACN,7400 
          CHLN   DCN,7500 
          CHLN   FAN,7600 
  
  
  
  
**        TLCL - TERMINATE LINKED CHANNEL LIST. 
* 
*         THIS CODE MAKES AN ENTRY IN THE UNLABELED REMOVE TABLE TO 
*         FORCE TERMINATION OF THE CHANNEL LIST WHEN THE END OF PROGRAM 
*         IS REACHED.  THE CHANNEL LIST CAN BE TERMINATED EARLY BY
*         USING AN UNLABELED *HERE* PSEUDO INSTRUCTION.  IT SHOULD BE 
*         NOTED THAT ONCE AN UNLABELED *HERE* PSEUDO INSTRUCTION HAS
*         CAUSED THE FORWARD LINKED CHANNEL INSTRUCTION LIST TO BE
*         TERMINATED, THE REDEFINED CHANNEL INSTRUCTIONS ARE RESTORED 
*         TO THEIR STANDARD FORM. 
  
  
 TLCL     IF     DEF,FWDL$   IF FORWARD LINKING SPECIFIED 
          RMT 
          IF     DEF,CH1$,1  IF CHANNEL INSTRUCTIONS PROCESSED
 CH"CH2$"$ EQU   TCHS        TERMINATE LAST INSTRUCTION IN CHAIN
          RSTCHL             RESTORE CHANNEL INSTRUCTIONS 
          RMT 
 TLCL     ENDIF 
  
 RICHL    ENDM
 RSTC     SPACE  4
***       RSTCHL - RESTORE CHANNEL INSTRUCTIONS.
* 
*         RSTCHL
*         EACH TIME *RSTCHL* IS CALLED, INSTRUCTION RESTORATION OCCURS. 
  
  
          PURGMAC RSTCHL
 RSTCHL   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
          ENDX
