         }
     } else {
         // step only makes sense if processor halted
-        if(select_trigger.triggered()) {
+        if(cycle_request) {
             // Pulse step pin
             digitalWrite(STEP, HIGH);
             digitalWrite(STEP, LOW);
+
+            // Reset cycle request
+            cycle_request = false;
         }
 
         // Update address bus


// Are we wanting the processor to be halted?
bool halt_request;

DebouncedSwitch mode_switch(BTN_MODE);
DebouncedSwitch select_switch(BTN_SELECT);

    if(mode_trigger.triggered()) {
        halt_request = !halt_request;
    }

    cycle_request = cycle_request || select_trigger.triggered();

    // Update control lines
    digitalWrite(HALT, halt_request ? HIGH : LOW);
