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: }
Defined functions
Defined variables
sccsid
defined in line
2;
never used
Defined macros
G
defined in line
29; used 16 times
ICPAD
defined in line
51; used 2 times
ILPAD
defined in line
52; used 2 times
NCOL
defined in line
26; used 6 times
NROW
defined in line
27; used 2 times
PAD
defined in line
46; used 2 times
esc
defined in line
45; used 16 times
- in line 54,
68,
75,
94,
101,
149,
159,
168-172(2),
185-187(2),
198,
204,
210,
216,
222
pc
defined in line
44; used 22 times
- in line 45-54(3),
70-79(4),
95,
102,
150-153(2),
160-163(2),
169-173(2),
186-188(2),
199,
205,
211,
217,
223