|
|
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.