DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC759 "Piccoline"

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC759 "Piccoline"

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦d0e46038f⟧ TextFile

    Length: 20480 (0x5000)
    Types: TextFile
    Names: »GEMBIND.C«

Derivation

└─⟦33b70227c⟧ Bits:30003931/GEM_Develop_disk_3_CDOS.imd Disketter indleveret af Steffen Jensen (Piccolo/Piccoline)
    └─⟦this⟧ »GEMBIND.C« 
└─⟦f18477172⟧ Bits:30003931/GEM_Develop_disk_1_CDOS.imd Disketter indleveret af Steffen Jensen (Piccolo/Piccoline)
    └─⟦this⟧ »SAMP\GEMBIND.C« 

TextFile

/*	GEMBIND.C		2/15/85			Lee Lorenzen	*/
/*	GEM DEVELOPER KIT 	06/09/86		Lowell Webster	*/

#include "portab.h"
#include "machine.h"
#include "treeaddr.h"
#include "obdefs.h"
#include "gembind.h"


GLOBAL BYTE		ctrl_cntsÆÅ =
æ
/* Application Manager		*/
	0, 1, 0, 			/* func 010		*/
	2, 1, 1, 			/* func 011		*/
	2, 1, 1, 			/* func 012		*/
	0, 1, 1, 			/* func 013		*/
	2, 1, 1, 			/* func 014		*/
	1, 1, 1, 			/* func 015		*/
	2, 1, 0, 			/* func 016		*/
	0, 0, 0, 			/* func 017		*/
	0, 0, 0, 			/* func 008		*/
	0, 1, 0, 			/* func 019		*/
/* Event Manager		*/
	0, 1, 0, 			/* func 020		*/
	3, 5, 0, 			/* func 021		*/
	5, 5, 0, 			/* func 022		*/
	0, 1, 1, 			/* func 023		*/
	2, 1, 0, 			/* func 024		*/
	16, 7, 1,	 		/* func 025		*/
	2, 1, 0, 			/* func 026		*/
	0, 0, 0, 			/* func 027		*/
	0, 0, 0, 			/* func 028		*/
	0, 0, 0, 			/* func 009		*/
/* Menu Manager			*/
	1, 1, 1, 			/* func 030		*/
	2, 1, 1, 			/* func 031		*/
	2, 1, 1, 			/* func 032		*/
	2, 1, 1, 			/* func 033		*/
	1, 1, 2, 			/* func 034		*/
	1, 1, 1, 			/* func 005		*/
	1, 1, 0, 			/* func 006		*/
	0, 0, 0, 			/* func 007		*/
	0, 0, 0, 			/* func 008		*/
	0, 0, 0, 			/* func 009		*/
/* Object Manager		*/
	2, 1, 1, 			/* func 040		*/
	1, 1, 1, 			/* func 041		*/
	6, 1, 1, 			/* func 042		*/
	4, 1, 1, 			/* func 043		*/
	1, 3, 1, 			/* func 044		*/
	2, 1, 1, 			/* func 045		*/
	4, 2, 1, 			/* func 046		*/
	8, 1, 1, 			/* func 047		*/
	0, 0, 0, 			/* func 048		*/
	0, 0, 0, 			/* func 049		*/
/* Form Manager			*/
	1, 1, 1, 			/* func 050		*/
	9, 1, 0, 			/* func 051		*/
	1, 1, 1, 			/* func 002		*/
	1, 1, 0, 			/* func 003		*/
	0, 5, 1, 			/* func 004		*/
	3, 3, 1, 			/* func 005		*/
	2, 2, 1, 			/* func 006		*/
	0, 0, 0, 			/* func 007		*/
	0, 0, 0, 			/* func 008		*/
	0, 0, 0, 			/* func 009		*/
/* reserved Manager		*/
	0, 0, 0, 			/* func 060		*/
	0, 0, 0, 			/* func 061		*/
	0, 0, 0, 			/* func 062		*/
	0, 0, 0, 			/* func 003		*/
	0, 0, 0, 			/* func 004		*/
	0, 0, 0, 			/* func 005		*/
	0, 0, 0, 			/* func 006		*/
	0, 0, 0, 			/* func 007		*/
	0, 0, 0, 			/* func 008		*/
	0, 0, 0, 			/* func 009		*/
