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