Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This is a slightly updated version of uemacs-PK (PK is Pekka Kutvonen) which was used at Helsinki University a long time ago. My fingers cannot be retrained.
- Loading branch information
Linus Torvalds
committed
May 31, 2005
0 parents
commit d7148b2
Showing
50 changed files
with
20,521 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,264 @@ | ||
/* ANSI.C | ||
* | ||
* The routines in this file provide support for ANSI style terminals | ||
* over a serial line. The serial I/O services are provided by routines in | ||
* "termio.c". It compiles into nothing if not an ANSI device. | ||
* | ||
* modified by Petri Kutvonen | ||
*/ | ||
|
||
#define termdef 1 /* don't define "term" external */ | ||
|
||
#include <stdio.h> | ||
#include "estruct.h" | ||
#include "edef.h" | ||
|
||
#if ANSI | ||
|
||
#define NROW 25 /* Screen size. */ | ||
#define NCOL 80 /* Edit if you want to. */ | ||
|
||
#if PKCODE | ||
#define MROW 64 | ||
#endif | ||
#define NPAUSE 100 /* # times thru update to pause */ | ||
#define MARGIN 8 /* size of minimim margin and */ | ||
#define SCRSIZ 64 /* scroll size for extended lines */ | ||
#define BEL 0x07 /* BEL character. */ | ||
#define ESC 0x1B /* ESC character. */ | ||
|
||
extern int ttopen(); /* Forward references. */ | ||
extern int ttgetc(); | ||
extern int ttputc(); | ||
extern int ttflush(); | ||
extern int ttclose(); | ||
extern int ansimove(); | ||
extern int ansieeol(); | ||
extern int ansieeop(); | ||
extern int ansibeep(); | ||
extern int ansiopen(); | ||
extern int ansirev(); | ||
extern int ansiclose(); | ||
extern int ansikopen(); | ||
extern int ansikclose(); | ||
extern int ansicres(); | ||
|
||
#if COLOR | ||
extern int ansifcol(); | ||
extern int ansibcol(); | ||
|
||
int cfcolor = -1; /* current forground color */ | ||
int cbcolor = -1; /* current background color */ | ||
|
||
#endif | ||
|
||
/* | ||
* Standard terminal interface dispatch table. Most of the fields point into | ||
* "termio" code. | ||
*/ | ||
TERM term = { | ||
#if PKCODE | ||
MROW-1, | ||
#else | ||
NROW-1, | ||
#endif | ||
NROW-1, | ||
NCOL, | ||
NCOL, | ||
MARGIN, | ||
SCRSIZ, | ||
NPAUSE, | ||
ansiopen, | ||
ansiclose, | ||
ansikopen, | ||
ansikclose, | ||
ttgetc, | ||
ttputc, | ||
ttflush, | ||
ansimove, | ||
ansieeol, | ||
ansieeop, | ||
ansibeep, | ||
ansirev, | ||
ansicres | ||
#if COLOR | ||
, ansifcol, | ||
ansibcol | ||
#endif | ||
#if SCROLLCODE | ||
, NULL | ||
#endif | ||
}; | ||
|
||
#if COLOR | ||
ansifcol(color) /* set the current output color */ | ||
|
||
int color; /* color to set */ | ||
|
||
{ | ||
if (color == cfcolor) | ||
return; | ||
ttputc(ESC); | ||
ttputc('['); | ||
ansiparm(color+30); | ||
ttputc('m'); | ||
cfcolor = color; | ||
} | ||
|
||
ansibcol(color) /* set the current background color */ | ||
|
||
int color; /* color to set */ | ||
|
||
{ | ||
if (color == cbcolor) | ||
return; | ||
ttputc(ESC); | ||
ttputc('['); | ||
ansiparm(color+40); | ||
ttputc('m'); | ||
cbcolor = color; | ||
} | ||
#endif | ||
|
||
ansimove(row, col) | ||
{ | ||
ttputc(ESC); | ||
ttputc('['); | ||
ansiparm(row+1); | ||
ttputc(';'); | ||
ansiparm(col+1); | ||
ttputc('H'); | ||
} | ||
|
||
ansieeol() | ||
{ | ||
ttputc(ESC); | ||
ttputc('['); | ||
ttputc('K'); | ||
} | ||
|
||
ansieeop() | ||
{ | ||
#if COLOR | ||
ansifcol(gfcolor); | ||
ansibcol(gbcolor); | ||
#endif | ||
ttputc(ESC); | ||
ttputc('['); | ||
ttputc('J'); | ||
} | ||
|
||
ansirev(state) /* change reverse video state */ | ||
|
||
int state; /* TRUE = reverse, FALSE = normal */ | ||
|
||
{ | ||
#if COLOR | ||
int ftmp, btmp; /* temporaries for colors */ | ||
#endif | ||
|
||
ttputc(ESC); | ||
ttputc('['); | ||
ttputc(state ? '7': '0'); | ||
ttputc('m'); | ||
#if COLOR | ||
if (state == FALSE) { | ||
ftmp = cfcolor; | ||
btmp = cbcolor; | ||
cfcolor = -1; | ||
cbcolor = -1; | ||
ansifcol(ftmp); | ||
ansibcol(btmp); | ||
} | ||
#endif | ||
} | ||
|
||
ansicres() /* change screen resolution */ | ||
|
||
{ | ||
return(TRUE); | ||
} | ||
|
||
spal(dummy) /* change pallette settings */ | ||
|
||
{ | ||
/* none for now */ | ||
} | ||
|
||
ansibeep() | ||
{ | ||
ttputc(BEL); | ||
ttflush(); | ||
} | ||
|
||
ansiparm(n) | ||
register int n; | ||
{ | ||
register int q,r; | ||
|
||
q = n/10; | ||
if (q != 0) { | ||
r = q/10; | ||
if (r != 0) { | ||
ttputc((r%10)+'0'); | ||
} | ||
ttputc((q%10) + '0'); | ||
} | ||
ttputc((n%10) + '0'); | ||
} | ||
|
||
ansiopen() | ||
{ | ||
#if V7 | USG | BSD | ||
register char *cp; | ||
char *getenv(); | ||
|
||
if ((cp = getenv("TERM")) == NULL) { | ||
puts("Shell variable TERM not defined!"); | ||
exit(1); | ||
} | ||
if (strcmp(cp, "vt100") != 0) { | ||
puts("Terminal type not 'vt100'!"); | ||
exit(1); | ||
} | ||
#endif | ||
strcpy(sres, "NORMAL"); | ||
revexist = TRUE; | ||
ttopen(); | ||
} | ||
|
||
ansiclose() | ||
|
||
{ | ||
#if COLOR | ||
ansifcol(7); | ||
ansibcol(0); | ||
#endif | ||
ttclose(); | ||
} | ||
|
||
ansikopen() /* open the keyboard (a noop here) */ | ||
|
||
{ | ||
} | ||
|
||
ansikclose() /* close the keyboard (a noop here) */ | ||
|
||
{ | ||
} | ||
|
||
#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 | ||
ansihello() | ||
{ | ||
} | ||
#endif |
Oops, something went wrong.