/* Graphics Manager	*/
	4, 3, 0, 			/* func 070		*/
	8, 3, 0, 			/* func 071		*/
	6, 1, 0, 			/* func 072		*/
	0, 0, 0, 			/* func 073		*/
	0, 0, 0, 			/* func 074		*/
	4, 1, 1, 			/* func 075		*/
	3, 1, 1, 			/* func 076		*/
	0, 5, 0, 			/* func 077		*/
	1, 1, 1, 			/* func 078		*/
	0, 5, 0, 			/* func 009		*/
/* Scrap Manager		*/
	0, 1, 1, 			/* func 080		*/
	0, 1, 1, 			/* func 081		*/
	0, 1, 0, 			/* func 082		*/
	0, 0, 0, 			/* func 003		*/
	0, 0, 0, 			/* func 004		*/
	0, 0, 0, 			/* func 005		*/
	0, 0, 0, 			/* func 006		*/
	0, 0, 0, 			/* func 007		*/
	0, 0, 0, 			/* func 008		*/
	0, 0, 0, 			/* func 009		*/
/* fseler Manager		*/
	0, 2, 2, 			/* func 090		*/
	0, 0, 0, 			/* func 091		*/
	0, 0, 0, 			/* func 092		*/
	0, 0, 0, 			/* func 003		*/
	0, 0, 0, 			/* func 004		*/
	0, 0, 0, 			/* func 005		*/
	0, 0, 0, 			/* func 006		*/
	0, 0, 0, 			/* func 007		*/
	0, 0, 0, 			/* func 008		*/
	0, 0, 0, 			/* func 009		*/
/* Window Manager		*/
	5, 1, 0, 			/* func 100		*/
	5, 1, 0, 			/* func 101		*/
	1, 1, 0, 			/* func 102		*/
	1, 1, 0, 			/* func 103		*/
	2, 5, 0, 			/* func 104		*/
	6, 1, 0, 			/* func 105		*/
	2, 1, 0, 			/* func 106		*/
	1, 1, 0, 			/* func 107		*/
	6, 5, 0, 			/* func 108		*/
	0, 0, 0, 			/* func 009		*/
/* Resource Manager		*/
	0, 1, 1, 			/* func 110		*/
	0, 1, 0, 			/* func 111		*/
	2, 1, 0, 			/* func 112		*/
	2, 1, 1, 			/* func 113		*/
	1, 1, 1, 			/* func 114		*/
	0, 0, 0, 			/* func 115		*/
	0, 0, 0, 			/* func 006		*/
	0, 0, 0, 			/* func 007		*/
	0, 0, 0, 			/* func 008		*/
	0, 0, 0, 			/* func 009		*/
/* Shell Manager		*/
	0, 1, 2, 			/* func 120		*/
	3, 1, 2, 			/* func 121		*/
	1, 1, 1, 			/* func 122		*/
	1, 1, 1, 			/* func 123		*/
	0, 1, 1, 			/* func 124		*/
	0, 1, 2, 			/* func 125		*/
	0, 1, 2, 			/* func 126		*/
	0, 1, 2, 			/* func 127		*/
	0, 0, 0, 			/* func 008		*/
	0, 0, 0, 			/* func 009		*/
/* Extended Graphics Manager	*/
	6, 6, 0, 			/* func 130		*/
	9, 1, 0, 			/* func 131		*/
	0, 0, 0, 			/* func 002		*/
	0, 0, 0, 			/* func 003		*/
	0, 0, 0, 			/* func 004		*/
	0, 0, 0, 			/* func 005		*/
	0, 0, 0, 			/* func 006		*/
	0, 0, 0, 			/* func 007		*/
	0, 0, 0, 			/* func 008		*/
	0, 0, 0 			/* func 009		*/
å;


typedef struct gemblkstr
æ
	LONG		gb_pcontrol;
	LONG		gb_pglobal;
	LONG		gb_pintin;
	LONG		gb_pintout;
	LONG		gb_padrin;
	LONG		gb_padrout;		
å GEMBLK;
						/* in GEMASM.ASM	*/
EXTERN WORD		gem();

GLOBAL GEMBLK		gb;
GLOBAL UWORD		controlÆC_SIZEÅ;
GLOBAL UWORD		globalÆG_SIZEÅ;
GLOBAL UWORD		int_inÆI_SIZEÅ;
GLOBAL UWORD		int_outÆO_SIZEÅ;
GLOBAL LONG		addr_inÆAI_SIZEÅ;
GLOBAL LONG		addr_outÆAO_SIZEÅ;

