;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for Unix-Interface version 9.1
;;; Reason:
;;;  don't fool with share-ttys on explorers
;;; Written 18-Mar-86 13:04:31 by pace at site LMI Cambridge
;;; while running on Lambda Two from band 2
;;; with Experimental System 110.121, Experimental Lambda-Diag 7.0, Experimental Local-File 68.1, Experimental FILE-Server 18.2, Experimental Unix-Interface 9.0, Experimental ZMail 65.7, Experimental Object Lisp 3.0, Experimental Tape 6.0, Experimental Site Data Editor 3.1, Experimental Tiger 24.0, Experimental KERMIT 31.2, Experimental Window-Maker 1.0, Experimental Gateway 4.0, Experimental TCP-Kernel 39.5, Experimental TCP-User 62.5, Experimental TCP-Server 45.5, Experimental MEDIUM-RESOLUTION-COLOR 3.0, Experimental MICRO-COMPILATION-TOOLS 3.0, microcode 1408, SDU ROM 102, Alpha III Cambridge.


;; *** Note: ***
;;   You may lose because the buffer has no readtable attribute.
;; *************

; From modified file DJ: L.UNIX; LAMTTY.LISP#55 at 18-Mar-86 13:04:31
#8R UNIX#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "UNIX")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: UNIX; LAMTTY  "

(defun make-all-share-ttys (&aux share-ttys)
  (select-processor
    (:lambda
      (setq *share-ttys* nil)
      (cond ((zerop (si:%system-configuration-number-of-share-ttys si:*sys-conf*))
	     (process-wait "unix share tty setup"
			   #'(lambda ()
			       (not (zerop (si:%system-configuration-number-of-share-ttys
					     si:*sys-conf*)))))
	     (process-sleep 60.)))
      (let ((base-adr (si:sdu-phys-to-virtual
			(si:%system-configuration-share-tty-0 si:*sys-conf*)))
	    (nttys (si:%system-configuration-number-of-share-ttys si:*sys-conf*))
	    share-tty-0)
	(setq share-tty-0 (si:make-share-tty-virtual base-adr))
	(dotimes (i nttys)
	  (let* ((vaddr (+ base-adr
			   (* i (+ (max (si:%share-tty-lisp-to-unix-buffer share-tty-0)
					(si:%share-tty-unix-to-lisp-buffer share-tty-0))
				   (truncate (si:%share-tty-buf-size share-tty-0) 4)))))
		 (st (si:make-share-tty-virtual vaddr)))
	    (push st share-ttys)
	    (si:add-shared-device :name (format nil "UNIX-STREAM-~d" i)
				  :shared-device-flavor 'unix-stream-shared-device
				  :owner-virtual-address (+ vaddr si:%share-tty-owner)
				  :default-flavor-and-init-options `(unix-stream :port-number ,i)
				  :property-list `(share-tty ,st))
	    )))
      (setq *share-ttys* (reverse share-ttys)))
    ((:explorer :cadr))))

))

; From modified file DJ: L.UNIX; LAMTTY.LISP#55 at 18-Mar-86 13:05:22
#8R UNIX#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "UNIX")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: UNIX; LAMTTY  "

(defmethod (unix-stream :after :describe) ()
  (declare (special si:share-tty-qs))
  (select-processor
    (:lambda
      (dolist (q si:share-tty-qs)
	(format t "~&~s:~40t~o" q (funcall q share-tty))))
    ((:explorer :cadr))))

))

; From modified file DJ: L.UNIX; LAMTTY.LISP#55 at 18-Mar-86 13:15:40
#8R UNIX#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "UNIX")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: UNIX; LAMTTY  "

(defmethod (unix-stream :setup) ()
  (select-processor
    ((:explorer :cadr)
     (ferror nil "only for lambda"))
    (:lambda))
  (setq ready-p nil)
  (cond ((not (si:share-mode-active-p))
	 (ferror nil "not in share mode")))
  (setq share-tty (get-share-tty-number port-number))
  (setq buf-size (si:%share-tty-buf-size share-tty))
  (cond ((zerop buf-size)
	 (ferror nil "share-tty not really set up")))
  (setq lisp-to-unix-array
	(make-array  buf-size
		     :type art-string
		     :displaced-to share-tty
		     :displaced-index-offset
		     (* 4 (si:%share-tty-lisp-to-unix-buffer share-tty))))
  (setq unix-to-lisp-array
	(make-array buf-size
		    :type art-string
		    :displaced-to share-tty
		    :displaced-index-offset
		    (* 4 (si:%share-tty-unix-to-lisp-buffer share-tty))))

  (send self :set-carrier t)
  (setq ready-p t))

))
