int putch(int c) { int row, col; ScreenGetCursor(&row, &col); /* first, handle the character */ if (c == '\n') { row++; } else if (c == '\r') { col = txinfo.winleft - 1; } else if (c == '\b') { if (col > txinfo.winleft - 1) col--; else if (row > txinfo.wintop -1) { /* * Turbo-C ignores this case; we are smarter. */ row--; col = txinfo.winright-1; } } else if (c == 0x07) bell(); else { /* short val = c | (ScreenAttrib << 8); */ /* puttext(col + 1, row + 1, col + 1, row + 1, &val); */ ScreenPutChar(c, ScreenAttrib, col, row); col++; } /* now, readjust the window */ if (col >= txinfo.winright) { col = txinfo.winleft - 1; row++; } if (row >= txinfo.winbottom) { /* scrollwin(0, txinfo.winbottom - txinfo.wintop, 1); */ if (_wscroll) { ScreenSetCursor(txinfo.wintop-1,0); delline(); } row--; } ScreenSetCursor(row, col); txinfo.cury = row - txinfo.wintop + 2; txinfo.curx = col - txinfo.winleft + 2; return c; }
static int Printer(int ch, void*) { ScreenPutChar(ch); return 0; }