00001 #ifndef VT_H
00002 #define VT_H
00003
00004 #define VT_WIDTH 40
00005 #define VT_HEIGHT 25
00006 #define BAD_CHAR 0xb8 // substitute for chars with bad parity
00007
00008 struct vt_event
00009 {
00010 int type;
00011 void *resource;
00012 int i1, i2, i3, i4;
00013 void *p1;
00014 };
00015
00016 #define EV_CLOSE 1
00017 #define EV_KEY 2 // i1:KEY_xxx i2:shift-flag
00018 #define EV_MOUSE 3 // i1:button i2:shift-flag i3:x i4:y
00019 #define EV_SELECTION 4 // i1:len p1:data
00020 #define EV_PAGE 5 // p1:vt_page i1:query-flag
00021 #define EV_HEADER 6 // i1:pgno i2:subno i3:flags p1:data
00022 #define EV_XPACKET 7 // i1:mag i2:pkt i3:errors p1:data
00023 #define EV_RESET 8 // ./.
00024 #define EV_TIMER 9 // ./.
00025
00026 #define KEY_F(i) (1000+i)
00027 #define KEY_LEFT 2001
00028 #define KEY_RIGHT 2002
00029 #define KEY_UP 2003
00030 #define KEY_DOWN 2004
00031 #define KEY_PUP 2005
00032 #define KEY_PDOWN 2006
00033 #define KEY_DEL 2007
00034 #define KEY_INS 2008
00035
00036 struct vt_page
00037 {
00038 int pgno, subno;
00039 int lang;
00040 int flags;
00041 int errors;
00042 unsigned int lines;
00043 unsigned char data[VT_HEIGHT][VT_WIDTH];
00044 int flof;
00045 struct {
00046 int pgno;
00047 int subno;
00048 } link[6];
00049 };
00050
00051 #define PG_SUPPHEADER 0x01 // C7 row 0 is not to be displayed
00052 #define PG_UPDATE 0x02 // C8 row 1-28 has modified (editors flag)
00053 #define PG_OUTOFSEQ 0x04 // C9 page out of numerical order
00054 #define PG_NODISPLAY 0x08 // C10 rows 1-24 is not to be displayed
00055 #define PG_MAGSERIAL 0x10 // C11 serial trans. (any pkt0 terminates page)
00056 #define PG_ERASE 0x20 // C4 clear previously stored lines
00057 #define PG_NEWSFLASH 0x40 // C5 box it and insert into normal video pict.
00058 #define PG_SUBTITLE 0x80 // C6 box it and insert into normal video pict.
00059
00060 #define PG_ACTIVE 0x100 // currently fetching this page
00061
00062 #define ANY_SUB 0x3f7f // universal subpage number
00063
00064 #endif
00065