GLOBAL LONG		ad_g;

	WORD
gem_if(opcode)
	WORD		opcode;
æ
	WORD		i;
	BYTE		*pctrl;

	controlÆ0Å = opcode;

	pctrl = &ctrl_cntsÆ(opcode - 10) * 3Å;
	for(i=1; i<C_SIZE; i++)
	  controlÆiÅ = *pctrl++;

	gem(ad_g);
	return((WORD) RET_CODE );
å


	WORD
appl_init()
æ
	gb.gb_pcontrol = ADDR((BYTE *) &controlÆ0Å); 
	gb.gb_pglobal = ADDR((BYTE *) &globalÆ0Å);
	gb.gb_pintin = ADDR((BYTE *) &int_inÆ0Å);
	gb.gb_pintout = ADDR((BYTE *) &int_outÆ0Å);
	gb.gb_padrin = ADDR((BYTE *) &addr_inÆ0Å);
	gb.gb_padrout = ADDR((BYTE *) &addr_outÆ0Å);

	ad_g = ADDR((BYTE *) &gb);
	gem_if(APPL_INIT);
	return((WORD) RET_CODE );
å


	WORD
appl_exit()
æ
	gem_if(APPL_EXIT);
	return( TRUE );
å

					/* Application Manager		*/
	WORD
appl_write(rwid, length, pbuff)
	WORD		rwid;
	WORD		length;
	LONG		pbuff;
æ
	AP_RWID = rwid;
	AP_LENGTH = length;
	AP_PBUFF = pbuff;
	return( gem_if(APPL_WRITE) );
å


	WORD
appl_read(rwid, length, pbuff)
	WORD		rwid;
	WORD		length;
	LONG		pbuff;
æ
	AP_RWID = rwid;
	AP_LENGTH = length;
	AP_PBUFF = pbuff;
	return( gem_if(APPL_READ) );
å


	WORD
appl_find(pname)
	LONG		pname;
æ
	AP_PNAME = pname;
	return( gem_if(APPL_FIND) );
å


	WORD
appl_tplay(tbuffer, tlength, tscale)
	LONG		tbuffer;
	WORD		tlength;
	WORD		tscale;
æ
	AP_TBUFFER = tbuffer;
	AP_TLENGTH = tlength;
	AP_TSCALE = tscale;
	return( gem_if(APPL_TPLAY) );
å



	WORD
appl_trecord(tbuffer, tlength)
	LONG		tbuffer;
	WORD		tlength;
æ
	AP_TBUFFER = tbuffer;
	AP_TLENGTH = tlength;
	return( gem_if(APPL_TRECORD) );
å

	WORD
appl_bvset(bvdisk, bvhard)
	UWORD		bvdisk;
	UWORD		bvhard;
æ
	AP_BVDISK = bvdisk;
	AP_BVHARD = bvhard;
	return( gem_if(APPL_BVSET) );
å

	VOID
appl_yield()
æ
	gem_if(APPL_YIELD);
å

					/* Event Manager		*/
	UWORD
evnt_keybd()
æ
	return((UWORD) gem_if(EVNT_KEYBD) );
å


	WORD
evnt_button(clicks, mask, state, pmx, pmy, pmb, pks)
	WORD		clicks;
	UWORD		mask;
	UWORD		state;
	WORD		*pmx, *pmy, *pmb, *pks;
æ
	B_CLICKS = clicks;
	B_MASK = mask;
	B_STATE = state;
	gem_if(EVNT_BUTTON);
	*pmx = EV_MX;
	*pmy = EV_MY;
	*pmb = EV_MB;
	*pks = EV_KS;
	return((WORD) RET_CODE);
å


	WORD
evnt_mouse(flags, x, y, width, height, pmx, pmy, pmb, pks)
	WORD		flags, x, y, width, height;
	WORD		*pmx, *pmy, *pmb, *pks;
æ
	MO_FLAGS = flags;
	MO_X = x;
	MO_Y = y;
	MO_WIDTH = width;
	MO_HEIGHT = height;
	gem_if(EVNT_MOUSE);
	*pmx = EV_MX;
	*pmy = EV_MY;
	*pmb = EV_MB;
	*pks = EV_KS;
	return((WORD) RET_CODE);
