anchor.diff:  ;; to run your model:
   ;;  after you define your model, use (run-tcp-task :host HOST :port PORT :real-time REALTIME_OR_NOT :pause-between-actions PAUSE_OR_NOT) to connect to task served on HOST/PORT, and run in REALTIME_OR_NOT
   ;;		the suggestion is to always set :pause-between-actions flag to T; however, it you need the model-time to keep going even when there are no buttons to press and no scheduled display changes, set this flag to NIL
  +;;			(if you do set :pause-between-actions to NIL, you may want to also set :real-time to T -- otherwise a lot of model time may pass in the instances when new display updates are coming over the socket)
   ;;
   
   
  
positive.code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; async socket client
  ;;
  (defun socket-readlines (with-line-f &optional (socket *socket*))
  	(setq *socket-read-thread*
  		(bt:make-thread
  			(lambda ()
  				(ignore-errors
  					(let ((line))
  						(loop while (setq line (read-line (usocket:socket-stream socket) nil)) do
  							(model-output "<= ~a" line)
  							(funcall with-line-f line))))
  				(model-output "Closing socket.")
  				(display-update)
  				(usocket:socket-close socket)))))
  
  (defun socket-writeline (s &optional (socket *socket*))
  	(model-output "=> ~a" s)
  	(write-line s (usocket:socket-stream socket))
  
negative.code: (defun socket-writejson (data &optional (socket *socket*))
  	(socket-writeline (st-json:write-json-to-string data)))
  
  ;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; STAP for ACT-R
  