perm filename PAM[3,2]1 blob
sn#465650 filedate 1979-08-09 generic text, type T, neo UTF8
PAM is a visual PAttern Manipulating system based on the idea of LISP.
.r pam Loads a MacLISP core image with the PAM functions , and then
(handle) calls the manual manipulator handPAM. The manipulator
is basically an Execute-Command or Read-Eval-Display loop.
For more information on how to use handPAM, contact Fred Lakin (FHL).
Coming soon, hopefully, a diagrammar package for LISP trees and
other graphs.
; Once in handPAM, any atom which is a manipulator command is immediately
; executed; otherwise, if a form evaluates to a visual object, then the
; object is displayed on the screen (at the cursor unless DisAtCursloc = NIL!)
; Still otherwise any LISP sexpr resulting from evaluation is printed out on
; the left in LISP chars (ie. typing in regular LISP expressions is just
; talking to eval).
; Manipulator commands:
; ----------- ---------
; dct = DisAtCursloc toggle
;
; gl = grab line at cursor into atn
;
; gt = grab top-level obj (in bigpat) at cursor into atn
;
; f = direct attention to first member of current objatn
;
; r = direct attention to rest of current objatn
;
; n = direct attention to next obj from current objatn
;
; u = direct attention to parent of current objatn
;
; e = take objatn off screen and out of bigpat
;
; j = move cursor to the left by cursfac * 10.0
;
; jd = drag objatn to the left by cursfac * 10.0
;
; jt = rotate objatn to the left by cursfac * 10.0
;
; js = scale objatn down by (//$ 1.0 (+$ 1.0 cursfac))
;
; k = move cursor to the right by cursfac * 10.0
;
; kd = drag objatn to the right by cursfac * 10.0
;
; kt = rotate objatn to the right by cursfac * 10.0
;
; ks = scale objatn up by (+$ 1.0 cursfac)
;
; l for ↑ and : for ↓ do the same for movin cursor and draggin as j & k
;
; m = double cursfac
;
; h = halve curfac
;
; q = Quit this version of handPAM (erase bigpat and exit)
;
; (st) = showtree of objatn
;
; (ev) = visual evaluate objatn (only for PAM objs!)
; (handle) first calls (START), causing evaluation of (SETQ CHAN (GDDCHN -1)),
; thus grabbing a data disc channel --
; WARNING! each (START) must be followed sooner or later by
; a matching (DONE) to release the graphics channel, so if you
; bomb out of handle back to the regular LISP interpreter, then
; it is necessary to type a (DONE) manually.
;
; When finished, q for quit calls (DONE), performsing (ERASE CHAN) and
; (RDDCHN CHAN), erasing and releasing the channel -- and also
; (SHOW -1 -1) unmapping the grabbed chan from your line