From: John Tsiombikas Date: Mon, 18 Nov 2019 15:43:53 +0000 (+0200) Subject: adding the previous gfx.h file, will re-write the code X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=commitdiff_plain;h=acf706a52fdef3bea3f4ae07b7797395f854c11e adding the previous gfx.h file, will re-write the code --- diff --git a/src/dos/gfx.h b/src/dos/gfx.h new file mode 100644 index 0000000..109bbcf --- /dev/null +++ b/src/dos/gfx.h @@ -0,0 +1,60 @@ +#ifndef GFX_H_ +#define GFX_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +void *set_video_mode(int xsz, int ysz, int bpp); +int set_text_mode(void); + +int get_color_depth(void); +int get_color_bits(int *rbits, int *gbits, int *bbits); +int get_color_shift(int *rshift, int *gshift, int *bshift); +int get_color_mask(unsigned int *rmask, unsigned int *gmask, unsigned int *bmask); + +void set_palette(int idx, int r, int g, int b); + +enum { + FLIP_NOW, + FLIP_VBLANK, + FLIP_VBLANK_WAIT +}; +/* page flip and return pointer to the start of the display area (front buffer) */ +void *page_flip(int vsync); + +#ifdef __WATCOMC__ +void wait_vsync(void); +#pragma aux wait_vsync = \ + "mov dx, 0x3da" \ + "l1:" \ + "in al, dx" \ + "and al, 0x8" \ + "jnz l1" \ + "l2:" \ + "in al, dx" \ + "and al, 0x8" \ + "jz l2" \ + modify[al dx]; +#endif + +#ifdef __DJGPP__ +#define wait_vsync() asm volatile ( \ + "mov $0x3da, %%dx\n\t" \ + "0:\n\t" \ + "in %%dx, %%al\n\t" \ + "and $8, %%al\n\t" \ + "jnz 0b\n\t" \ + "0:\n\t" \ + "in %%dx, %%al\n\t" \ + "and $8, %%al\n\t" \ + "jz 0b\n\t" \ + :::"%eax","%edx") +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* GFX_H_ */