home *** CD-ROM | disk | FTP | other *** search
- Aug 12, 1989
-
- This ARC contains the MASM source, .OBJ and .QLB for a set of bit-level
- manipulation routines to use with QB/BC. If you make modifications, you'll
- need MASM 5.1 to reassemble.
-
- Routines are included to set, clear, toggle and examine the state of any
- single bit in a 16-bit word. These allows the programmer to maintain 16
- separate flags in a single integer, with quick access to any flag. If you
- use global flags, you'll find these fast and convenient.
-
- Also included are routines to convert between numeric values and binary
- strings, for example "10011".
-
- Uploaded to MSSYS for the free use of its members. Not copyrighted.
- If you find these useful, drop me a note. Likewise, if you encounter any
- problems or have comments or questions, please let me know at once:
-
- Jim Mack [76630,2012] via MSSYS
-
- Detailed descriptions follow. Also see the MASM source and the QB test
- program for more information.
-
- ═══════════════
-
- DECLARE SUB SetBit (bitnumber%, word%)
- DECLARE SUB ClearBit (bitnumber%, word%)
- DECLARE SUB ToggleBit (bitnumber%, word%)
-
- WORD% is the 16-bit quantity where the selected bit resides.
- Set, Clear and ToggleBit alter WORD% directly.
-
- BITNUMBER% ranges from 1 to 16. If you exceed 16, what happens
- depends on what processor you're using. Zero affects no bits.
-
- ═══════════════
-
- DECLARE FUNCTION BitState% (bitnumber%, word%)
-
- Returns a logical "true" (-1) if the selected bit is set in WORD%, or a
- logical "false" (0) otherwise. WORD% is not altered.
-
- ═══════════════
-
- DECLARE FUNCTION BitStr$ (word%)
-
- Returns a 16-character string of ASCII ones and zeros with a "1" in
- each position where a bit is set in WORD%. For example, passing 12
- returns the string "0000000000001100".
-
- ═══════════════
-
- DECLARE FUNCTION BitVal& (binar$)
-
- Returns a long integer quantity reflecting the value of a passed string
- of ASCII ones and zeroes. BINAR$ can contain any number of digits, but
- only the first 16 are evaluated. If it contains fewer than 16 digits,
- they are considered as the less significant bits (i.e. "01" is taken to
- mean "0000000000000001" and evaluates to 1). Strings which contain
- *any* other character in the first 16 positions are rejected, and a
- value of zero returned.
-
- ═══════════════