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