#include	<stdio.h>
#include	<dos.h>

struct TILE {
	char	id,reserve;
	unsigned	wdh,hgt;
	unsigned char	img[128];
};

extern	unsigned char	gds_fshift;
extern	unsigned	gds_wrkoff;
extern	unsigned	gds_wrkseg;

int	g_tilepattern(char tileid,unsigned height,unsigned char *pln0,
		unsigned char *pln1,unsigned char *pln2,unsigned char *pln3)
{
	union REGS	reg;
	struct SREGS	seg;
	struct TILE	tiledata;
	int	i;
	unsigned char *ptr;

	if((height==0)||(height>32))
		return -1;
	segread(&seg);
	reg.h.ah=gds_fshift+0x7c;
	reg.x.di=(unsigned)&tiledata;
	seg.ds=seg.ss;
	tiledata.id=tileid;
	tiledata.reserve=0;
	tiledata.wdh=8;
	tiledata.hgt=height;
	ptr=&tiledata.img[0];
	for(i=0;i<height;i++)
		*ptr++ = *pln0++;
	for(i=0;i<height;i++)
		*ptr++ = *pln1++;
	for(i=0;i<height;i++)
		*ptr++ = *pln2++;
	for(i=0;i<height;i++)
		*ptr++ = *pln3++;
	reg.x.bx=gds_wrkoff;
	seg.es=gds_wrkseg;
	int86x(0x92,&reg,&reg,&seg);
	return (int)reg.h.ah;
}
