status.i4.v = text_cursor_init_c(window_id.i2.v, top_row.i4.v,
					 num_rows.i4.v, num_columns.i4.v
					 [,func_data.g.v] [,key_color.i4.v]
					 [,limit_scroll.i4.v] [,char_case.i4.v]

	This routine creates a text entry region within a window.  The initial
	text cursor position can be set by a call to text_set_cursor_c.
	There can only be one text entry field active at a time, but they
	can be nested such that the most recently created text entry field
	will be the active one.  When the active text entry field is deleted,
	control will revert to the previously created one, and so on.  All
	text entry fields in a window are automatically deleted when the
	window is deleted.

	window_id	window ID
	top_row		top row of text region
	left_column	left column of text region
	num_rows	number of rows in text region
	num_columns	number of columns in text region
	[screen_update]	flag indicating what type of screen updates
			should be performed when a key is pressed
			(TEXT_CURSOR_AUTO_UPDATE -> echo characters to
						    screen and display text
						    cursor (default),
			 TEXT_CURSOR_NO_UPDATE -> no screen updates)
	[keypress_func]	function to be executed upon each key press
			(function called as follows:
			 keypress_func(wid.i2.v, key_data.s.r, func_data.g.v)
			 ("key_data" is a structure of type TEXT_CURSOR_DATA))
			(default is NULL)
	[func_data]	data to be passed to "keypress_func" (default is NULL)
	[key_color]	color of echoed characters (This is ignored if
			"screen_update" has a value of TEXT_CURSOR_NO_UPDATE.)
			(constants are in 'cnsparam')
			(default is RED)
	[limit_scroll]	window scroll flag
			(TRUE -> don't scroll the window (default),
			 FALSE -> scroll the window when the end of
				  the text region is reached)
	[char_case]	character case flag
			(TEXT_CURSOR_MIXED_CASE -> allow mixed case (default),
			 TEXT_CURSOR_UPPER_CASE -> display all typed characters
						   in upper case only)
	[options]	text handling options
			(TEXT_CURSOR_OPT_NONE -> no options selected,
			 TEXT_CURSOR_OPT_INSERT_MODE -> use insert mode
							(default is overwrite),
			 TEXT_CURSOR_OPT_NO_CTRL -> do not process control keys
						    (This requires a cooperating
						     routine which does handle
						     control keys.))

	This function returns ACNET status values as follows:

	OK			success
	CBS_DUPREQ		a text window has already been established
	CBS_MEMFAIL		failed in allocating dynamic memory
	CBS_INVARG		text region does not fit in window

	This function requires the following include files:

	cnsparam_h, cbslib_h, acnet_errors_h

	Related functions:

	text_cursor_end, text_set_cursor_c, text_read_cursor_c,
	text_erase_line_c,  text_recolor_line_c, text_recolor_field_c,
	text_cursor_suspend_c, text_cursor_is_active

	C/C++ usage:

	short	window_id;
	int	status;
	int	top_row = 1;
	int	left_column = 1;
	int	num_rows = 1;
	int	num_columns = 10;
	int	screen_update = TEXT_CURSOR_AUTO_UPDATE;
	int	key_color = RED;
	int	limit_scroll = TRUE;
	int	char_case = TEXT_CURSOR_MIXED_CASE;
	unsigned int	options = TEXT_CURSOR_OPT_NONE;
	void	keypress_func(short window_id, TEXT_CURSOR_DATA *key_data,
			      void *func_data);
	void	*func_data = (void *) NULL;

	status = text_cursor_init_c(window_id,top_row,left_column,