*COMDECK  COMAQCG - MACROS FOR THE QUICK CODE GENERATOR.
          CTEXT  COMAQCG - MACROS FOR THE QUICK CODE GENERATOR. 
 COMAQCG  SPACE  4,10 
***       COMAQCG - MACROS FOR FTN QUICK CODE GENERATOR.
* 
*         COPYRIGHT CONTROL DATA CORPORAION. 1976, 1977.
 CBSS     SPACE  4,8
**        CBSS - MACRO TO COMPILE A *BSS* OPERATION.
* 
*         CBSS   LOC,SIZE,REG 
* 
*         *LOC*  = LOCATION TAG TO BE DEFINED (= 1 FOR FORCE UPPER ONLY)
*         *SIZE* = AMOUNT OF SPACE TO RESERVE (= 0 FOR DEFINITION ONLY) 
*         *REG*  = REGISTER TO COMPILE FROM (*X7* ASSUMED IF OMITTED) 
*                  IF OMITTED, INSTRUCTION WILL BE FORMED IN THE
*                  SPECIFIED REGISTER, BUT WILL NOT BE STORED TO CORE.
  
  
 CBSS     MACRO  LOC,SIZE,REG 
 A        MICRO  1,, X7 
          IFC    NE,*REG**,1
 A        MICRO  1,, REG
          =X0    LOC
          ="A"   I.BSS
          L"A"   PB.GHIJP 
          I"A"   "A"+X0 
          IFC    EQ,*REG**,1
          WCODE  X7 
 CBSS     ENDM
 CRJ      SPACE  4,10 
**        CRJ -  COMPILE RETURN JUMP TO EXTERNAL. 
* 
*         CRJ    TYPE 
* 
*         *TYPE* = ONE OF THE FOLLOWING --
*                <OMITTED> = ALLOW TRACE INFORMATION TO BE COMPILED.
*                *ALLOW* = ALLOW TRACE INFORMATION TO BE COMPILED.
*                *NONE* = DO NOT COMPILE TRACE INFORMATION. 
*                *MUST* = MUST COMPILE TRACE INFORMATION. 
* 
*         IF TYPE=ALLOW, GENERATION OF TRACE INFO DEPENDS ON THE
*         COMPILER OPTION (CO.TBK). 
* 
*         CALLS  CRJ. 
  
  
 CRJ      MACRO  TYPE 
 A        MICRO  1,1, TYPE
.1        IFC    EQ,**"A"*
          =X1    1
.1        ENDIF 
 .2       IFC    EQ,*A*"A"* 
          =X1    1
 .2       ENDIF 
 .3       IFC    EQ,*N*"A"* 
          BX1    0
 .3       ENDIF 
 .4       IFC    EQ,*M*"A"* 
          =X1    -1 
 .4       ENDIF 
          RJ     =XCRJ
 CRJ      ENDM
 DEFINS   SPACE  4,10 
**        DEFINE MACHINE OP-CODES.
  
  
          MACRO  DEFINS,INST,OPC,TYPE 
 A        MICRO  1,, BS9
          IFC    EQ,/TYPE/M.BRAN/,1 
 A        MICRO  1,, BS6
 INST     EQU    OPC"A" 
          ENDM
  
 DEFPO    OPSYN  NIL         PSUEDO-OP VALUES ARE IN TEXT 
 DRITE    SPACE  4,8
**        DRITE - MACRO TO BE USED FOR CHECKING DELAYED STORE ACTIVITY
*                ARGUMENT *CONTROL* MAY BE -- 
*                  A.  *DEACTIVATE = DEACTIVATES ANY DELAYED STORE IN 
*                                    PROGRESS.
*                  B.  *X1-X7*     = DEACTIVATE DELAYED STORE ONLY IF 
*                                    (X1-X7) = (DRITE). 
  
  
 DRITE    MACRO  CONTROL
.1        IFC    EQ,*CONTROL*DEACTIVATE*
          BX0    0
.1        ELSE
 .2       IFC    NE,*CONTROL*X0*
          BX0    CONTROL
 .2       ENDIF 
.1        ENDIF 
          RJ     =XCDS
 DRITE    ENDM
 WPOP     SPACE  4,10 
**        WPOP - WRITE PSUEDO-OP TO PB. 
* 
*         WPOP   PSN,RETURN 
  
  
 WPOP     MACRO  PSN,RET
          =X7    PSN
          LX7    PB.GHIJP 
          WCODE  X7,RET 
          ENDM
 WCODE    SPACE  4,8
**        WCODE - WRITE PREBINARY CODE FILE.
* 
*         WCODE   REG,RETURN
* 
*         REG =   ANY *X* REGISTER, (X7)
*         RETURN = RETURN ADDRESS.  *+1 ASSUMED IF OMITTED. 
*                            (B2) IS NATURAL REGISTER.
* 
*         USED FOR *ALL* WRITES TO THE PREBINARY FILE.
* 
*         CALLS  WIN
  
          PURGMAC  WCODE
  
 WCODE    MACRO  R,RETURN 
          IFC    NE,/X7/R/,1
          BX7    R
          =B2    RETURN  *+2-*P/60
          JP     =XWIN
 WCODE    ENDM
          SPACE  4,8
 O$       MICRO  1,,/T./
 L$       MICRO  1,,/T=/
 TP       MICRO  1,,/P2/
 BIAS     MICRO  1,,/BIAS/
 ORD      MICRO  1,,/TAG/ 
  
  
 COMAQCG  ENDX
