#include	<stdio.h>
#include	<dos.h>

struct	COPYRECT {
	unsigned char	sourcepage,reserve1;
	int			x1,y1,x2,y2;
	unsigned char 	destpage,reserve2;
	int			dx,dy;
};

extern	unsigned	char	gds_fshift;
extern	unsigned	gds_wrkoff;
extern	unsigned	gds_wrkseg;

int	g_partcopy(unsigned char srcpage,int startx,int starty,int endx,int endy,
               unsigned char dstpage,int dstx,int dsty,unsigned char mode)
{
	union REGS	reg;
	struct SREGS	seg;
	struct COPYRECT	rect;

	segread(&seg);
	reg.h.ah=gds_fshift+7;
	reg.h.al=mode;
	reg.x.di=(unsigned)&rect;
	seg.ds=seg.ss;
	rect.sourcepage=srcpage;
	rect.reserve1=0;
	rect.x1=startx;
	rect.y1=starty;
	rect.x2=endx;
	rect.y2=endy;
	rect.destpage=dstpage;
	rect.reserve2=0;
	rect.dx=dstx;
	rect.dy=dsty;
	reg.x.bx=gds_wrkoff;
	seg.es=gds_wrkseg;
	int86x(0x92,&reg,&reg,&seg);
	return (int)reg.h.ah;
}
