protected boolean checkJump(short instruction) throws ProgramException {
        boolean jumpNegative = (instruction & 0x0004) > 0;
        boolean jumpEqual = (instruction & 0x0002) > 0;
        boolean jumpPositive = (instruction & 0x0001) > 0;
        boolean changed = false;

        short exp = alu.getValueAt(2);

        if ((exp < 0 && jumpNegative) ||
            (exp == 0 && jumpEqual) ||
            (exp > 0 && jumpPositive)) {
			int newPC = A.get();
            if (newPC < 0 || newPC >= Definitions.ROM_SIZE)
				throw new ProgramException("At line " + PC.get() +
										   ": Jump requested but A=" + newPC +
										   " is an illegal program address.");
            bus.send(A, 0, PC, 0);
            changed = true;
        }

        return changed;
    }