- if (ibmpc_host_recv() != -1 || timer_elapsed(init_time) > 10000) {
- xprintf("W%u\n", timer_read());
- // ID takes 500ms max? TechRef [8] 4-41, though, 1ms is enough for 122-key Terminal 6110345
- read_wait(500); // for BF from Terminal
- read_wait(500); // for BF from Terminal
+ /* wait until keyboard sends any code without 10000ms timeout
+ if (timer_elapsed(init_time) > 10000) {
+ state = READ_ID;
+ }
+ */
+ if (ibmpc_host_recv() != -1) { // wait for AA
+ xprintf("W%u ", timer_read());
+ init_time = timer_read();
+ state = WAIT_AABF;
+ }
+ break;
+ case WAIT_AABF:
+ // NOTE: we can omit to wait BF BF
+ // ID takes 500ms max? TechRef [8] 4-41, though 1ms is enough for 122-key Terminal 6110345
+ if (timer_elapsed(init_time) > 500) {
+ state = READ_ID;
+ }
+ if (ibmpc_host_recv() != -1) { // wait for BF
+ xprintf("W%u ", timer_read());
+ init_time = timer_read();
+ state = WAIT_AABFBF;
+ }
+ break;
+ case WAIT_AABFBF:
+ if (timer_elapsed(init_time) > 500) {
+ state = READ_ID;
+ }
+ if (ibmpc_host_recv() != -1) { // wait for BF
+ xprintf("W%u ", timer_read());