å


	WORD
evnt_mesag(pbuff)
	LONG		pbuff;
æ
	ME_PBUFF = pbuff;
	return( gem_if(EVNT_MESAG) );
å


	WORD
evnt_timer(locnt, hicnt)
	UWORD		locnt, hicnt;
æ
	T_LOCOUNT = locnt;
	T_HICOUNT = hicnt;
	return( gem_if(EVNT_TIMER) );
å


	WORD
evnt_multi(flags, bclk, bmsk, bst, m1flags, m1x, m1y, m1w, m1h, 
		m2flags, m2x, m2y, m2w, m2h, mepbuff,
		tlc, thc, pmx, pmy, pmb, pks, pkr, pbr )
	UWORD		flags, bclk, bmsk, bst;
	UWORD		m1flags, m1x, m1y, m1w, m1h;
	UWORD		m2flags, m2x, m2y, m2w, m2h;
	LONG		mepbuff;
	UWORD		tlc, thc;
	UWORD		*pmx, *pmy, *pmb, *pks, *pkr, *pbr;
æ
	MU_FLAGS = flags;

	MB_CLICKS = bclk;
	MB_MASK = bmsk;
	MB_STATE = bst;

	MMO1_FLAGS = m1flags;
	MMO1_X = m1x;
	MMO1_Y = m1y;
	MMO1_WIDTH = m1w;
	MMO1_HEIGHT = m1h;

	MMO2_FLAGS = m2flags;
	MMO2_X = m2x;
	MMO2_Y = m2y;
	MMO2_WIDTH = m2w;
	MMO2_HEIGHT = m2h;

	MME_PBUFF = mepbuff;

	MT_LOCOUNT = tlc;
	MT_HICOUNT = thc;

	gem_if(EVNT_MULTI);

	*pmx = EV_MX;
	*pmy = EV_MY;
	*pmb = EV_MB;
	*pks = EV_KS;
	*pkr = EV_KRET;
	*pbr = EV_BRET;
	return((WORD) RET_CODE );
å


	WORD
evnt_dclick(rate, setit)
	WORD		rate, setit;
æ
	EV_DCRATE = rate;
	EV_DCSETIT = setit;
	return( gem_if(EVNT_DCLICK) );
å


					/* Menu Manager			*/
	WORD
menu_bar(tree, showit)
	LONG		tree;
	WORD		showit;
æ
	MM_ITREE = tree;
	SHOW_IT = showit;
	return( gem_if(MENU_BAR) );
å


	WORD
menu_icheck(tree, itemnum, checkit)
	LONG		tree;
	WORD		itemnum, checkit;
æ
	MM_ITREE = tree;
	ITEM_NUM = itemnum;
	CHECK_IT = checkit;
	return( gem_if(MENU_ICHECK) );
å


	WORD
menu_ienable(tree, itemnum, enableit)
	LONG		tree;
	WORD		itemnum, enableit;
æ
	MM_ITREE = tree;
	ITEM_NUM = itemnum;
	ENABLE_IT = enableit;
	return( gem_if(MENU_IENABLE) );
å


	WORD
menu_tnormal(tree, titlenum, normalit)
	LONG		tree;
	WORD		titlenum, normalit;
æ
	MM_ITREE = tree;
	TITLE_NUM = titlenum;
	NORMAL_IT = normalit;
	return( gem_if( MENU_TNORMAL ) );
å


	WORD
menu_text(tree, inum, ptext)
	LONG		tree;
	WORD		inum;
	LONG		ptext;
æ
	MM_ITREE = tree;
	ITEM_NUM = inum;
	MM_PTEXT = ptext;
	return( gem_if( MENU_TEXT ) );
å

	WORD
menu_register(pid, pstr)
	WORD		pid;
	LONG		pstr;
æ
	MM_PID = pid;
	MM_PSTR = pstr;
	return( gem_if( MENU_REGISTER ) );
å


	WORD
menu_unregister(mid)
	WORD		mid;
æ
	MM_MID = mid;
	return( gem_if( MENU_UNREGISTER ) );
å


					/* Object Manager		*/
	WORD
objc_add(tree, parent, child)
	LONG		tree;
	WORD		parent, child;
