unsigned char read_char(int sft_idx, BOOL check_break) { unsigned char c; struct dhdr FAR *dev = sft_to_dev(idx_to_sft(sft_idx)); if (dev) return (unsigned char)raw_get_char(&dev, check_break); DosRWSft(sft_idx, 1, &c, XFR_READ); return c; }
void handle_break(struct dhdr FAR **pdev, int sft_out) { char *buf = "^C\r\n"; CB_FLG &= ~CB_MSK; /* reset the ^Break flag */ con_flush(pdev); if (sft_out == -1) cooked_write(pdev, 4, buf); else DosRWSft(sft_out, 4, buf, XFR_FORCE_WRITE); if (!ErrorMode) /* within int21_handler, InDOS is not incremented */ if (InDOS) --InDOS; /* fail-safe */ spawn_int23(); /* invoke user INT-23 and never come back */ }
/* writes character for disk file or device */ void write_char(int c, int sft_idx) { unsigned char ch = (unsigned char)c; DosRWSft(sft_idx, 1, &ch, XFR_FORCE_WRITE); }