*DECK C$BOOL
          IDENT  C$BOOL 
          TITLE  C$BOOL - PERFORM BOOLEAN OPERATION 
**        C$BOOL - PERFORM BOOLEAN OPERATION
* 
*         INPUT 
*                B3 - OPERATOR
*                     1 - AND 
*                     2 - OR
*                     3 - EXOR
*                     4 - NOT 
*                B4 - OPERAND LIST POINTER
*                     RESULT, OPERAND1, OPERAND2
*                     6/TYPE,18/OFFSET,18/LENGTH,18/ADDRESS 
*                     TYPE - 0 - BIT, 1 - DISPLAY 
          ENTRY  C.BOOL 
 C.BOOL   DATA   0
          SA1    B4 
          SB2    X1          RESULT ADDRESS 
          AX1    18 
          SX7    X1          RESULT LENGTH
          SA7    RSLTLEN
          AX1    18 
          SX2    X1          RESULT OFFSET
          AX1    18          RESULT TYPE
          SX4    314632B
          IX4    X4*X2
          AX4    20 
          SB2    B2+X4       NEW ADDRESS
          IX5    X4+X4
          LX4    3
          IX5    X4+X5
          IX7    X2-X5       BCP
          NZ     X1,BOOL1    DISPLAY
          SX5    6
          IX7    X7*X5       BBP
 BOOL1    SA7    RSLTOFF
          SX6    B2 
          SA6    RSLTADDR 
          BX7    X1 
          SA1    A1+B1
          SA7    RSLTTYPE 
          SB2    X1          OPERAND1 ADDRESS 
          AX1    18 
          SX7    X1          OPERAND1 LENGTH
          SA7    OPN1LEN
          AX1    18 
          SX2    X1          OPERAND1 OFFSET
          AX1    18          OPERAND1 TYPE
          SX4    314632B
          IX4    X4*X2
          AX4    20 
          SB2    B2+X4       NEW ADDRESS
          IX5    X4+X4
          LX4    3
          IX5    X4+X5
          IX7    X2-X5       BCP
          NZ     X1,BOOL2    DISPLAY
          SX5    6
          IX7    X7*X5       BBP
 BOOL2    SA7    OPN1OFF
          SX6    B2 
          SA6    OPN1ADDR 
          BX7    X1 
          SA7    OPN1TYPE 
          SB2    #NOT 
          EQ     B2,B3,BOOL4 NOT OPERATOR 
          SA1    A1+B1
          SB2    X1          OPERAND2 ADDRESS 
          AX1    18 
          SX7    X1          OPERAND2 LENGTH
          SA7    OPN2LEN
          AX1    18 
          SX2    X1          OPERAND2 OFFSET
          AX1    18          OPERAND2 TYPE
          SX4    314632B
          IX4    X4*X2
          AX4    20 
          SB2    B2+X4       NEW ADDRESS
          IX5    X4+X4
          LX4    3
          IX5    X4+X5
          IX7    X2-X5       BCP
          NZ     X1,BOOL3    DISPLAY
          SX5    6
          IX7    X5*X7
 BOOL3    SA7    OPN2OFF
          SX6    B2 
          SA6    OPN2ADDR 
          BX7    X1 
          SA7    OPN2TYPE 
 BOOL4    SX6    B3 
          SA6    OPERATOR 
 BOOL5    SA1    OPN1OFF
          SA2    OPN1LEN
          SB4    X2 
          SA3    OPN1ADDR 
          SB3    X3 
          SA2    OPN1TYPE 
          RJ     GETOPND
          SX7    B4 
          SA7    OPN1LEN
          SX7    B3 
          SA7    OPN1ADDR 
          SA2    OPERATOR 
          SX0    X2-#NOT
          ZR     X0,BOOL6    NOT OPERATOR 
          SA6    OPND1
          SA1    OPN2OFF
          SA2    OPN2LEN
          SB4    X2 
          SA3    OPN2ADDR 
          SB3    X3 
          SA2    OPN2TYPE 
          RJ     GETOPND
          SX7    B4 
          SA7    OPN2LEN
          SX7    B3 
          SA7    OPN2ADDR 
          SA1    OPND1
          SA2    OPERATOR 
          SB2    X2 
          JP     B2+OPS 
 BOOL6    BX6    -X6         NOT
          EQ     BOOL10 
 BOOL7    BX6    X1*X6       AND
          EQ     BOOL10 
 BOOL8    BX6    X1+X6       OR 
          EQ     BOOL10 
 BOOL9    BX6    X1-X6       EXOR 
          EQ     BOOL10 
 BOOL10   SA1    RSLTOFF
          SA2    RSLTLEN
          SB4    X2 
          SA3    RSLTADDR 
          SB3    X3 
          SA2    RSLTTYPE 
          RJ     PUTOPND
          ZR     B4,C.BOOL
          SX6    B4 
          SA6    RSLTLEN
          SX7    B3 
          SA7    RSLTADDR 
          EQ     BOOL5
 OPND1    BSS    1
 OPN1LEN  BSS    1
 OPN1OFF  BSS    1
 OPN1TYPE BSS    1
 OPN1ADDR BSS    1
 OPN2LEN  BSS    1
 OPN2OFF  BSS    1
 OPN2TYPE BSS    1
 OPN2ADDR BSS    1
 RSLTLEN  BSS    1
 RSLTADDR BSS    1
 RSLTTYPE BSS    1
 RSLTOFF  BSS    1
 OPERATOR BSS    1
 #NOT     EQU    4
 OPS      EQ     *+400000B
 +        EQ     BOOL7
 +        EQ     BOOL8
 +        EQ     BOOL9
 GETOPND  EJECT 
**        GETOPND - GET NEXT WORD (60 BOOLEAN BITS) OF OPERAND
* 
*         INPUT 
*                X1 - OFFSET
*                B3 - ADDRESS 
*                B4 - LENGTH
*                X2 - TYPE
*         OUTPUT
*                X6 - WORD
 GETOPND  DATA   0
          MX6    0
          ZR     B4,GETOPND 
          ZR     X2,GETOP1   BIT
          RJ     CONV60 
          BX6    X3 
          EQ     GETOPND
          SPACE  3
 GETOP1   RJ     GETWORD
          EQ     GETOPND
 PUTOPND  EJECT 
**        PUTOPND - STORE WORD OF BOOLEAN BITS
*         INPUT 
*                X1 - OFFSET
*                X2 - TYPE
*                B3 - ADDRESS 
*                B4 - LENGTH
*                X6 - WORD
*         OUTPUT
*                B3 - NEW ADDRESS 
*                B4 - NEW LENGTH
 PUTOPND  DATA   0
          ZR     X2,PUTOP1   BIT
          RJ     PUT60
          EQ     PUTOPND
          SPACE  3
 PUTOP1   RJ     PUTWORD
          EQ     PUTOPND
*CALL CBCONV60
*CALL CBGETWRD
*CALL CBPUT60 
*CALL CBPUTWRD
*CALL CBGET10C
*CALL CBPUT10C
          END 
