Annotation of 3BSD/cmd/lisp/lisp.c, revision 1.1.1.1

1.1       root        1: #include       "global.h"
                      2: 
                      3: /* main *****************************************************************/
                      4: /* Execution of the lisp system begins here.  This is the top level    */
                      5: /* executor which is an infinite loop.  The structure is similar to    */
                      6: /* error.                                                              */
                      7: 
                      8: extern char _sobuf[];
                      9: extern lispval reborn;
                     10: extern int rlevel;
                     11: static int virgin = 0;
                     12: int    Xargc;
                     13: char   **Xargv;
                     14: 
                     15: main(argc,argv)
                     16: char **argv;
                     17: {
                     18:        lispval temp, matom();
                     19:        extern int errp;
                     20:        snpand(0);
                     21:        
                     22:        setbuf(stdout,_sobuf);
                     23:        Xargc = argc;
                     24:        Xargv = argv;
                     25:        virgin = 0;
                     26:        initial();
                     27: /* printf("poport = 0%o\n",poport); */
                     28:        while(retval = setexit())
                     29:                switch (retval) {
                     30: 
                     31:                case BRGOTO:    error("GOTO LABEL NOT FOUND",FALSE);
                     32: 
                     33:                case BRRETN:    error("NO PROG TO RETURN FROM",FALSE);
                     34:                
                     35:                case BRRETB:
                     36:                default:        popnames(orgbnp);
                     37: 
                     38:        }
                     39:        for(EVER) {
                     40:                lbot = np = orgnp;
                     41:                rlevel = 0;
                     42:                depth = 0;
                     43:                errp = 0;
                     44:                clearerr(piport = stdin);
                     45:                clearerr(poport = stdout);
                     46:                np++->val = matom("top-level");
                     47:                np++->val = nil;
                     48:                Lapply();
                     49:        }
                     50: }
                     51: Ntpl()
                     52: {
                     53:        lispval Lread();
                     54:        snpand(0);
                     55: 
                     56:        if (virgin == 0) {
                     57:                fputs("Franz Lisp, Opus 32",poport);
                     58:                virgin = 1;
                     59:        }
                     60:        lbot = np;
                     61:        np++->val = P(stdin);
                     62:        np++->val = eofa;
                     63:        while (TRUE)
                     64:                {
                     65:                fputs("\n-> ",stdout);
                     66:                dmpport(stdout);
                     67:                vtemp = Lread();
                     68:                if(vtemp == eofa) exit(0);
                     69:                printr(eval(vtemp),stdout);
                     70:                }
                     71:        }
                     72: 
                     73: exit(code)
                     74: {
                     75:        extern int fvirgin;
                     76:        extern char *stabf;
                     77:        if(!fvirgin) unlink(stabf);
                     78:        _cleanup();
                     79:        proflush();
                     80:        _exit(code);
                     81: }

unix.superglobalmegacorp.com

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