|
|
1.1 ! root 1: #include <signal.h> ! 2: #include <stdio.h> ! 3: ! 4: /* Copyright Bell Telephone Laboratories Whippany, N.J. ! 5: ! 6: * ************************************* ! 7: * ************************************* ! 8: * ********* BITE HEADER FILE ********** ! 9: * **** R. B. Drake WH 8C-005 X4163 **** ! 10: * **************** and //////////////// ! 11: * /// J. P. Hawkins WH X4610 8C-001 /// ! 12: * ///// Tue Aug 28 08:04:33 1979 ////// ! 13: * ///////////////////////////////////// ! 14: * ///////////////////////////////////// ! 15: ! 16: */ ! 17: /* "@(#) bas.h: V 1.6 3/4/81" */ ! 18: /* ! 19: * MOD for Strings, J.P.Hawkins, 31-JAN-81 ! 20: */ ! 21: ! 22: #define STRINGS /* Comment out if string handling to be omitted */ ! 23: /* ! 24: * REMOVE REMARK DEVICES IF COMPILING FOR LSX ! 25: */ ! 26: ! 27: /* ! 28: * classification codes for algebraic expression fields ! 29: * as returned by routine class() ! 30: */ ! 31: #ifdef LSX ! 32: #define PGSIZ 256 ! 33: #define PREC sizeof(float) ! 34: #endif ! 35: #ifndef LSX ! 36: #define PREC sizeof(double) ! 37: #define PGSIZ 1023 /* cannot exceed 1023 because "loader ld" ! 38: calculates 1024*32=MINUS it doesn't ! 39: handle 2's compliment correctly 32K is ! 40: enough anyway */ ! 41: #endif ! 42: #define NMPAG 32 ! 43: #define NOMAX 10 /* max size of ascii line number buffer */ ! 44: #define OPMAX 10 /* max size of ascii operation code buffer */ ! 45: #define LINMAX 80 /* max size of a single line buffer */ ! 46: #define MAXDIM 10 /* maximum number of dimensions of array */ ! 47: #define MAXFREE 40 /* Max num of remembered freed spaces for strings */ ! 48: ! 49: /* These constants used for FIELD TYPE identification by class() */ ! 50: ! 51: #define OPCLASS 1 /* operator field ^ * / + - ( */ ! 52: #define NMCLASS 2 /* numeric field */ ! 53: #define VRCLASS 3 /* variable name */ ! 54: #define VACLASS 5 /* variable array name */ ! 55: #define FNCLASS 6 /* function name */ ! 56: #define STCLASS 7 /* STRING class */ ! 57: #define SVCLASS 8 /* STRING variable class */ ! 58: #define SFCLASS 9 /* STRING function class */ ! 59: #define SACLASS 10 /* STRING array class */ ! 60: ! 61: /* string freelist */ ! 62: ! 63: struct FREELIST { ! 64: int size; /* size of memory void left by removed str */ ! 65: char *fraddr; /* address of void */ ! 66: }; ! 67: ! 68: /* command table entry template */ ! 69: ! 70: struct COMMAND { ! 71: char *cmdtxt; /* pointer to command test string */ ! 72: int (*function)(); /* pointer to correstponding service rtn */ ! 73: }; ! 74: ! 75: /* line number and command code structure aligned with 4 bytes for storage*/ ! 76: union bascmd ! 77: { ! 78: struct ! 79: { ! 80: short linno; ! 81: struct ! 82: { ! 83: char hibyte; ! 84: char lobyte; ! 85: } opcode; ! 86: }thing; ! 87: char byte[4]; ! 88: }; ! 89: ! 90: struct pages ! 91: { ! 92: int maxlin; /* max line number in a 512 byte page */ ! 93: char *begin; /* pointer to the start of the first line on a page */ ! 94: }; ! 95: ! 96: /* ! 97: * FILE SLOT TABLE ! 98: */ ! 99: struct FILTBL { ! 100: char mode; /* 'r', 'w' or 'a' */ ! 101: int fildes; /* system assigned "file descriptor" */ ! 102: }; ! 103: /* variable byte alignment for "no holes" storage */ ! 104: ! 105: union VARIABLE {double var ; char var4th[PREC];}; ! 106: ! 107: extern union bascmd inst; ! 108: extern union bascmd local; ! 109: extern char linbuf[]; ! 110: extern char *expr; ! 111: extern char txtbuf[]; ! 112: extern char *linptr; ! 113: extern struct pages index[]; ! 114: extern union VARIABLE varbyts; ! 115: extern struct COMMAND cmdtbl[]; ! 116: extern char *curptr,*lbdptr; ! 117: extern int pg,size; ! 118: /* ! 119: * //////// BASIC ROUTINE DISPATCHER //////// ! 120: * ! 121: * it is really a call indirect for table driven calls. ! 122: * calling format: ! 123: * bascall(code); ! 124: * ! 125: * where: code = legal BASIC PSEUDO opcode ! 126: */ ! 127: #define bascall(opcode) ((*cmdtbl[opcode].function)(0)) ! 128: /* ! 129: * ! 130: * //// RETURN POINTER TO COMMAND STRING FOR GIVEN OPCODE //// ! 131: * ! 132: * ! 133: * calling format: ! 134: * ptr = decode(opcode); ! 135: * ! 136: * where: ptr = returned pointer to command string ! 137: * opcode = VALID opcode (integer value) ! 138: * the opcode is assumed to be valid since ! 139: * it was "compiled" from the same code referenced ! 140: * ! 141: */ ! 142: #define decode(opcode) (cmdtbl[opcode].cmdtxt) ! 143: /* ! 144: #define logten(x) ((x) <= 0) ? 0. : (.4342944819 * log(x))) ! 145: */ ! 146: ! 147: /* jimmy added */ ! 148: ! 149: /* ! 150: * symbol table pointers ! 151: */ ! 152: char *symtab[26][11]; ! 153: char *asymtab[26][11]; ! 154: char *ssymtab[26][11]; ! 155: char *sasymtab[26][11]; ! 156: ! 157: extern char scratch[]; ! 158: extern int endfcnt; ! 159: extern char bpath[]; ! 160: extern int singflg; ! 161: extern int tv; ! 162: extern int rem; ! 163: extern int _sub; ! 164: extern int tel; ! 165: extern int stpflg; ! 166: extern int autflg,aut,inc; ! 167: extern moreflag[]; ! 168: extern struct FILTBL filtbl[]; ! 169: extern char _string[]; ! 170: extern int pg; ! 171: extern char temp[]; ! 172: extern int start,finish; ! 173: extern int line; ! 174: extern int _comflg; /* common flag */ ! 175: extern int stpflg; ! 176: extern char *eoexpr; ! 177: extern int stpflg; /* stop flag for fatal error */ ! 178: char *hicore; /* highest free user location pointer */ ! 179: extern struct FREELIST freelist[]; ! 180: extern char filnam[]; ! 181: extern char *curptr; ! 182: extern int singflg; ! 183: extern int rof; ! 184: extern int singst; ! 185: extern int nxt,stpflg; ! 186: extern char filnam[]; ! 187: extern int singflg; ! 188: extern int singst; ! 189: extern char *ptr; ! 190: extern int stpflg; ! 191: extern int start; ! 192: extern char *ptr,*curptr; ! 193: extern int esle,fidne; /* codes for "else" and "endif" */ ! 194: extern char *eoexpr; /* pointer to char after eval expr */ ! 195: extern char ascop[]; /*use for variable name string*/ ! 196: extern int stpflg; ! 197: extern char linbuf[]; ! 198: extern char linbuf[]; ! 199: extern int aut,autflg,inc; ! 200: extern char *lbdptr,*curptr; ! 201: extern char *keyword[]; ! 202: extern int start,finish; ! 203: extern char filnam[]; ! 204: extern char txtbuf[]; ! 205: extern int stpflg; ! 206: extern struct FILTBL filtbl[]; ! 207: extern int ticks; /* LTC 1/60th sec counter */ ! 208: extern int atad; ! 209: extern int no; ! 210: extern char temp[]; ! 211: extern char *endob; ! 212: extern int _fi,_togo,subog; ! 213: extern int tsil,tospgo; ! 214: extern int start,finish; ! 215: extern char _string[]; ! 216: extern int stopl(); ! 217: extern int singst; ! 218: extern int stpflg; ! 219: extern int endfcnt; /* structured "if" nest count */ ! 220: extern int forflg; /* nested for count */ ! 221: extern int bflag,cflag; /* break count */ ! 222: extern int quit(); ! 223: extern int _comflg; /* common flag */ ! 224: extern char filnam[]; ! 225: extern char linbuf[]; ! 226: extern char _string[]; ! 227: extern int stpflg; ! 228: extern char *ptr; ! 229: extern int subog; ! 230: extern int stpflg; ! 231: extern char _string[]; ! 232: extern int bflag,cflag; /* break & continue flag */ ! 233: extern int esle,fidne; /* else and endif codes */ ! 234: extern int _togo; /* "goto" code */ ! 235: extern int _fi; ! 236: extern int stpflg; /* stop flag */ ! 237: extern char *ptr; ! 238: extern char txtbuf[]; ! 239: #define strcat Strcat ! 240: char *strcat(), *carcat(); ! 241: char *expand(); ! 242: char *prncpy(); ! 243: #define pause Pause ! 244: #define rand Rand ! 245: #define srand Srand ! 246: long lseek(); ! 247: char *strcpy();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.