Annotation of 43BSD/ucb/lisp/lisplib/cmutpl.l, revision 1.1

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)

unix.superglobalmegacorp.com

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