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

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