*COMDECK COMPCHN
          CTEXT  COMPCHN - REDEFINE CHANNEL INSTRUCTIONS
  
***       COMPCHN - REDEFINE CHANNEL INSTRUCTIONS 
* 
*         D. J. JOHNSON      09/24/82.
  
          COMMENT            COPYRIGHT CONTROL DATA CORPORATION.  1982. 
          SPACE  4
***       THIS COMMON DECK REDEFINES THE PP CHANNEL INSTRUCTIONS TO 
*         FACILITATE THE INSERTION OF AN ASSIGNED CHANNEL NUMBER AT 
*         EXECUTION TIME.  WHEN A PP SOURCE STATEMENT WITH A CHANNEL
*         FIELD IS ENCOUNTERED THE ADDRESS OF THAT INSTRUCTION IS ADDED 
*         TO A RMT TABLE.  WHEN THE OBJECT CODE IS LOADED INTO A PP FOR 
*         EXECUTION THE CHANNEL INSTRUCTIONS WHOSE ADDRESSES OCCUR IN 
*         THE RMT TABLE MUST BE MODIFIED TO CONTAIN THE APPROPRIATE 
*         CHANNEL NUMBER BEFORE THEY ARE EXECUTED.
* 
*         THE CHN MACRO DEFINES THE LOCATION AT WHICH THE TABLE OF
*         CHANNEL INSTRUCTION ADDRESSES WILL EXIST IN THE ASEMBLED
*         BINARY.  IT MUST FOLLOW THE LAST INSTRUCTION INCLUDED IN THE
*         LIST.  THE TABLE IS TERMINATED BY A WORD OF ZEROS.
* 
*         A SET OF MACROS IS ALSO INCLUDED IN THIS COMMON DECK WHICH
*         PERMITS THE ASSEMBLY OF CHANNEL INSTRUCTIONS WHICH CONTAIN A
*         CHANNEL NUMBER WHICH IS NOT TO BE MODIFIED PRIOR TO BEING 
*         EXECUTED.  THE MNEMONICS FOR THESE INSTRUCTIONS ARE FORMED BY 
*         APPENDING THE LETTER N TO THE STANDARD PP INSTRUCTION 
*         MNEMONIC. 
* 
*         EXAMPLE:  
* 
*         IANN   14B+40B     READ THE REAL TIME CLOCK 
          EJECT 
* 
*         INSTRUCTION FORMAT DEFINITIONS. 
* 
  
 AJM.     PPOP   7,6400B
 SCF.     PPOP   7,6440B
 IJM.     PPOP   7,6500B
 CCF.     PPOP   4,6540B
 FJM.     PPOP   7,6600B
 SFM.     PPOP   7,6640B
 EJM.     PPOP   7,6700B
 CFM.     PPOP   7,6740B
 IAN.     PPOP   4,7000B
 IAM.     PPOP   7,7100B
 OAN.     PPOP   4,7200B
 OAM.     PPOP   7,7300B
 ACN.     PPOP   4,7400B
 DCN.     PPOP   4,7500B
 FAN.     PPOP   4,7600B
 FNC.     PPOP   7,7700B
  
  
* 
*         MACROS TO BUILD MODIFICATION ADDRESS TABLE
* 
  
**        CH12 - ENTER THE FOLLOWING ADDRESS INTO A TABLE OF 12-BIT 
*                INSTRUCTIONS WHICH REQUIRE CHANNEL MODIFICATION. 
* 
*         CH12   ADDR 
  
          PURGMAC  CH12 
 CH12     MACRO  ADDR 
          LOCAL  X
 X        EQU    ADDR 
 CHL      RMT 
          CON    X
 CHL      RMT 
          ENDM
  
*         CHN - FORM THE TABLE OF 12-BIT CHANNEL INSTRUCTIONS.
* 
*         CHN 
  
          PURGMAC  CHN
 CHN      MACRO 
 CHL      HERE
          CON    0
          ENDM
  
          EJECT 
* 
*         DEFINE MODIFIABLE CHANNEL INSTRUCTIONS
* 
  
**        AJM - JUMP IF CHANNEL D ACTIVE
* 
*         AJM    M,D
  
          PURGMAC  AJM
 AJM      MACRO  M,D
          AJM.   M,D
          CH12   *-2
          ENDM
  
**        SCF - TEST AND SET CHANNEL D FLAG 
* 
*         SCF    M,D
  
          PURGMAC  SCF
 SCF      MACRO  M,D
          SCF.   M,D
          CH12   *-2
          ENDM
  
**        IJM - JUMP IF CHANNEL D INACTIVE
* 
*         IJM    M,D
  
          PURGMAC  IJM
 IJM      MACRO  M,D
          IJM.   M,D
          CH12   *-2
          ENDM
  
**        CCF - CLEAR CHANNEL D FLAG
* 
*         CCF    D
  
          PURGMAC  CCF
 CCF      MACRO  D
          CCF.   D
          CH12   *-1
          ENDM
  
**        FJM - JUMP IF CHANNEL D FULL
* 
*         FJM    M,D
  
          PURGMAC  FJM
 FJM      MACRO  M,D
          FJM.   M,D
          CH12   *-2
          ENDM
  
**        SFM - JUMP IF CHANNEL D ERROR FLAG SET
* 
*         SFM    M,D
  
          PURGMAC  SFM
 SFM      MACRO  M,D
          SFM.   M,D
          CH12   *-2
          ENDM
  
**        EJM - JUMP IF CHANNEL D EMPTY 
* 
*         EJM    M,D
  
          PURGMAC  EJM
 EJM      MACRO  M,D
          EJM.   M,D
          CH12   *-2
          ENDM
  
