53 lines
		
	
	
	
		
			893 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			893 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Id$ */
 | |
| /*	ocrt.c - Occam runtime support */
 | |
| #include "ocm_chan.h"
 | |
| 
 | |
| int chandes[]= { 0, 0, sizeof(int)+sizeof(long) };
 | |
| int worddes[]= { 0, 0, sizeof(long) };
 | |
| int bytedes[]= { 0, 0, 1 };
 | |
| long any;
 | |
| 
 | |
| void catch(sig, file, line) int sig; char *file; int line;
 | |
| /* Catches traps in the occam program */
 | |
| {
 | |
| 	register char *mes;
 | |
| 
 | |
| 	switch (sig) {
 | |
| 	case 0:
 | |
| 		mes="array bound error";
 | |
| 		break;
 | |
| 	case 6:
 | |
| 		mes="division by zero";
 | |
| 		break;
 | |
| 	case 8:
 | |
| 		mes="undefined variable";
 | |
| 		break;
 | |
| 	default:
 | |
| 		return;
 | |
| 	}
 | |
| 	fprintf(stderr, "%s (%d) F: %s\n", file, line, mes);
 | |
| 	abort();
 | |
| }
 | |
| 
 | |
| chan file[20];
 | |
| FILE *unix_file[20];
 | |
| 
 | |
| void initfile()
 | |
| {
 | |
| 	register i;
 | |
| 	register chan *c=file;
 | |
| 
 | |
| 	for (i=0; i<20; i++) {
 | |
| 		c->type=C_T_FILE;
 | |
| 		c->f.flgs=0;
 | |
| 		(c++)->f.index=i;
 | |
| 	}
 | |
| 	file[0].f.flgs|=C_F_INUSE;
 | |
| 	unix_file[0]=stdin;
 | |
| 
 | |
| 	file[1].f.flgs|=C_F_INUSE;
 | |
| 	unix_file[1]=stdout;
 | |
| 
 | |
| 	file[2].f.flgs|=C_F_INUSE;
 | |
| 	unix_file[2]=stderr;
 | |
| }
 |