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