HP 3000 Manuals

func bitd [ System Debug Reference Manual ] MPE/iX 5.0 Documentation


System Debug Reference Manual

func bitd 

Bit deposit.  Deposits a value into a specified range of bits.

Syntax 

      bitd (value position length target)

Formal Declaration 

      bitd:any (value:any position:s16 length:u16 target:any)

Parameters 

value            The value to deposit into the target.  Its type is
                 restricted to the INT and PTR classes.

position         This parameter specifies the starting bit position
                 (positive value) or the ending bit position (negative
                 value) of the deposit.  Regardless of the size of the
                 target, bit positions are always numbered from left to
                 right.  The leftmost bit of the target is bit 0.

length           The number of bits to deposit.

target           The expression in which to deposit the specified bit
                 pattern.  Its type is restricted to the INT and PTR
                 classes.

This function is sensitive to the type of the target parameter.  As
examples, if a S32 or U32 value is passed, the format of the word
(start/end positions) is as follows:

                          1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------------------------------------------------------+
     |                                                               |
     +---------------------------------------------------------------+

If a S16 or U16 value is passed, the format of the word (start/end
positions) is as follows:

                          1 1 1 1 1 1
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
     +-------------------------------+
     |                               |
     +-------------------------------+

Examples 

For our example, we use a 32-bit word containing the bit pattern for the
hex value 4015381f:

                          1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------------------------------------------------------+
     |0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1|
     +---------------------------------------------------------------+

     $nmdebug > var xx:u32 4015381f 
     $nmdebug > wl bitd(0,#30,2,xx) 
     $4015381c

Deposit the value 0 into the last two bits of XX.

     $nmdebug > wl bitd(3,-#1,2,xx) 
     $c015381f

Deposit the value 3 (11) into XX, ENDING at bit position 1.

     $nmdebug > wl bitd(2d,-#9,6,xx) 
     $4b55381f

Deposit the value 2d (101101) into XX, ending at bit position 9 with a
length of 6 (start position would be 4).

Limitations, Restrictions 

The value to be deposited is truncated as necessary on the left to fit
within the field width of length.

If the specified bit range extends past the bounds of a 32-bit word, the
function result is undefined and an error status is set.



MPE/iX 5.0 Documentation