Annotation of 43BSD/ucb/lisp/franz/data.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char *rcsid =
        !             3:    "$Header: data.c,v 1.8 85/03/24 11:02:24 sklower Exp $";
        !             4: #endif
        !             5: 
        !             6: /*                                     -[Sun Jun 19 14:41:00 1983 by jkf]-
        !             7:  *     data.c                          $Locker:  $
        !             8:  * static storage declarations
        !             9:  *
        !            10:  * (c) copyright 1982, Regents of the University of California
        !            11:  */
        !            12: 
        !            13: 
        !            14: 
        !            15: #include       "global.h"
        !            16: #include       "gtabs.h"
        !            17: #include       "structs.h"
        !            18: #include       "frame.h"
        !            19: #include       <stdio.h>
        !            20: 
        !            21: /*char firstalloc[NBPG] = { 'x' };     /* first thing allocated in file */
        !            22: lispval lispsys[SIGNIF];       /* lisp data used by system */
        !            23: 
        !            24: lispval gftab[GFTABLEN];       /* global function table for interpreter */
        !            25: 
        !            26: lispval gctab[GCTABLEN] =      /* global constant table for interpreter */
        !            27:        {nil,0,SMALL(-1),SMALL(0),SMALL(1),SMALL(2),SMALL(3),SMALL(4)};
        !            28: 
        !            29: 
        !            30: /* Port definitions *****************************************************/
        !            31: FILE   *piport,                /* standard input port          */
        !            32:        *poport,                /* standard output port         */
        !            33:        *errport,               /* port for error messages      */
        !            34:        *rdrport,               /* temporary port for readr     */
        !            35:        *proport;               /* port for protocal            */
        !            36: int    lineleng =      80;             /* line length desired          */
        !            37: int    rlevel;                 /* used to indicate depth of recursion
        !            38:                                   in reader.  No longer really necessary */
        !            39: char   keybin =        FALSE;          /* logical flag: using keyboard */
        !            40: char   protflag =      FALSE;          /* logical flag: want protocall */
        !            41: char   rbktf;                          /* logical flag: ] mode         */
        !            42: 
        !            43: #ifdef RTPORTS
        !            44: lispval ioname[128];           /* strings of names of files currently open     */
        !            45: #else 
        !            46: lispval ioname[_NFILE];                /* strings of names of files currently open     */
        !            47: #endif
        !            48: 
        !            49: /* name stack ***********************************************************/
        !            50: struct argent *orgnp;          /* used by top level to reset to start  */
        !            51: struct argent          *namptr,                /* temporary pointer    */
        !            52: #ifndef NPINREG
        !            53:                        *lbot,                  /* beginning of frame   */
        !            54:                        *np,                    /* first free entry     */
        !            55: #endif
        !            56:                        *nplim;                 /* don't have this = np */
        !            57: struct nament          *bnp,                   /* top of bind stack    */
        !            58:                        *orgbnp,                /* absolute bottom of ""*/
        !            59:                        *bnplim;                /* absolute top of ""   */
        !            60: 
        !            61: 
        !            62: 
        !            63: /* hashing things *******************************************************/
        !            64: int    hash;                                   /* set by ratom         */
        !            65: int    atmlen;                 /* length of atom including final null  */
        !            66: 
        !            67: 
        !            68: /* big string buffer for whomever needs it ******************************/
        !            69: static char    i_strbuf[600];
        !            70: char   *strbuf         = i_strbuf;
        !            71: char   *endstrb        = i_strbuf + 599;
        !            72: 
        !            73: /* in the case we can't use the C stack for extending automatics */
        !            74: #ifdef SPISFP
        !            75: long xstack[16384];
        !            76: long *xsp;
        !            77: long *exsp = xstack + ((sizeof xstack)/(sizeof (long)));
        !            78: #endif
        !            79: 
        !            80: /* strings needed by the two hand crafted atoms, nil and eof */
        !            81: char nilpname[] = "nil";
        !            82: char eofpname[] = "eof";
        !            83: 
        !            84: /* set by sstatus commands */
        !            85: int uctolc = 0;                /* when set, uc chars in atoms go to lc */
        !            86:                        /* default mode for dumplisp 
        !            87:                           (note this is decimal not octal) */
        !            88: #if os_unisoft || os_unix_ts
        !            89: int dmpmode = 410;
        !            90: #else
        !            91: int dmpmode = 413;
        !            92: #endif
        !            93: 
        !            94: /* break and error declarations *****************************************/
        !            95: int    depth = 0;              /* depth of nested breaks               */
        !            96: lispval        contval;                /* the value being returned up          */
        !            97: int    retval;                 /* used by each error/prog call         */
        !            98: lispval lispretval;            /* used by non-local goto's             */
        !            99: int    rsetsw;                 /* when set, trace frames built         */
        !           100: int    bcdtrsw;                /* when set with rsetsw, trace bcd too  */
        !           101: int    evalhcallsw;            /* when set will not evalhook next eval */
        !           102: int    funhcallsw;             /* when set will not funcallhook next eval */
        !           103: 
        !           104: 
        !           105: /* exception handling stuff *********************************************/
        !           106: int exception;                 /* true if an exception is pending */
        !           107: int sigintcnt;                 /* number of SIGINT's pending      */
        !           108: 
        !           109: /* current state of the hole (for fasling into) *************************/
        !           110: #ifndef HOLE
        !           111: #define HOLE 0
        !           112: #endif
        !           113: extern char holbeg[];
        !           114: char *curhbeg = holbeg;                        /* next location to fasl into */
        !           115: int usehole = HOLE;                    /* if TRUE, fasl tries to use hole */
        !           116: int holesize = HOLE;                   /* This avoids an ifdef in dumplisp */
        !           117: 
        !           118: /* other stuff **********************************************************/
        !           119: lispval        ftemp,vtemp,argptr,ttemp;       /* temporaries: use briefly     */
        !           120: int itemp;
        !           121: lispval sigacts[16];                   /* for catching interrupts      */
        !           122: int sigstruck,sigdelay;                        /* for catching interrupts      */
        !           123: lispval stattab[16];                   /* miscelleneous options        */
        !           124: lispval Vprintsym;                     /* value is the symbol 'print'  */
        !           125: 
        !           126: /*  interpreter globals    */
        !           127: 
        !           128: int lctrace;
        !           129: int fvirgin = 1;               /* set to 1 initially                   */
        !           130: int gctime;
        !           131: struct frame *errp;            /* stack of error frames                */
        !           132: 
        !           133: 
        !           134: /* global pointers to the transfer tables */
        !           135: 
        !           136: 
        !           137: struct trtab *trhead=          /* first in list of transfer tables        */
        !           138:       (struct trtab *) 0;
        !           139: struct trent *trcur;           /* next entry to allocate                  */
        !           140: int trleft = 0;                        /* number of entries left in current table */
        !           141: 
        !           142: /* globals from sysat.c  */
        !           143: 
        !           144: int *beginsweep;               /* place for sweeper to begin           */
        !           145: int initflag = TRUE;           /* inhibit gcing initially              */
        !           146: int tgcthresh = 15;
        !           147: int page_limit = (5 * TTSIZE) / 6;
        !           148: int ttsize = TTSIZE;
        !           149: 
        !           150: 
        !           151: /* global used in io.c */
        !           152: 
        !           153: lispval lastrtab;
        !           154: 
        !           155: /* globals from [VT]alloc.c  */
        !           156: 
        !           157: 
        !           158: char purepage[TTSIZE];
        !           159: int fakettsize = TTSIZE - 8;
        !           160: int gcstrings;                         /*  Do we mark and sweep strings? */
        !           161: int  *bind_lists = (int *) CNIL;       /*  lisp data for compiled code */
        !           162: 
        !           163: 
        !           164: struct str_x str_current[2];           /*  next free string spaces */
        !           165: 
        !           166: struct types
        !           167:        atom_str =
        !           168:        {
        !           169:                (char *)CNIL,   0,      ATOMSPP,        ATOM,   5,
        !           170:                &atom_items,    &atom_pages,    &atom_name,
        !           171:                (struct heads *) CNIL, (char *)CNIL
        !           172:        },
        !           173:        strng_str =
        !           174:        {
        !           175:                (char *) CNIL,  0,      STRSPP,         STRNG,  128,
        !           176:                &str_items,     &str_pages,     &str_name,
        !           177:                (struct heads *) CNIL, (char *)CNIL
        !           178:        },
        !           179:        int_str =
        !           180:        {
        !           181:                (char *) CNIL,  0,      INTSPP,         INT,    1,
        !           182:                &int_items,     &int_pages,     &int_name,
        !           183:                (struct heads *) CNIL, (char *)CNIL
        !           184:        },
        !           185:        dtpr_str =
        !           186:        {
        !           187:                (char *) CNIL,  0,      DTPRSPP,        DTPR,   2,
        !           188:                &dtpr_items,    &dtpr_pages,    &dtpr_name,
        !           189:                (struct heads *) CNIL, (char *)CNIL
        !           190:        },
        !           191:        doub_str =
        !           192:        {
        !           193:                (char *) CNIL,  0,      DOUBSPP,        DOUB,   2,
        !           194:                &doub_items,    &doub_pages,    &doub_name,
        !           195:                (struct heads *) CNIL, (char *)CNIL
        !           196:        },
        !           197:        array_str =
        !           198:        {
        !           199:                (char *) CNIL,  0,      ARRAYSPP,       ARRAY,  5,
        !           200:                &array_items,   &array_pages,   &array_name,
        !           201:                (struct heads *) CNIL, (char *)CNIL
        !           202:        },
        !           203:        other_str =
        !           204:        {
        !           205:                (char *) CNIL,  0,      STRSPP,         OTHER,  128,
        !           206:                &other_items,   &other_pages,   &other_name,
        !           207:                (struct heads *) CNIL, (char *)CNIL
        !           208:        },
        !           209: 
        !           210:        sdot_str =
        !           211:        {
        !           212:                (char *) CNIL,  0,      SDOTSPP,        SDOT,   2,
        !           213:                &sdot_items,    &sdot_pages,    &sdot_name,
        !           214:                (struct heads *) CNIL, (char *)CNIL
        !           215:        },
        !           216:        val_str =
        !           217:        {
        !           218:                (char *) CNIL,  0,      VALSPP,         VALUE,  1,
        !           219:                &val_items,     &val_pages,     &val_name,
        !           220:                (struct heads *) CNIL, (char *)CNIL
        !           221:        },
        !           222: funct_str =
        !           223:        {
        !           224:                (char *) CNIL,  0,      BCDSPP,         BCD,    2,
        !           225:                &funct_items,   &funct_pages,   &funct_name,
        !           226:                (struct heads *) CNIL, (char *)CNIL
        !           227:        },
        !           228: vect_str =
        !           229:        {
        !           230:                
        !           231:                (char *) CNIL,  0,      VECTORSPP,      VECTOR, 1,
        !           232:                &vect_items,    &vect_pages,    &vect_name,
        !           233:                (struct heads *) CNIL, (char *)CNIL
        !           234:        },
        !           235: vecti_str =
        !           236:        {
        !           237:                
        !           238:                (char *) CNIL,  0,      VECTORSPP,      VECTORI, 1,
        !           239:                &vect_items,    &vecti_pages,   &vecti_name,
        !           240:                (struct heads *) CNIL, (char *)CNIL
        !           241:        },
        !           242: 
        !           243: hunk_str[7] =
        !           244:        {
        !           245:                {
        !           246:                        (char *) CNIL,  0,      HUNK2SPP,       HUNK2,  2,
        !           247:                        &hunk_items[0], &hunk_pages[0], &hunk_name[0],
        !           248:                        (struct heads *) CNIL, (char *)CNIL
        !           249:                },
        !           250:                {
        !           251:                        (char *) CNIL,  0,      HUNK4SPP,       HUNK4,  4,
        !           252:                        &hunk_items[1], &hunk_pages[1], &hunk_name[1],
        !           253:                        (struct heads *) CNIL, (char *)CNIL
        !           254:                },
        !           255:                {
        !           256:                        (char *) CNIL,  0,      HUNK8SPP,       HUNK8,  8,
        !           257:                        &hunk_items[2], &hunk_pages[2], &hunk_name[2],
        !           258:                        (struct heads *) CNIL, (char *)CNIL
        !           259:                },
        !           260:                {
        !           261:                        (char *) CNIL,  0,      HUNK16SPP,      HUNK16, 16,
        !           262:                        &hunk_items[3], &hunk_pages[3], &hunk_name[3],
        !           263:                        (struct heads *) CNIL, (char *)CNIL
        !           264:                },
        !           265:                {
        !           266:                        (char *) CNIL,  0,      HUNK32SPP,      HUNK32, 32,
        !           267:                        &hunk_items[4], &hunk_pages[4], &hunk_name[4],
        !           268:                        (struct heads *) CNIL, (char *)CNIL
        !           269:                },
        !           270:                {
        !           271:                        (char *) CNIL,  0,      HUNK64SPP,      HUNK64, 64,
        !           272:                        &hunk_items[5], &hunk_pages[5], &hunk_name[5],
        !           273:                        (struct heads *) CNIL, (char *)CNIL
        !           274:                },
        !           275:                {
        !           276:                        (char *) CNIL,  0,      HUNK128SPP,     HUNK128, 128,
        !           277:                        &hunk_items[6], &hunk_pages[6], &hunk_name[6],
        !           278:                        (struct heads *) CNIL, (char *)CNIL
        !           279:                }
        !           280:        };
        !           281: extern struct readtable { unsigned char        ctable[132]; } initread;
        !           282: unsigned char *ctable = initread.ctable;
        !           283: int gensymcounter = 0;
        !           284: 
        !           285: int hashtop = HASHTOP;
        !           286: int xcycle = 0;                /* used by xsbrk   */
        !           287: struct atom *hasht[HASHTOP];
        !           288: lispval datalim;       /* pointer to next location to allocate */
        !           289: 
        !           290: char typetable[TTSIZE+1] = {UNBO,ATOM,PORT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT};
        !           291: 
        !           292: /* this must be the last thing allocated in this file  */
        !           293: char lsbrkpnt,zfreespace;

unix.superglobalmegacorp.com

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