xref: /csrg-svn/usr.bin/pascal/libpc/PCSTART.c (revision 10231)
11673Smckusick /* Copyright (c) 1979 Regents of the University of California */
21673Smckusick 
3*10231Smckusick static char sccsid[] = "@(#)PCSTART.c 1.8 01/10/83";
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;
18*10231Smckusick #ifdef ADDR32
191673Smckusick char		*_minptr = (char *)0x7fffffff;
20*10231Smckusick #endif ADDR32
21*10231Smckusick #ifdef ADDR16
223016Smckusic char		*_minptr = (char *)0xffff;
23*10231Smckusick #endif ADDR16
241673Smckusick char		*_maxptr = (char *)0;
251673Smckusick 
261673Smckusick /*
271673Smckusick  * file record variables
281673Smckusick  */
291673Smckusick long		_filefre = PREDEF;
301673Smckusick struct iorechd	_fchain = {
311673Smckusick 	0, 0, 0, 0,		/* only use fchain field */
321673Smckusick 	INPUT			/* fchain  */
331673Smckusick };
341673Smckusick struct iorec	*_actfile[MAXFILES] = {
351673Smckusick 	INPUT,
361673Smckusick 	OUTPUT,
371673Smckusick 	ERR
381673Smckusick };
391673Smckusick 
401673Smckusick /*
411673Smckusick  * standard files
421673Smckusick  */
431673Smckusick char		_inwin, _outwin, _errwin;
441673Smckusick struct iorechd	input = {
451673Smckusick 	&_inwin,		/* fileptr */
461673Smckusick 	0,			/* lcount  */
471673Smckusick 	0x7fffffff,		/* llimit  */
481673Smckusick 	&_iob[0],		/* fbuf    */
491673Smckusick 	OUTPUT,			/* fchain  */
501673Smckusick 	STDLVL,			/* flev    */
511673Smckusick 	"standard input",	/* pfname  */
527495Smckusick 	FTEXT|FREAD|SYNC|EOLN,	/* funit   */
531673Smckusick 	0,			/* fblk    */
541673Smckusick 	1			/* fsize   */
551673Smckusick };
561673Smckusick struct iorechd	output = {
571673Smckusick 	&_outwin,		/* fileptr */
581673Smckusick 	0,			/* lcount  */
591673Smckusick 	0x7fffffff,		/* llimit  */
601673Smckusick 	&_iob[1],		/* fbuf    */
611673Smckusick 	ERR,			/* fchain  */
621673Smckusick 	STDLVL,			/* flev    */
631673Smckusick 	"standard output",	/* pfname  */
641673Smckusick 	FTEXT | FWRITE | EOFF,	/* funit   */
651673Smckusick 	1,			/* fblk    */
661673Smckusick 	1			/* fsize   */
671673Smckusick };
681673Smckusick struct iorechd	_err = {
691673Smckusick 	&_errwin,		/* fileptr */
701673Smckusick 	0,			/* lcount  */
711673Smckusick 	0x7fffffff,		/* llimit  */
721673Smckusick 	&_iob[2],		/* fbuf    */
731673Smckusick 	FILNIL,			/* fchain  */
741673Smckusick 	STDLVL,			/* flev    */
751673Smckusick 	"Message file",		/* pfname  */
761673Smckusick 	FTEXT | FWRITE | EOFF,	/* funit   */
771673Smckusick 	2,			/* fblk    */
781673Smckusick 	1			/* fsize   */
791673Smckusick };
801673Smckusick 
815676Smckusic PCSTART(mode)
825676Smckusic 	int mode;
831673Smckusick {
841673Smckusick 	/*
851673Smckusick 	 * necessary only on systems which do not initialize
861673Smckusick 	 * memory to zero
871673Smckusick 	 */
881673Smckusick 
891673Smckusick 	struct iorec	**ip;
901673Smckusick 
915676Smckusic 	/*
925676Smckusic 	 * if running with runtime tests enabled, give more
935676Smckusic 	 * coherent error messages for FPEs
945676Smckusic 	 */
955676Smckusic 	if (mode) {
965676Smckusic 		signal(SIGFPE, EXCEPT);
975676Smckusic 	}
981673Smckusick 	for (ip = &_actfile[3]; ip < &_actfile[MAXFILES]; *ip++ = FILNIL);
991673Smckusick }
100