/* VT52.C * * The routines in this file * provide support for VT52 style terminals * over a serial line. The serial I/O services are * provided by routines in "termio.c". It compiles * into nothing if not a VT52 style device. The * bell on the VT52 is terrible, so the "beep" * routine is conditionalized on defining BEL. * * modified by Petri Kutvonen */ #define termdef 1 /* don't define "term" external */ #include #include "estruct.h" #include "edef.h" #if VT52 #define NROW 24 /* Screen size. */ #define NCOL 80 /* Edit if you want to. */ #define MARGIN 8 /* size of minimim margin and */ #define SCRSIZ 64 /* scroll size for extended lines */ #define NPAUSE 100 /* # times thru update to pause */ #define BIAS 0x20 /* Origin 0 coordinate bias. */ #define ESC 0x1B /* ESC character. */ #define BEL 0x07 /* ascii bell character */ extern int ttopen(); /* Forward references. */ extern int ttgetc(); extern int ttputc(); extern int ttflush(); extern int ttclose(); extern int vt52move(); extern int vt52eeol(); extern int vt52eeop(); extern int vt52beep(); extern int vt52open(); extern int vt52rev(); extern int vt52cres(); extern int vt52kopen(); extern int vt52kclose(); #if COLOR extern int vt52fcol(); extern int vt52bcol(); #endif /* * Dispatch table. All the * hard fields just point into the * terminal I/O code. */ TERM term = { NROW - 1, NROW - 1, NCOL, NCOL, MARGIN, SCRSIZ, NPAUSE, &vt52open, &ttclose, &vt52kopen, &vt52kclose, &ttgetc, &ttputc, &ttflush, &vt52move, &vt52eeol, &vt52eeop, &vt52beep, &vt52rev, &vt52cres #if COLOR , &vt52fcol, &vt52bcol #endif #if SCROLLCODE , NULL #endif }; vt52move(row, col) { ttputc(ESC); ttputc('Y'); ttputc(row + BIAS); ttputc(col + BIAS); } vt52eeol() { ttputc(ESC); ttputc('K'); } vt52eeop() { ttputc(ESC); ttputc('J'); } vt52rev(status) /* set the reverse video state */ int status; /* TRUE = reverse video, FALSE = normal video */ { /* can't do this here, so we won't */ } vt52cres() { /* change screen resolution - (not here though) */ return (TRUE); } spal() { /* change palette string */ /* Does nothing here */ } #if COLOR vt52fcol() { /* set the forground color [NOT IMPLIMENTED] */ } vt52bcol() { /* set the background color [NOT IMPLIMENTED] */ } #endif vt52beep() { #ifdef BEL ttputc(BEL); ttflush(); #endif } vt52open() { #if V7 | BSD register char *cp; char *getenv(); if ((cp = getenv("TERM")) == NULL) { puts("Shell variable TERM not defined!"); exit(1); } if (strcmp(cp, "vt52") != 0 && strcmp(cp, "z19") != 0) { puts("Terminal type not 'vt52'or 'z19' !"); exit(1); } #endif ttopen(); } vt52kopen() { } vt52kclose() { } #if FNLABEL fnclabel(f, n) /* label a function key */ int f, n; /* default flag, numeric argument [unused] */ { /* on machines with no function keys...don't bother */ return (TRUE); } #endif #else vt52hello() { } #endif