/*[ bts.c LOCAL CHAR SccsID[]="@(#)bts.c 1.5 02/09/94"; BTS CPU functions. ------------------ ]*/ #include #include #include #include #include #include #include #include #include #include #include #include /* ===================================================================== EXTERNAL FUNCTIONS START HERE. ===================================================================== */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* Generic - one size fits all 'bts'. */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ GLOBAL VOID BTS IFN3( IU32 *, pop1, /* pntr to lsrc/dst operand */ IU32, op2, /* rsrc (ie bit nr.) operand */ IUM8, op_sz /* 16 or 32-bit */ ) { IU32 bit_mask; op2 = op2 % op_sz; /* take bit nr. modulo operand size */ bit_mask = 1 << op2; /* form mask for bit */ SET_CF((*pop1 & bit_mask) != 0); /* set CF to given bit */ *pop1 = *pop1 | bit_mask; /* Set Bit = 1 */ }