private int negxB(int dest) {
    clearFlags(SR_X, SR_N, SR_V, SR_C);
    int result = -dest - (isExtendedSet() ? 1 : 0);
    if (msbSetB(result)) setFlag(SR_N);
    if (!isZeroB(result)) clearFlag(SR_Z);
    if (msbSetB(dest) && msbSetB(result)) setFlag(SR_V);
    if (msbSetB(dest) || msbSetB(result)) setFlag(SR_C);
    if (isCarrySet()) setExtendedFlag();
    return result;
  }