Metropoli BBS
VIEWER: terminal.h MODE: TEXT (ASCII)
/*
Copyright (C) Magna Carta Software, Inc. 1990, 1991.  All Rights Reserved
C COMMUNICATIONS TOOLKIT
TERMINAL.H -- Common terminal include file.
*/

#if !defined(TERMINAL_H_INCLUDED)
    #define TERMINAL_H_INCLUDED
    #if !defined(CCTDEF_H_INCLUDED)
        #include <cctdef.h>                 /* constant definitions */
    #endif
    #if !defined(CCTTYPE_H_INCLUDED)
        #include <ccttype.h>                /* type definitions */
    #endif


#define TTY             0
#define ANSI_SYS        1
#define ANSI_X364       2
#define DEC_VT52        3
#define DEC_VT100       4
#define DEC_VT220       5
#define DEC_VT320       6
#define ALTOSIII        7
#define TV_910          8
#define TV_912          9
#define TV_925          10


/* CONFIGURABLE TERMINAL PARAMETERS */
#define TERM_COLORS     0
#define TERM_COLS       1
#define TERM_KEYCLICK   2
#define TERM_ROWS       3


#define ATT(fg, bg)     (((bg) << 4) | (fg))
#define CATT(ch, att)   (((att) << 8) | (ch))
#define BG(a)               ((a) >> 4)
#define FG(a)               ((a) & 0XF)
#define SCAN(a)             ((a) >> 8)
#define CURSIZE(top, bot)     (((top) << 8) | bot)
#define isekk(a)            (((a) & 0XFF) == 0XE0)
#define MAX_ESC_LEN         32          /* max. permitted esc. sequence len */
#define MAX_PARM_LEN        20          /* max. permitted parm. length */
#define MAX_TERM_PARMS      24          /* max. permitted # of parms. */
#define TERM_MAX_COLS       132         /* max. permitted no. of columns */
#define MAX_TERM_KEYS       256+12      /* maximum definable keys */
#define MAX_SHIFT_STATES    4           /* maximum number of shift states */
#define MAX_CMD_LEN         16          /* max. len. of a string command */
#define MAX_TERM_CMDS       100         /* maximum number of terminal cmds. */

#define KEYCLICK            8           /* ORed with t->mode if keys click */

#define ANSI_LNM            2           /* CR => CR/LF */
#define ANSI_PRN_CTRL       4           /* printer controller on */
#define PRN_CTRL            4           /* printer controller mode */


/* MANIFEST CONSTANTS FOR HOST AND TERMINAL COMMANDS */
#define TERM_TYPE           0          /* type of terminal (e.g. VT-100) */
/* #define CSI                 1  */        /* Command sequence introducer */


            /* *** TERMINAL TO HOST *** */
#define FIND                0          /* Find */
#define INSERT_HERE         1          /* Insert here */
#define REMOVE              2          /* Remove */
#define SELECT              3          /* Select */
#define PREV_SCREEN         4          /* Prev Screen */
#define NEXT_SCREEN         5          /* Next Screen */


/* FUNCTION KEYS */
#define PF1                 24              /* Programmable function key 1 */
#define PF2                 25              /* Programmable function key 2 */
#define PF3                 26              /* Programmable function key 3 */
#define PF4                 27              /* Programmable function key 4 */
#define PF5                 28              /* Programmable function key 5 */
#define PF6                 29              /* Programmable function key 6 */
#define PF7                 30              /* Programmable function key 7 */
#define PF8                 31              /* Programmable function key 8 */
#define PF9                 32              /* Programmable function key 9 */
#define PF10                33              /* Programmable function key 10 */
#define PF11                34              /* Programmable function key 11 */
#define PF12                35              /* Programmable function key 12 */
#define PF13                36              /* Programmable function key 13 */
#define PF14                37              /* Programmable function key 14 */
#define PF15                38              /* Programmable function key 15 */
#define PF16                39              /* Programmable function key 16 */
#define PF17                40              /* Programmable function key 17 */
#define PF18                41              /* Programmable function key 18 */
#define PF19                42              /* Programmable function key 19 */
#define PF20                43              /* Programmable function key 20 */

#define K_BREAK             44              /* Break */


                /* *** HOST TO TERMINAL *** */
#define LEVEL               1       /* Set terminal level */
#define BELL                2       /* Generate bell tone (if bell enabled) */

