File:  [XINU] / xinu / h / intvectors_7300.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:39:14 2018 UTC (8 years, 3 months ago) by root
Branches: xinu, MAIN
CVS tags: xinu-19910600, HEAD
Xinu for 68000/68010

/* intvectors.h: header file for interrupt programming on att7300 */

typedef int (*intvec) ();	/* an intvec is a ptr to a fn */

/* each vector is at address = 4*(intvec slot #) */
/* for ex. the console is at vec slot 29, at address 4*29=116=0x74 */
/* All interrupts on the ATT7300 are "autovectored", so they have */
/* fixed vector locations as follows--                            */

#define CLOCKVEC (*(intvec *)0x78)  /* clock interrupt */
#define CLOCKLEV 6
#define SLUVEC1 (*(intvec *)0x70)  /* the SLU1 int vec at addr 0x70 */
#define SLU1LEV 4		/* interrupt level for SLU1 */
#define SLUVEC3 (*(intvec *)0x6c) /* SLU3 int vec: keyboard */
#define SLU3LEV 3		/* int lev for SLU3 */
#define PIVEC (*(intvec *)0x68)  /* the parallel port, also floppy */
#define PILEV 2

/*  Assembly language envelope routines are available in the att7300
library for the interrupt handlers needed for each of the vectors
defined above.   For example, for the console, SLU1, device, there
is:
.globl _slu1int			| make _slu1int extern
 
 _slu1int: movel a0,sp@-		| save C scratch regs
	movel a1,sp@-
	movel d0,sp@-
	movel d1,sp@-		| (or use movem for better performance)
	jsr _slu1intc		| C will save other regs on entry to routine
	movel sp@+,d1
	movel sp@+,d0
	movel sp@+,a1
	movel sp@+,a0
	rte			| return from interrupt

Similar routines are available for:
slu2int, calling slu2intc
clockint, calling clockintc
spurint, calling spurintc
*/

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.