|
|
1.1 ! root 1: ;;; cmu top level. ! 2: ;;; Eventually this file will be able to be read in along with ! 3: ;;; the standard franz top level and thus allow the user to select ! 4: ;;; (possible via the .lisprc) the top level he wants. ! 5: ;;; ! 6: (setq rcs-cmutpl- ! 7: "$Header: /usr/lib/lisp/cmutpl.l,v 1.1 83/01/29 18:34:38 jkf Exp $") ! 8: ! 9: (eval-when (compile eval) ! 10: (or (get 'cmumacs 'version) (load 'cmumacs)) ! 11: (or (get 'cmufncs 'version) (load 'cmufncs))) ! 12: ! 13: (declare (special history tlbuffer tlmacros historylength)) ! 14: ! 15: (dv historylength 25) ! 16: ! 17: (def matchq ! 18: (lambda (x y) ! 19: (prog (xx yy) ! 20: (return ! 21: (cond ! 22: ((and (atom x) (atom y)) ! 23: (cond ((matchq1 (setq xx (explode x)) (setq yy (explode y))) ! 24: (*** freelist xx) ! 25: (*** freelist yy) ! 26: t) ! 27: (t (*** freelist xx) (*** freelist yy))))))))) ! 28: ! 29: (def matchq1 ! 30: (lambda (x y) ! 31: (prog nil ! 32: l1 (cond ((eq x y) (return t)) ! 33: ((or (equal y '(@)) (equal x '(@))) (return t)) ! 34: ((or (null x) (null y)) (return nil)) ! 35: ((eq (car x) (car y)) ! 36: (setq x (cdr x)) ! 37: (setq y (cdr y)) ! 38: (go l1)) ! 39: (t (return nil)))))) ! 40: ! 41: (def showevents ! 42: (lambda (evs) ! 43: (for-each ev ! 44: evs ! 45: (terpri) ! 46: (princ (car ev)) ! 47: (princ '".") ! 48: (tlprint (cadr ev)) ! 49: (cond ((cddr ev) (terpri) (tlprint (caddr ev))))))) ! 50: ! 51: (def tleval ! 52: (lambda (exp) ! 53: (prog (val) ! 54: (setq val (eval exp)) ! 55: (rplacd (cdar history) (ncons val)) ! 56: (return val)))) ! 57: ! 58: (def tlgetevent ! 59: (lambda (x) ! 60: (cond ((null x) (car history)) ! 61: ((and (fixp x) (plusp x)) (assoc x history)) ! 62: ((and (fixp x) (minusp x)) (car (Cnth history (minus x))))))) ! 63: ! 64: (dv tlmacros ! 65: ((ed lambda ! 66: (x) ! 67: (prog (exp) ! 68: (cond ((setq exp (copy (cadr (tlgetevent (cadr x))))) ! 69: (edite exp nil nil) ! 70: (return (ncons exp))) ! 71: (t (princ '"No such event"))))) ! 72: (redo lambda ! 73: (x) ! 74: (prog (exp) ! 75: (cond ((setq exp (tlgetevent (cadr x))) ! 76: (return (ncons (cadr exp)))) ! 77: (t (princ '"No such event"))))) ! 78: (?? lambda ! 79: (x) ! 80: (prog (e1 e2 rest) ! 81: (cond ((null (cdr x)) (showevents (reverse history))) ! 82: ((null (setq e1 (tlgetevent (cadr x)))) ! 83: (princ '"No such event as ") ! 84: (princ (cadr x))) ! 85: ((null (cddr x)) (showevents (ncons e1))) ! 86: ((null (setq e2 (tlgetevent (caddr x)))) ! 87: (princ '"No such event as ") ! 88: (princ (caddr x))) ! 89: (t (setq e1 (memq e1 history)) ! 90: (cond ((setq rest (memq e2 e1)) ! 91: (showevents ! 92: (cons e2 (reverse (ldiff e1 rest))))) ! 93: (t ! 94: (showevents ! 95: (cons (car e1) ! 96: (reverse ! 97: (ldiff (memq e2 history) e1)))))))))))) ! 98: ! 99: (def tlprint ! 100: (lambda (x) ! 101: (prinlev x 4))) ! 102: ! 103: (def tlquote ! 104: (lambda (x) ! 105: (prog (ans) ! 106: l (cond ((null x) (return (reverse ans))) ! 107: ((eq (car x) '!) ! 108: (setq ans (cons (cadr x) ans)) ! 109: (setq x (cddr x))) ! 110: (t (setq ans (cons (kwote (car x)) ans)) (setq x (cdr x)))) ! 111: (go l)))) ! 112: ! 113: (def tlread ! 114: (lambda nil ! 115: (prog (cmd tmp) ! 116: top (cond ((not (boundp 'history)) (setq history nil))) ! 117: (cond ! 118: ((null tlbuffer) ! 119: (terpri) ! 120: (princ (add1 (cond (history (caar history)) (t 0)))) ! 121: (princ '".") ! 122: (cond ! 123: ((null (setq tlbuffer (lineread))) ! 124: (princ 'Bye) ! 125: (terpri) ! 126: (exit))))) ! 127: (cond ((not (atom (setq cmd (car tlbuffer)))) ! 128: (setq tlbuffer (cdr tlbuffer)) ! 129: (go record)) ! 130: ((setq cmd (assoc cmd tlmacros)) ! 131: (setq tmp tlbuffer) ! 132: (setq tlbuffer nil) ! 133: (setq cmd (apply (cdr cmd) (ncons tmp))) ! 134: (cond ((atom cmd) (go top)) ! 135: (t (setq cmd (car cmd)) (go record)))) ! 136: ((and (null (cdr tlbuffer)) ! 137: (or (numberp (car tlbuffer)) ! 138: (stringp (car tlbuffer)) ! 139: (hunkp (car tlbuffer)) ! 140: (boundp (car tlbuffer)))) ! 141: (setq cmd (car tlbuffer)) ! 142: (setq tlbuffer nil) ! 143: (go record)) ! 144: ((or (and (dtpr (getd (car tlbuffer))) ! 145: (memq (car (getd (car tlbuffer))) ! 146: '(lexpr lambda))) ! 147: (and (bcdp (getd (car tlbuffer))) ! 148: (eq (getdisc (getd (car tlbuffer))) ! 149: 'lambda))) ! 150: (setq cmd (cons (car tlbuffer) (tlquote (cdr tlbuffer)))) ! 151: (setq tlbuffer nil) ! 152: (go record))) ! 153: (setq cmd tlbuffer) ! 154: (setq tlbuffer nil) ! 155: record ! 156: (setq history ! 157: (cons (list (add1 (cond (history (caar history)) (t 0))) cmd) ! 158: history)) ! 159: (cond ! 160: ((dtpr (cdr (setq tmp (Cnth history historylength)))) ! 161: (rplacd tmp nil))) ! 162: (return cmd)))] ! 163: ! 164: (def cmu-top-level ! 165: (lambda nil ! 166: (prog (tlbuffer) ! 167: l (tlprint (tleval (tlread))) ! 168: (go l)))] ! 169: ! 170: ; LWE 1/11/81 The following might make this sucker work after resets: ! 171: ! 172: (setq user-top-level 'cmu-top-level) ! 173: (putd 'user-top-level (getd 'cmu-top-level)) ! 174: (setq top-level 'cmu-top-level) ! 175: (putd 'top-level (getd 'cmu-top-level)) ! 176: ! 177: (def transprint ! 178: (lambda (prt) ! 179: (prog nil ! 180: l (cond ((memq (tyipeek prt) '(27 -1)) (return nil)) ! 181: (t (tyo (tyi prt)) (go l)))))) ! 182: ! 183: (def valueof ! 184: (lambda (x) ! 185: (caddr (tlgetevent x)))) ! 186: ! 187: (def zap ! 188: (lambda (prt) ! 189: (prog nil ! 190: l (cond ((memq (tyi prt) '(10 -1)) (return nil)) (t (go l)))))) ! 191: (dv dc-switch dc-define)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.