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