#include "ded.h" #include "char.h" #include "ter.h" /************************************************************************ * * * copyright Richard Bornat 1981 * * * ************************************************************************/ /* helpful procedures to fill in blanks in the terminal structure */ char no_char(c) { return(c); } int no_int(c) { return(c); } ter_setup(a_ter) struct TERMINAL *a_ter; { ter = *a_ter; if (c_MODIFY != 0) set_modifier(c_MODIFY); else if (ter.onechar.c_MODIFY != 0) set_modifier(ter.onechar.c_MODIFY); c_MODIFY = ter.onechar.c_MODIFY; c_CONTROL = ter.onechar.c_CONTROL; c_BLOB = ter.onechar.c_BLOB; /* *ter.setup now called in tty.c UMIST */ #ifdef DBUG if (dbug('b')) { ter.scrollup = scr0_up; ter.scrolldown = scr0_down; } if (dbug('f')) { ter.split_row = split0; ter.join_rows = join0; } if (dbug('h')) { ter.ins_char = insc0; ter.del_char = delc0; } #endif /* set size of screen */ nrows = ter.nrows; ncols = ter.ncols; } /* set up the modifier character facility - used by QMC itt terminals * and similar silly devices to allow character-set extensions. */ set_modifier(c) register char c; { register int c1; for (c1=0; c1<128; c1++) if ((*ter.in_two)(c1) != c1) ictab[c1] = ectab[c1] = TWO; if (ictab[c] == ONE && ectab[c] == ONE) ictab[c] = ectab[c] = MODIFY; else editerror("invalid modifier character %o", c); ter.onechar.c_MODIFY = c; } /* procedures to send sequences of characters */ sendseq(seq) register char *seq; { register char c; if (seq==0) return(false); else if (*seq==0) { sendseq(seq+1); (*ter.pad)(seq); } else while (c = *seq++) ttyout(c); return(true); } /* send a sequence at a particular screen position */ sendat(srow, scol, seq) register int srow, scol; char *seq; { move_to(srow, scol); sendseq(seq); }