X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=sympathy.git;a=blobdiff_plain;f=src%2Fvt102.h;h=02fdf990718abd080b5d831a4dcbf568da5fb994;hp=6942175a589b7f09f56dbfb90fa81182759c3737;hb=3e72a1f6fc28777c26e4fb109867bd2a3c7b89b0;hpb=8ba373fecb91b8f276c754f63a5a7f1490f76dcc diff --git a/src/vt102.h b/src/vt102.h index 6942175..02fdf99 100644 --- a/src/vt102.h +++ b/src/vt102.h @@ -12,6 +12,60 @@ /* * $Log$ + * Revision 1.21 2008/02/28 16:57:52 james + * *** empty log message *** + * + * Revision 1.20 2008/02/27 09:42:22 james + * *** empty log message *** + * + * Revision 1.19 2008/02/26 23:23:17 james + * *** empty log message *** + * + * Revision 1.18 2008/02/26 19:08:27 james + * *** empty log message *** + * + * Revision 1.17 2008/02/26 16:53:24 james + * *** empty log message *** + * + * Revision 1.16 2008/02/24 12:22:42 james + * *** empty log message *** + * + * Revision 1.15 2008/02/24 00:42:53 james + * *** empty log message *** + * + * Revision 1.14 2008/02/23 11:48:37 james + * *** empty log message *** + * + * Revision 1.13 2008/02/22 17:07:00 james + * *** empty log message *** + * + * Revision 1.12 2008/02/22 14:51:54 james + * *** empty log message *** + * + * Revision 1.11 2008/02/08 15:06:42 james + * *** empty log message *** + * + * Revision 1.10 2008/02/07 12:16:04 james + * *** empty log message *** + * + * Revision 1.9 2008/02/07 01:57:46 james + * *** empty log message *** + * + * Revision 1.8 2008/02/07 00:39:13 james + * *** empty log message *** + * + * Revision 1.7 2008/02/06 20:26:58 james + * *** empty log message *** + * + * Revision 1.6 2008/02/06 17:53:28 james + * *** empty log message *** + * + * Revision 1.5 2008/02/06 15:53:22 james + * *** empty log message *** + * + * Revision 1.4 2008/02/06 11:30:37 james + * *** empty log message *** + * * Revision 1.3 2008/02/04 20:23:55 james * *** empty log message *** * @@ -26,29 +80,83 @@ #ifndef __VT102_H__ #define __VT102_H__ -#define VT102_CSI_LEN 128 +#define VT102_CMD_LEN 128 -#define VT102_ROWS 24 -#define VT102_COLS 80 +#define VT102_MAX_ROWS ((CRT_ROWS) - 1) +#define VT102_ROWS_24 24 +#define VT102_COLS_132 132 +#define VT102_COLS_80 80 +#define VT102_MAX_COLS VT102_COLS_132 #define VT102_STATUS_ROW 24 +#define VT102_NMODES 32 + + typedef struct { int in_escape; - int in_csi; - int csi_ptr; - char csi_buf[VT102_CSI_LEN]; + int in_cmd; + + int cmd_ptr; + int cmd_more_bytes; + int cmd_termination; + char cmd_buf[VT102_CMD_LEN]; } VT102_parser; typedef struct { - CRT_Pos top_margin,bottom_margin; - CRT_Pos screen_start,screen_end; + CRT_Pos pos; + int attr; + int color; + int origin_mode; +} VT102_State; + + +typedef struct +{ + CRT_Pos top_margin, bottom_margin; + CRT_Pos screen_start, screen_end; VT102_parser parser; int attr; + int color; CRT crt; - CRT_Pos pos; + + int pending_wrap; + CRT_Pos pos, current_line; + + VT102_State saved; + + uint8_t modes[VT102_NMODES]; + uint8_t private_modes[VT102_NMODES]; + + uint8_t tabs[VT102_COLS_132]; + + int application_keypad_mode; + + int last_reg_char; + int xn_glitch; + + CRT_Pos current_size; + CRT_Pos original_size; + + int g[2]; + int cs; + } VT102; +#define VT102_PRIVATE_MODE_CURSOR_MODE 1 +#define VT102_PRIVATE_MODE_VT52 2 +#define VT102_PRIVATE_MODE_132COLS 3 +#define VT102_PRIVATE_MODE_SMOOTH_SCROLL 4 +#define VT102_PRIVATE_MODE_REVERSE_SCREEN 5 +#define VT102_PRIVATE_MODE_ORIGIN_MODE 6 +#define VT102_PRIVATE_MODE_AUTO_WRAP 7 +#define VT102_PRIVATE_MODE_AUTO_REPEAT 8 +#define VT102_PRIVATE_MODE_SHOW_CURSOR 25 + +#define VT102_MODE_KEYBOARD_DISABLE 2 +#define VT102_MODE_INSERT 4 +#define VT102_MODE_LOCAL_ECHO_OFF 12 +#define VT102_MODE_NEWLINE_MODE 20 #endif /* __VT102_H__ */