æ
	OB_TREE = tree;
	OB_PARENT = parent;
	OB_CHILD = child;
	return( gem_if( OBJC_ADD ) );
å


	WORD
objc_delete(tree, delob)
	LONG		tree;
	WORD		delob;
æ
	OB_TREE = tree;
	OB_DELOB = delob;
	return( gem_if( OBJC_DELETE ) );
å


	WORD
objc_draw(tree, drawob, depth, xc, yc, wc, hc)
	LONG		tree;
	WORD		drawob, depth;
	WORD		xc, yc, wc, hc;
æ
	OB_TREE = tree;
	OB_DRAWOB = drawob;
	OB_DEPTH = depth;
	OB_XCLIP = xc;
	OB_YCLIP = yc;
	OB_WCLIP = wc;
	OB_HCLIP = hc;
	return( gem_if( OBJC_DRAW ) );
å


	WORD
objc_find(tree, startob, depth, mx, my)
	LONG		tree;
	WORD		startob, depth, mx, my;
æ
	OB_TREE = tree;
	OB_STARTOB = startob;
	OB_DEPTH = depth;
	OB_MX = mx;
	OB_MY = my;
	return( gem_if( OBJC_FIND ) );
å


	WORD
objc_order(tree, mov_obj, newpos)
	LONG		tree;
	WORD		mov_obj, newpos;
æ
	OB_TREE = tree;
	OB_OBJ = mov_obj;
	OB_NEWPOS = newpos;
	return( gem_if( OBJC_ORDER ) );
å


	WORD
objc_offset(tree, obj, poffx, poffy)
	LONG		tree;
	WORD		obj;
	WORD		*poffx, *poffy;
æ
	OB_TREE = tree;
	OB_OBJ = obj;
	gem_if(OBJC_OFFSET);
	*poffx = OB_XOFF;
	*poffy = OB_YOFF;
	return((WORD) RET_CODE );
å



	WORD
objc_edit(tree, obj, inchar, idx, kind)
	LONG		tree;
	WORD		obj;
	WORD		inchar, *idx, kind;
æ
	OB_TREE = tree;
	OB_OBJ = obj;
	OB_CHAR = inchar;
	OB_IDX = *idx;
	OB_KIND = kind;
	gem_if( OBJC_EDIT );
	*idx = OB_ODX;
	return((WORD) RET_CODE );
å


	WORD
objc_change(tree, drawob, depth, xc, yc, wc, hc, newstate, redraw)
	LONG		tree;
	WORD		drawob, depth;
	WORD		xc, yc, wc, hc;
	WORD		newstate, redraw;
æ
	OB_TREE = tree;
	OB_DRAWOB = drawob;
	OB_DEPTH = depth;
	OB_XCLIP = xc;
	OB_YCLIP = yc;
	OB_WCLIP = wc;
	OB_HCLIP = hc;
	OB_NEWSTATE = newstate;
	OB_REDRAW = redraw;
	return( gem_if( OBJC_CHANGE ) );
å



					/* Form Manager			*/
	WORD
form_do(form, start)
	LONG		form;
	WORD		start;
æ
	FM_FORM = form;
	FM_START = start;
	return( gem_if( FORM_DO ) );
å


	WORD
form_dial(dtype, ix, iy, iw, ih, x, y, w, h)
	WORD		dtype;
	WORD		ix, iy, iw, ih;
	WORD		x, y, w, h;
æ
	FM_TYPE = dtype;
	FM_IX = ix;
	FM_IY = iy;
	FM_IW = iw;
	FM_IH = ih;
	FM_X = x;
	FM_Y = y;
	FM_W = w;
	FM_H = h;
	return( gem_if( FORM_DIAL ) );
å


	WORD
form_alert(defbut, astring)
	WORD		defbut;
	LONG		astring;
æ
	FM_DEFBUT = defbut;
	FM_ASTRING = astring;
	return( gem_if( FORM_ALERT ) );
å

	WORD
form_error(errnum)
	WORD		errnum;
æ
	FM_ERRNUM = errnum;
	return( gem_if( FORM_ERROR ) );
å

	WORD
form_center(tree, pcx, pcy, pcw, pch)
	LONG		tree;
	WORD		*pcx, *pcy, *pcw, *pch;
