Revision: 14137
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 20, 2009 04:09 by Zufolek
Initial Code
#include <go32.h>
#include <dpmi.h>
#include <pc.h>
#include <sys/movedata.h>
#include <sys/farptr.h>
static inline void vgamode(int n){
__dpmi_regs r;
r.x.ax=n;
__dpmi_int(0x10,&r);
}
/* switch to mode 13h when program starts */
__attribute__((constructor))
void grafixinit(){
vgamode(0x13);
}
/* switch back to mode 3 and kill sound when program exits */
__attribute__((destructor))
void grafixend(){
vgamode(3);
nosound();
}
static inline void vsync(){
/* wait until any previous retrace has ended */
do{}while(inportb(0x3DA) & 8);
/* wait until a new retrace has just begun */
do{}while(!(inportb(0x3DA) & 8));
}
/* sets a color 0..255 in the palette with rgb values 0,,63 */
static inline void setcolor(const unsigned char n,const unsigned char r,const unsigned char g,const unsigned char b){
outportb(0x3C8,n);
outportb(0x3C9,r);
outportb(0x3C9,g);
outportb(0x3C9,b);
}
/* set pixel */
static inline void pset(const unsigned x,const unsigned y,const unsigned char color){
if(x<320&&y<200)
_farpokeb(_dos_ds, 0xA0000+x+((y<<8)+(y<<6)), color);
}
/* sets 2 pixels at once, color is 2 bytes */
static inline void psetw(const unsigned x,const unsigned y,const unsigned short color){
if(x<319&&y<200)
_farpokew(_dos_ds, 0xA0000+x+((y<<8)+(y<<6)), color);
}
/* sets 4 pixels at once, color is 4 bytes */
static inline void psetl(const unsigned x,const unsigned y,const unsigned long color){
if(x<317&&y<200)
_farpokel(_dos_ds, 0xA0000+x+((y<<8)+(y<<6)), color);
}
Initial URL
Initial Description
Provides the basics for mode 13h
Initial Title
vga mode 13h for djgpp
Initial Tags
Initial Language
C