From 0fa44b4656b5c09e2ed238df9ab0dd236342be3d Mon Sep 17 00:00:00 2001 From: CSRG Date: Sat, 23 Mar 1985 20:03:00 -0800 Subject: [PATCH] BSD 4_3_Tahoe development Work on file usr/src/ucb/lisp/franz/data.c Work on file usr/tmp/housel/franz/data.c Synthesized-from: CSRG/cd2/4.3tahoe --- usr/src/ucb/lisp/franz/data.c | 293 ++++++++++++++++++++++++++++++++++ usr/tmp/housel/franz/data.c | 293 ++++++++++++++++++++++++++++++++++ 2 files changed, 586 insertions(+) create mode 100644 usr/src/ucb/lisp/franz/data.c create mode 100644 usr/tmp/housel/franz/data.c diff --git a/usr/src/ucb/lisp/franz/data.c b/usr/src/ucb/lisp/franz/data.c new file mode 100644 index 0000000000..c904235e4e --- /dev/null +++ b/usr/src/ucb/lisp/franz/data.c @@ -0,0 +1,293 @@ +#ifndef lint +static char *rcsid = + "$Header: data.c,v 1.8 85/03/24 11:02:24 sklower Exp $"; +#endif + +/* -[Sun Jun 19 14:41:00 1983 by jkf]- + * data.c $Locker: $ + * static storage declarations + * + * (c) copyright 1982, Regents of the University of California + */ + + + +#include "global.h" +#include "gtabs.h" +#include "structs.h" +#include "frame.h" +#include + +/*char firstalloc[NBPG] = { 'x' }; /* first thing allocated in file */ +lispval lispsys[SIGNIF]; /* lisp data used by system */ + +lispval gftab[GFTABLEN]; /* global function table for interpreter */ + +lispval gctab[GCTABLEN] = /* global constant table for interpreter */ + {nil,0,SMALL(-1),SMALL(0),SMALL(1),SMALL(2),SMALL(3),SMALL(4)}; + + +/* Port definitions *****************************************************/ +FILE *piport, /* standard input port */ + *poport, /* standard output port */ + *errport, /* port for error messages */ + *rdrport, /* temporary port for readr */ + *proport; /* port for protocal */ +int lineleng = 80; /* line length desired */ +int rlevel; /* used to indicate depth of recursion + in reader. No longer really necessary */ +char keybin = FALSE; /* logical flag: using keyboard */ +char protflag = FALSE; /* logical flag: want protocall */ +char rbktf; /* logical flag: ] mode */ + +#ifdef RTPORTS +lispval ioname[128]; /* strings of names of files currently open */ +#else +lispval ioname[_NFILE]; /* strings of names of files currently open */ +#endif + +/* name stack ***********************************************************/ +struct argent *orgnp; /* used by top level to reset to start */ +struct argent *namptr, /* temporary pointer */ +#ifndef NPINREG + *lbot, /* beginning of frame */ + *np, /* first free entry */ +#endif + *nplim; /* don't have this = np */ +struct nament *bnp, /* top of bind stack */ + *orgbnp, /* absolute bottom of ""*/ + *bnplim; /* absolute top of "" */ + + + +/* hashing things *******************************************************/ +int hash; /* set by ratom */ +int atmlen; /* length of atom including final null */ + + +/* big string buffer for whomever needs it ******************************/ +static char i_strbuf[600]; +char *strbuf = i_strbuf; +char *endstrb = i_strbuf + 599; + +/* in the case we can't use the C stack for extending automatics */ +#ifdef SPISFP +long xstack[16384]; +long *xsp; +long *exsp = xstack + ((sizeof xstack)/(sizeof (long))); +#endif + +/* strings needed by the two hand crafted atoms, nil and eof */ +char nilpname[] = "nil"; +char eofpname[] = "eof"; + +/* set by sstatus commands */ +int uctolc = 0; /* when set, uc chars in atoms go to lc */ + /* default mode for dumplisp + (note this is decimal not octal) */ +#if os_unisoft || os_unix_ts +int dmpmode = 410; +#else +int dmpmode = 413; +#endif + +/* break and error declarations *****************************************/ +int depth = 0; /* depth of nested breaks */ +lispval contval; /* the value being returned up */ +int retval; /* used by each error/prog call */ +lispval lispretval; /* used by non-local goto's */ +int rsetsw; /* when set, trace frames built */ +int bcdtrsw; /* when set with rsetsw, trace bcd too */ +int evalhcallsw; /* when set will not evalhook next eval */ +int funhcallsw; /* when set will not funcallhook next eval */ + + +/* exception handling stuff *********************************************/ +int exception; /* true if an exception is pending */ +int sigintcnt; /* number of SIGINT's pending */ + +/* current state of the hole (for fasling into) *************************/ +#ifndef HOLE +#define HOLE 0 +#endif +extern char holbeg[]; +char *curhbeg = holbeg; /* next location to fasl into */ +int usehole = HOLE; /* if TRUE, fasl tries to use hole */ +int holesize = HOLE; /* This avoids an ifdef in dumplisp */ + +/* other stuff **********************************************************/ +lispval ftemp,vtemp,argptr,ttemp; /* temporaries: use briefly */ +int itemp; +lispval sigacts[16]; /* for catching interrupts */ +int sigstruck,sigdelay; /* for catching interrupts */ +lispval stattab[16]; /* miscelleneous options */ +lispval Vprintsym; /* value is the symbol 'print' */ + +/* interpreter globals */ + +int lctrace; +int fvirgin = 1; /* set to 1 initially */ +int gctime; +struct frame *errp; /* stack of error frames */ + + +/* global pointers to the transfer tables */ + + +struct trtab *trhead= /* first in list of transfer tables */ + (struct trtab *) 0; +struct trent *trcur; /* next entry to allocate */ +int trleft = 0; /* number of entries left in current table */ + +/* globals from sysat.c */ + +int *beginsweep; /* place for sweeper to begin */ +int initflag = TRUE; /* inhibit gcing initially */ +int tgcthresh = 15; +int page_limit = (5 * TTSIZE) / 6; +int ttsize = TTSIZE; + + +/* global used in io.c */ + +lispval lastrtab; + +/* globals from [VT]alloc.c */ + + +char purepage[TTSIZE]; +int fakettsize = TTSIZE - 8; +int gcstrings; /* Do we mark and sweep strings? */ +int *bind_lists = (int *) CNIL; /* lisp data for compiled code */ + + +struct str_x str_current[2]; /* next free string spaces */ + +struct types + atom_str = + { + (char *)CNIL, 0, ATOMSPP, ATOM, 5, + &atom_items, &atom_pages, &atom_name, + (struct heads *) CNIL, (char *)CNIL + }, + strng_str = + { + (char *) CNIL, 0, STRSPP, STRNG, 128, + &str_items, &str_pages, &str_name, + (struct heads *) CNIL, (char *)CNIL + }, + int_str = + { + (char *) CNIL, 0, INTSPP, INT, 1, + &int_items, &int_pages, &int_name, + (struct heads *) CNIL, (char *)CNIL + }, + dtpr_str = + { + (char *) CNIL, 0, DTPRSPP, DTPR, 2, + &dtpr_items, &dtpr_pages, &dtpr_name, + (struct heads *) CNIL, (char *)CNIL + }, + doub_str = + { + (char *) CNIL, 0, DOUBSPP, DOUB, 2, + &doub_items, &doub_pages, &doub_name, + (struct heads *) CNIL, (char *)CNIL + }, + array_str = + { + (char *) CNIL, 0, ARRAYSPP, ARRAY, 5, + &array_items, &array_pages, &array_name, + (struct heads *) CNIL, (char *)CNIL + }, + other_str = + { + (char *) CNIL, 0, STRSPP, OTHER, 128, + &other_items, &other_pages, &other_name, + (struct heads *) CNIL, (char *)CNIL + }, + + sdot_str = + { + (char *) CNIL, 0, SDOTSPP, SDOT, 2, + &sdot_items, &sdot_pages, &sdot_name, + (struct heads *) CNIL, (char *)CNIL + }, + val_str = + { + (char *) CNIL, 0, VALSPP, VALUE, 1, + &val_items, &val_pages, &val_name, + (struct heads *) CNIL, (char *)CNIL + }, +funct_str = + { + (char *) CNIL, 0, BCDSPP, BCD, 2, + &funct_items, &funct_pages, &funct_name, + (struct heads *) CNIL, (char *)CNIL + }, +vect_str = + { + + (char *) CNIL, 0, VECTORSPP, VECTOR, 1, + &vect_items, &vect_pages, &vect_name, + (struct heads *) CNIL, (char *)CNIL + }, +vecti_str = + { + + (char *) CNIL, 0, VECTORSPP, VECTORI, 1, + &vect_items, &vecti_pages, &vecti_name, + (struct heads *) CNIL, (char *)CNIL + }, + +hunk_str[7] = + { + { + (char *) CNIL, 0, HUNK2SPP, HUNK2, 2, + &hunk_items[0], &hunk_pages[0], &hunk_name[0], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK4SPP, HUNK4, 4, + &hunk_items[1], &hunk_pages[1], &hunk_name[1], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK8SPP, HUNK8, 8, + &hunk_items[2], &hunk_pages[2], &hunk_name[2], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK16SPP, HUNK16, 16, + &hunk_items[3], &hunk_pages[3], &hunk_name[3], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK32SPP, HUNK32, 32, + &hunk_items[4], &hunk_pages[4], &hunk_name[4], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK64SPP, HUNK64, 64, + &hunk_items[5], &hunk_pages[5], &hunk_name[5], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK128SPP, HUNK128, 128, + &hunk_items[6], &hunk_pages[6], &hunk_name[6], + (struct heads *) CNIL, (char *)CNIL + } + }; +extern struct readtable { unsigned char ctable[132]; } initread; +unsigned char *ctable = initread.ctable; +int gensymcounter = 0; + +int hashtop = HASHTOP; +int xcycle = 0; /* used by xsbrk */ +struct atom *hasht[HASHTOP]; +lispval datalim; /* pointer to next location to allocate */ + +char typetable[TTSIZE+1] = {UNBO,ATOM,PORT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT}; + +/* this must be the last thing allocated in this file */ +char lsbrkpnt,zfreespace; diff --git a/usr/tmp/housel/franz/data.c b/usr/tmp/housel/franz/data.c new file mode 100644 index 0000000000..c904235e4e --- /dev/null +++ b/usr/tmp/housel/franz/data.c @@ -0,0 +1,293 @@ +#ifndef lint +static char *rcsid = + "$Header: data.c,v 1.8 85/03/24 11:02:24 sklower Exp $"; +#endif + +/* -[Sun Jun 19 14:41:00 1983 by jkf]- + * data.c $Locker: $ + * static storage declarations + * + * (c) copyright 1982, Regents of the University of California + */ + + + +#include "global.h" +#include "gtabs.h" +#include "structs.h" +#include "frame.h" +#include + +/*char firstalloc[NBPG] = { 'x' }; /* first thing allocated in file */ +lispval lispsys[SIGNIF]; /* lisp data used by system */ + +lispval gftab[GFTABLEN]; /* global function table for interpreter */ + +lispval gctab[GCTABLEN] = /* global constant table for interpreter */ + {nil,0,SMALL(-1),SMALL(0),SMALL(1),SMALL(2),SMALL(3),SMALL(4)}; + + +/* Port definitions *****************************************************/ +FILE *piport, /* standard input port */ + *poport, /* standard output port */ + *errport, /* port for error messages */ + *rdrport, /* temporary port for readr */ + *proport; /* port for protocal */ +int lineleng = 80; /* line length desired */ +int rlevel; /* used to indicate depth of recursion + in reader. No longer really necessary */ +char keybin = FALSE; /* logical flag: using keyboard */ +char protflag = FALSE; /* logical flag: want protocall */ +char rbktf; /* logical flag: ] mode */ + +#ifdef RTPORTS +lispval ioname[128]; /* strings of names of files currently open */ +#else +lispval ioname[_NFILE]; /* strings of names of files currently open */ +#endif + +/* name stack ***********************************************************/ +struct argent *orgnp; /* used by top level to reset to start */ +struct argent *namptr, /* temporary pointer */ +#ifndef NPINREG + *lbot, /* beginning of frame */ + *np, /* first free entry */ +#endif + *nplim; /* don't have this = np */ +struct nament *bnp, /* top of bind stack */ + *orgbnp, /* absolute bottom of ""*/ + *bnplim; /* absolute top of "" */ + + + +/* hashing things *******************************************************/ +int hash; /* set by ratom */ +int atmlen; /* length of atom including final null */ + + +/* big string buffer for whomever needs it ******************************/ +static char i_strbuf[600]; +char *strbuf = i_strbuf; +char *endstrb = i_strbuf + 599; + +/* in the case we can't use the C stack for extending automatics */ +#ifdef SPISFP +long xstack[16384]; +long *xsp; +long *exsp = xstack + ((sizeof xstack)/(sizeof (long))); +#endif + +/* strings needed by the two hand crafted atoms, nil and eof */ +char nilpname[] = "nil"; +char eofpname[] = "eof"; + +/* set by sstatus commands */ +int uctolc = 0; /* when set, uc chars in atoms go to lc */ + /* default mode for dumplisp + (note this is decimal not octal) */ +#if os_unisoft || os_unix_ts +int dmpmode = 410; +#else +int dmpmode = 413; +#endif + +/* break and error declarations *****************************************/ +int depth = 0; /* depth of nested breaks */ +lispval contval; /* the value being returned up */ +int retval; /* used by each error/prog call */ +lispval lispretval; /* used by non-local goto's */ +int rsetsw; /* when set, trace frames built */ +int bcdtrsw; /* when set with rsetsw, trace bcd too */ +int evalhcallsw; /* when set will not evalhook next eval */ +int funhcallsw; /* when set will not funcallhook next eval */ + + +/* exception handling stuff *********************************************/ +int exception; /* true if an exception is pending */ +int sigintcnt; /* number of SIGINT's pending */ + +/* current state of the hole (for fasling into) *************************/ +#ifndef HOLE +#define HOLE 0 +#endif +extern char holbeg[]; +char *curhbeg = holbeg; /* next location to fasl into */ +int usehole = HOLE; /* if TRUE, fasl tries to use hole */ +int holesize = HOLE; /* This avoids an ifdef in dumplisp */ + +/* other stuff **********************************************************/ +lispval ftemp,vtemp,argptr,ttemp; /* temporaries: use briefly */ +int itemp; +lispval sigacts[16]; /* for catching interrupts */ +int sigstruck,sigdelay; /* for catching interrupts */ +lispval stattab[16]; /* miscelleneous options */ +lispval Vprintsym; /* value is the symbol 'print' */ + +/* interpreter globals */ + +int lctrace; +int fvirgin = 1; /* set to 1 initially */ +int gctime; +struct frame *errp; /* stack of error frames */ + + +/* global pointers to the transfer tables */ + + +struct trtab *trhead= /* first in list of transfer tables */ + (struct trtab *) 0; +struct trent *trcur; /* next entry to allocate */ +int trleft = 0; /* number of entries left in current table */ + +/* globals from sysat.c */ + +int *beginsweep; /* place for sweeper to begin */ +int initflag = TRUE; /* inhibit gcing initially */ +int tgcthresh = 15; +int page_limit = (5 * TTSIZE) / 6; +int ttsize = TTSIZE; + + +/* global used in io.c */ + +lispval lastrtab; + +/* globals from [VT]alloc.c */ + + +char purepage[TTSIZE]; +int fakettsize = TTSIZE - 8; +int gcstrings; /* Do we mark and sweep strings? */ +int *bind_lists = (int *) CNIL; /* lisp data for compiled code */ + + +struct str_x str_current[2]; /* next free string spaces */ + +struct types + atom_str = + { + (char *)CNIL, 0, ATOMSPP, ATOM, 5, + &atom_items, &atom_pages, &atom_name, + (struct heads *) CNIL, (char *)CNIL + }, + strng_str = + { + (char *) CNIL, 0, STRSPP, STRNG, 128, + &str_items, &str_pages, &str_name, + (struct heads *) CNIL, (char *)CNIL + }, + int_str = + { + (char *) CNIL, 0, INTSPP, INT, 1, + &int_items, &int_pages, &int_name, + (struct heads *) CNIL, (char *)CNIL + }, + dtpr_str = + { + (char *) CNIL, 0, DTPRSPP, DTPR, 2, + &dtpr_items, &dtpr_pages, &dtpr_name, + (struct heads *) CNIL, (char *)CNIL + }, + doub_str = + { + (char *) CNIL, 0, DOUBSPP, DOUB, 2, + &doub_items, &doub_pages, &doub_name, + (struct heads *) CNIL, (char *)CNIL + }, + array_str = + { + (char *) CNIL, 0, ARRAYSPP, ARRAY, 5, + &array_items, &array_pages, &array_name, + (struct heads *) CNIL, (char *)CNIL + }, + other_str = + { + (char *) CNIL, 0, STRSPP, OTHER, 128, + &other_items, &other_pages, &other_name, + (struct heads *) CNIL, (char *)CNIL + }, + + sdot_str = + { + (char *) CNIL, 0, SDOTSPP, SDOT, 2, + &sdot_items, &sdot_pages, &sdot_name, + (struct heads *) CNIL, (char *)CNIL + }, + val_str = + { + (char *) CNIL, 0, VALSPP, VALUE, 1, + &val_items, &val_pages, &val_name, + (struct heads *) CNIL, (char *)CNIL + }, +funct_str = + { + (char *) CNIL, 0, BCDSPP, BCD, 2, + &funct_items, &funct_pages, &funct_name, + (struct heads *) CNIL, (char *)CNIL + }, +vect_str = + { + + (char *) CNIL, 0, VECTORSPP, VECTOR, 1, + &vect_items, &vect_pages, &vect_name, + (struct heads *) CNIL, (char *)CNIL + }, +vecti_str = + { + + (char *) CNIL, 0, VECTORSPP, VECTORI, 1, + &vect_items, &vecti_pages, &vecti_name, + (struct heads *) CNIL, (char *)CNIL + }, + +hunk_str[7] = + { + { + (char *) CNIL, 0, HUNK2SPP, HUNK2, 2, + &hunk_items[0], &hunk_pages[0], &hunk_name[0], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK4SPP, HUNK4, 4, + &hunk_items[1], &hunk_pages[1], &hunk_name[1], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK8SPP, HUNK8, 8, + &hunk_items[2], &hunk_pages[2], &hunk_name[2], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK16SPP, HUNK16, 16, + &hunk_items[3], &hunk_pages[3], &hunk_name[3], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK32SPP, HUNK32, 32, + &hunk_items[4], &hunk_pages[4], &hunk_name[4], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK64SPP, HUNK64, 64, + &hunk_items[5], &hunk_pages[5], &hunk_name[5], + (struct heads *) CNIL, (char *)CNIL + }, + { + (char *) CNIL, 0, HUNK128SPP, HUNK128, 128, + &hunk_items[6], &hunk_pages[6], &hunk_name[6], + (struct heads *) CNIL, (char *)CNIL + } + }; +extern struct readtable { unsigned char ctable[132]; } initread; +unsigned char *ctable = initread.ctable; +int gensymcounter = 0; + +int hashtop = HASHTOP; +int xcycle = 0; /* used by xsbrk */ +struct atom *hasht[HASHTOP]; +lispval datalim; /* pointer to next location to allocate */ + +char typetable[TTSIZE+1] = {UNBO,ATOM,PORT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT,INT}; + +/* this must be the last thing allocated in this file */ +char lsbrkpnt,zfreespace; -- 2.20.1