home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1989-12-13 | 1.8 KB | 75 lines |
- (* ------------------------------------------------------ *)
- (* BIT.MOD *)
- (* (c) 1990 Roland Minges & TOOLBOX *)
- (* ------------------------------------------------------ *)
- IMPLEMENTATION MODULE Bit;
-
- IMPORT SYSTEM;
-
- PROCEDURE and (w1, w2: SYSTEM.WORD): SYSTEM.WORD;
- BEGIN
- RETURN SYSTEM.WORD (BITSET (w1) * BITSET (w2));
- END and;
-
- PROCEDURE or (w1, w2: SYSTEM.WORD): SYSTEM.WORD;
- BEGIN
- RETURN SYSTEM.WORD (BITSET (w1) + BITSET (w2));
- END or;
-
- PROCEDURE xor (w1, w2: SYSTEM.WORD): SYSTEM.WORD;
- BEGIN
- RETURN SYSTEM.WORD (BITSET (w1) / BITSET (w2));
- END xor;
-
- PROCEDURE not (w: SYSTEM.WORD): SYSTEM.WORD;
- CONST AlleBits = { 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15};
- BEGIN
- RETURN SYSTEM.WORD (AlleBits - BITSET (w));
- END not;
-
- PROCEDURE lsh (VAR w: SYSTEM.WORD; Bits: BITNO);
- VAR b: POINTER TO BITSET;
- i: CARDINAL;
- BEGIN
- b := SYSTEM.ADR (w);
- FOR i := 1 TO Bits DO
- EXCL (b^, 15);
- w := SYSTEM.WORD (CARDINAL (w) * 2);
- END (* FOR i *);
- END lsh;
-
- PROCEDURE rsh (VAR w: SYSTEM.WORD; Bits: BITNO);
- VAR i: CARDINAL;
- BEGIN
- FOR i := 1 TO Bits DO
- w := SYSTEM.WORD (CARDINAL (w) DIV 2);
- END (* FOR i *);
- END rsh;
-
- PROCEDURE set (VAR w: SYSTEM.WORD; Bit: BITNO);
- VAR b: BITSET;
- BEGIN
- b := BITSET (w);
- INCL (b, Bit);
- w := SYSTEM.WORD (b);
- END set;
-
- PROCEDURE reset (VAR w: SYSTEM.WORD; Bit: BITNO);
- VAR b: BITSET;
- BEGIN
- b := BITSET (w);
- EXCL (b, Bit);
- w := SYSTEM.WORD (b);
- END reset;
-
- PROCEDURE isset (w: SYSTEM.WORD; Bit: BITNO): BOOLEAN;
- BEGIN
- RETURN Bit IN BITSET (w);
- END isset;
-
- BEGIN
- END Bit.
- (* ------------------------------------------------------ *)
- (* Ende von BIT.MOD *)
-