|
|
1.1 root 1: struct intrpcb {
2: int initpsw;
3: int (*initpc)();
4: int initsp;
5: int psw;
6: int (*pc)(); /* don't ask */
7: int sp;
8: int lower;
9: int upper;
10: int ap;
11: int fp;
12: int reg[9]; /* 9 user registers */
13: int blkmv;
14: };
15:
16: #define PCB_BASE ((struct intrpcb *)0x71c050)
17:
18: #define proc_pcb (PCB_BASE[0]) /* process and interrupt exceptions */
19: #define stack_pcb (PCB_BASE[1]) /* stack exceptions */
20: #define host_pcb (PCB_BASE[2]) /* RS-232 input interrupts */
21: #define out_pcb (PCB_BASE[3]) /* RS-232 output interrupts */
22: #define pioh_pcb (PCB_BASE[4]) /* parallel interface */
23: #define key_pcb (PCB_BASE[5]) /* keyboard interrupts */
24: #define msvid_pcb (PCB_BASE[6]) /* mouse buttons and 60Hz vert. retrace */
25: #define piol_pcb (PCB_BASE[7]) /* stray interrupts */
26: #define int_pcb (PCB_BASE[8]) /* stray interrupts */
27: #define main_pcb (PCB_BASE[9]) /* muxterm itself (short-lived) */
28:
29: #define intrentry(intr, entry)\
30: asm(" .text");\
31: asm(" .globl intr");\
32: asm("intr:");\
33: asm(" call &0,entry");\
34: asm(" RETPS");
35:
36: /*
37: * psw macros from queue.c.
38: */
39: #define pswmax() asm(" PUSHW %psw ");\
40: asm(" ORW2 &0x1e000,%psw ");\
41: asm(" TSTW %r0 ")
42:
43: #define pswback() asm(" POPW %psw ");\
44: asm(" TSTW %r0 ")
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.