private int packFlags() {
        int value = 0;
        if (carryFlag)
            value |= 0x01;
        if (zeroFlag)
            value |= 0x02;
        if (interruptFlag)
            value |= 0x04;
        if (decimalFlag)
            value |= 0x08;
        if (breakFlag)
            value |= 0x10;
        if (reservedFlag)
            value |= 0x20;
        if (overflowFlag)
            value |= 0x40;
        if (negativeFlag)
            value |= 0x80;
        return value;
    }