1*219b2ee8SDavid du Colombier /* 2*219b2ee8SDavid du Colombier * 3*219b2ee8SDavid du Colombier * Tektronix 4014 control codes. 4*219b2ee8SDavid du Colombier * 5*219b2ee8SDavid du Colombier */ 6*219b2ee8SDavid du Colombier 7*219b2ee8SDavid du Colombier #define NUL '\000' 8*219b2ee8SDavid du Colombier #define SOH '\001' 9*219b2ee8SDavid du Colombier #define STX '\002' 10*219b2ee8SDavid du Colombier #define ETX '\003' 11*219b2ee8SDavid du Colombier #define EOT '\004' 12*219b2ee8SDavid du Colombier #define ENQ '\005' 13*219b2ee8SDavid du Colombier #define ACK '\006' 14*219b2ee8SDavid du Colombier #define BEL '\007' 15*219b2ee8SDavid du Colombier #define BS '\010' 16*219b2ee8SDavid du Colombier #define HT '\011' 17*219b2ee8SDavid du Colombier #define NL '\012' 18*219b2ee8SDavid du Colombier #define VT '\013' 19*219b2ee8SDavid du Colombier #define FF '\014' 20*219b2ee8SDavid du Colombier #define CR '\015' 21*219b2ee8SDavid du Colombier #define SO '\016' 22*219b2ee8SDavid du Colombier #define SI '\017' 23*219b2ee8SDavid du Colombier #define DLE '\020' 24*219b2ee8SDavid du Colombier #define DC1 '\021' 25*219b2ee8SDavid du Colombier #define DC2 '\022' 26*219b2ee8SDavid du Colombier #define DC3 '\023' 27*219b2ee8SDavid du Colombier #define DC4 '\024' 28*219b2ee8SDavid du Colombier #define NAK '\025' 29*219b2ee8SDavid du Colombier #define SYN '\026' 30*219b2ee8SDavid du Colombier #define ETB '\027' 31*219b2ee8SDavid du Colombier #define CAN '\030' 32*219b2ee8SDavid du Colombier #define EM '\031' 33*219b2ee8SDavid du Colombier #define SUB '\032' 34*219b2ee8SDavid du Colombier #define ESC '\033' 35*219b2ee8SDavid du Colombier #define FS '\034' 36*219b2ee8SDavid du Colombier #define GS '\035' 37*219b2ee8SDavid du Colombier #define RS '\036' 38*219b2ee8SDavid du Colombier #define US '\037' 39*219b2ee8SDavid du Colombier #define DEL '\177' 40*219b2ee8SDavid du Colombier 41*219b2ee8SDavid du Colombier /* 42*219b2ee8SDavid du Colombier * 43*219b2ee8SDavid du Colombier * A few definitions used to classify the different tektronix states. OUTMODED 44*219b2ee8SDavid du Colombier * is returned by control() and esc(), and typically means the state has changed. 45*219b2ee8SDavid du Colombier * 46*219b2ee8SDavid du Colombier */ 47*219b2ee8SDavid du Colombier 48*219b2ee8SDavid du Colombier #define OUTMODED -1 49*219b2ee8SDavid du Colombier #define ALPHA 0 50*219b2ee8SDavid du Colombier #define GIN 1 51*219b2ee8SDavid du Colombier #define GRAPH 2 52*219b2ee8SDavid du Colombier #define POINT 3 53*219b2ee8SDavid du Colombier #define SPECIALPOINT 4 54*219b2ee8SDavid du Colombier #define INCREMENTAL 5 55*219b2ee8SDavid du Colombier #define RESET 6 56*219b2ee8SDavid du Colombier #define EXIT 7 57*219b2ee8SDavid du Colombier 58*219b2ee8SDavid du Colombier /* 59*219b2ee8SDavid du Colombier * 60*219b2ee8SDavid du Colombier * The pen state, either UP or DOWN, controls whether vectors are drawn. 61*219b2ee8SDavid du Colombier * 62*219b2ee8SDavid du Colombier */ 63*219b2ee8SDavid du Colombier 64*219b2ee8SDavid du Colombier #define UP 0 65*219b2ee8SDavid du Colombier #define DOWN 1 66*219b2ee8SDavid du Colombier 67*219b2ee8SDavid du Colombier /* 68*219b2ee8SDavid du Colombier * 69*219b2ee8SDavid du Colombier * Coordinates of the upper right corner of the screen - almost the real screen 70*219b2ee8SDavid du Colombier * dimensions. 71*219b2ee8SDavid du Colombier * 72*219b2ee8SDavid du Colombier */ 73*219b2ee8SDavid du Colombier 74*219b2ee8SDavid du Colombier #define TEKXMAX 4096 75*219b2ee8SDavid du Colombier #define TEKYMAX 3120 76*219b2ee8SDavid du Colombier 77*219b2ee8SDavid du Colombier /* 78*219b2ee8SDavid du Colombier * 79*219b2ee8SDavid du Colombier * The size of the spot in SPECIALPOINT mode is controlled by a non-linear 80*219b2ee8SDavid du Colombier * function that has a domain that consists of the integers from 040 to 0175. 81*219b2ee8SDavid du Colombier * The next definition is used to initialize the special point mode intensity 82*219b2ee8SDavid du Colombier * array that implements the function. Data came from table F-6 in the tektronix 83*219b2ee8SDavid du Colombier * 4014 manual. 84*219b2ee8SDavid du Colombier * 85*219b2ee8SDavid du Colombier */ 86*219b2ee8SDavid du Colombier 87*219b2ee8SDavid du Colombier #define INTENSITY \ 88*219b2ee8SDavid du Colombier \ 89*219b2ee8SDavid du Colombier { \ 90*219b2ee8SDavid du Colombier 14, 16, 17, 19, 20, 22, 23, 25, \ 91*219b2ee8SDavid du Colombier 28, 31, 34, 38, 41, 44, 47, 50, \ 92*219b2ee8SDavid du Colombier 56, 62, 69, 75, 81, 88, 94,100, \ 93*219b2ee8SDavid du Colombier 56, 62, 69, 75, 81, 88, 94,100, \ 94*219b2ee8SDavid du Colombier 0, 1, 1, 1, 1, 1, 1, 2, \ 95*219b2ee8SDavid du Colombier 2, 2, 2, 2, 3, 3, 3, 3, \ 96*219b2ee8SDavid du Colombier 4, 4, 4, 5, 5, 5, 6, 6, \ 97*219b2ee8SDavid du Colombier 7, 8, 9, 10, 11, 12, 12, 13, \ 98*219b2ee8SDavid du Colombier 14, 16, 17, 19, 20, 22, 23, 25, \ 99*219b2ee8SDavid du Colombier 28, 31, 34, 38, 41, 44, 47, 50, \ 100*219b2ee8SDavid du Colombier 56, 62, 69, 75, 81, 88, 94,100, \ 101*219b2ee8SDavid du Colombier 56, 62, 69, 75, 81, 88, 94,100, \ 102*219b2ee8SDavid du Colombier } 103*219b2ee8SDavid du Colombier 104*219b2ee8SDavid du Colombier /* 105*219b2ee8SDavid du Colombier * 106*219b2ee8SDavid du Colombier * The next two definitions give the height and width of characters in the four 107*219b2ee8SDavid du Colombier * different sizes available on tektronix terminals. TEKFONT is the default index 108*219b2ee8SDavid du Colombier * into CHARHEIGHT and CHARWIDTH. 109*219b2ee8SDavid du Colombier * 110*219b2ee8SDavid du Colombier */ 111*219b2ee8SDavid du Colombier 112*219b2ee8SDavid du Colombier #define CHARHEIGHT {88, 82, 53, 48} 113*219b2ee8SDavid du Colombier #define CHARWIDTH {56, 51, 34, 31} 114*219b2ee8SDavid du Colombier #define TEKFONT 2 115*219b2ee8SDavid du Colombier 116*219b2ee8SDavid du Colombier /* 117*219b2ee8SDavid du Colombier * 118*219b2ee8SDavid du Colombier * The entries defined in STYLES are passed on to the PostScript operator setdash. 119*219b2ee8SDavid du Colombier * They're used to implement the different tektronix line styles. Belongs in the 120*219b2ee8SDavid du Colombier * prologue! 121*219b2ee8SDavid du Colombier * 122*219b2ee8SDavid du Colombier */ 123*219b2ee8SDavid du Colombier 124*219b2ee8SDavid du Colombier #define STYLES \ 125*219b2ee8SDavid du Colombier \ 126*219b2ee8SDavid du Colombier { \ 127*219b2ee8SDavid du Colombier "[]", \ 128*219b2ee8SDavid du Colombier "[.5 2]", \ 129*219b2ee8SDavid du Colombier "[.5 2 4 2]", \ 130*219b2ee8SDavid du Colombier "[4 4]", \ 131*219b2ee8SDavid du Colombier "[8 4]", \ 132*219b2ee8SDavid du Colombier "[]" \ 133*219b2ee8SDavid du Colombier } 134*219b2ee8SDavid du Colombier 135*219b2ee8SDavid du Colombier /* 136*219b2ee8SDavid du Colombier * 137*219b2ee8SDavid du Colombier * Variables of type Point are used to keep track of the cursor position. 138*219b2ee8SDavid du Colombier * 139*219b2ee8SDavid du Colombier */ 140*219b2ee8SDavid du Colombier 141*219b2ee8SDavid du Colombier typedef struct { 142*219b2ee8SDavid du Colombier int x; 143*219b2ee8SDavid du Colombier int y; 144*219b2ee8SDavid du Colombier } Point; 145*219b2ee8SDavid du Colombier 146*219b2ee8SDavid du Colombier /* 147*219b2ee8SDavid du Colombier * 148*219b2ee8SDavid du Colombier * An array of type Fontmap helps convert font names requested by users into 149*219b2ee8SDavid du Colombier * legitimate PostScript names. The array is initialized using FONTMAP, which must 150*219b2ee8SDavid du Colombier * end with an entry that has NULL defined as its name field. 151*219b2ee8SDavid du Colombier * 152*219b2ee8SDavid du Colombier */ 153*219b2ee8SDavid du Colombier 154*219b2ee8SDavid du Colombier typedef struct { 155*219b2ee8SDavid du Colombier char *name; /* user's font name */ 156*219b2ee8SDavid du Colombier char *val; /* corresponding PostScript name */ 157*219b2ee8SDavid du Colombier } Fontmap; 158*219b2ee8SDavid du Colombier 159*219b2ee8SDavid du Colombier #define FONTMAP \ 160*219b2ee8SDavid du Colombier \ 161*219b2ee8SDavid du Colombier { \ 162*219b2ee8SDavid du Colombier "R", "Courier", \ 163*219b2ee8SDavid du Colombier "I", "Courier-Oblique", \ 164*219b2ee8SDavid du Colombier "B", "Courier-Bold", \ 165*219b2ee8SDavid du Colombier "CO", "Courier", \ 166*219b2ee8SDavid du Colombier "CI", "Courier-Oblique", \ 167*219b2ee8SDavid du Colombier "CB", "Courier-Bold", \ 168*219b2ee8SDavid du Colombier "CW", "Courier", \ 169*219b2ee8SDavid du Colombier "PO", "Courier", \ 170*219b2ee8SDavid du Colombier "courier", "Courier", \ 171*219b2ee8SDavid du Colombier "cour", "Courier", \ 172*219b2ee8SDavid du Colombier "co", "Courier", \ 173*219b2ee8SDavid du Colombier NULL, NULL \ 174*219b2ee8SDavid du Colombier } 175*219b2ee8SDavid du Colombier 176*219b2ee8SDavid du Colombier /* 177*219b2ee8SDavid du Colombier * 178*219b2ee8SDavid du Colombier * Some of the non-integer valued functions in posttek.c. 179*219b2ee8SDavid du Colombier * 180*219b2ee8SDavid du Colombier */ 181*219b2ee8SDavid du Colombier 182*219b2ee8SDavid du Colombier char *get_font(); 183*219b2ee8SDavid du Colombier 184