private void ADC() {
        A &= 0xFF;
        data &= 0xFF;
        int sum = (A + data + (carryFlag ? 1 : 0)) & 0x1FF;
        overflowFlag = false;
        carryFlag = (sum > 0xFF);
        /* positivo + positivo = negativo */
        if (((A ^ sum) & (data ^ sum) & 0x80) == 0x80)
            overflowFlag = true;
        A = sum & 0xFF;
        updateZN(A);
    }