private void doStep() {
            switch (step) {
                case 1:
                    //	get opcode
                    dfOpcode = dfTempByte;
                    echo("Recieved Opcode: " + dfOpcode);
                    // Status Register Read?
                    if (dfOpcode == 0x57 || dfOpcode == 0xD7) {
                        isReading = true;
                    }
                    break;

                case 2:
                    // get first part of adressing sequence
                    dfPageAddress = dfTempByte << 7 & 0x0780;
                    echo("Received Address byte 1: " + dfTempByte);
                    break;

                case 3:
                    // get second part of adressing sequence
                    dfPageAddress |= dfTempByte >> 1;
                    // and first part of byte offset
                    dfByteOffset = dfTempByte & 0x0100;
                    echo("Received Address byte 2: " + dfTempByte);
                    break;

                case 4:
                    // get second part of byte offset
                    dfByteOffset |= dfTempByte;
                    echo("Received Address byte 3: " + dfByteOffset);
                    break;

                default:
                    // adressing sequence complete
                    if (step > 4) {
                        doAction();
                    }
            }
        }