+ case 0b11000000: // ^3
+ {
+ uint8_t us = 100;
+ // wait for rising and falling edge of b7 of XT_IBM
+ while (!(IBMPC_CLOCK_PIN&(1<<IBMPC_CLOCK_BIT)) && us) { wait_us(1); us--; }
+ while ( IBMPC_CLOCK_PIN&(1<<IBMPC_CLOCK_BIT) && us) { wait_us(1); us--; }
+
+ if (us) {
+ // XT_IBM-error: read start(0) as 1
+ goto NEXT;
+ } else {
+ // XT_Clone-done
+ ibmpc_isr_debug = isr_state;
+ isr_state = isr_state>>8;
+ ibmpc_protocol = IBMPC_PROTOCOL_XT_CLONE;
+ goto DONE;
+ }
+ }
+ break;
+ case 0b11100000:
+ // XT_IBM-error-done
+ ibmpc_isr_debug = isr_state;