*DECK GBOOLOP 
          IDENT  GBOOLOP
          MACHINE ANY,I 
          SST 
          COMMENT BOOLEAN OPERATORS 
          SPACE  3
**        GBOOLOP - GENERATOR FOR BOOLEAN OPERATORS 
          TITLE  GBOOLOP - GENERATOR FOR BOOLEAN OPERATORS
 GBOOLOP  MODULE
*      LINKAGE FROM ROUTINES IN OTHER MODULES 
 CGAND    KNIL   CGBOOLA
 CGOR     KNIL   CGBOOLO
 CGEXOR   KNIL   CGBOOLX
 CGNOT    KNIL   CGBOOLN
*      LINKAGE TO ROUTINES IN OTHER MODULES 
 SUBREF   LINK   SUBREF 
 SUBLOAD  LINK   SUBLOAD
*      VREG EQUATES 
 VREGA    EQU    VREG1
 VREGB    EQU    VREG2
 VREGC    EQU    VREG3
 VREGD    EQU    VREG4
 VREGE    EQU    VREG5
 VREGF    EQU    VREG6
 CGAND    EJECT 
*         CGAND -BOOLEAN AND OPERATOR 
 CGAND    EGO    2
          MOVEZ  (LOCLAB,T1),T1 
          PUSH    T1
          GEN    USE$,((USETB$OF,USEPARAM)) 
          GEN    PLIST
          GEN    LABEL$,((LOCAL$OF,T1)) 
          GEN    USE$,((USETB$OF,USECODE))
          MOVEZ  REGD,REGT
          CALLZ  PARAM
          MOVEZ  REGB,REGT
          CALLZ  PARAM
          MOVEZ  REGC,REGT
          CALLZ  PARAM
          GEN    USE$,((USETB$OF,USECODE))
          POP    T1 
          GEN    SBBPB,(VREGOF,VREGA),VREGB1     AND = 1
          GEN    SBBPK,(VREGOF,VREGB),,((LOCAL$OF,T1))
          GENOBJ N=C.BOOL,I=(VREGA,VREGB) 
          GEN    USE$,((USETB$OF,USEPARAM)) 
          GEN    ENDPL
          GEN    USE$,((USETB$OF,USECODE))
          RETURN
 CGEXOR   EJECT 
*         CGEXOR - BOOLEAN EXOR 
 CGEXOR   EGO    2
          MOVEZ  (LOCLAB,T1),T1 
          PUSH   T1 
          GEN    USE$,((USETB$OF,USEPARAM)) 
          GEN    PLIST
          GEN    LABEL$,((LOCAL$OF,T1)) 
          GEN    USE$,((USETB$OF,USECODE))
          MOVEZ  REGD,REGT
          CALLZ  PARAM
          MOVEZ  REGB,REGT
          CALLZ  PARAM
          MOVEZ  REGC,REGT
          CALLZ  PARAM
          GEN    USE$,((USETB$OF,USEPARAM)) 
          GEN    ENDPL
          GEN    USE$,((USETB$OF,USECODE))
          POP    T1 
          GEN    SBBPK,(VREGOF,VREGA),,3        EXOR = 3
          GEN    SBBPK,(VREGOF,VREGB),,((LOCAL$OF,T1))
          GENOBJ N=C.BOOL,I=(VREGA,VREGB) 
          RETURN
 CGNOT    EJECT 
*         CGNOT - BOOLEAN NOT 
 CGNOT    EGO    2
          MOVEZ  (LOCLAB,T1),T1 
          PUSH   T1 
          GEN    USE$,((USETB$OF,USEPARAM)) 
          GEN    PLIST
          GEN    LABEL$,((LOCAL$OF,T1)) 
          GEN    USE$,((USETB$OF,USECODE))
          MOVEZ  REGC,REGT
          CALLZ  PARAM
          MOVEZ  REGB,REGT
          CALLZ  PARAM
          GEN    USE$,((USETB$OF,USEPARAM)) 
          GEN    ENDPL
          GEN    USE$,((USETB$OF,USECODE))
          GEN    SBBPK,(VREGOF,VREGA),,4         NOT = 4
          POP    T1 
          GEN    SBBPK,(VREGOF,VREGB),,((LOCAL$OF,T1))
          GENOBJ N=C.BOOL,I=(VREGA,VREGB) 
          RETURN
 CGOR     EJECT 
*         CGOR  - BOOLEAN OR
 CGOR     EGO    2
          MOVEZ  (LOCLAB,T1),T1 
          PUSH   T1 
           GEN    USE$,((USETB$OF,USEPARAM))
          GEN    PLIST
          GEN    LABEL$,((LOCAL$OF,T1)) 
          GEN    USE$,((USETB$OF,USECODE))
          MOVEZ  REGD,REGT
          CALLZ  PARAM
          MOVEZ  REGB,REGT
          CALLZ  PARAM
          MOVEZ  REGC,REGT
          CALLZ  PARAM
          GEN    USE$,((USETB$OF,USEPARAM)) 
          GEN    ENDPL
          GEN    USE$,((USETB$OF,USECODE))
          GEN    SBBPB,(VREGOF,VREGA),VREGB1,VREGB1   OR = 2
          POP    T1 
          GEN    SBBPK,(VREGOF,VREGB),,((LOCAL$OF,T1))
          GENOBJ N=C.BOOL,I=(VREGA,VREGB) 
          RETURN
 PARAM    EJECT 
*         PARAM - GENERATE PARAMETER WORD FOR C.BOOL
*         INPUT - REGT - REGTABLE POINTER TO PARAMETER
*         OUTPUT - PARAMETER WORD AS FOLLOWS
*                6/TYPE,18/OFFSET,18/LENGTH,18/ADDRESS
*                TYPE = 0 BIT , 1 DISPLAY 
          SPACE  3
 PARAM    EGO    3
          IFTHEN ((TYPEOF,REGT),EQ,BOOLDSP) 
          ANDIF  ((GSCODEOF,REGT),EQ,0) 
            GEN    USE$,((USETB$OF,USEPARAM)) 
            GENVFD  (6,1),(18,(BCPOF,REGT),(18,(BYTLENOF,REGT)),(18,((FW
,A$OF,REGT))
            GEN    USE$,((USETB$OF,USECODE))
            RETURN
          ENDIFZ
          IFTHEN ((TYPEOF,REGT),EQ,BOOLDSP) 
          ANDIF  ((GSCODEOF,REGT),NE,0)     SUBSCRIPTED OR REF MOD
            GEN    USE$,((USETB$OF,USEPARAM)) 
            MOVEZ  (LOCLAB,T2),T2 
            GEN    LABEL$,((LOCAL$OF,T2)) 
            GENVFD (6,1),(18,0),(18,0),(18,((FWA$OF,REGT))) 
            GEN    USE$,((USETB$OF,USECODE))
            PUSH   T2 
            MOVEZ  REGT,P2
            CALLZ  SUBREF 
            POP    T2 
            GEN    SLRBPK,(VREGOF,VREGA),,((LOCAL$OF,T2)) 
            GEN    SHL,P3,36       OFFSET 
            GEN    SHL,P4,18       LENGTH 
            GEN    MASK,(VREGOF,VREGB),42 
            GEN    SHL,VREGB,36 
            GEN    LAND,(VREGOF,VREGC),VREGA,VREGB
            GEN    LOR,(VREGOF,VREGD),VREGC,P3
          GEN    LOR,(VREGOF,VREGE),VREGD,P4
            GEN    SSRAPB,VREGE,VREGA 
            RETURN
          ENDIFZ
          END 