æ
	FM_FORM = tree;
	gem_if(FORM_CENTER);
	*pcx = FM_XC;
	*pcy = FM_YC;
	*pcw = FM_WC;
	*pch = FM_HC;
	return((WORD) RET_CODE );
å


	WORD
form_keybd(form, obj, nxt_obj, thechar, pnxt_obj, pchar)
	LONG		form;
	WORD		obj;
	WORD		nxt_obj;
	WORD		thechar;
	WORD		*pnxt_obj;
	WORD		*pchar;
æ
	FM_FORM = form;
	FM_OBJ = obj;
	FM_INXTOB = nxt_obj;
	FM_ICHAR = thechar;
	gem_if( FORM_KEYBD );
	*pnxt_obj = FM_ONXTOB;
	*pchar = FM_OCHAR;
	return( (WORD) RET_CODE );
å


	WORD
form_button(form, obj, clks, pnxt_obj)
	LONG		form;
	WORD		obj;
	WORD		clks;
	WORD		*pnxt_obj;
æ
	FM_FORM = form;
	FM_OBJ = obj;
	FM_CLKS = clks;
	gem_if( FORM_BUTTON );
	*pnxt_obj = FM_ONXTOB;
	return( (WORD) RET_CODE );
å
					/* Graphics Manager		*/
	WORD
graf_rubbox(xorigin, yorigin, wmin, hmin, pwend, phend)
	WORD		xorigin, yorigin;
	WORD		wmin, hmin;
	WORD		*pwend, *phend;
æ
	GR_I1 = xorigin;
	GR_I2 = yorigin;
	GR_I3 = wmin;
	GR_I4 = hmin;
	gem_if( GRAF_RUBBOX );
	*pwend = GR_O1;
	*phend = GR_O2;
	return((WORD) RET_CODE );
å


	WORD
graf_dragbox(w, h, sx, sy, xc, yc, wc, hc, pdx, pdy)
	WORD		w, h;
	WORD		sx, sy;
	WORD		xc, yc, wc, hc;
	WORD		*pdx, *pdy;
æ
	GR_I1 = w;
	GR_I2 = h;
	GR_I3 = sx;
	GR_I4 = sy;
	GR_I5 = xc;
	GR_I6 = yc;
	GR_I7 = wc;
	GR_I8 = hc;
	gem_if( GRAF_DRAGBOX );
	*pdx = GR_O1;
	*pdy = GR_O2;
	return((WORD) RET_CODE );
å


	WORD
graf_mbox(w, h, srcx, srcy, dstx, dsty)
	WORD		w, h;
	WORD		srcx, srcy, dstx, dsty;
æ
	GR_I1 = w;
	GR_I2 = h;
	GR_I3 = srcx;
	GR_I4 = srcy;
	GR_I5 = dstx;
	GR_I6 = dsty;
	return( gem_if( GRAF_MBOX ) );
å

	WORD
graf_watchbox(tree, obj, instate, outstate)
	LONG		tree;
	WORD		obj;
	UWORD		instate, outstate;
æ
	GR_TREE = tree;
	GR_OBJ = obj;
	GR_INSTATE = instate;
	GR_OUTSTATE = outstate;
	return( gem_if( GRAF_WATCHBOX ) );
å


	WORD
graf_slidebox(tree, parent, obj, isvert)
	LONG		tree;
	WORD		parent;
	WORD		obj;
	WORD		isvert;
æ
	GR_TREE = tree;
	GR_PARENT = parent;
	GR_OBJ = obj;
	GR_ISVERT = isvert;
	return( gem_if( GRAF_SLIDEBOX ) );
å


	WORD
graf_handle(pwchar, phchar, pwbox, phbox)
	WORD		*pwchar, *phchar;
	WORD		*pwbox, *phbox;
æ
	gem_if(GRAF_HANDLE);
	*pwchar = GR_WCHAR ;
	*phchar = GR_HCHAR;
	*pwbox = GR_WBOX;
	*phbox = GR_HBOX;
	return((WORD) RET_CODE);
å

	WORD
graf_mouse(m_number, m_addr)
	WORD		m_number;
	LONG		m_addr;
æ
	GR_MNUMBER = m_number;
	GR_MADDR = m_addr;
	return( gem_if( GRAF_MOUSE ) );
å


	WORD
graf_mkstate(pmx, pmy, pmstate, pkstate)
	WORD		*pmx, *pmy, *pmstate, *pkstate;
