Annotation of coherent/g/usr/bin/me/vt52.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * The routines in this file
                      3:  * provide support for VT52 style terminals
                      4:  * over a serial line. The serial I/O services are
                      5:  * provided by routines in "termio.c". It compiles
                      6:  * into nothing if not a VT52 style device. The
                      7:  * bell on the VT52 is terrible, so the "beep"
                      8:  * routine is conditionalized on defining BEL.
                      9:  */
                     10: #include       <stdio.h>
                     11: #include       "ed.h"
                     12: 
                     13: #if    VT52
                     14: 
                     15: #if    GEM
                     16: #define        NROW    25                      /* Screen size.                 */
                     17: #else
                     18: #define        NROW    24                      /* Screen size.                 */
                     19: #endif
                     20: 
                     21: #define        NCOL    80                      /* Edit if you want to.         */
                     22: #define        BIAS    0x20                    /* Origin 0 coordinate bias.    */
                     23: #define        ESC     0x1B                    /* ESC character.               */
                     24: #define        BEL     0x07                    /* ascii bell character         */
                     25: 
                     26: extern int     ttopen();               /* Forward references.          */
                     27: extern int     ttgetc();
                     28: extern int     ttputc();
                     29: extern int     ttflush();
                     30: extern int     ttclose();
                     31: extern int     vt52move();
                     32: extern int     vt52eeol();
                     33: extern int     vt52eeop();
                     34: extern int     vt52beep();
                     35: extern int     vt52open();
                     36: extern int     vt52stand();
                     37: 
                     38: /*
                     39:  * Dispatch table. All the
                     40:  * hard fields just point into the
                     41:  * terminal I/O code.
                     42:  */
                     43: TERM   term    = {
                     44:        NROW-1,
                     45:        NCOL,
                     46:        vt52open,
                     47:        ttclose,
                     48:        ttgetc,
                     49:        ttputc,
                     50:        ttflush,
                     51:        vt52move,
                     52:        vt52eeol,
                     53:        vt52eeop,
                     54:        vt52beep,
                     55:        vt52stand
                     56: };
                     57: 
                     58: vt52move(row, col)
                     59: {
                     60:        ttputc(ESC);
                     61:        ttputc('Y');
                     62:        ttputc(row+BIAS);
                     63:        ttputc(col+BIAS);
                     64: }
                     65: 
                     66: vt52eeol()
                     67: {
                     68:        ttputc(ESC);
                     69:        ttputc('K');
                     70: }
                     71: 
                     72: vt52eeop()
                     73: {
                     74:        ttputc(ESC);
                     75:        ttputc('J');
                     76: }
                     77: 
                     78: vt52beep()
                     79: {
                     80: #ifdef BEL
                     81:        ttputc(BEL);
                     82:        ttflush();
                     83: #endif
                     84: }
                     85: 
                     86: vt52stand(f)                   /* Set/clear standout mode...   */
                     87: {                              /* Real VT52 doesn't have it.   */
                     88:        ttputc(ESC);
                     89:        ttputc((f == 0) ? 'q' : 'p');   /* Set or clear reverse video   */
                     90: }
                     91: 
                     92: vt52open()
                     93: {
                     94: #if    V7
                     95:        register uchar *cp;
                     96:        char *getenv();
                     97: 
                     98:        if ((cp = getenv("TERM")) == NULL) {
                     99:                puts("Shell variable TERM not defined!");
                    100:                exit(1);
                    101:        }
                    102:        if (strcmp(cp, "vt52") != 0 && strcmp(cp, "z19") != 0) {
                    103:                puts("Terminal type not 'vt52'or 'z19' !");
                    104:                exit(1);
                    105:        }
                    106: #endif
                    107:        ttopen();
                    108: }
                    109: 
                    110: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.