7e12554a8d56694df1d03f19a653ad60cce747a1
[dosdemo] / src / dos / gfx.h
1 #ifndef GFX_H_
2 #define GFX_H_
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 void *set_video_mode(int xsz, int ysz, int bpp);
9 int set_text_mode(void);
10
11 int get_color_depth(void);
12 int get_color_bits(int *rbits, int *gbits, int *bbits);
13 int get_color_shift(int *rshift, int *gshift, int *bshift);
14 int get_color_mask(unsigned int *rmask, unsigned int *gmask, unsigned int *bmask);
15
16 void set_palette(int idx, int r, int g, int b);
17
18 #ifdef __WATCOMC__
19 void wait_vsync(void);
20 #pragma aux wait_vsync = \
21         "mov dx, 0x3da" \
22         "l1:" \
23         "in al, dx" \
24         "and al, 0x8" \
25         "jnz l1" \
26         "l2:" \
27         "in al, dx" \
28         "and al, 0x8" \
29         "jz l2" \
30         modify[al dx];
31 #endif
32
33 #ifdef __DJGPP__
34 #define wait_vsync()  asm volatile ( \
35         "mov $0x3da, %%dx\n\t" \
36         "0:\n\t" \
37         "in %%dx, %%al\n\t" \
38         "and $8, %%al\n\t" \
39         "jnz 0b\n\t" \
40         "0:\n\t" \
41         "in %%dx, %%al\n\t" \
42         "and $8, %%al\n\t" \
43         "jz 0b\n\t" \
44         :::"%eax","%edx")
45 #endif
46
47
48 #ifdef __cplusplus
49 }
50 #endif
51
52 #endif  /* GFX_H_ */