Annotation of researchv10no/cmd/basic/bite/src/bas.h, revision 1.1.1.1

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();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.