/* ANSI COMMANDS */
/* TERMINAL MODES --   (boolean) set / reset */
#define RIS                 1       /* reset to initial state */
#define LNM                 20      /* line feed/new line mode */
#define RM                  3       /* reset mode */
#define SM                  4       /* set mode */

/* CURSOR ATTRIBUTES */
#define CA                  5       /* set cursor attributes */

/* CURSOR POSITIONING */
#define CUU                 10      /* cursor up */
#define CUD                 11      /* cursor down */
#define CUF                 12      /* cursor forward */
#define CUB                 13      /* cursor back */
#define CUP                 14      /* cursor position */
#define HVP                 15      /* cursor horizontal and vertical pos. */
#define IND                 16      /* index */
#define TRI                 17      /* reverse index (RI already assigned) */
#define NEL                 18      /* next line */

/* TAB STOPS */
#define HTS                 2       /* horizontal tab set */
#define TBC                 21      /* clear tab(s) */

/* CHARACTER ATTRIBUTES */
#define SGR                 22      /* set graphics rendition */
#define SCA                 23      /* select character attributes */
#define SCS                 24      /* select character set */
#define SPM                 25      /* set protect mode (TV9xx series) */
#define RPM                 26      /* reset protect mode (TV9xx series) */

/* ERASING */
#define ECH                 45  /* erase character */

#define EBD                 46  /* erase from beg. of display to cursor */
#define ED                  47  /* erase display */
#define EED0                48  /* erase to end of display */
#define EED1                49  /* erase to end of display */

#define EBL                 50  /* erase from beg. of line to cursor */
#define EEL0                51  /* erase from cursor to end of line */
#define EEL1                52  /* erase from cursor to end of line */
#define EL                  53  /* erase line */


/* LINE ATTRIBUTES */
#define SINGLE_HEIGHT       36      /* select single-height characters */
#define DOUBLE_HEIGHT       37      /* select double-height characters */
#define SINGLE_WIDTH        38      /* select single-width characters */
#define DOUBLE_WIDTH        39      /* select double-width characters */

/* EDITING */
#define IL                  40      /* insert lines at cursor */
#define DL                  41      /* delete lines at cursor */
#define ICH                 42      /* ins char(s) at cursor */
#define DEL_CHAR            43      /* del char(s) at cursor */

/* ERASING */
#define EEBD                51  /* erase erasables from beg. of display to cur. */
#define EEBL                52  /* erase erasables from BOL to cursor */
#define EEED                53  /* erase erasable chars in line */
#define EEEL                54  /* erase erasable from cursor to EOD */
#define EEIL                55  /* erase erasable from BOD to cursor */

/* TOP AND BOTTOM MARGINS */
#define SET_MARGINS         57              /* set top and bottom margins */

/* PRINTING */
#define MEDIA_COPY          58              /* printer commands */

/* USER-DEFINED KEYS */
#define DEFINE_KEY          64              /* define terminal key */

/* REPORTS */
#define DA                  65              /* device attributes request */

#define PRI_DA_RESP         66              /* primary device attributes response */
#define SEC_DA_REQ          67              /* secondary device attributes request */
#define SEC_DA_RESP         68              /* secondary device attributes response */

/* DEVICE STATUS REPORT */
#define TERMID              70
#define TDSR                71              /* device status report (DSR already assigned) */
#define CPR                 72              /* host: cursor pos. report request */

/* DSR -- PRINTER PORT */
#define PRN_STATUS_REQ      73              /* host: request printer status */
#define PRN_STATUS_RESP     74              /* term: printer status */

/* USER DEFINABLE KEYS */
#define KEYS_STATUS_REQ     75              /* host: request UDKs status */
#define KEYS_STATUS_RESP    76              /* term: UDKs status */

#define SAVE_CURSOR         30      /* save cursor, wrap flag, origin mode, etc. */
#define REST_CURSOR         31      /* save cursor, wrap flag, origin mode, etc. */



#define MODE_DECANM         80      /* ANSI/VT52 */
#define MODE_DECARM         81      /* DEC auto-repeat mode */
#define MODE_DECAWM         82      /* DEC auto-wrap mode */
#define MODE_DECCKM         83      /* DEC cursor key mode */
#define MODE_DECCOLM        84      /* DEC column mode */
#define MODE_DECINLM        85      /* DEC interlace mode */
#define MODE_DECKPAM        86      /* DEC keypad application mode */
#define MODE_DECKPNM        87      /* DEC keypad numeric mode */
#define MODE_DECOM          88      /* DEC origin */
#define MODE_DECRC          89      /* DEC restore cursor */
#define MODE_DECSC          90      /* DEC save cursor */
#define MODE_DECSCL         91      /* DEC compatibility level */
#define MODE_DECSCLM        92      /* DEC scrolling mode */
#define MODE_DECSCNM        93      /* DEC screen mode */
#define MODE_DECSTBM        94      /* DEC set top & bottom margins */
#define MODE_DECSWL         95      /* DEC single width line */



