#include	<stdio.h>
#include	<farstr.h>
#include	<dos.h>

struct STRING {
	unsigned	type,dlen;
	int		sx,sy;
	unsigned char	flag,length;
	char	str[256];
};

extern unsigned char	gds_fshift;
extern unsigned 	gds_wrkoff;
extern unsigned 	gds_wrkseg;

int	g_string(int x,int y,unsigned char cont,char far *strings)
{
	union REGS	reg;
	struct SREGS	seg;
	struct {
		unsigned	len;
		struct STRING	strs;
	}	gdata;
	int	i,l;

	l=far_strlen(strings);
	if((l==0)||(l>255))
		return -1;
	segread(&seg);
	reg.h.ah=gds_fshift+0x0f;
	reg.x.di=(unsigned)&gdata;
	seg.ds=seg.ss;
	gdata.len=10+l;
	gdata.strs.type=0x409f;
	gdata.strs.dlen=6+l;
	gdata.strs.sx=x;
	gdata.strs.sy=y;
	gdata.strs.flag=cont;
	gdata.strs.length=l;
	for(i=0;i<l;i++)
		gdata.strs.str[i]=*strings++;
	gdata.strs.str[i]=0;
	reg.x.bx=gds_wrkoff;
	seg.es=gds_wrkseg;
	int86x(0x92,&reg,&reg,&seg);
	return (int)reg.h.ah;
}
