4 ms·
From back in the day. DEF and IMP were two different files: DEFINITION MODULE Bit; (* #data(packed=>on) ) ( hooks to lib *) PROCEDURE SetBit(target,bitnum: CAR
by jksmith 11y ago
From back in the day. DEF and IMP were two different files:
DEFINITION MODULE Bit;
(* #data(packed=>on) )
( hooks to lib *)
PROCEDURE SetBit(target,bitnum: CARDINAL): CARDINAL;
PROCEDURE ClearBit(target,bitnum: CARDINAL): CARDINAL;
PROCEDURE TestBit(target,bitnum: CARDINAL): BOOLEAN;
PROCEDURE Not(target: CARDINAL): CARDINAL;
END Bits.
IMPLEMENTATION MODULE Bits;
PROCEDURE SetBit(target,bitnum: CARDINAL): CARDINAL;
VAR tempset: BITSET;
BEGIN
tempset:= BITSET(target);
INCL(tempset,bitnum MOD 16);
RETURN CARDINAL(tempset);
END SetBit;
PROCEDURE ClearBit(target,bitnum: CARDINAL): CARDINAL;
VAR tempset: BITSET;
BEGIN
tempset:= BITSET(target);
EXCL(tempset,bitnum MOD 16);
RETURN CARDINAL(tempset);
END ClearBit;
PROCEDURE TestBit(target,bitnum: CARDINAL): BOOLEAN;
VAR tempset: BITSET;
BEGIN
RETURN (bitnum MOD 16) IN BITSET(target);
END TestBit;
PROCEDURE Not(target: CARDINAL): CARDINAL;
BEGIN
RETURN CARDINAL({0..15} - BITSET(target));
END Not;
END Bits.