/* * (C) 1983 UniSoft Corp. of Berkeley CA * * UniPlus Source Code. This program is proprietary * with Unisoft Corporation and is not to be reproduced * or used in any manner except as authorized in * writing by Unisoft. *//* * memtest *	standalone static memory test program */#ifdef	DEBUGint	debug = 0;#endifmain(){	register char *start, *end;        int i;        char buf[50];	printf("Standalone memory test\n\n");loop:	printf("Starting location: ");	gets(buf);	if ((start = (char *) gethex(buf)) == (char *) -1) {		printf("Illegal number\n\n");		goto loop;	}	printf("Ending location:   ");	gets(buf);	if ((end = (char *) gethex(buf)) == (char *) -1) {		printf("Illegal number\n\n");		goto loop;	}	if (end <= start) {		printf("end <= start\n");		goto loop;	}	test1(0x00, start, end);}/* * test1(pat, start, end) *	test all words with a fixed pattern */test1(pat, start, end)register char pat;char *start;register char *end;{	register char *cp;	register ct;	int nerror;	int anydots;	char *addr1, *addr2;	ct = 1;	addr1 = addr2 = 0;	nerror = 0;	anydots = 0;	for (cp = start; cp < end; cp++)	/* load pattern */		*cp = pat;	for (;;) {		for (cp = start; cp < end; cp++) {	/* check pattern */			if (*cp != pat) {				if (addr1 == 0)					addr1 = cp;				addr2 = cp;				nerror++;				if (anydots)					printf("\n");				printf("Pass %d: 0x%x should be 0x%x is 0x%x\n",					ct, cp, pat & 0377, *cp & 0377);				*cp = pat;				anydots = 0;			}		}		if (nerror) {			printf("%d errors from 0x%x to 0x%x\n",				nerror, addr1, addr2);			nerror = 0;			addr1 = addr2 = 0;		}		if ((++ct % 100) == 0) {			printf(".");			anydots = 1;		}	}}