-void vt102_log_line(VT102 *v, int line);
-void vt102_clip_cursor(VT102 *v, CRT_Pos tl, CRT_Pos br);
-void vt102_cursor_normalize(VT102 *v);
-void vt102_cursor_carriage_return(VT102 *v);
-void vt102_cursor_advance_line(VT102 *v);
-void vt102_cursor_advance(VT102 *v);
-void vt102_do_pending_wrap(VT102 *v);
-void vt102_cursor_retard(VT102 *v);
-void vt102_reset_tabs(VT102 *v);
-void vt102_cursor_advance_tab(VT102 *v);
-int vt102_cursor_home(VT102 *v);
-int vt102_cursor_absolute(VT102 *v, int x, int y);
-int vt102_cursor_relative(VT102 *v, int x, int y);
-void vt102_delete_from_line(VT102 *v, CRT_Pos p);
-void vt102_insert_into_line(VT102 *v, CRT_Pos p);
-void vt102_change_mode(VT102 *v, int private, char *ns, int set);
-void vt102_parse_mode_string(VT102 *v, char *buf, int len);
-void vt102_change_attr(VT102 *v, char *na);
-void vt102_parse_attr_string(VT102 *v, char *buf, int len);
-void vt102_save_state(VT102 *v);
-void vt102_restore_state(VT102 *v);
-void vt102_scs(VT102 *c, int g, int s);
-void vt102_parse_esc(VT102 *v, int c);
-void vt102_parse_csi(VT102 *v, char *buf, int len);
-void vt102_status_line(VT102 *v, char *str);
-void vt102_parse_char(VT102 *v, int c, TTY *tty);
-int vt102_parse(VT102 *v, char *buf, int len, TTY *t);
-void vt102_parser_reset(VT102_parser *p);
-void vt102_send(VT102 *v, uint8_t key, TTY *tty);
-void vt102_reset(VT102 *v);
-int vt102_dispatch(VT102 *v, TTY *tty);
-VT102 *vt102_new(void);
-void vt102_free(VT102 *v);
+extern void vt102_log_line(Context *c, int line);
+extern void vt102_history(Context *c, CRT_Pos t, CRT_Pos b);
+extern void vt102_clip_cursor(VT102 *v, CRT_Pos tl, CRT_Pos br);
+extern void vt102_cursor_normalize(VT102 *v);
+extern void vt102_cursor_carriage_return(VT102 *v);
+extern void vt102_cursor_advance_line(Context *c);
+extern void vt102_cursor_advance(Context *c);
+extern void vt102_do_pending_wrap(Context *c);
+extern void vt102_cursor_retard(VT102 *v);
+extern void vt102_reset_tabs(VT102 *v);
+extern void vt102_cursor_advance_tab(VT102 *v);
+extern int vt102_cursor_home(VT102 *v);
+extern int vt102_cursor_absolute(VT102 *v, int x, int y);
+extern int vt102_cursor_relative(VT102 *v, int x, int y);
+extern void vt102_delete_from_line(VT102 *v, CRT_Pos p);
+extern void vt102_insert_into_line(VT102 *v, CRT_Pos p);
+extern void vt102_change_mode(VT102 *v, int private, char *ns, int set);
+extern void vt102_parse_mode_string(VT102 *v, char *buf, int len);
+extern void vt102_change_attr(VT102 *v, char *na);
+extern void vt102_parse_attr_string(VT102 *v, char *buf, int len);
+extern void vt102_save_state(VT102 *v);
+extern void vt102_restore_state(VT102 *v);
+extern void vt102_scs(Context *c, int g, int s);
+extern void vt102_parse_esc(Context *c, int ch);
+extern void vt102_parse_csi(Context *c, char *buf, int len);
+extern void vt102_status_line(VT102 *v, char *str);
+extern void vt102_parse_char(Context *c, int ch);
+extern int vt102_parse(Context *c, char *buf, int len);
+extern void vt102_parser_reset(VT102_parser *p);
+extern void vt102_send(Context *c, uint8_t key);
+extern void vt102_reset(VT102 *v);
+extern int vt102_dispatch(Context *c);
+extern int vt102_dispatch_one(Context *c);
+extern VT102 *vt102_new(void);
+extern void vt102_free(VT102 *v);