Annotation of researchv10no/cmd/basic/bite/src/bas.h, revision 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.