V10/630/src/pcbs.c

Compare this file to the similar file:
Show the results in this format:

#define PCBSZ	20
#define STKSZ	100
#define MSTK    1024
#define ISTKSZ	64
#define RESETSZ 256
#define EXCEP_TAB_SIZE	32
#define EXCEP_PSW  0x281e100

extern int excep_norm(); /* exception handlers */
extern int excep_proc();
extern int excep_stack();
extern int excep_int();


extern int _start,key_int,host_int,out_int,msvid_int,pioh_int,piol_int;
int istack[ISTKSZ];		/* interrupt stack */
int ststk[RESETSZ];		/* reset exception stack */
int procstk[STKSZ];		/* process exception stack */
int stackstk[STKSZ];		/* stack exception stack */
int hoststk[STKSZ];		/* host input handler stack */
int outstk[STKSZ];		/* host output handler stack */
int piohstk[STKSZ];		/* pioh stack */
int keystk[STKSZ];		/* keyboard interrupt handler stack */
int msvidstk[STKSZ];		/* mouse-video interrupt stack */
int piolstk[STKSZ];		/* piol stack */
int strstk[STKSZ];		/* stray interrupt handler stack */
int mainstk[MSTK];		/* stack for user program */
				/* 4K bytes is default.  User .text, .data and */
				/* .bss follow this, so if it is reduced, it */
				/* will leave more room for user sections - */
				/* just change definition of MSTK and rebuild */
				/* jpcbs.c */

/* bss, gets loaded after the following .data stuff */

int proc_pcb[PCBSZ]={	/* process exceptions and interrupt exceptions */
	0x281e180,
	(int)excep_proc,
	(int)procstk,
	0x281e100,
	(int)excep_proc,
	(int)procstk,
	(int)procstk,
	(int)&procstk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0,0,
};
int stack_pcb[PCBSZ]={	/* stack exceptions */
	0x281e180,
	(int)excep_stack,
	(int)stackstk,
	0x281e100,
	(int)excep_stack,
	(int)stackstk,
	(int)stackstk,
	(int)&stackstk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0,0,
};
int host_pcb[PCBSZ]={	/* RS-232 input interrupts */
	0x281e180,
	(int)&host_int,
	(int)hoststk,
	0x281e100,
	(int)&host_int,
	(int)hoststk,
	(int)hoststk,
	(int)&hoststk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0, 0,
};
int out_pcb[PCBSZ]={	/* RS-232 output interrupts */
	0x281e180,
	(int)&out_int,
	(int)outstk,
	0x281e100,
	(int)&out_int,
	(int)outstk,
	(int)outstk,
	(int)&outstk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0, 0,
};
int pioh_pcb[PCBSZ]={	/* parallel interface, high priority */
	0x281e180,
	(int)&pioh_int,
	(int)piohstk,
	0x281e100,
	(int)&pioh_int,
	(int)piohstk,
	(int)piohstk,
	(int)&piohstk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0,0,
};
int key_pcb[PCBSZ]={	/* keyboard interrupts */
	0x281e180,
	(int)&key_int,
	(int)keystk,
	0x281e100,
	(int)&key_int,
	(int)keystk,
	(int)keystk,
	(int)&keystk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0, 0,
};
int msvid_pcb[PCBSZ]={	/* mouse buttons and 60Hz vertical retrace */
	0x281c180,
	(int)&msvid_int,
	(int)msvidstk,
	0x281c100,
	(int)&msvid_int,
	(int)msvidstk,
	(int)msvidstk,
	(int)&msvidstk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0, 0,
};
int piol_pcb[PCBSZ]={	/* parallel interface, low priority */
	0x281e180,
	(int)&piol_int,
	(int)piolstk,
	0x281e100,
	(int)&piol_int,
	(int)piolstk,
	(int)piolstk,
	(int)&piolstk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0,0,
};
int int_pcb[PCBSZ]={	/* stray interrupts */
	0x281e180,
	(int)excep_int,
	(int)strstk,
	0x281e100,
	(int)excep_int,
	(int)strstk,
	(int)strstk,
	(int)&strstk[STKSZ-1],
	0,0,0,0, 0,0,0,0, 0,0,0,0,
};
int excep_tab[EXCEP_TAB_SIZE] = {	/* This could be done just as  */
			/* copies to save rom space exceptab[2] and mult   */
	EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
	EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
	EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
	EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
	EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
	EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
	EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
	EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm
		  };
int main_pcb[PCBSZ]={	/* muxterm itself (short-lived) */
	0x281e180,
	(int)&_start,
	(int)mainstk,
	0x281e100,
	(int)&_start,
	(int)mainstk,
	(int)mainstk,
	(int)&mainstk[MSTK-1],
	0,0,0,0, 0,0,0,0, 0,0,0,0,
};