/* ALIAS */
#define USER1               95              /* extra command 1 */
#define USER2               96              /* extra command 2 */
#define USER3               97              /* extra command 3 */
#define USER4               98              /* extra command 4 */
#define USER5               99              /* extra command 5 */

#endif



short   FCALL_ init_term(struct comm_port *p, TERMINAL *t, void (*v)(void), void (*video)(TERMINAL *t));
short   FCALL_ term_ascii_parse_parms_(TERMINAL *t, short *num);
short   FCALL_ term_assign_cmd(TERMINAL *t, short cmd, const char *sh2t, void (*func)(TERMINAL *, short), const char *st2h);
short   FCALL_ term_assign_key(TERMINAL *t, WORD key, WORD shift, const char *cmd);
short   FCALL_ term_binary_parse_parms_(TERMINAL *t, short *num);
short   FCALL_ term_find_next_tab_stop(TERMINAL *t);
short   FCALL_ term_print_line_(TERMINAL *t);
short   FCALL_ term_set(TERMINAL *t, short parm, long val);
short   FCALL_ term_write(TERMINAL *t, WORD ch);
#if 0
short   FCALL_ strfind_(TERMINAL *t, const char *n);
short   FCALL_ term_c_puts(TERMINAL *t, const char *s);
short   FCALL_ term_c_write(struct comm_port *p, WORD ch);
short   FCALL_ term_conoutc_(struct comm_port *p, short ch);
short   FCALL_ term_parse_(TERMINAL *t, short ch);
void    FCALL_ term_set_tabs_(TERMINAL *t, WORD pos, WORD state);
#endif
#if 0
#define MODE_KBD_ACTION     3       /* Lock/Unlock */
#define MODE_INS_REP        4       /* Insert/Replace */
#define MODE_SEND_RECEIVE   5       /* Send/Receive */
#define MODE_LFNL           6       /* New Line/Line Feed */
#define MODE_CUR_KEY        7       /* Application /Cursor */

#define MODE_ANSI_OFF       9       /* ANSI/VT52 */
#define MODE_COLS           10      /* 132 column /80 column */
#define MODE_SCROLLING      11      /* smooth/jump */
#define MODE_SCREEN         12      /* reverse/normal */
#define MODE_AUTO_WRAP      13      /* on/off */
#define MODE_AUTO_REPEAT    14      /* on/off */
#define MODE_PRINT_FF       15      /* print form feed on/off */
#define MODE_PRINT_EXTENT   16      /* full screen/scrolling region */
#define MODE_KEYPAD_ON      17      /* application/numeric */
#define MODE_KEYPAD_OFF     18      /* application/numeric */
#define MODE_CHAR_SET       19      /* National/Multinational */

/* CURSOR KEYS */
#define K_CUR_UP            6          /* Up arrow */
#define K_CUR_DOWN          7          /* Down arrow */
#define K_CUR_FO            8          /* Right arrow */
#define K_CUR_BA            9          /* Left arrow */

/* AUXILLIARY KEYPAD KEYS */
#define KPD_ZERO            10              /* Keypad '0' */
#define KPD_ONE             11              /* Keypad '1' */
#define KPD_TWO             12              /* Keypad '2' */
#define KPD_THREE           13              /* Keypad '3' */
#define KPD_FOUR            14              /* Keypad '4' */
#define KPD_FIVE            15              /* Keypad '5' */
#define KPD_SIX             16              /* Keypad '6' */
#define KPD_SEVEN           17              /* Keypad '7' */
#define KPD_EIGHT           18              /* Keypad '8' */
#define KPD_NINE            19              /* Keypad '9' */
#define KPD_MINUS           20              /* Keypad '-' */
#define KPD_COMMA           21              /* Keypad ',' */
#define KPD_PERIOD          22              /* Keypad '.' */
#define KPD_ENTER           23              /* Keypad ENTER */

#endif
[ RETURN TO DIRECTORY ]