|
|
1.1 root 1: #define PCBSZ 20
2: #define STKSZ 100
3: #define MSTK 1024
4: #define ISTKSZ 64
5: #define RESETSZ 256
6: #define EXCEP_TAB_SIZE 32
7: #define EXCEP_PSW 0x281e100
8:
9: extern int excep_norm(); /* exception handlers */
10: extern int excep_proc();
11: extern int excep_stack();
12: extern int excep_int();
13:
14:
15: extern int _start,key_int,host_int,out_int,msvid_int,pioh_int,piol_int;
16: int istack[ISTKSZ]; /* interrupt stack */
17: int ststk[RESETSZ]; /* reset exception stack */
18: int procstk[STKSZ]; /* process exception stack */
19: int stackstk[STKSZ]; /* stack exception stack */
20: int hoststk[STKSZ]; /* host input handler stack */
21: int outstk[STKSZ]; /* host output handler stack */
22: int piohstk[STKSZ]; /* pioh stack */
23: int keystk[STKSZ]; /* keyboard interrupt handler stack */
24: int msvidstk[STKSZ]; /* mouse-video interrupt stack */
25: int piolstk[STKSZ]; /* piol stack */
26: int strstk[STKSZ]; /* stray interrupt handler stack */
27: int mainstk[MSTK]; /* stack for user program */
28: /* 4K bytes is default. User .text, .data and */
29: /* .bss follow this, so if it is reduced, it */
30: /* will leave more room for user sections - */
31: /* just change definition of MSTK and rebuild */
32: /* jpcbs.c */
33:
34: /* bss, gets loaded after the following .data stuff */
35:
36: int proc_pcb[PCBSZ]={ /* process exceptions and interrupt exceptions */
37: 0x281e180,
38: (int)excep_proc,
39: (int)procstk,
40: 0x281e100,
41: (int)excep_proc,
42: (int)procstk,
43: (int)procstk,
44: (int)&procstk[STKSZ-1],
45: 0,0,0,0, 0,0,0,0, 0,0,0,0,
46: };
47: int stack_pcb[PCBSZ]={ /* stack exceptions */
48: 0x281e180,
49: (int)excep_stack,
50: (int)stackstk,
51: 0x281e100,
52: (int)excep_stack,
53: (int)stackstk,
54: (int)stackstk,
55: (int)&stackstk[STKSZ-1],
56: 0,0,0,0, 0,0,0,0, 0,0,0,0,
57: };
58: int host_pcb[PCBSZ]={ /* RS-232 input interrupts */
59: 0x281e180,
60: (int)&host_int,
61: (int)hoststk,
62: 0x281e100,
63: (int)&host_int,
64: (int)hoststk,
65: (int)hoststk,
66: (int)&hoststk[STKSZ-1],
67: 0,0,0,0, 0,0,0,0, 0,0,0, 0,
68: };
69: int out_pcb[PCBSZ]={ /* RS-232 output interrupts */
70: 0x281e180,
71: (int)&out_int,
72: (int)outstk,
73: 0x281e100,
74: (int)&out_int,
75: (int)outstk,
76: (int)outstk,
77: (int)&outstk[STKSZ-1],
78: 0,0,0,0, 0,0,0,0, 0,0,0, 0,
79: };
80: int pioh_pcb[PCBSZ]={ /* parallel interface, high priority */
81: 0x281e180,
82: (int)&pioh_int,
83: (int)piohstk,
84: 0x281e100,
85: (int)&pioh_int,
86: (int)piohstk,
87: (int)piohstk,
88: (int)&piohstk[STKSZ-1],
89: 0,0,0,0, 0,0,0,0, 0,0,0,0,
90: };
91: int key_pcb[PCBSZ]={ /* keyboard interrupts */
92: 0x281e180,
93: (int)&key_int,
94: (int)keystk,
95: 0x281e100,
96: (int)&key_int,
97: (int)keystk,
98: (int)keystk,
99: (int)&keystk[STKSZ-1],
100: 0,0,0,0, 0,0,0,0, 0,0,0, 0,
101: };
102: int msvid_pcb[PCBSZ]={ /* mouse buttons and 60Hz vertical retrace */
103: 0x281c180,
104: (int)&msvid_int,
105: (int)msvidstk,
106: 0x281c100,
107: (int)&msvid_int,
108: (int)msvidstk,
109: (int)msvidstk,
110: (int)&msvidstk[STKSZ-1],
111: 0,0,0,0, 0,0,0,0, 0,0,0, 0,
112: };
113: int piol_pcb[PCBSZ]={ /* parallel interface, low priority */
114: 0x281e180,
115: (int)&piol_int,
116: (int)piolstk,
117: 0x281e100,
118: (int)&piol_int,
119: (int)piolstk,
120: (int)piolstk,
121: (int)&piolstk[STKSZ-1],
122: 0,0,0,0, 0,0,0,0, 0,0,0,0,
123: };
124: int int_pcb[PCBSZ]={ /* stray interrupts */
125: 0x281e180,
126: (int)excep_int,
127: (int)strstk,
128: 0x281e100,
129: (int)excep_int,
130: (int)strstk,
131: (int)strstk,
132: (int)&strstk[STKSZ-1],
133: 0,0,0,0, 0,0,0,0, 0,0,0,0,
134: };
135: int excep_tab[EXCEP_TAB_SIZE] = { /* This could be done just as */
136: /* copies to save rom space exceptab[2] and mult */
137: EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
138: EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
139: EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
140: EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
141: EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
142: EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
143: EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm,
144: EXCEP_PSW,(int)excep_norm, EXCEP_PSW, (int)excep_norm
145: };
146: int main_pcb[PCBSZ]={ /* muxterm itself (short-lived) */
147: 0x281e180,
148: (int)&_start,
149: (int)mainstk,
150: 0x281e100,
151: (int)&_start,
152: (int)mainstk,
153: (int)mainstk,
154: (int)&mainstk[MSTK-1],
155: 0,0,0,0, 0,0,0,0, 0,0,0,0,
156: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.