:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / drivers / dd / vga / display / vgavideo / vgavideo.h
1 // FIXME: Make these variables so we can also use modes like 800x600
2 #define SCREEN_X        640
3 #define SCREEN_Y        480
4
5 #define VGA_NORMAL 0
6 #define VGA_AND    8
7 #define VGA_OR     16
8 #define VGA_XOR    24
9
10 //This is in mingw standard headers
11 //typedef struct { int quot, rem; } div_t;
12
13 extern int maskbit[640];
14 extern int y80[480];
15 extern int xconv[640];
16 extern int bit8[640];
17 extern int startmasks[8];
18 extern int endmasks[8];
19
20 extern UCHAR PreCalcReverseByte[256];
21
22 extern char* vidmem;
23
24 #define MISC     0x3c2
25 #define SEQ      0x3c4
26 #define CRTC     0x3d4
27 #define GRAPHICS 0x3ce
28 #define FEATURE  0x3da
29 #define ATTRIB   0x3c0
30 #define STATUS   0x3da
31
32 typedef struct _VideoMode {
33   unsigned short VidSeg;
34   unsigned char  Misc;
35   unsigned char  Feature;
36   unsigned char  Seq[5];
37   unsigned char  Crtc[25];
38   unsigned char  Gfx[9];
39   unsigned char  Attrib[21];
40 } VideoMode;
41
42 VOID vgaPreCalc();
43 VOID vgaPutPixel(INT x, INT y, UCHAR c);
44 VOID vgaPutByte(INT x, INT y, UCHAR c);
45 VOID vgaGetByte(ULONG offset,
46                 UCHAR *b, UCHAR *g,
47                 UCHAR *r, UCHAR *i);
48 INT vgaGetPixel(INT x, INT y);
49 BOOL vgaHLine(INT x, INT y, INT len, UCHAR c);
50 BOOL vgaVLine(INT x, INT y, INT len, UCHAR c);
51 INT abs(INT nm);
52 BOOL VGADDIIntersectRect(PRECTL prcDst, PRECTL prcSrc1, PRECTL prcSrc2);
53
54 #define SEQ_I   0x3C4           /* Sequencer Index */
55 #define SEQ_D   0x3C5           /* Sequencer Data Register */
56
57 #define GRA_I   0x3CE           /* Graphics Controller Index */
58 #define GRA_D   0x3CF           /* Graphics Controller Data Register */
59
60 #define LowByte(w)  (*((unsigned char *)&(w) + 0))
61 #define HighByte(w) (*((unsigned char *)&(w) + 1))
62
63 #define ASSIGNVP4(x, y, vp) vp = vidmem /* VBUF */ + (((x) + (y)*SCREEN_X) >> 3);
64 #define ASSIGNMK4(x, y, mask) mask = 0x80 >> ((x) & 7);
65
66 void get_masks(int x, int w);