Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 *
 * Tektronix 4014 control codes.
 *
 */

#define NUL '\000'
#define SOH '\001'
#define STX '\002'
#define ETX '\003'
#define EOT '\004'
#define ENQ '\005'
#define ACK '\006'
#define BEL '\007'
#define BS  '\010'
#define HT  '\011'
#define NL  '\012'
#define VT  '\013'
#define FF  '\014'
#define CR  '\015'
#define SO  '\016'
#define SI  '\017'
#define DLE '\020'
#define DC1 '\021'
#define DC2 '\022'
#define DC3 '\023'
#define DC4 '\024'
#define NAK '\025'
#define SYN '\026'
#define ETB '\027'
#define CAN '\030'
#define EM  '\031'
#define SUB '\032'
#define ESC '\033'
#define FS  '\034'
#define GS  '\035'
#define RS  '\036'
#define US  '\037'
#define DEL '\177'

/*
 *
 * A few definitions used to classify the different tektronix states. OUTMODED
 * is returned by control() and esc(), and typically means the state has changed.
 *
 */

#define OUTMODED        -1
#define ALPHA           0
#define GIN             1
#define GRAPH           2
#define POINT           3
#define SPECIALPOINT    4
#define INCREMENTAL     5
#define RESET           6
#define EXIT            7

/*
 *
 * The pen state, either UP or DOWN, controls whether vectors are drawn.
 *
 */

#define UP              0
#define DOWN            1

/*
 *
 * Coordinates of the upper right corner of the screen - almost the real screen
 * dimensions.
 *
 */

#define TEKXMAX         4096
#define TEKYMAX         3120

/*
 *
 * The size of the spot in SPECIALPOINT mode is controlled by a non-linear
 * function that has a domain that consists of the integers from 040 to 0175.
 * The next definition is used to initialize the special point mode intensity
 * array that implements the function. Data came from table F-6 in the tektronix
 * 4014 manual.
 *
 */

#define INTENSITY                                                       \
                                                                        \
        {                                                               \
            14, 16, 17, 19, 20, 22, 23, 25,                             \
            28, 31, 34, 38, 41, 44, 47, 50,                             \
            56, 62, 69, 75, 81, 88, 94,100,                             \
            56, 62, 69, 75, 81, 88, 94,100,                             \
             0,  1,  1,  1,  1,  1,  1,  2,                             \
             2,  2,  2,  2,  3,  3,  3,  3,                             \
             4,  4,  4,  5,  5,  5,  6,  6,                             \
             7,  8,  9, 10, 11, 12, 12, 13,                             \
            14, 16, 17, 19, 20, 22, 23, 25,                             \
            28, 31, 34, 38, 41, 44, 47, 50,                             \
            56, 62, 69, 75, 81, 88, 94,100,                             \
            56, 62, 69, 75, 81, 88, 94,100,                             \
        }

/*
 *
 * The next two definitions give the height and width of characters in the four
 * different sizes available on tektronix terminals. TEKFONT is the default index
 * into CHARHEIGHT and CHARWIDTH.
 *
 */

#define CHARHEIGHT      {88, 82, 53, 48}
#define CHARWIDTH       {56, 51, 34, 31}
#define TEKFONT         2

/*
 *
 * The entries defined in STYLES are passed on to the PostScript operator setdash.
 * They're used to implement the different tektronix line styles. Belongs in the
 * prologue!
 *
 */

#define STYLES                                                          \
                                                                        \
        {                                                               \
            "[]",                                                       \
            "[.5 2]",                                                   \
            "[.5 2 4 2]",                                               \
            "[4 4]",                                                    \
            "[8 4]",                                                    \
            "[]"                                                        \
        }

/*
 *
 * Variables of type Point are used to keep track of the cursor position.
 *
 */

typedef struct {
        int     x;
        int     y;
} Point;

/*
 *
 * An array of type Fontmap helps convert font names requested by users into
 * legitimate PostScript names. The array is initialized using FONTMAP, which must
 * end with an entry that has NULL defined as its name field.
 *
 */

typedef struct {
        char    *name;                  /* user's font name */
        char    *val;                   /* corresponding PostScript name */
} Fontmap;

#define FONTMAP                                                         \
                                                                        \
        {                                                               \
            "R", "Courier",                                             \
            "I", "Courier-Oblique",                                     \
            "B", "Courier-Bold",                                        \
            "CO", "Courier",                                            \
            "CI", "Courier-Oblique",                                    \
            "CB", "Courier-Bold",                                       \
            "CW", "Courier",                                            \
            "PO", "Courier",                                            \
            "courier", "Courier",                                       \
            "cour", "Courier",                                          \
            "co", "Courier",                                            \
            NULL, NULL                                                  \
        }

/*
 *
 * Some of the non-integer valued functions in posttek.c.
 *
 */

char    *get_font();