**        CFM - JUMP IF CHANNEL D FLAG CLEAR
* 
*         CFM    M,D
  
          PURGMAC  CFM
 CFM      MACRO  M,D
          CFM.   M,D
          CH12   *-2
          ENDM
  
**        IAN - INPUT TO A FROM CHANNEL D 
* 
*         IAN    D
  
          PURGMAC  IAN
 IAN      MACRO  D
          IAN.   D
          CH12   *-1
          ENDM
  
**        IAM - INPUT A WORDS TO M FROM CHANNEL D 
* 
*         IAM    M,D
  
          PURGMAC  IAM
 IAM      MACRO  M,D
          IAM.   M,D
          CH12   *-2
          ENDM
  
**        OAN - OUTPUT FROM A ON CHANNEL D
* 
*         OAN    D
  
          PURGMAC  OAN
 OAN      MACRO  D
          OAN.   D
          CH12   *-1
          ENDM
  
**        OAM - OUTPUT A WORDS FROM M ON CHANNEL D
* 
*         OAM    M,D
  
          PURGMAC  OAM
 OAM      MACRO  M,D
          OAM.   M,D
          CH12   *-2
          ENDM
  
**        ACN - ACTIVATE CHANNEL D
* 
*         ACN    D
  
          PURGMAC  ACN
 ACN      MACRO  D
          ACN.   D
          CH12   *-1
          ENDM
  
**        DCN - DEACTIVATE CHANNEL D
* 
*         DCN    D
  
          PURGMAC  DCN
 DCN      MACRO  D
          DCN.   D
          CH12   *-1
          ENDM
  
**        FAN - FUNCTION A ON CHANNEL D 
* 
*         FAN    D
  
          PURGMAC  FAN
 FAN      MACRO  D
          FAN.   D
          CH12   *-1
          ENDM
  
**        FNC - FUNCTION M ON CHANNEL D 
* 
*         FNC    M,D
  
          PURGMAC  FNC
 FNC      MACRO  M,D
          FNC.   M,D
          CH12   *-2
          ENDM
  
          EJECT 
* 
*         DEFINE UNMODIFIABLE CHANNEL INSTRUCTIONS
* 
  
**        AJMN - JUMP IF CHANNEL D ACTIVE 
* 
*         AJMN   M,D
  
          PURGMAC  AJMN 
 AJMN     MACRO  M,D
          AJM.   M,D
          ENDM
  
**        SCFN - TEST AND SET CHANNEL D FLAG
* 
*         SCFN   M,D
  
          PURGMAC  SCFN 
 SCFN     MACRO  M,D
          SCF.   M,D
          ENDM
  
**        IJMN - JUMP IF CHANNEL D INACTIVE 
* 
*         IJMN   M,D
  
          PURGMAC  IJMN 
 IJMN     MACRO  M,D
          IJM.   M,D
          ENDM
  
**        CCFN - CLEAR CHANNEL D FLAG 
* 
*         CCFN   D
  
          PURGMAC  CCFN 
 CCFN     MACRO  D
          CCF.   D
          ENDM
  
**        FJMN - JUMP IF CHANNEL D FULL 
* 
*         FJMN   M,D
  
          PURGMAC  FJMN 
 FJMN     MACRO  M,D
          FJM.   M,D
          ENDM
  
**        SFMN - JUMP IF CHANNEL D ERROR FLAG SET 
* 
*         SFMN   M,D
  
          PURGMAC  SFMN 
 SFMN     MACRO  M,D
          SFM.   M,D
          ENDM
  
**        EJMN - JUMP IF CHANNEL D EMPTY
* 
*         EJMN   M,D
  
          PURGMAC  EJMN 
 EJMN     MACRO  M,D
          EJM.   M,D
          ENDM
  
**        CFMN - JUMP IF CHANNEL D FLAG CLEAR 
* 
*         CFMN   M,D
  
          PURGMAC  CFMN 
 CFMN     MACRO  M,D
          CFM.   M,D
          ENDM
  
**        IANN - INPUT TO A FROM CHANNEL D
* 
*         IANN   D
  
          PURGMAC  IANN 
 IANN     MACRO  D
          IAN.   D
          ENDM
  
**        IAMN - INPUT A WORDS TO M FROM CHANNEL D
* 
*         IAMN   M,D
  
          PURGMAC  IAMN 
 IAMN     MACRO  M,D
          IAM.   M,D
          ENDM
  
**        OANN - OUTPUT FROM A ON CHANNEL D 
* 
*         OANN   D
  
          PURGMAC  OANN 
 OANN     MACRO  D
          OAN.   D
          ENDM
  
**        OAMN - OUTPUT A WORDS FROM M ON CHANNEL D 
* 
*         OAMN   M,D
  
          PURGMAC  OAMN 
 OAMN     MACRO  M,D
          OAM.   M,D
          ENDM
  
**        ACNN - ACTIVATE CHANNEL D 
* 
*         ACNN   D
  
          PURGMAC  ACNN 
 ACNN     MACRO  D
          ACN.   D
          ENDM
  
**        DCNN - DEACTIVATE CHANNEL D 
* 
*         DCNN   D
  
          PURGMAC  DCNN 
 DCNN     MACRO  D
          DCN.   D
          ENDM
  
**        FANN - FUNCTION A ON CHANNEL D
* 
*         FANN   D
  
          PURGMAC  FANN 
 FANN     MACRO  D
          FAN.   D
          ENDM
  
**        FNCN - FUNCTION M ON CHANNEL D
* 
*         FNCN   M,D
  
          PURGMAC  FNCN 
 FNCN     MACRO  M,D
          FNC.   M,D
          ENDM
  
          ENDX
