mirror of
https://github.com/rfivet/uemacs.git
synced 2024-06-13 14:50:41 +00:00
191 lines
3.4 KiB
C
191 lines
3.4 KiB
C
|
/* 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 <stdio.h>
|
||
|
#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
|