1 /* tabitoh.c 4.1 83/08/05 */ 2 #define INCH 240 3 /* 4 * C:Itoh Prowriter (dot matrix) 10 pitch 5 * nroff driving table 6 * by G. Rochlin, 15feb83 7 * Because the c:itoh will backspace only in incremental mode, 8 * need to write a program to place commands Esc[ and Esc] around ^H. 9 * If you want true underline mode instead of _^Hx_^Hy, etc., 10 * have the script first replace _^Hx with EscXxEscY, etc. 11 * Further refinements are possible to clean up files and 12 * minimize throughput (e.g., delete all EscYEscX pairs). 13 * In the terminal initialization (twinit) and exit (twrest) 14 * strings, EscN sets 10-pitch. Twrest clears by commanding 15 * Esc Y, Esc", and Esc$ to clear ul, bold, and "greek", 16 * Esc] to restore logic-seek print, Escf and EscT24 to restore 17 * forward linefeed at 6 lines/inch, Esc< for bidirectional 18 * print, EscN, and ^M (\015) to clear the print buffer. 19 * Since the itoh has no keyboard, you have to run it through 20 * a video terminal or micro printer port. 21 * The first twinit code (Esc`) and the last twrest code 22 * (Esca) set the (proper) "transparent" or "buffered" print 23 * mode for tvi950 and tvi925 and Freedom 100. This mode 24 * is necessary on intelligent terminals to keep all the Esc 25 * codes in the driver tables from scrambling the terminal's 26 * brains. (If you have a dumb terminal, almost any print 27 * mode should be safe. Smart terminals without buffered print, 28 * such as the tvi920, present problems.) 29 * If you have a different terminal, 30 * the shell script should also replace these codes with those 31 * appropriate for your machine. If you are using an sed 32 * stream for the script, make sure to use single quotes to 33 * isolate the ` from the shell. 34 */ 35 struct { 36 int bset; 37 int breset; 38 int Hor; 39 int Vert; 40 int Newline; 41 int Char; 42 int Em; 43 int Halfline; 44 int Adj; 45 char *twinit; 46 char *twrest; 47 char *twnl; 48 char *hlr; 49 char *hlf; 50 char *flr; 51 char *bdon; 52 char *bdoff; 53 char *ploton; 54 char *plotoff; 55 char *up; 56 char *down; 57 char *right; 58 char *left; 59 char *codetab[256-32]; 60 int zzz; 61 } t = { 62 /*bset*/ 0, 63 /*breset*/ 0177420, 64 /*Hor*/ INCH/20, 65 /*Vert*/ INCH/48, 66 /*Newline*/ INCH/6, 67 /*Char*/ INCH/10, 68 /*Em*/ INCH/10, 69 /*Halfline*/ INCH/12, 70 /*Adj*/ INCH/10, 71 /*twinit*/ "\033`\015\033N", 72 /*twrest*/ "\033Y\033\042\033$\033]\033f\033T24\033<\033N\015\033a\n", 73 /*twnl*/ "\015\n", 74 /*hlr*/ "\033[\033T12\033r\n\033T24\033]\033f", 75 /*hlf*/ "\033[\033T12\n\033T24\033]", 76 /*flr*/ "\033[\033r\n\033f\033]", 77 /*bdon*/ "\033!", 78 /*bdoff*/ "\033\042", 79 /*ploton*/ "\033>\033T03", 80 /*plotoff*/ "\033<\033T24", 81 /*up*/ "\033[\033r\n\033f\033]", 82 /*down*/ "\033[\n\033]", 83 /*right*/ "\033P \033N", 84 /*left*/ "\b\033Q \033N", 85 /*codetab*/ 86 #include "code.itoh" 87