/* UNISRC_ID: %W% %E% */ /********************************************************************* * file: h/scrn/terminali.h * part #: * internal sequence #: * * ************************************************************ * * " c Copyright Hewlett-Packard Company, 1984.* All * * * rights are reserved. Copying or other reproduction * * * of this program except for archival purposes is * * * prohibited without the prior written consent of * * * Hewlett-Packard Company." * * ************************************************************ * * * This file contains the declarations and structures for the terminal * emulator. The definitions are internal to the terminal driver. * It must have scrn/smsysdep.h (for wmicom.h), sys/types.h (for tty.h), * sys/tty.h (for wmicom.h), scrn/disp.h, scrn/wmcom.h (for wmicom.h) * and scrn/wmicom.h included in front of it. * * Pisces Q-DOS project * Karen Helt PCD * ---------------------------------------------------- * initial 2/24/83 * add font changing 3/11/83 * change window structure in * term_data 3/31/83 * move general window stuff * to wmcom.h 4/5/83 jab * add comments 6/15/83 * change term_data 9/1/83 * split into two files 10/21/83 * ************************************************************************/ #define STR_SIZE 80 /* string size for softkey definitions */ #define LABEL_SIZE 8 /* string size for softkey labels */ #define RET_SIZE 8 /* string size for return key definition */ #define ENTER_SIZE 8 /* string size for enter key definition */ #define PSIZE 20 #define BUF_ROW tp->cd.sd.w_gen1 /* number of rows in terminal buffer */ #define BUF_COL tp->cd.sd.w_gen2 /* num of columns in terminal buffer */ #define BUF_ROW_DEFAULT 48 /* default number of rows in terminal buffer */ #define BUF_COL_DEFAULT 80 /* default num of columns in terminal buffer */ #define LOG_HEIGHT 24 /* number of rows in logical screen */ #define LOG_WIDTH 80 /* number of columns in logical screen */ #define TAB BUF_ROW /* tabs are in BUF_ROW row of the byte map */ #define COUNT BUF_COL * 2 /* count is in column BUF_COL * 2 */ #define T0INTR 03 /* control c */ #define T0ERASE 010 /* BS - control h */ #define T0KILL 025 /* control u */ #define MEM_LOCK 0x8000 /* bit to toggle in asterisk for memory lock */ #define MEM_LOCK_KEY 1 /* softkey number for memory lock */ #define DISP_FUNC 0x100 /* bit to toggle in asterisk for display func */ #define DISP_FUNC_KEY 8 /* softkey number for display func */ /* states in escape sequence parsing */ #define INIT_STATE 0 /* initial state */ #define ESCAPE 1 /* saw an escape */ #define AMP 2 /* saw an escape & */ #define AMP_A 3 /* saw an escape & a */ #define AMP_A_NUM 4 /* saw an escape & a number */ #define AMP_A_MIN 5 /* saw an escape & a - */ #define AMP_A_PLS 6 /* saw an escape & a + */ #define AMP_A_MIN_NUM 7 /* saw an escape & a - number */ #define AMP_A_PLS_NUM 8 /* saw an escape & a + number */ #define AMP_D 9 /* saw an escape & d */ #define AMP_F 10 /* saw an escape & f */ #define AMP_F_NUM 11 /* saw an escape & f number */ #define AMP_F_MIN 12 /* saw an escape & f - */ #define AMP_F_MIN_NUM 13 /* saw an escape & f - number */ #define AMP_F_STR 14 /* saw an escape & f string */ #define AMP_J 15 /* saw an escape & j */ #define AMP_K 16 /* saw an escape & k */ #define AMP_K_0 17 /* saw an escape & k 0 */ #define AMP_K_1 18 /* saw an escape & k 1 */ #define AMP_R 19 /* saw an escape & r */ #define AMP_R_NUM 20 /* saw an escape & r number */ #define AMP_S 21 /* saw an escape & s */ #define AMP_S_0 22 /* saw an escape & s 0 */ #define AMP_S_1 23 /* saw an escape & s 1 */ #define LPAREN 24 /* saw an escape ( */ #define RPAREN 25 /* saw an escape ) */ #define ASTERISK 26 /* saw an escape * */ #define ASTERISK_D 27 /* saw an escape * d */ #define ASTERISK_S 28 /* saw an escape * s */ #define LBRAC 29 /* saw an escape [ */ #define ANSI_ZERO 30 /* saw an escape [ 0 */ #define ANSI_ONE 31 /* saw an escape [ 1 */ #define ANSI_TWO 32 /* saw an escape [ 2 */ #define ANSI_NUM 33 /* saw an escape [ num */ #define ANSI_2_NUM 34 /* saw an escape [ num ; */ #define ANSI_SPACE 35 /* saw an escape [ num space */ #define ANSI_CHMOD 36 /* saw an escape [ = or escape [ ? */ #define ANSI_WRAP 37 /* saw an escape [=7 or escape [?7 */ #define ERROR_STATE 38 /* error in escape sequence */ #define ANSI_IGNORE 39 /* ignore ansi seq */ /* runtime routines */ extern int message(); extern int wr_char(); extern int ring_bell(); extern int backspace(); extern int tab(); extern int linefeed(); extern int car_return(); extern int set_tab(); extern int clear_tab(); extern int clr_all_tab(); extern int set_left_marg(); extern int set_right_marg(); extern int clear_marg(); extern int curs_up(); extern int curs_down(); extern int curs_right(); extern int curs_left(); extern int home_down(); extern int home_up(); extern int clr_display(); extern int clear_line(); extern int insert_line(); extern int delete_line(); extern int insert_char(); extern int delete_char(); extern int off_insert_char(); extern int roll_up(); extern int roll_down(); extern int next_page(); extern int prev_page(); extern int display_func(); extern int off_display_func(); extern int term_status(); extern int term_id(); extern int rel_curs_pos(); extern int abs_curs_pos(); extern int enable_key(); extern int disable_key(); extern int enter_line(); extern int back_tab(); extern int default_a(); extern int default_f(); extern int clr_str_parm(); extern int attr_off(); extern int blink(); extern int blink_ul(); extern int blink_iv(); extern int blink_iv_ul(); extern int half(); extern int half_blink(); extern int half_blink_ul(); extern int half_blink_iv(); extern int half_ul(); extern int half_iv(); extern int half_iv_ul(); extern int iv(); extern int ul(); extern int iv_ul(); extern int half_blink_iv_ul(); extern int def_key_1(); extern int def_key_2(); extern int def_key_3(); extern int def_key_4(); extern int sys_menu(); extern int appl_menu(); extern int menu_off(); extern int caps_off(); extern int caps_on(); extern int roll_1(); extern int roll_2(); extern int roll_3(); extern int roll_4(); extern int appl_keys(); extern int enter_str(); extern int resume_out(); extern int stop_out(); extern int std_font(); extern int alt_font(); extern int curs_on(); extern int curs_off(); extern int def_scr_col(); extern int def_scr_row(); extern int def_scr_col_move(); extern int def_scr_row_move(); extern int def_abs_col(); extern int def_abs_row(); extern int def_abs_col_move(); extern int def_abs_row_move(); extern int scr_col(); extern int scr_row(); extern int scr_col_move(); extern int scr_row_move(); extern int abs_col(); extern int abs_row(); extern int abs_col_move(); extern int abs_row_move(); extern int curs_col(); extern int curs_row(); extern int curs_col_move(); extern int curs_row_move(); extern int strapa_on(); extern int strapa_off(); extern int ansi_mode(); extern int hp_mode(); extern int save_curs(); extern int restore_curs(); extern int clr_beg_disp(); extern int clr_beg_line(); extern int clr_all_disp(); extern int clr_all_line(); extern int mult_up(); extern int mult_down(); extern int mult_right(); extern int mult_left(); extern int mult_del_char(); extern int mult_del_line(); extern int mult_insrt_line(); extern int mult_sub_page(); extern int mult_prev_page(); extern int mult_back_tab(); extern int return_cpr(); extern int set_graph_1(); extern int set_graph_2(); extern int set_mode(); extern int reset_mode(); extern int ansi_move(); extern int shift_out(); extern int shift_in(); extern int ansi_roll_right(); extern int ansi_roll_left(); extern int wrap_on(); extern int wrap_off(); extern int term_status_two(); struct modes { /* terminal modes */ char insert; /* insert character */ char keyboard; /* keyboard enabled */ char inverse; /* inverse video enchancement */ char underline; /* underline char enchancement */ char blinking; /* blinking enchancement (mapped to inverse video in Pisces) */ char half_bright; /* half_bright enchancement (mapped to inverse video in Pisces) */ char cursor; /* cursor on */ char default_curs; /* use default cursor in font */ char strapa; /* strap a, transmit functions */ char ansi; /* ansi escape sequence mode */ char sync; /* window not showing and data changed*/ char wrap; /* wrap at end of line */ char base_font; /* base font active */ char snap; /* will key snap cursor in window? */ }; struct term_data{ /* terminal data structure */ struct ttcom cd; /* window comman data - MUST BE FIRST */ /* ITEM IN term_data */ /* escape sequence parsing variables */ unsigned char parm5[STR_SIZE + 1]; unsigned char parm6[STR_SIZE + 1]; int cnt_parm5; /* count of characters in parm5 */ int cnt_parm6; /* count of characters in parm6 */ int log_height; /* height of logical screen in rows */ int log_width; /* width of logical screen in columns */ char cursval; /* cursor value */ char curs_top; /* cursor top */ char curs_bot; /* cursor bottom */ char cursor[PATTERNSIZE]; /* cursor pattern */ struct modes t_modes; /* terminal modes */ int left_marg; /* column of left margin */ int right_marg; /* column of right margin */ int curs_row; /* cursor row in term buffer */ int curs_col; /* cursor column in term buffer */ int save_row; /* saved cursor row in term buffer */ int save_col; /* saved cursor column in term buffer */ /* logical screen */ int log_row; /* origin row in term buffer */ int log_col; /* origin col in term buffer */ int base_font_num; /* term base font escape seq number */ int alt_font_num; /* term alt font escape seq number */ unsigned char base_font_char; /* term base font escape seq char */ unsigned char alt_font_char; /* term alt font escape seq char */ char font_width; /* font width in dots */ char font_height; /* font height in dots */ long font_id; /* id of the active font */ long base_font_id; /* id of the base font */ long alt_font_id; /* id of the alternate font */ long fonts[FONT_ID_MAX + 1]; /* lists of font ids used in terminal */ int win_row; /* window origin row in term buffer */ int win_col; /* window origin col in term buffer */ int win_width; /* num of col in window (round up) */ int win_height; /* num of rows in window (round up) */ int fa_rectx; /* x coord. of fast alpha rectangle */ int fa_recty; /* y coord. of fast alpha rectangle */ int fa_rectw; /* width of fast alpha rectangle */ int fa_recth; /* height of fast alpha rectangle */ char key_attr[NUM_KEYS]; /* user softkey attribute */ unsigned char key_str[NUM_KEYS][STR_SIZE + 1]; /* user softkey definition string */ char ret_attr; /* return key attribute */ unsigned char ret[RET_SIZE + 1]; /* return key definition */ char enter_attr; /* enter key attribute */ unsigned char enter[ENTER_SIZE + 1]; /* enter key definition */ unsigned char * term_char[1]; /* byte map of characters */ }; struct funcptr { PFI_t func; }; extern int in_disp_func(); extern int term_ioctl(); extern int term_sync(); extern int term_snap(); extern char * strcat(); /* * term_funarr is an array of functions in t0table.c, */ extern struct funcptr term_funarr[]; extern struct seq *term_table[]; extern char t0cchar[]; extern unsigned char hp_term_esc[][8]; extern unsigned char ansi_term_esc[][8]; extern char term0[]; extern struct menu term0_menu;