     SPI.endTransaction();
 
     // Read pins
-    bus_state.rw_control.flags.be = (digitalRead(PIN_BE) == HIGH) ? 1 : 0;
-    bus_state.rw_control.flags.rstbar = (digitalRead(PIN_RSTBAR) == HIGH) ? 1 : 0;
-    bus_state.rw_control.flags.r_wbar = (digitalRead(PIN_R_WBAR) == HIGH) ? 1 : 0;
-    bus_state.rw_control.flags.phi2 = (digitalRead(PIN_PHI2) == HIGH) ? 1 : 0;
+    new_state.rw_control.flags.be = (digitalRead(PIN_BE) == HIGH) ? 1 : 0;
+    new_state.rw_control.flags.rstbar = (digitalRead(PIN_RSTBAR) == HIGH) ? 1 : 0;
+    new_state.rw_control.flags.r_wbar = (digitalRead(PIN_R_WBAR) == HIGH) ? 1 : 0;
+    new_state.rw_control.flags.phi2 = (digitalRead(PIN_PHI2) == HIGH) ? 1 : 0;
+
+    if(do_load) { bus_state = new_state; }
 }
 
 static void poll_serial() {

    }

    halt_switch.poll(panel_switches.flags.halt == HIGH);
    cycle_switch.poll(panel_switches.flags.cycle_step);
    cycle_trigger.update(cycle_switch.state());
    instr_switch.poll(panel_switches.flags.instuction_step);
    instr_trigger.update(instr_switch.state());

    digitalWrite(PIN_HALT, halt_switch.state() ? HIGH : LOW);

    if(cycle_trigger.triggered()) {
        if(halt_switch.state()) {
            digitalWrite(PIN_STEP, HIGH);
            digitalWrite(PIN_STEP, LOW);
        }

            } while(!bus_state.ro_control.flags.sync);
        }
        instr_trigger.clear();
    }

    if(ex_trigger.triggered()) {
        if(halt_switch.state()) {
            claim_bus();
            cursor_addr = panel_switches.flags.address;
            bus_state.address = cursor_addr;
            update_bus(false);
        }
        ex_trigger.clear();
    }

    if(ex_nx_trigger.triggered()) {
        if(halt_switch.state()) {
            claim_bus();
            cursor_addr ++;
            bus_state.address = cursor_addr;
            update_bus(false);
        }
        ex_nx_trigger.clear();
    }

    if(dpst_trigger.triggered()) {
        if(halt_switch.state()) {
            claim_bus();
            bus_state.address = cursor_addr;
            update_bus(false);

            // Now assert data bus
            digitalWrite(PIN_R_WBAR, LOW);
            digitalWrite(PIN_DOEBAR, LOW);

            bus_state.address = cursor_addr;
            bus_state.data = panel_switches.vals.a0_7;
            update_bus(false);

            digitalWrite(PIN_R_WBAR, HIGH);
            digitalWrite(PIN_DOEBAR, HIGH);
        }
        dpst_trigger.clear();
    }

    if(dpst_nx_trigger.triggered()) {
        if(halt_switch.state()) {
            claim_bus();

            cursor_addr++;
            bus_state.address = cursor_addr;
            update_bus(false);

            // Now assert data bus
            digitalWrite(PIN_R_WBAR, LOW);
            digitalWrite(PIN_DOEBAR, LOW);

            bus_state.address = cursor_addr;
            bus_state.data = panel_switches.vals.a0_7;
            update_bus(false);

            digitalWrite(PIN_R_WBAR, HIGH);
            digitalWrite(PIN_DOEBAR, HIGH);
        }
        dpst_nx_trigger.clear();
    }

    /*