æ
	gem_if( GRAF_MKSTATE );
	*pmx = GR_MX;
	*pmy = GR_MY;
	*pmstate = GR_MSTATE;
	*pkstate = GR_KSTATE;
å


					/* Scrap Manager		*/
	WORD
scrp_read(pscrap)
	LONG		pscrap;
æ
	SC_PATH = pscrap;
	return( gem_if( SCRP_READ ) );
å


	WORD
scrp_write(pscrap)
	LONG		pscrap;
æ
	SC_PATH = pscrap;
	return( gem_if( SCRP_WRITE ) );
å

	WORD
scrp_clear()
æ
	return( gem_if( SCRP_CLEAR ) );
å

					/* fseler Manager		*/
	WORD
fsel_input(pipath, pisel, pbutton)
	LONG		pipath, pisel;
	WORD		*pbutton;
æ
	FS_IPATH = pipath;
	FS_ISEL = pisel;
	gem_if( FSEL_INPUT );
	*pbutton = FS_BUTTON;
	return((WORD) RET_CODE );
å


					/* Window Manager		*/
	WORD
wind_create(kind, wx, wy, ww, wh)
	UWORD		kind;
	WORD		wx, wy, ww, wh;
æ
	WM_KIND = kind;
	WM_WX = wx;
	WM_WY = wy;
	WM_WW = ww;
	WM_WH = wh;
	return( gem_if( WIND_CREATE ) );
å


	WORD
wind_open(handle, wx, wy, ww, wh)
	WORD		handle;
	WORD		wx, wy, ww, wh;
æ
	WM_HANDLE = handle;
	WM_WX = wx;
	WM_WY = wy;
	WM_WW = ww;
	WM_WH = wh;
	return( gem_if( WIND_OPEN ) );
å


	WORD
wind_close(handle)
	WORD		handle;
æ
	WM_HANDLE = handle;
	return( gem_if( WIND_CLOSE ) );
å


	WORD
wind_delete(handle)
	WORD		handle;
æ
	WM_HANDLE = handle;
	return( gem_if( WIND_DELETE ) );
å


	WORD
wind_get(w_handle, w_field, pw1, pw2, pw3, pw4)
	WORD		w_handle;
	WORD		w_field;
	WORD		*pw1, *pw2, *pw3, *pw4;
æ
	WM_HANDLE = w_handle;
	WM_WFIELD = w_field;
	gem_if( WIND_GET );
	*pw1 = WM_OX;
	*pw2 = WM_OY;
	*pw3 = WM_OW;
	*pw4 = WM_OH;
	return((WORD) RET_CODE );
å


	WORD
wind_set(w_handle, w_field, w1, w2, w3, w4)
	WORD		w_handle;	
	WORD		w_field;
	WORD		w1, w2, w3, w4;
æ
	WM_HANDLE = w_handle;
	WM_WFIELD = w_field;
	WM_IX = w1;
	WM_IY = w2;
	WM_IW = w3;
	WM_IH = w4;
	return( gem_if( WIND_SET ) );
å


	WORD
wind_find(mx, my)
	WORD		mx, my;
æ
	WM_MX = mx;
	WM_MY = my;
	return( gem_if( WIND_FIND ) );
å


	WORD
wind_update(beg_update)
	WORD		beg_update;
æ
	WM_BEGUP = beg_update;
	return( gem_if( WIND_UPDATE ) );
å

	WORD
wind_calc(wctype, kind, x, y, w, h, px, py, pw, ph)
	WORD		wctype;
	UWORD		kind;
	WORD		x, y, w, h;
	WORD		*px, *py, *pw, *ph;
æ
	WM_WCTYPE = wctype;
	WM_WCKIND = kind;
	WM_WCIX = x;
	WM_WCIY = y;
	WM_WCIW = w;
	WM_WCIH = h;
	gem_if( WIND_CALC );
	*px = WM_WCOX;
	*py = WM_WCOY;
	*pw = WM_WCOW;
	*ph = WM_WCOH;
	return((WORD) RET_CODE );
å

					/* Resource Manager		*/
	WORD
rsrc_load(rsname)
	LONG	rsname;
æ
	RS_PFNAME = rsname;
	return( gem_if(RSRC_LOAD) );
å

	WORD
