Annotation of 42BSD/ucb/lisp/franz/h/frame.h, revision 1.1

1.1     ! root        1: /*                                     -[Sat Jan 29 13:55:13 1983 by jkf]-
        !             2:  *     frame.h                         $Locker:  $
        !             3:  * non local goto frame definition
        !             4:  *
        !             5:  * $Header: frame.h,v 1.3 83/09/12 15:29:08 sklower Exp $
        !             6:  *
        !             7:  * (c) copyright 1982, Regents of the University of California
        !             8:  */
        !             9:  
        !            10: /* classes of frames: */
        !            11: #define F_PROG         1
        !            12: #define F_CATCH        2
        !            13: #define F_RESET        3
        !            14: #define F_EVAL         4
        !            15: #define F_FUNCALL      5
        !            16: #define F_TO_FORT      6
        !            17: #define F_TO_LISP      7
        !            18: 
        !            19: /* classes of things thrown up */
        !            20: #define C_INITIAL      0
        !            21: #define C_GO           1
        !            22: #define C_RET          2
        !            23: #define C_THROW        3
        !            24: #define C_RESET        4
        !            25: #define C_FRETURN      5
        !            26: 
        !            27: 
        !            28: /* the evaluation frame sits on the C runtime stack.  the global variable errp
        !            29:    points to the newest frame. The base of the frame points in the middle
        !            30:    of the frame, but in such a way that above the frame base the contents
        !            31:    are the same for all implementation, and below it there are different
        !            32:    saved registers for each machine. 
        !            33: */
        !            34: 
        !            35: struct frame 
        !            36: {
        !            37:     struct argent *svlbot, *svnp;
        !            38:     struct nament *svbnp;
        !            39:     struct frame *olderrp;
        !            40:     lispval retaddr;
        !            41:     long class;
        !            42:     lispval larg1;     /* optional */
        !            43:     lispval larg2;     /* optional */
        !            44: };
        !            45: 
        !            46: extern struct frame *errp, *Pushframe(), *Ipushf();
        !            47: 
        !            48: /* stuff for IBM, RIDGE, DEC-VMS CC, maybe Bellmac-32
        !            49:  *
        !            50:  * The non obvious requirement is that any new function
        !            51:  * requiring a Pushframe must declare 
        !            52:  *
        !            53:  *     pbuf pb;
        !            54:  *
        !            55:  * as well.
        !            56:  */
        !            57: 
        !            58: #ifdef SPISFP
        !            59: #define Pushframe(a,b,c) Ipushf(a,b,c,&pb)
        !            60: #endif
        !            61: 
        !            62: 
        !            63: typedef struct pframe
        !            64: {
        !            65:        long regs[16];
        !            66:        struct frame f;
        !            67: } pbuf;

unix.superglobalmegacorp.com

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