|
|
1.1 ! root 1: #include <X/mit-copyright.h> ! 2: ! 3: /* Copyright Massachusetts Institute of Technology 1984, 1985 */ ! 4: ! 5: /* ptyx.h */ ! 6: ! 7: #define MAX_COLS 200 ! 8: #define MAX_ROWS 128 ! 9: ! 10: /* ! 11: * The origin of a screen is 0, 0. Therefore, the number of rows ! 12: * on a screen is screen->max_row + 1, and similarly for columns. ! 13: */ ! 14: ! 15: typedef short **ScrnBuf; ! 16: ! 17: /* ! 18: * ANSI emulation. ! 19: */ ! 20: #define INQ 0x05 ! 21: #define FF 0x0C /* C0, C1 control names */ ! 22: #define LS1 0x0E ! 23: #define LS0 0x0F ! 24: #define CAN 0x18 ! 25: #define SUB 0x1A ! 26: #define ESC 0x1B ! 27: #define US 0x1F ! 28: #define DEL 0x7F ! 29: #define SS2 0x8E ! 30: #define SS3 0x8F ! 31: #define DCS 0x90 ! 32: #define OLDID 0x9A /* ESC Z */ ! 33: #define CSI 0x9B ! 34: #define ST 0x9C ! 35: #define OSC 0x9D ! 36: #define PM 0x9E ! 37: #define APC 0x9F ! 38: #define RDEL 0xFF ! 39: ! 40: #define NPARAM 10 /* Max. parameters */ ! 41: ! 42: typedef struct { ! 43: unsigned char a_type; ! 44: unsigned char a_pintro; ! 45: unsigned char a_final; ! 46: unsigned char a_inters; ! 47: char a_nparam; /* # of parameters */ ! 48: char a_dflt[NPARAM]; /* Default value flags */ ! 49: short a_param[NPARAM]; /* Parameters */ ! 50: char a_nastyf; /* Error flag */ ! 51: } ANSI; ! 52: ! 53: typedef struct { ! 54: int row; ! 55: int col; ! 56: unsigned flags; /* Vt100 saves graphics rendition. Ugh! */ ! 57: } SavedCursor; ! 58: ! 59: typedef struct { ! 60: Window window; /* X window for screen */ ! 61: Window iconwindow; /* window for icon */ ! 62: Bitmap iconmask; /* mask for icon outline */ ! 63: int border; /* inner border */ ! 64: int borderwidth; /* outer border */ ! 65: int width; /* width of window - borders (pixels)*/ ! 66: int height; /* height of window -borders (pixels)*/ ! 67: Display *display; /* X display for screen */ ! 68: int respond; /* socket for responses ! 69: (position report, etc.) */ ! 70: ! 71: /* Terminal fonts must be of the same size and of fixed width */ ! 72: Font fnt_norm; /* normal font of terminal */ ! 73: Font fnt_bold; /* bold font of terminal */ ! 74: int f_width; /* width of fonts in pixels */ ! 75: int f_height; /* height of fonts in pixels */ ! 76: ! 77: int cur_col; /* current cursor column */ ! 78: int cur_row; /* current cursor row */ ! 79: int max_col; /* rightmost column */ ! 80: int max_row; /* bottom row */ ! 81: int top_marg; /* top line of scrolling region */ ! 82: int bot_marg; /* bottom line of " " */ ! 83: ! 84: ScrnBuf buf; /* screen buffer */ ! 85: Bitmap cursor; /* cursor bits */ ! 86: Bitmap mask; /* mask cursor bits */ ! 87: Cursor curs; /* cursor resource from X */ ! 88: Cursor rcurs; /* reverse version of cursor */ ! 89: int foreground; /* foreground color */ ! 90: int background; /* Background color */ ! 91: int cursorcolor; /* Cursor color */ ! 92: int mousecolor; /* Mouse color */ ! 93: Pixmap bordertile; /* tile pixmap for border */ ! 94: Pixmap bgndtile; /* background tile pixmap */ ! 95: unsigned xorplane; /* z plane for inverts */ ! 96: unsigned short do_wrap; /* true if cursor in last column ! 97: and character just output */ ! 98: short incopy; /* 0 if no RasterCopy exposure ! 99: event processed since last ! 100: RasterCopy */ ! 101: #ifdef CROCKSCROLL ! 102: short scrollincr; /* scroll increment */ ! 103: #endif ! 104: unsigned short multiscroll; /* true if multi-scroll */ ! 105: int scrolls; /* outstanding scroll count */ ! 106: SavedCursor sc; /* data for restore cursor */ ! 107: long pid; /* pid of process on far side */ ! 108: ! 109: /* Improved VT100 emulation stuff. */ ! 110: ANSI ansi; /* ANSI parsing variables. */ ! 111: char gsets[4]; /* G0 through G3. */ ! 112: char curgl; /* Current GL setting. */ ! 113: char curgr; /* Current GR setting. */ ! 114: char curss; /* Current single shift. */ ! 115: char rx8bit; /* TRUE if Rx is 8 bit. */ ! 116: char tx8bit; /* TRUE if Tx is 8 bit. */ ! 117: /* Tektronix plotting information */ ! 118: int TekEmu; /* true if Tektronix emulation */ ! 119: int cur_X; /* current screen x */ ! 120: int cur_Y; /* current screen y */ ! 121: int cur_x; /* current Tektronix x */ ! 122: int cur_y; /* current Tektronix y */ ! 123: int pen; /* current Tektronix pen 0=up, 1=dn */ ! 124: double TekScale; /* scale factor Tek -> vs100 */ ! 125: int TekGMode; /* plot mode switch */ ! 126: int TekAMode; /* alpha after plot mode switch */ ! 127: int TekIMode; /* incremental plot mode switch */ ! 128: int TekPMode; /* point plot mode switch */ ! 129: #ifdef JUMPSCROLL ! 130: int scroll_amt; /* amount to scroll */ ! 131: int refresh_amt; /* amount to refresh */ ! 132: int jumpscroll; /* whether we should jumpscroll */ ! 133: #endif JUMPSCROLL ! 134: int (*mode)(); /* this will be THE mode */ ! 135: unsigned short send_mouse_pos; /* user wants mouse transition */ ! 136: /* and position information */ ! 137: } Screen; ! 138: ! 139: /* meaning of bits for entries in screen buffer */ ! 140: #define CHAR 0177 ! 141: #define BOLDbit 0200 ! 142: #define INVERSEbit 0400 ! 143: ! 144: ! 145: typedef struct ! 146: { ! 147: unsigned offset; /* status of shift, control, meta */ ! 148: #define SHIFT 0x0001 ! 149: #define META 0x0002 ! 150: #define CONTROL 0x0004 ! 151: ! 152: unsigned flags; ! 153: } Keyboard; ! 154: ! 155: /* define masks for flags */ ! 156: #define CAPS_LOCK 0x01 ! 157: #define KYPD_APL 0x02 ! 158: #define CURSOR_APL 0x04 ! 159: ! 160: ! 161: #define MAX_TABS 320 ! 162: #define TAB_ARRAY_SIZE 10 /* number of ints to provide MAX_TABS bits */ ! 163: ! 164: typedef unsigned Tabs [TAB_ARRAY_SIZE]; ! 165: ! 166: ! 167: #define BUF_SIZE 4096 ! 168: ! 169: typedef struct ! 170: { ! 171: int cnt; /* count of char's left in buf */ ! 172: unsigned char *ptr; /* pointer to next char in buf */ ! 173: unsigned char buf[BUF_SIZE]; /* buffer */ ! 174: int fildes; /* file descriptor to read from */ ! 175: } Buffer; ! 176: ! 177: ! 178: typedef struct ! 179: { ! 180: Keyboard keyboard; /* terminal keyboard */ ! 181: Screen screen; /* terminal screeen */ ! 182: Buffer buf; /* buffer for data to process */ ! 183: unsigned flags; /* mode flags */ ! 184: Tabs tabs; /* tabstops of the terminal */ ! 185: } Terminal; ! 186: ! 187: ! 188: /* masks for terminal flags */ ! 189: ! 190: #define INVERSE 0x01 /* invert the characters to be output */ ! 191: #define LINEFEED 0x02 ! 192: #define BOLD 0x04 ! 193: #define WRAPAROUND 0x08 ! 194: #define REVERSE_VIDEO 0x10 /* true if screen white on black */ ! 195: #define ORIGIN 0x20 /* true if in origin mode */ ! 196: #define INSERT 0x40 /* true if in insert mode */ ! 197: #define SMOOTHSCROLL 0x80 /* true if in smooth scroll mode */ ! 198: ! 199: /* must be a power of two */ ! 200: #define TEK_LINK_BLOCK_SIZE 1024 ! 201: ! 202: typedef struct _TekLink ! 203: { ! 204: struct _TekLink *next; /* pointer to next TekLink in list ! 205: NULL <=> this is last TekLink */ ! 206: unsigned char data [TEK_LINK_BLOCK_SIZE]; ! 207: } TekLink; ! 208: ! 209: #define TekBufPut(chr) \ ! 210: /* if out of memory malloc some more */ \ ! 211: { \ ! 212: if (tb_end & TEK_LINK_BLOCK_SIZE) \ ! 213: TekBufExtend (); \ ! 214: tb_end_link->data [tb_end++] = chr; \ ! 215: } ! 216: ! 217: ! 218: #define CursorX(screen) (screen->cur_col * screen->f_width + screen->border) ! 219: #define CursorY(screen) (screen->cur_row * screen->f_height + screen->border) ! 220: ! 221: /* ! 222: * To handle Tektronix plotting well, add graphics cursor position ! 223: * to get correct position for characters on the screen. ! 224: * screen->border is taken into account in screen->cur[XY] ! 225: */ ! 226: ! 227: #define TCursorX(screen) (screen->cur_X) ! 228: #define TCursorY(screen) (screen->cur_Y - screen->f_height) ! 229: ! 230: int ANSInormal(); ! 231: int ANSIparse(); ! 232: int ANSIstring();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.