/*********** LIBTX Call Wrapper (BEGIN) ***********/
extern int	(*GV_[100])();
int		(*GVW[100])();

w_badgv() {
	write(2, "LIBTX Call Wrapper: uninitialized interface\n", 31);
	_exit(-1);
}

w_open() { R0 = (*GV_[0])(S[SP], S[SP+1]); }
w_close() { R0 = (*GV_[1])(S[SP]); }
w_erase() { R0 = (*GV_[2])(S[SP]); }
w_select() { R0 = (*GV_[3])(S[SP], S[SP+1]); }
w_reads() { R0 = (*GV_[4])(S[SP], S[SP+1]); }
w_writes() { R0 = (*GV_[5])(S[SP]); }
w_newline() { R0 = (*GV_[6])(); }
w_aton() { R0 = (*GV_[7])(S[SP]); }
w_ntoa() { R0 = (*GV_[8])(S[SP], S[SP+1]); }
w_pack() { R0 = (*GV_[9])(S[SP], S[SP+1]); }
w_unpack() { R0 = (*GV_[10])(S[SP], S[SP+1]); }
w_readpacked() { R0 = (*GV_[11])(S[SP], S[SP+1], S[SP+2]); }
w_writepacked() { R0 = (*GV_[12])(S[SP], S[SP+1], S[SP+2]); }
w_reposition() { R0 = (*GV_[13])(S[SP], S[SP+1], S[SP+2], S[SP+3]); }
w_rename() { R0 = (*GV_[14])(S[SP], S[SP+1]); }
w_memcopy() { R0 = (*GV_[15])(S[SP], S[SP+1], S[SP+2]); }
w_memcomp() { R0 = (*GV_[16])(S[SP], S[SP+1], S[SP+2]); }

w_vio_init() { R0 = (*GV_[30])(); }
w_vio_end() { R0 = (*GV_[31])(); }
w_vio_reinit() { R0 = (*GV_[32])(); }
w_vio_sync() { R0 = (*GV_[33])(); }
w_vio_putc() { R0 = (*GV_[34])(S[SP]); }
w_vio_puts() { R0 = (*GV_[35])(S[SP]); }
w_vio_clear() { R0 = (*GV_[36])(); }
w_vio_clreol() { R0 = (*GV_[37])(); }
w_vio_color() { R0 = (*GV_[38])(S[SP]); }
w_vio_query() { R0 = (*GV_[39])(S[SP]); }
w_vio_getc() { R0 = (*GV_[40])(S[SP]); }
w_vio_move() { R0 = (*GV_[41])(S[SP], S[SP+1]); }
w_vio_index() { R0 = (*GV_[42])(S[SP], S[SP+1]); }
w_vio_revind() { R0 = (*GV_[43])(S[SP], S[SP+1]); }

w_g_init() { R0 = (*GV_[50])(); }
w_g_end() { R0 = (*GV_[51])(); }
w_g_event() { R0 = (*GV_[52])(S[SP], S[SP+1]); }
w_g_wait() { R0 = (*GV_[53])(S[SP]); }
w_g_clear() { R0 = (*GV_[54])(S[SP]); }
w_g_point() { R0 = (*GV_[55])(S[SP], S[SP+1], S[SP+2]); }
w_g_line() { R0 = (*GV_[56])(S[SP], S[SP+1], S[SP+2], S[SP+3], S[SP+4]); }
w_g_box() { R0 = (*GV_[57])(S[SP], S[SP+1], S[SP+2], S[SP+3], S[SP+4]); }
w_g_sync() { R0 = (*GV_[58])(); }
w_g_reshaped() { R0 = (*GV_[59])(); }
w_g_putc() { R0 = (*GV_[60])(S[SP], S[SP+1], S[SP+2], S[SP+3], S[SP+4]); }
w_g_puts() { R0 = (*GV_[61])(S[SP], S[SP+1], S[SP+2], S[SP+3], S[SP+4]); }
w_g_fontsize() { R0 = (*GV_[62])(S[SP], S[SP+1]); }
w_g_putv() { R0 = (*GV_[63])(S[SP], S[SP+1], S[SP+2], S[SP+3], S[SP+4]); }

void W_INIT() {
	int	i;

	for (i=0; i<100; i++) GVW[i] = w_badgv;
	GVW[0] = w_open;
	GVW[1] = w_close;
	GVW[2] = w_erase;
	GVW[3] = w_select;
	GVW[4] = w_reads;
	GVW[5] = w_writes;
	GVW[6] = w_newline;
	GVW[7] = w_aton;
	GVW[8] = w_ntoa;
	GVW[9] = w_pack;
	GVW[10] = w_unpack;
	GVW[11] = w_readpacked;
	GVW[12] = w_writepacked;
	GVW[13] = w_reposition;
	GVW[14] = w_rename;
	GVW[15] = w_memcopy;
	GVW[16] = w_memcomp;

	GVW[30] = w_vio_init;
	GVW[31] = w_vio_end;
	GVW[32] = w_vio_reinit;
	GVW[33] = w_vio_sync;
	GVW[34] = w_vio_putc;
	GVW[35] = w_vio_puts;
	GVW[36] = w_vio_clear;
	GVW[37] = w_vio_clreol;
	GVW[38] = w_vio_color;
	GVW[39] = w_vio_query;
	GVW[40] = w_vio_getc;
	GVW[41] = w_vio_move;
	GVW[42] = w_vio_index;
	GVW[43] = w_vio_revind;

	GVW[50] = w_g_init;
	GVW[51] = w_g_end;
	GVW[52] = w_g_event;
	GVW[53] = w_g_wait;
	GVW[54] = w_g_clear;
	GVW[55] = w_g_point;
	GVW[56] = w_g_line;
	GVW[57] = w_g_box;
	GVW[58] = w_g_sync;
	GVW[59] = w_g_reshaped;
	GVW[60] = w_g_putc;
	GVW[61] = w_g_puts;
	GVW[62] = w_g_fontsize;
	GVW[63] = w_g_putv;
}
/*********** LIBTX Call Wrapper (END) ***********/
