status.i4.v = window_text_block(window_id.i2.r, type.i4.r,
					text.sp.r, row.i4.r, column.i4.r,
					num_rows.i4.r, num_columns.i4.r)

	status.i4.v = window_text_block_c(window_id.i2.v, type.i4.v,
					  text.sp.r, row.i4.v, column.i4.v,
					  num_rows.i4.v, num_columns.i4.v)

	This routine saves or displays a rectangular block of text in the
	window indicated by "window_id".  This routine only operates on
	the "visible" portion of a window which does not include text
	stored in the scroll buffer outside of the visible region of the
	window.  This routine allocates the memory to store the text and
	returns a pointer to that memory when a value of WMNGR_SAVE is
	passed for the operation type.  When the routine is called again
	with a value of WMNGR_RESTORE, it frees this memory after
	displaying the text.

	window_id	window ID (use WMNGR_BACKGROUND for background window)
	type		type of operation
			(WMNGR_SAVE -> save a block of text,
			 WMNGR_RESTORE -> redisplay a saved block of text)
	text		pointer to an array of XCHAR structures
	row, column	upper left hand coordinates of screen region
	num_rows	size of screen region in rows
	num_columns	size of screen region in columns

	This function returns ACNET status values as follows:

	OK			success
	CBS_NO_WINDOW		requested window does not exist
	CBS_INVARG		invalid row and/or column values
	CBS_MEMFAIL		failed in allocating dynamic memory

	This function requires the following include files:

	cns_data_structs_h, cbslib_h, acnet_errors_h

	Related functions:

	window_tvmx(_c), window_read_color_text_c, intro_tv_windows

	C/C++ usage:

	short	window_id;
	int	status;
	int	type = WMNGR_SAVE;
	int	row = 1;
	int	column = 1;
	int	num_rows = 2;
	int	num_columns = 10;
	XCHAR	*text;

	status = window_text_block_c(window_id,type,&text,row,column,

	status = window_text_block_c(window_id,type,&text,row,column,