11673Smckusick /* Copyright (c) 1979 Regents of the University of California */
21673Smckusick 
3*7495Smckusick static char sccsid[] = "@(#)PCSTART.c 1.7 07/23/82";
41673Smckusick 
55676Smckusic #include <signal.h>
61673Smckusick #include "h00vars.h"
75676Smckusic #include "libpc.h"
81673Smckusick 
91673Smckusick /*
101673Smckusick  * program variables
111673Smckusick  */
121673Smckusick struct display	_disply[MAXLVL];
131673Smckusick int		_argc;
141673Smckusick char		**_argv;
151673Smckusick long		_stlim = 500000;
161673Smckusick long		_stcnt = 0;
172180Smckusic long		_seed = 1;
183016Smckusic #ifdef VAX
191673Smckusick char		*_minptr = (char *)0x7fffffff;
203016Smckusic #else
213016Smckusic char		*_minptr = (char *)0xffff;
223016Smckusic #endif VAX
231673Smckusick char		*_maxptr = (char *)0;
241673Smckusick 
251673Smckusick /*
261673Smckusick  * file record variables
271673Smckusick  */
281673Smckusick long		_filefre = PREDEF;
291673Smckusick struct iorechd	_fchain = {
301673Smckusick 	0, 0, 0, 0,		/* only use fchain field */
311673Smckusick 	INPUT			/* fchain  */
321673Smckusick };
331673Smckusick struct iorec	*_actfile[MAXFILES] = {
341673Smckusick 	INPUT,
351673Smckusick 	OUTPUT,
361673Smckusick 	ERR
371673Smckusick };
381673Smckusick 
391673Smckusick /*
401673Smckusick  * standard files
411673Smckusick  */
421673Smckusick char		_inwin, _outwin, _errwin;
431673Smckusick struct iorechd	input = {
441673Smckusick 	&_inwin,		/* fileptr */
451673Smckusick 	0,			/* lcount  */
461673Smckusick 	0x7fffffff,		/* llimit  */
471673Smckusick 	&_iob[0],		/* fbuf    */
481673Smckusick 	OUTPUT,			/* fchain  */
491673Smckusick 	STDLVL,			/* flev    */
501673Smckusick 	"standard input",	/* pfname  */
51*7495Smckusick 	FTEXT|FREAD|SYNC|EOLN,	/* funit   */
521673Smckusick 	0,			/* fblk    */
531673Smckusick 	1			/* fsize   */
541673Smckusick };
551673Smckusick struct iorechd	output = {
561673Smckusick 	&_outwin,		/* fileptr */
571673Smckusick 	0,			/* lcount  */
581673Smckusick 	0x7fffffff,		/* llimit  */
591673Smckusick 	&_iob[1],		/* fbuf    */
601673Smckusick 	ERR,			/* fchain  */
611673Smckusick 	STDLVL,			/* flev    */
621673Smckusick 	"standard output",	/* pfname  */
631673Smckusick 	FTEXT | FWRITE | EOFF,	/* funit   */
641673Smckusick 	1,			/* fblk    */
651673Smckusick 	1			/* fsize   */
661673Smckusick };
671673Smckusick struct iorechd	_err = {
681673Smckusick 	&_errwin,		/* fileptr */
691673Smckusick 	0,			/* lcount  */
701673Smckusick 	0x7fffffff,		/* llimit  */
711673Smckusick 	&_iob[2],		/* fbuf    */
721673Smckusick 	FILNIL,			/* fchain  */
731673Smckusick 	STDLVL,			/* flev    */
741673Smckusick 	"Message file",		/* pfname  */
751673Smckusick 	FTEXT | FWRITE | EOFF,	/* funit   */
761673Smckusick 	2,			/* fblk    */
771673Smckusick 	1			/* fsize   */
781673Smckusick };
791673Smckusick 
805676Smckusic PCSTART(mode)
815676Smckusic 	int mode;
821673Smckusick {
831673Smckusick 	/*
841673Smckusick 	 * necessary only on systems which do not initialize
851673Smckusick 	 * memory to zero
861673Smckusick 	 */
871673Smckusick 
881673Smckusick 	struct iorec	**ip;
891673Smckusick 
905676Smckusic 	/*
915676Smckusic 	 * if running with runtime tests enabled, give more
925676Smckusic 	 * coherent error messages for FPEs
935676Smckusic 	 */
945676Smckusic 	if (mode) {
955676Smckusic 		signal(SIGFPE, EXCEPT);
965676Smckusic 	}
971673Smckusick 	for (ip = &_actfile[3]; ip < &_actfile[MAXFILES]; *ip++ = FILNIL);
981673Smckusick }
99