STATIC unsigned char read_char_sft_dev(int sft_in, int sft_out, struct dhdr FAR **pdev, BOOL check_break) { unsigned char c; if (pdev) { FOREVER { if (ctrl_break_pressed()) { c = CTL_C; break; } if (!Busy(pdev)) { c = CharIO(pdev, 0, C_INPUT); break; } if (check_break && *pdev != syscon) check_handle_break(&syscon); /* the idle int is only safe if we're using the character stack */ if (user_r->AH < 0xd) DosIdle_int(); } } else
unsigned char check_handle_break(struct dhdr FAR **pdev) { unsigned char c = CTL_C; if (!ctrl_break_pressed()) c = (unsigned char)ndread(&syscon); if (c != CTL_C && *pdev != syscon) c = (unsigned char)ndread(pdev); if (c == CTL_C) handle_break(pdev, -1); return c; }