ScrnInsertLine (screen, sb, last, where, n, size)  TScreen *screen; register ScrnBuf sb; int last; register int where, n, size;
ScrnInsertLine ( TScreen *screen, register ScrnBuf sb, int last, register int where, register int n, register int size)
ScrnInsertLine (screen, sb, last, where, n, size)/*   Inserts n blank lines at sb + where, treating last as a bottom margin.   Size is the size of each entry in sb.   Requires: 0 <= where < where + n <= last */TScreen *screen;register ScrnBuf sb;int last;register int where, n, size;{	size_t len = ScrnPointers(screen, n);	/* save n lines at bottom */	ScrnClearLines(screen, sb, (last -= n - 1), n, size);	/*	 * WARNING, overlapping copy operation.  Move down lines (pointers).	 *	 *   +----|---------|--------+	 *	 * is copied in the array to:	 *	 *   +--------|---------|----+	 */	memmove( (char *) &sb [MAX_PTRS * (where + n)],		 (char *) &sb [MAX_PTRS * where], 		 MAX_PTRS * sizeof (char *) * (last - where));	/* reuse storage for new lines at where */	memcpy ( (char *) &sb[MAX_PTRS * where],		 (char *) screen->save_ptr,		 len);}