Annotation of 43BSD/ucb/window/tth19.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)tth19.c    3.17 5/2/86";
                      3: #endif
                      4: 
                      5: /*
                      6:  * Copyright (c) 1983 Regents of the University of California,
                      7:  * All rights reserved.  Redistribution permitted subject to
                      8:  * the terms of the Berkeley Software License Agreement.
                      9:  */
                     10: 
                     11: #include "ww.h"
                     12: #include "tt.h"
                     13: 
                     14: /*
                     15: kb|h19|heath|h19-b|h19b|heathkit|heath-19|z19|zenith:
                     16:        cr=^M:nl=^J:bl=^G:al=1*\EL:am:le=^H:bs:cd=\EJ:ce=\EK:
                     17:        cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:dl=1*\EM:do=\EB:
                     18:        ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:ms:
                     19:        ta=^I:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:
                     20:        kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:
                     21:        kn#8:k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:
                     22:        l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:
                     23:        es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:
                     24: */
                     25: 
                     26: #define NCOL   80
                     27: #define NROW   24
                     28: 
                     29: #define G (WWM_GRP << WWC_MSHIFT)
                     30: short h19_frame[16] = {
                     31:        ' ',    '`'|G,  'a'|G,  'e'|G,
                     32:        '`'|G,  '`'|G,  'f'|G,  'v'|G,
                     33:        'a'|G,  'd'|G,  'a'|G,  'u'|G,
                     34:        'c'|G,  't'|G,  's'|G,  'b'|G
                     35: };
                     36: 
                     37: extern struct tt_str *gen_VS;
                     38: extern struct tt_str *gen_VE;
                     39: extern struct tt_str *gen_XS;
                     40: extern struct tt_str *gen_XE;
                     41: 
                     42: int h19_msp10c;
                     43: 
                     44: #define pc(c)  ttputc('c')
                     45: #define esc()  pc(\033)
                     46: #define PAD(ms10) { \
                     47:        register i; \
                     48:        for (i = ((ms10) + 5) / h19_msp10c; --i >= 0;) \
                     49:                pc(\0); \
                     50: }
                     51: #define ICPAD() PAD((NCOL - tt.tt_col) * 1)    /* 0.1 ms per char */
                     52: #define ILPAD() PAD((NROW - tt.tt_row) * 10)   /* 1 ms per char */
                     53: 
                     54: #define H19_SETINSERT(m) (esc(), (tt.tt_insert = (m)) ? pc(@) : pc(O))
                     55: 
                     56: h19_setinsert(new)
                     57: {
                     58:        H19_SETINSERT(new);
                     59: }
                     60: 
                     61: h19_setmodes(new)
                     62: register new;
                     63: {
                     64:        register diff;
                     65: 
                     66:        diff = new ^ tt.tt_modes;
                     67:        if (diff & WWM_REV) {
                     68:                esc();
                     69:                if (new & WWM_REV)
                     70:                        pc(p);
                     71:                else
                     72:                        pc(q);
                     73:        }
                     74:        if (diff & WWM_GRP) {
                     75:                esc();
                     76:                if (new & WWM_GRP)
                     77:                        pc(F);
                     78:                else
                     79:                        pc(G);
                     80:        }
                     81:        if (diff & WWM_USR) {
                     82:                if (new & WWM_USR) {
                     83:                        if (gen_XS)
                     84:                                ttxputs(gen_XS);
                     85:                } else
                     86:                        if (gen_XE)
                     87:                                ttxputs(gen_XE);
                     88:        }
                     89:        tt.tt_modes = new;
                     90: }
                     91: 
                     92: h19_insline()
                     93: {
                     94:        esc();
                     95:        pc(L);
                     96:        ILPAD();
                     97: }
                     98: 
                     99: h19_delline()
                    100: {
                    101:        esc();
                    102:        pc(M);
                    103:        ILPAD();
                    104: }
                    105: 
                    106: h19_putc(c)
                    107: register char c;
                    108: {
                    109:        if (tt.tt_nmodes != tt.tt_modes)
                    110:                (*tt.tt_setmodes)(tt.tt_nmodes);
                    111:        if (tt.tt_ninsert != tt.tt_insert)
                    112:                H19_SETINSERT(tt.tt_ninsert);
                    113:        ttputc(c);
                    114:        if (tt.tt_insert)
                    115:                ICPAD();
                    116:        if (++tt.tt_col == NCOL)
                    117:                tt.tt_col = NCOL - 1;
                    118: }
                    119: 
                    120: h19_write(p, n)
                    121: register char *p;
                    122: register n;
                    123: {
                    124:        if (tt.tt_nmodes != tt.tt_modes)
                    125:                (*tt.tt_setmodes)(tt.tt_nmodes);
                    126:        if (tt.tt_ninsert != tt.tt_insert)
                    127:                H19_SETINSERT(tt.tt_ninsert);
                    128:        if (tt.tt_insert) {
                    129:                while (--n >= 0) {
                    130:                        ttputc(*p++);
                    131:                        ICPAD();
                    132:                        tt.tt_col++;
                    133:                }
                    134:        } else {
                    135:                tt.tt_col += n;
                    136:                ttwrite(p, n);
                    137:        }
                    138:        if (tt.tt_col == NCOL)
                    139:                tt.tt_col = NCOL - 1;
                    140: }
                    141: 
                    142: h19_move(row, col)
                    143: register char row, col;
                    144: {
                    145:        if (tt.tt_row == row) {
                    146:                if (tt.tt_col == col)
                    147:                        return;
                    148:                if (tt.tt_col == col - 1) {
                    149:                        esc();
                    150:                        pc(C);
                    151:                        goto out;
                    152:                } else if (tt.tt_col == col + 1) {
                    153:                        pc(\b);
                    154:                        goto out;
                    155:                }
                    156:        }
                    157:        if (tt.tt_col == col) {
                    158:                if (tt.tt_row == row + 1) {
                    159:                        esc();
                    160:                        pc(A);
                    161:                        goto out;
                    162:                } else if (tt.tt_row == row - 1) {
                    163:                        pc(\n);
                    164:                        goto out;
                    165:                }
                    166:        }
                    167:        if (col == 0 && row == 0) {
                    168:                esc();
                    169:                pc(H);
                    170:                goto out;
                    171:        }
                    172:        esc();
                    173:        pc(Y);
                    174:        ttputc(' ' + row);
                    175:        ttputc(' ' + col);
                    176: out:
                    177:        tt.tt_col = col;
                    178:        tt.tt_row = row;
                    179: }
                    180: 
                    181: h19_init()
                    182: {
                    183:        if (gen_VS)
                    184:                ttxputs(gen_VS);
                    185:        esc();
                    186:        pc(w);
                    187:        esc();
                    188:        pc(E);
                    189:        tt.tt_col = tt.tt_row = 0;
                    190:        tt.tt_ninsert = tt.tt_insert = 0;
                    191:        tt.tt_nmodes = tt.tt_modes = 0;
                    192: }
                    193: 
                    194: h19_end()
                    195: {
                    196:        if (gen_VE)
                    197:                ttxputs(gen_VE);
                    198:        esc();
                    199:        pc(v);
                    200: }
                    201: 
                    202: h19_clreol()
                    203: {
                    204:        esc();
                    205:        pc(K);
                    206: }
                    207: 
                    208: h19_clreos()
                    209: {
                    210:        esc();
                    211:        pc(J);
                    212: }
                    213: 
                    214: h19_clear()
                    215: {
                    216:        esc();
                    217:        pc(E);
                    218: }
                    219: 
                    220: h19_delchar()
                    221: {
                    222:        esc();
                    223:        pc(N);
                    224: }
                    225: 
                    226: tt_h19()
                    227: {
                    228:        float cpms = (float) wwbaud / 10000;    /* char per ms */
                    229: 
                    230:        h19_msp10c = 10 / cpms;                 /* ms per 10 char */
                    231:        gen_VS = ttxgetstr("vs");
                    232:        gen_VE = ttxgetstr("ve");
                    233:        gen_XS = ttxgetstr("XS");
                    234:        gen_XE = ttxgetstr("XE");
                    235: 
                    236:        tt.tt_init = h19_init;
                    237:        tt.tt_end = h19_end;
                    238: 
                    239:        tt.tt_insline = h19_insline;
                    240:        tt.tt_delline = h19_delline;
                    241:        tt.tt_delchar = h19_delchar;
                    242:        tt.tt_clreol = h19_clreol;
                    243:        tt.tt_clreos = h19_clreos;
                    244:        tt.tt_clear = h19_clear;
                    245:        tt.tt_move = h19_move;
                    246:        tt.tt_write = h19_write;
                    247:        tt.tt_putc = h19_putc;
                    248:        tt.tt_setinsert = h19_setinsert;
                    249:        tt.tt_setmodes = h19_setmodes;
                    250: 
                    251:        tt.tt_ncol = NCOL;
                    252:        tt.tt_nrow = NROW;
                    253:        tt.tt_hasinsert = 1;
                    254:        tt.tt_availmodes = WWM_REV|WWM_GRP;
                    255:        if (gen_XS)
                    256:                tt.tt_availmodes |= WWM_USR;
                    257:        tt.tt_frame = h19_frame;
                    258:        return 0;
                    259: }

unix.superglobalmegacorp.com

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