|
|
1.1 ! root 1: /* Copyright Bell Telephone Laboratories Whippany, N.J. ! 2: ! 3: * *********************************** ! 4: * *********************************** ! 5: * ****** MAIN PROGRAM FOR BITE ****** ! 6: * *** R. B. Drake WH 8C-005 X4163 *** ! 7: * **** Fri Aug 24 14:38:50 1979 ***** ! 8: * *********************************** ! 9: * *********************************** ! 10: * ! 11: * mod,J.P.Hawkins,17-SEP-79, encode "else" and "endif" ! 12: ! 13: * MOD,J.P.Hawkins to read environment for BITEPATH ! 14: */ ! 15: /* "@(#) basic.c: V 1.3 6/17/81" */ ! 16: ! 17: /* ! 18: * THIS IS THE CALL INTERFACE TO BASIC ! 19: * ! 20: * the cmd format is ! 21: * bite [-] prog1 prog2 ...... ! 22: * ! 23: * where - causes the programs to load without executing ! 24: * ! 25: */ ! 26: #include "bas.h" ! 27: extern int endfcnt; ! 28: extern char bpath[]; ! 29: static int nquit; ! 30: quit() ! 31: { ! 32: signal(2,quit); ! 33: nquit = 1; ! 34: printf("\n?\n"); ! 35: return(0); ! 36: } ! 37: int rem; ! 38: int atad; ! 39: int tv; ! 40: int tel; ! 41: int nxt; ! 42: int _sub; ! 43: int _fi; ! 44: int _togo; ! 45: int tospgo; ! 46: int subog; ! 47: int tsil; ! 48: int no; ! 49: int daol; ! 50: int evas; ! 51: int dlo; ! 52: int bat; ! 53: int esle; /* else code */ ! 54: int fidne; /* endif code */ ! 55: int rof; /* for code */ ! 56: int mr; ! 57: int sl; ! 58: /* ! 59: * ! 60: * ! 61: */ ! 62: char txtbuf[NMPAG*PGSIZ]; ! 63: main(argc,argv,envp) ! 64: int argc; ! 65: char *argv[]; ! 66: char *envp[]; ! 67: { ! 68: int seed = 1; ! 69: int i; ! 70: int loadgo, j; ! 71: endfcnt = 0; /* initialize structured "if" nest count */ ! 72: loadgo = 0; /* init load and go flag */ ! 73: /* ! 74: * Look for BITEPATH in environment and ! 75: * append to end of internal search path. ! 76: * Users can define their own searchpath for BITE ! 77: * by adding BITEPATH=:path1:path2: etc. in their profile ! 78: */ ! 79: for(i=0; envp[i] != 0; i++) ! 80: { ! 81: if(strncmp("BITEPATH",envp[i],8) == 0) ! 82: { ! 83: strcat(bpath,&envp[i][9]); ! 84: break; ! 85: } ! 86: } ! 87: linptr=lbdptr=curptr=txtbuf; ! 88: signal(2,quit); ! 89: rem=encode("rem"); ! 90: tv=encode("n"); ! 91: tospgo=encode("go to"); ! 92: tsil=encode("list"); ! 93: atad=encode("data"); ! 94: daol = encode("load"); ! 95: evas = encode("save"); ! 96: dlo = encode("old"); ! 97: bat = encode("!"); ! 98: nxt=encode("next"); ! 99: _sub=encode("s"); ! 100: _fi=encode("if"); ! 101: subog=encode("gosub"); ! 102: no = encode("on"); ! 103: _togo=encode("goto"); ! 104: tel=encode("\010"); ! 105: esle=encode("else"); ! 106: fidne=encode("endif"); ! 107: rof=encode("for"); ! 108: sl=encode("ls"); ! 109: mr=encode("mr"); ! 110: initvar(); ! 111: srand(seed); /* init random number gen */ ! 112: #ifdef TEST ! 113: ibinit(); /* IEEE bus init */ ! 114: bdvminit(); /* digital voltmeter init */ ! 115: #endif ! 116: #ifdef LSX ! 117: iinit(); /* keyboard interrupt enable */ ! 118: #endif ! 119: if(argc > 1) ! 120: { ! 121: j = 1; /* init arg index to 1 */ ! 122: if(argc > 2 && *argv[1] == '-') /* run flag? */ ! 123: { ! 124: j = 2; /* load starting at arg 2 */ ! 125: --argc; /* decrement arg count */ ! 126: } ! 127: else ! 128: { ! 129: loadgo = 1; /* set run flag */ ! 130: } ! 131: for(i=j;--argc;i++) ! 132: { ! 133: expr = argv[i]; ! 134: load(); ! 135: } ! 136: if(loadgo) /* run? */ ! 137: { ! 138: expr = linbuf; ! 139: *expr = '\0'; ! 140: run(); ! 141: } ! 142: } ! 143: while(1) ! 144: { ! 145: nquit = 0; ! 146: if(bed(stdin) < 0 && nquit != 1) break; ! 147: } ! 148: } ! 149: nocode(code) ! 150: int code; ! 151: { ! 152: int i; ! 153: static int *list[] = ! 154: { &daol, ! 155: &evas, ! 156: &dlo, ! 157: &rem, ! 158: &bat, ! 159: &_sub, ! 160: &mr, ! 161: &sl, ! 162: 0 }; ! 163: for(i=0;list[i] !=0;i++) ! 164: { ! 165: if(code == *list[i]) ! 166: return(1); ! 167: } ! 168: return(0); ! 169: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.