ftp.nice.ch/pub/next/unix/audio/cmusic.bs.N.tar.gz#/src/show/puty.c

This is puty.c in view mode; [Download] [Up]

#include <stdio.h>
#define NCOLS 80
#define NLINES 24

extern int inited;

char screen[NLINES][NCOLS];

puty(y, ch, mid, abcissa, scrlsiz)
	int y; char ch; int mid; char abcissa; int scrlsiz;
{
	static int x;
	if (!inited) initcm();
	if (ch == '\n') 
		{ 
		if (x+1 < NCOLS) x++;
		else 
			{
			yscroll(mid, abcissa, scrlsiz);
			x = NCOLS - scrlsiz;
			}
		return; 
		}
	else 
		if (!(y == NLINES-1 && x == NCOLS-1)) 
			putopt(y, x, ch);
	screen[y][x] = ch;
	}

yscroll(mid, abcissa, scrlsiz)
	int mid; char abcissa; int scrlsiz;
{
	register int y, x;
	clear(0, scrlsiz, mid, abcissa);
	for (x = scrlsiz; x < NCOLS; x++)
	    {
	    for (y = 0; y < NLINES; y++)
		    {
		    if (screen[y][x] != ' ' && screen[y][x] != NULL
			    && screen[y][x] != '-')
			    {
			    screen[y][x-scrlsiz] = screen[y][x];
			    if (!(y == NLINES-1 && x == NCOLS-1)) 
				putopt(y, x-scrlsiz, screen[y][x-scrlsiz]);
			    screen[y][x] = NULL;
			    if (!(y == NLINES-1 && x == NCOLS-1)) 
				putopt(y, x, ' ');
			    }
		    }
	    if (screen[mid][x] != abcissa)
		    {
		    screen[mid][x] = abcissa;
		    if (!(y == NLINES-1 && x == NCOLS-1)) 
			putopt(mid, x, abcissa);
		    }
	    }
	}

clear(start, len, mid, abcissa)
	int start, len, mid; char abcissa;
{
	register int x, y;
	for (x = start; x < len; x++)
		{
		for (y = 0; y < NLINES; y++)
			{
			if (screen[y][x] != ' ' && screen[y][x] != NULL
				&& screen[y][x] != '-')
				{
				screen[y][x] = NULL;
				if (!(y == NLINES-1 && x == NCOLS-1)) 
					putopt(y, x, ' ');
				}
			}
		if (screen[mid][x] != abcissa)
			{
			screen[mid][x] = abcissa;
			if (!(y == NLINES-1 && x == NCOLS-1)) 
				putopt(mid, x, abcissa);
			}
		}
	}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.