.TITLE P.SET PASCAL SET FUNCTIONS .PSECT P$SET .PAGE .SBTTL P$SIN - PASCAL SET IN FUNCTION .GLOBL P$SIN P$SIN: ; PASCAL IN OPERATOR ; X IN Y ; USES: R0,R1 ; R0 = VALUE OF X ; R1 -> Y ; SETS: R0 ; R0 = (0=>FALSE, 1=>TRUE) ; DESTROYS: R1,R2 MOV R0,R2 BIC #177770,R2 ASH #-3,R0 ADD R0,R1 MOV #1,R3 ASH R2,R3 CLR R0 BITB R3,(R1) BEQ .+4 INC R0 RTS PC .PAGE .SBTTL P$SADE - PASCAL SET ADD ELEMENT .GLOBL P$SADE P$SADE: ; USES: R0,R1 ; R0 = VALUE TO BE ADDED ; R1 -> SET ; DESTROYS: R0,R1,R2,R3 MOV R0,R2 BIC #177770,R2 ASH #-3,R0 ADD R0,R1 MOV #1,R3 ASH R2,R3 BISB R3,(R1) RTS PC .PAGE .SBTTL P$SANY - PASCAL SET ANY FUNCTION .GLOBL P$SANY P$SANY: ; USES: R0 ; R0 -> SET ; RETURNS : R0 ; R0 = SET ELEMENT FOUND ; DESTROYS: R1 CLR R1 1$: TST (R0)+ BNE 2$ ADD #16.,R1 BR 1$ 2$: MOV -(R0),R0 3$: ROR R0 BCS 4$ INC R1 BR 3$ 4$: MOV R1,R0 RTS PC .END