rsrc_free()
æ
	return( gem_if( RSRC_FREE ) );
å


	WORD
rsrc_gaddr(rstype, rsid, paddr)
	WORD		rstype;
	WORD		rsid;
	LONG		*paddr;
æ
	RS_TYPE = rstype;
	RS_INDEX = rsid;
	gem_if(RSRC_GADDR);
	*paddr = RS_OUTADDR;
	return((WORD) RET_CODE );
å


	WORD
rsrc_saddr(rstype, rsid, lngval)
	WORD		rstype;
	WORD		rsid;
	LONG		lngval;
æ
	RS_TYPE = rstype;
	RS_INDEX = rsid;
	RS_INADDR = lngval;
	return( gem_if(RSRC_SADDR) );
å


	WORD
rsrc_obfix(tree, obj)
	LONG		tree;
	WORD		obj;
æ
	RS_TREE = tree;
	RS_OBJ = obj;
	return( gem_if(RSRC_OBFIX) );
å


					/* Shell Manager		*/
	WORD
shel_read(pcmd, ptail)
	LONG		pcmd, ptail;
æ
	SH_PCMD = pcmd;
	SH_PTAIL = ptail;
	return( gem_if( SHEL_READ ) );
å


	WORD
shel_write(doex, isgr, isover, pcmd, ptail)
	WORD		doex, isgr, isover;
	LONG		pcmd, ptail;
æ
	SH_DOEX = doex;
	SH_ISGR = isgr;
	SH_ISCR = isover;
	SH_PCMD = pcmd;
	SH_PTAIL = ptail;
	return( gem_if( SHEL_WRITE ) );
å


	WORD
shel_find(ppath)
	LONG		ppath;
æ
	SH_PATH = ppath;
	return( gem_if( SHEL_FIND ) );
å


	WORD
shel_envrn(ppath, psrch)
	LONG		ppath;
	LONG		psrch;
æ
	SH_PATH = ppath;
	SH_SRCH = psrch;
	return( gem_if( SHEL_ENVRN ) );
å

	WORD
shel_rdef(lpcmd, lpdir)		/*  read default application name	*/
	LONG		lpcmd;
	LONG		lpdir;
æ
	SH_LPCMD = lpcmd;
	SH_LPDIR = lpdir;
	return( gem_if( SHEL_RDEF ) );
å

	WORD
shel_wdef(lpcmd, lpdir)		/*  write default application name	*/
	LONG		lpcmd;
	LONG		lpdir;
æ
	SH_LPCMD = lpcmd;
	SH_LPDIR = lpdir;
	return( gem_if( SHEL_WDEF ) );
å

	WORD
xgrf_stepcalc(orgw, orgh, xc, yc, w, h, pcx, pcy, pcnt, pxstep, pystep)
	WORD		orgw, orgh;
	WORD		xc, yc, w, h;
	WORD		*pcx, *pcy;
	WORD		*pcnt, *pxstep, *pystep;
æ
	XGR_I1 = orgw;
	XGR_I2 = orgh;
	XGR_I3 = xc;
	XGR_I4 = yc;
	XGR_I5 = w;
	XGR_I6 = h;
	gem_if( XGRF_STEPCALC );
	*pcx = XGR_O1;
	*pcy = XGR_O2;
	*pcnt = XGR_O3;
	*pxstep = XGR_O4;
	*pystep = XGR_O5;
	return((WORD) RET_CODE );
å

	WORD
xgrf_2box( xc, yc, w, h, corners, cnt, xstep, ystep, doubled)
	WORD		xc, yc, w, h;
	WORD		corners;
	WORD		cnt;
	WORD		xstep, ystep;
	WORD		doubled;

æ
	XGR_I1 = cnt;
	XGR_I2 = xstep;
	XGR_I3 = ystep;
	XGR_I4 = doubled;
	XGR_I5 = corners;
	XGR_I6 = xc;
	XGR_I7 = yc;
	XGR_I8 = w;
	XGR_I9 = h;
	return( gem_if( XGRF_2BOX ) );
å


/*  The following two routines, graf_growbox and graf_shrinkbox are
*   placed here for compatability with previous releases since they
*   are no longer directly supported by the AES.
*/

graf_growbox()
æ
å

graf_shrinkbox()
æ
å

/*  GEMBIND.C  */
«eof»