Annotation of 41BSD/cmd/lisp/data.c, revision 1.1

1.1     ! root        1: 
        !             2: static char *sccsid = "@(#)data.c      34.3 10/21/80";
        !             3: 
        !             4: #include       "global.h"
        !             5: #include       "gtabs.h"
        !             6: #include       "structs.h"
        !             7: #include       <stdio.h>
        !             8: 
        !             9: /*char firstalloc[NBPG] = { 'x' };     /* first thing allocated in file */
        !            10: lispval lispsys[SIGNIF];       /* lisp data used by system */
        !            11: 
        !            12: lispval gftab[GFTABLEN];       /* global function table for interpreter */
        !            13: 
        !            14: lispval gctab[GCTABLEN] =      /* global constant table for interpreter */
        !            15:        {nil,0,SMALL(-1),SMALL(0),SMALL(1),SMALL(2),SMALL(3),SMALL(4)};
        !            16: 
        !            17: 
        !            18: /* Port definitions *****************************************************/
        !            19: FILE   *piport,                /* standard input port          */
        !            20:        *poport,                /* standard output port         */
        !            21:        *errport,               /* port for error messages      */
        !            22:        *rdrport,               /* temporary port for readr     */
        !            23:        *proport;               /* port for protocal            */
        !            24: int    lineleng =      80;             /* line length desired          */
        !            25: int    rlevel;                 /* used to indicate depth of recursion
        !            26:                                   in reader.  No longer really necessary */
        !            27: char   keybin =        FALSE;          /* logical flag: using keyboard */
        !            28: char   protflag =      FALSE;          /* logical flag: want protocall */
        !            29: char   rbktf;                          /* logical flag: ] mode         */
        !            30: 
        !            31: lispval ioname[_NFILE];                /* strings of names of files currently open     */
        !            32: 
        !            33: /* name stack ***********************************************************/
        !            34: struct argent *orgnp;          /* used by top level to reset to start  */
        !            35: struct argent          *namptr,                /* temporary pointer    */
        !            36:                        *nplim;                 /* don't have this = np */
        !            37: struct nament          *bnp,                   /* top of bind stack    */
        !            38:                        *orgbnp,                /* absolute bottom of ""*/
        !            39:                        *bnplim;                /* absolute top of ""   */
        !            40: 
        !            41: 
        !            42: 
        !            43: /* hashing things *******************************************************/
        !            44: int    hash;                                   /* set by ratom         */
        !            45: int    atmlen;                 /* length of atom including final null  */
        !            46: 
        !            47: 
        !            48: /* big string buffer for whomever needs it ******************************/
        !            49: char   strbuf[STRBLEN];
        !            50: char   *endstrb        = strbuf + STRBLEN - 1 ;
        !            51: 
        !            52: /* set by sstatus commands */
        !            53: int uctolc = 0;                /* when set, uc chars in atoms go to lc */
        !            54: int dmpmode = 413;     /* default mode for dumplisp 
        !            55:                           (note this is decimal not octal) */
        !            56: 
        !            57: /* break and error declarations *****************************************/
        !            58: int    depth = 0;              /* depth of nested breaks               */
        !            59: lispval        contval;                /* the value being returned up          */
        !            60: int    retval;                 /* used by each error/prog call         */
        !            61: int    rsetsw;                 /* when set, trace frames built         */
        !            62: int    bcdtrsw;                /* when set with rsetsw, trace bcd too  */
        !            63: 
        !            64: 
        !            65: /* exception handling stuff *********************************************/
        !            66: int exception;                 /* true if an exception is pending */
        !            67: int sigintcnt;                 /* number of SIGINT's pending      */
        !            68: 
        !            69: /* current state of the hole (for fasling into) *************************/
        !            70: int curhbeg;                   /* next location to fasl into */
        !            71: int usehole;                   /* if TRUE, fasl tries to use hole */
        !            72: 
        !            73: /* other stuff **********************************************************/
        !            74: lispval        ftemp,vtemp,argptr,ttemp;       /* temporaries: use briefly     */
        !            75: int itemp;
        !            76: lispval sigacts[16];                   /* for catching interrupts      */
        !            77: int sigstruck,sigdelay;                        /* for catching interrupts      */
        !            78: lispval stattab[16];                   /* miscelleneous options        */
        !            79: 
        !            80: /*  interpreter globals    */
        !            81: 
        !            82: int lctrace;
        !            83: int fvirgin;
        !            84: int GCtime;
        !            85: int errp;                      /* where are lying through our teeth. This
        !            86:                                   is a pointer to inside a function. */
        !            87: 
        !            88: 
        !            89: /* global pointers to the transfer tables */
        !            90: 
        !            91: 
        !            92: struct trtab *trhead=          /* first in list of transfer tables        */
        !            93:       (struct trtab *) 0;
        !            94: struct trent *trcur;           /* next entry to allocate                  */
        !            95: int trleft = 0;                        /* number of entries left in current table */
        !            96: 
        !            97: /* globals from sysat.c  */
        !            98: 
        !            99: int *beginsweep;               /* place for sweeper to begin           */
        !           100: int initflag = TRUE;           /* inhibit gcing initially              */
        !           101: int tgcthresh = 15;
        !           102: 
        !           103: /* globals from rlc  */
        !           104: 
        !           105: int usehole;                   /* TRUE if allocator should consider the 
        !           106:                                   hole for allocation          */
        !           107: 
        !           108: /* global used in io.c */
        !           109: 
        !           110: lispval lastrtab;
        !           111: 
        !           112: /* globals from [VT]alloc.c  */
        !           113: 
        !           114: 
        !           115: struct heads header[TTSIZE];
        !           116: int  *bind_lists = (int *) CNIL;       /*  lisp data for compiled code */
        !           117: 
        !           118: 
        !           119: struct types
        !           120:        atom_str =
        !           121:        {
        !           122:                (char *)CNIL,   0,      ATOMSPP,        ATOM,   5,
        !           123:                &atom_items,    &atom_pages,    &atom_name,
        !           124:                (struct heads *) CNIL
        !           125:        },
        !           126:        strng_str =
        !           127:        {
        !           128:                (char *) CNIL,  0,      STRSPP,         STRNG,  1,
        !           129:                &str_items,     &str_pages,     &str_name,
        !           130:                (struct heads *) CNIL
        !           131:        },
        !           132:        int_str =
        !           133:        {
        !           134:                (char *) CNIL,  0,      INTSPP,         INT,    1,
        !           135:                &int_items,     &int_pages,     &int_name,
        !           136:                (struct heads *) CNIL
        !           137:        },
        !           138:        dtpr_str =
        !           139:        {
        !           140:                (char *) CNIL,  0,      DTPRSPP,        DTPR,   2,
        !           141:                &dtpr_items,    &dtpr_pages,    &dtpr_name,
        !           142:                (struct heads *) CNIL
        !           143:        },
        !           144:        doub_str =
        !           145:        {
        !           146:                (char *) CNIL,  0,      DOUBSPP,        DOUB,   2,
        !           147:                &doub_items,    &doub_pages,    &doub_name,
        !           148:                (struct heads *) CNIL
        !           149:        },
        !           150:        array_str =
        !           151:        {
        !           152:                (char *) CNIL,  0,      ARRAYSPP,       ARRAY,  5,
        !           153:                &array_items,   &array_pages,   &array_name,
        !           154:                (struct heads *) CNIL
        !           155:        },
        !           156:        sdot_str =
        !           157:        {
        !           158:                (char *) CNIL,  0,      SDOTSPP,        SDOT,   2,
        !           159:                &sdot_items,    &sdot_pages,    &sdot_name,
        !           160:                (struct heads *) CNIL
        !           161:        },
        !           162:        val_str =
        !           163:        {
        !           164:                (char *) CNIL,  0,      VALSPP,         VALUE,  1,
        !           165:                &val_items,     &val_pages,     &val_name,
        !           166:                (struct heads *) CNIL
        !           167:        },
        !           168: funct_str =
        !           169:        {
        !           170:                (char *) CNIL,  0,      BCDSPP,         BCD,    2,
        !           171:                &funct_items,   &funct_pages,   &funct_name,
        !           172:                (struct heads *) CNIL
        !           173:        },
        !           174: hunk_str[7] =
        !           175:        {
        !           176:                {
        !           177:                        (char *) CNIL,  0,      HUNK2SPP,       HUNK2,  2,
        !           178:                        &hunk_items[0], &hunk_pages[0], &hunk_name[0],
        !           179:                        (struct heads *) CNIL
        !           180:                },
        !           181:                {
        !           182:                        (char *) CNIL,  0,      HUNK4SPP,       HUNK4,  4,
        !           183:                        &hunk_items[1], &hunk_pages[1], &hunk_name[1],
        !           184:                        (struct heads *) CNIL
        !           185:                },
        !           186:                {
        !           187:                        (char *) CNIL,  0,      HUNK8SPP,       HUNK8,  8,
        !           188:                        &hunk_items[2], &hunk_pages[2], &hunk_name[2],
        !           189:                        (struct heads *) CNIL
        !           190:                },
        !           191:                {
        !           192:                        (char *) CNIL,  0,      HUNK16SPP,      HUNK16, 16,
        !           193:                        &hunk_items[3], &hunk_pages[3], &hunk_name[3],
        !           194:                        (struct heads *) CNIL
        !           195:                },
        !           196:                {
        !           197:                        (char *) CNIL,  0,      HUNK32SPP,      HUNK32, 32,
        !           198:                        &hunk_items[4], &hunk_pages[4], &hunk_name[4],
        !           199:                        (struct heads *) CNIL
        !           200:                },
        !           201:                {
        !           202:                        (char *) CNIL,  0,      HUNK64SPP,      HUNK64, 64,
        !           203:                        &hunk_items[5], &hunk_pages[5], &hunk_name[5],
        !           204:                        (struct heads *) CNIL
        !           205:                },
        !           206:                {
        !           207:                        (char *) CNIL,  0,      HUNK128SPP,     HUNK128, 128,
        !           208:                        &hunk_items[6], &hunk_pages[6], &hunk_name[6],
        !           209:                        (struct heads *) CNIL
        !           210:                }
        !           211:        };
        !           212: 
        !           213: int hashtop = HASHTOP;
        !           214: int xcycle = 0;                /* used by xsbrk   */
        !           215: struct atom *hasht[HASHTOP];
        !           216: lispval datalim;       /* pointer to next location to allocate */
        !           217: 
        !           218: char typetable[TTSIZE] = {UNBO,ATOM,PORT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT};
        !           219: 
        !           220: /* this must be the last thing allocated in this file  */
        !           221: #ifdef VMS
        !           222: char *lsbrkpnt = (char *)0;
        !           223: char zfreespace[FREESIZE];
        !           224: #else 
        !           225: char lsbrkpnt,zfreespace;
        !           226: #endif

unix.superglobalmegacorp.com

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