|
|
1.1 ! root 1: ; FP interpreter/compiler ! 2: ; Copyright (c) 1982 Scott B. Baden ! 3: ; Berkeley, California ! 4: ; ! 5: ; Copyright (c) 1982 Regents of the University of California. ! 6: ; All rights reserved. The Berkeley software License Agreement ! 7: ; specifies the terms and conditions for redistribution. ! 8: ; ! 9: (setq SCCS-utils.l "@(#)utils.l 5.1 (Berkeley) 5/31/85") ! 10: ! 11: ; FP command processor ! 12: ! 13: (include specials.l) ! 14: (declare (localf u$print_fn intName pfn makeroom ! 15: getCmdLine) (special cmdLine codePort)) ! 16: ! 17: (defun get_cmd nil ! 18: (prog (cmdLine command) ! 19: (setq cmdLine (getCmdLine)) ! 20: (cond ((null cmdLine) (msg N "Illegal Command" N) ! 21: (return 'cmd$$))) ! 22: (setq command (car cmdLine)) ! 23: (setq cmdLine (cdr cmdLine)) ! 24: (let ((cmdFn (get 'cp$ command))) ! 25: (cond ((null cmdFn) (msg N "Illegal Command" N)) ! 26: (t (funcall cmdFn) (return 'cmd$$)))) ! 27: (return 'cmd$$))) ! 28: ! 29: (defun getCmdLine nil ! 30: (do ((names nil) (name$ nil) ! 31: (c (tyipeek) (tyipeek))) ! 32: ((eq c #.CR) ! 33: (Tyi) ! 34: (cond (name$ ! 35: (nreverse (cons (implode (nreverse name$)) names))) ! 36: (t (nreverse names)))) ! 37: (cond ((memq c #.blankOrTab) ! 38: (cond (name$ ! 39: (setq names (cons (implode (nreverse name$)) names)) ! 40: (setq name$ nil))) ! 41: (Tyi)) ! 42: ! 43: (t (setq name$ (cons (Tyi) name$)))))) ! 44: ! 45: ! 46: (defun (cp$ load) nil ! 47: (cond (cmdLine ! 48: (let ((h (car cmdLine))) ! 49: (cond ! 50: ((null (setq infile (car (errset (infile (concat h '.fp)) nil)))) ! 51: (cond ! 52: ((null (setq infile (car (errset (infile h) nil)))) ! 53: (msg N "Can't open file" N))))))) ! 54: (t (msg N "must supply a file" N)))) ! 55: ! 56: ! 57: ! 58: (defun (cp$ csave) nil ! 59: (If cmdLine then ! 60: (setq codePort (car (errset (outfile (car cmdLine)) nil))) ! 61: (If (null codePort) then ! 62: (msg N "Can't open file" N) ! 63: ! 64: else ! 65: ! 66: (msg (P codePort) "(declare (special DynTraceFlg level))" N) ! 67: (do ((l (plist 'sources) (cddr l))) ! 68: ! 69: ((null l) (msg (P codePort) N) (close codePort)) ! 70: ! 71: (apply 'pp (list '(P codePort) (concat (car l) '_fp))) ! 72: (msg (P codePort) N) ! 73: (msg (P codePort) ! 74: "(eval-when (load) (putprop 'sources '" ! 75: (cadr l) ! 76: " '" (car l) ! 77: "))" N)) ! 78: ) ! 79: else ! 80: ! 81: (msg "must supply a file" N))) ! 82: ! 83: (defun (cp$ fsave) nil ! 84: (If cmdLine then ! 85: (setq codePort (car (errset (outfile (car cmdLine)) nil))) ! 86: (If (null codePort) then ! 87: (msg N "Can't open file" N) ! 88: ! 89: else ! 90: ! 91: (msg (P codePort) "(declare (special DynTraceFlg level))" N) ! 92: (do ((l (plist 'sources) (cddr l))) ! 93: ! 94: ((null l) (msg (P codePort) N) (close codePort)) ! 95: ! 96: (let ((fName (concat (car l) '_fp))) ! 97: (msg (P codePort) ! 98: N "(def " fName N (getd `,fName) ")" N)) ! 99: ! 100: (msg (P codePort) ! 101: "(eval-when (load) (putprop 'sources '" ! 102: (cadr l) ! 103: " '" (car l) ! 104: "))" N)) ! 105: ) ! 106: else ! 107: ! 108: (msg "must supply a file" N))) ! 109: ! 110: ! 111: (defun (cp$ cload) nil ! 112: (If cmdLine then ! 113: (let ((codeFile (car cmdLine))) ! 114: (If (probef codeFile) ! 115: then (load codeFile) ! 116: else (If (probef (concat codeFile ".o")) ! 117: then (load (concat codeFile ".o")) ! 118: else (msg N codeFile ": No such File" N)))) ! 119: else (msg "must supply a file" N))) ! 120: ! 121: ! 122: (defun (cp$ fns) nil ! 123: (terpri) ! 124: (let ((z (plist 'sources))) ! 125: (cond ((null z) nil) ! 126: (t (do ((slist ! 127: (sort ! 128: (do ((l z (cddr l)) ! 129: (ls nil)) ! 130: ((null l) ls) ! 131: (setq ls (cons (car l) ls))) ! 132: 'alphalessp) ! 133: (cdr slist)) ! 134: ! 135: (trFns (mapcar 'extName TracedFns))) ! 136: ! 137: ((null slist) (terpri) (terpri)) ! 138: ! 139: (let ((oldn (nwritn)) ! 140: (fnName (car slist))) ! 141: (cond ((memq fnName trFns) (setq fnName (concat ! 142: fnName ! 143: '@)))) ! 144: (let ((nl (makeroom 80 fnName))) ! 145: (patom fnName) ! 146: (let ((vv (- 13 (mod (- (nwritn) ! 147: (cond (nl 0) (t oldn))) 12)))) ! 148: (cond ((lessp 80 (+ (nwritn) vv)) (terpri)) ! 149: (t ! 150: (mapcar ! 151: '(lambda (nil) (tyo #.BLANK)) (iota$fp vv)))))))))))) ! 152: (defun (cp$ pfn) nil ! 153: (mapcar '(lambda (u) (terpri) (u$print_fn u) (terpri)) cmdLine)) ! 154: ! 155: (defun u$print_fn (fn_name) ! 156: (let ((source nil)) ! 157: (setq source (get 'sources fn_name)) ! 158: (cond ((null source) (msg fn_name " is not defined")) ! 159: (t (mapcar 'p_strng (reverse source)))) ! 160: (terpri))) ! 161: ! 162: (defun (cp$ save) nil ! 163: (cond (cmdLine ! 164: (cond ((null (setq outfile (car (errset (outfile (car cmdLine)) nil)))) ! 165: (msg N "Can't open file" N)) ! 166: (t (let ((poport outfile)) ! 167: (terpri) ! 168: (do ((l (plist 'sources) (cddr l))) ! 169: ((null l) (terpri) (terpri)) ! 170: (mapcar 'p_strng (reverse (cadr l))) ! 171: (terpri) ! 172: (terpri))) ! 173: (setq outfile nil)))) ! 174: (t (msg N "You must supply a file" N)))) ! 175: ! 176: ; This is called by delete and function definition ! 177: ; in case the function to be deleted is being traced. ! 178: ; It handles the traced-expr property hassles. ! 179: ! 180: (defun untraceDel (name) ! 181: (let* ((fnName (concat name '_fp)) ! 182: (tmp (get fnName 'traced-expr))) ! 183: ! 184: ; Do nothing if fn isn't being traced ! 185: (cond ((null tmp)) ! 186: (t (remprop fnName 'traced-expr) ! 187: (setq TracedFns (remove fnName TracedFns)))))) ! 188: ! 189: (defun (cp$ delete) nil ! 190: (mapcar 'dfn cmdLine)) ! 191: ! 192: (defun dfn (fn) ! 193: (cond ((null (get 'sources fn)) (msg fn ": No such fn" N)) ! 194: (t (remprop 'sources fn) ! 195: (remob (concat fn '_fp)) ! 196: (untraceDel fn)))) ! 197: ! 198: (defun (cp$ timer) nil ! 199: (let ((d (car cmdLine))) ! 200: (cond ((eq d 'on) (setq timeIt t) ! 201: (msg N "Timing applications turned on" N)) ! 202: ((eq d 'off) (setq timeIt nil) ! 203: (msg N "Timing applications turned off" N)) ! 204: (t (msg N "Bad Timing Mode" N))) ! 205: (terpri))) ! 206: ! 207: (defun (cp$ script) nil ! 208: (let ((cmd (get 'scriptCmd (car cmdLine)))) ! 209: (cond (cmd (funcall cmd)) ! 210: (t (msg N "Bad Script Mode" N))) ! 211: (terpri))) ! 212: ! 213: ! 214: (defun (scriptCmd open) nil ! 215: (let ((nScriptName (cadr cmdLine))) ! 216: (cond ((null nScriptName) (msg N "No Script-file specified" N)) ! 217: (t ! 218: (let ((Nptport (outfile nScriptName))) ! 219: (cond ((null Nptport) (msg N "Can't open Script-file" N)) ! 220: (t (msg N "Opening Script File" N) ! 221: (and ptport (close ptport)) ! 222: (setq ptport Nptport)))))))) ! 223: ! 224: ! 225: (defun (scriptCmd append) nil ! 226: (let ((nScriptName (cadr cmdLine))) ! 227: (cond (ptport (patom nScriptName ptport))) ! 228: (let ((Nptport (outfile nScriptName 'append))) ! 229: (cond ((null Nptport) (msg N "Can't open Script-file" N)) ! 230: (t (msg N "Appending to Script File" N) ! 231: (and ptport (close ptport)) ! 232: (setq ptport Nptport)))))) ! 233: ! 234: (defun (scriptCmd close) nil ! 235: (close ptport) ! 236: (setq ptport nil) ! 237: (msg N "Closing Script File" N)) ! 238: ! 239: (defun (cp$ help) nil ! 240: (terpri) ! 241: (patom " Commands are:") ! 242: (terpri) ! 243: (do ! 244: ((z (plist 'helpCmd) (cddr z))) ! 245: ((null z)(terpri)) ! 246: (terpri) ! 247: (patom (cadr z)))) ! 248: ! 249: ! 250: (defun (cp$ stats) nil ! 251: (let ((statOption (get 'statFn (car cmdLine)))) ! 252: (setq cmdLine (cdr cmdLine)) ! 253: (cond (statOption (funcall statOption)) ! 254: (t ! 255: (msg N "Bad Stats Option" N) ! 256: (terpri))))) ! 257: ! 258: (defun (statFn on) nil ! 259: (terpri) ! 260: (msg N "Stats collection turned on" N) ! 261: (terpri) ! 262: (terpri) ! 263: (startDynStats)) ! 264: ! 265: ! 266: (defun startDynStats nil ! 267: (cond ((null DynTraceFlg) ! 268: (setq DynTraceFlg t) ; initialize DynTraceFlg ! 269: (setq TracedFns nil)) ; initialize TracedFns ! 270: ! 271: (t ! 272: (terpri) ! 273: (msg N "Dynamics statistic collection in progress" N) ! 274: (terpri)))) ! 275: ! 276: ! 277: ! 278: (defun (statFn off) nil ! 279: (terpri) ! 280: (msg N "Stats collection turned off" N) ! 281: (terpri) ! 282: (terpri) ! 283: (stopDynStats)) ! 284: ! 285: (defun (statFn reset) nil ! 286: (terpri) ! 287: (msg N "Clearing stats" N) ! 288: (terpri) ! 289: (terpri) ! 290: (clrDynStats)) ! 291: ! 292: (defun (statFn print) nil ! 293: (PrintMeasures (car cmdLine))) ! 294: ! 295: (defun (cp$ lisp) nil ! 296: (break)) ! 297: ! 298: (defun (cp$ debug) nil ! 299: (let ((d (car cmdLine))) ! 300: (cond ((eq d 'on) (setq debug t) ! 301: (msg N "Debug flag Set" N )) ! 302: ((eq d 'off) (setq debug nil) ! 303: (msg N "Debug flag Reset" N)) ! 304: (t (msg N "Bad Debug Mode" N))) ! 305: (terpri))) ! 306: ! 307: (defun (cp$ trace) nil ! 308: (let ((mode (car cmdLine))) ! 309: (setq cmdLine (cdr cmdLine)) ! 310: (cond ((eq mode 'on) (Trace (mapcar 'intName cmdLine))) ! 311: ((eq mode 'off) (Untrace (mapcar 'intName cmdLine))) ! 312: (t (msg N "Bad Trace Mode" N))))) ! 313: ! 314: (defun intName (fName) ! 315: (implode ! 316: (nreverse ! 317: (append ! 318: '(p f _) ! 319: (nreverse ! 320: (aexplodec fName)))))) ! 321: ! 322: ! 323: ; function so see if there's enought room on the line to print ! 324: ; out some information. If not then start on a new line, too ! 325: ; bad if the info is longer than one line. ! 326: ! 327: (defun makeroom (rMargin name) ! 328: (cond ((greaterp (+ (flatc name 0) (nwritn)) rMargin) (msg N) t) ! 329: (t nil))) ! 330:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.