;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 126.57
;;; Reason:
;;;  Tighten up use of SI:*RELEASE-STATUS* in PRINT-HERALD.  Make a list of
;;;  standard release keywords, SI:RELEASE-STATUS-KEYWORDS.  Add :OBSOLETE
;;;  keyword.
;;;  
;;;  Also, first shot at the Falcon's herald, almost the same as Lambda's.
;;; Written 17-Aug-88 17:39:41 by keith (Keith Corbett) at site Gigamos Cambridge
;;; while running on Breaking Glass from band 2
;;; with Experimental System 126.55, ZMail 73.2, Local-File 75.2, File-Server 24.1, Unix-Interface 13.0, Tape 24.2, Lambda-Diag 17.0, Experimental ZWEI 126.0, microcode 1762, SDU Boot Tape 3.14, SDU ROM 103.



; From modified file DJ: L.IO; DISK.LISP#421 at 17-Aug-88 17:39:41
#8R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: IO; DISK  "


(defconstant release-status-keywords  '(:development :released :alpha :beta :obsolete))

(defun release-status ()
  (CASE *RELEASE-STATUS*
    (nil)
    (:DEVELOPMENT "(Development System)")
    (:ALPHA "(Alpha Test)")
    (:BETA "(Beta Test)")
    (:obsolete "(Obsolete System)")
    (:released "")
    (otherwise (if (member *release-status* release-status-keywords)
		   (format nil "(~A System)"*release-status*)
		 (format nil "(~A?)" *release-status*)))))

))

; From modified file DJ: L.SYS; LAST.LISP#3 at 17-Aug-88 17:43:17
#10R SYSTEM-INTERNALS#: #!:CL
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; LAST  "

(defun maybe-set-systems-released ()
  ;;Status of patchable systems
  (let ((systems-to-release nil) answer)
    (dolist (s patch-systems-list)
      (and (neq (patch-status s) :released)
	   (push s systems-to-release)))
    (when (setq answer
		(and systems-to-release
		     (fquery `(:type :tyi :choices (((:all "All")   #\A)
						    ((:some "Some") #\S)
						    ((nil "None")   #\N))
				     :clear-input t
				     :timeout ,(* 5 60 60)
				     :default-value nil)
			     "Release patchable systems? ")))
      (dolist (s (nreverse systems-to-release))
	(when (or (eq answer :all)
		  (let ((proceed
			  (fquery `(:type :tyi :choices (((t "Yes")      #\Y)
							 ((nil "No")     #\N)
							 ((:quit "Quit") #\Q)
							 ((:proceed "Proceed") #\P))
					  :clear-input t
					  :timeout ,(* 2 60 60)
					  :default-value nil)
				  "~A ~A (version ~D.~D)~&  Release it? "
				  (patch-status s)
				  (patch-name s)
				  (patch-version s)
				  (version-number (first (patch-version-list s))))))
		    (case proceed
		      (:quit (return))
		      (:proceed (setq answer :all)))
		    proceed))
	  (set-system-status (patch-name s) :released)
	  (format t "~A. ~&Released" (patch-name s))))))
  ;;Status keyword
  (when (yes-or-no-p-with-timeout (* 5 60 60) nil
				  "~2&Current release status is ~S~@[ ~A~].  Change it ?"
				  si:*release-status*
				  (release-status))
    (let* ((statuslist release-status-keywords)
	   (choices (loop for status in statuslist
			  as str = (format nil "~1(~A~)" status)
			  collect (list
				    (list status str)
				    (char str 0)))))
      (format t "~%The release status should be one of the following:~%~{~%~3T- ~1(~A~)~}" statuslist)
      (setq si:*release-status*
	    (fquery `(:type :tyi
		      :choices ,choices
		      :clear-input t
		      :timeout ,(* 2 60 60)
		      :default-value :released)
		    "~%Set release status - specify first character: "))))
  (format t "~2&")
  ;;Show results
  (print-herald)
  nil)

))

; From modified file DJ: L.IO; DISK.LISP#421 at 17-Aug-88 17:48:59
#8R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: IO; DISK  "

(DEFUN PRINT-HERALD (&OPTIONAL (STREAM STANDARD-OUTPUT))
  "Print on STREAM a description of the versions of all software running."
  (UNLESS (ZEROP %LOADED-BAND)
    (SETQ CURRENT-LOADED-BAND %LOADED-BAND))
  (UNLESS (BOUNDP 'CURRENT-LOADED-BAND)
    (SETQ CURRENT-LOADED-BAND 0))
  (SELECT-PROCESSOR
    (:CADR
      ;; Give MIT credit for all the CADR systems.
      (FORMAT STREAM "~&MIT System, band ~C of ~A."
	      (LDB (BYTE 8. 16.) CURRENT-LOADED-BAND)
	      DISK-PACK-NAME))
    ((:LAMBDA :falcon)
      (FORMAT STREAM "~&GigaMos ~A Release ~D.~D~@[ ~A~]~@[, band ~C of ~A~]."
	      (select-processor (:lambda "Lambda") (:falcon "Falcon"))
	      *RELEASE-MAJOR-VERSION*
	      *RELEASE-MINOR-VERSION*
	      (release-status)
	      (select-processor
		(:lambda (LDB (BYTE 8. 16.) CURRENT-LOADED-BAND)))
	      DISK-PACK-NAME))
    (:EXPLORER
      (FORMAT STREAM "~&LMI Explorer Release ~D.~D~@[ ~A~], band ~C of ~A."
	      *RELEASE-MAJOR-VERSION*
	      *RELEASE-MINOR-VERSION*
	      (release-status)
	      (LDB (BYTE 8. 16.) CURRENT-LOADED-BAND)
	      DISK-PACK-NAME)))
  (AND (BOUNDP 'SYSTEM-ADDITIONAL-INFO)
       (PLUSP (ARRAY-ACTIVE-LENGTH SYSTEM-ADDITIONAL-INFO))
       (FORMAT STREAM " (~A)" SYSTEM-ADDITIONAL-INFO))
  (IF (NOT (FBOUNDP 'DESCRIBE-SYSTEM-VERSIONS))
      (FORMAT STREAM "~%Fresh Cold Load~%")
    (SELECT-PROCESSOR
      (:CADR
	(FORMAT STREAM "~&~DK physical memory, ~DK virtual memory."
		(TRUNCATE (SYSTEM-COMMUNICATION-AREA %SYS-COM-MEMORY-SIZE) #O2000)
		(TRUNCATE VIRTUAL-MEMORY-SIZE #O2000)))
      ((:LAMBDA :EXPLORER)
	(FORMAT STREAM "~&~DK physical memory, ~DK virtual memory, NuBus slot ~D."
		(TRUNCATE (SYSTEM-COMMUNICATION-AREA %SYS-COM-MEMORY-SIZE) #O2000)
		(TRUNCATE VIRTUAL-MEMORY-SIZE #O2000)
		(LOGXOR #XF0 RG-QUAD-SLOT))))
    (DESCRIBE-SYSTEM-VERSIONS STREAM t)
    (FORMAT STREAM "~%~A ~A, with associated machine ~A.~%"
	    (OR (GET-SITE-OPTION :SITE-PRETTY-NAME) SITE-NAME)
	    LOCAL-PRETTY-HOST-NAME
	    (SEND ASSOCIATED-MACHINE :NAME-AS-FILE-COMPUTER))
    (select-processor
      (:explorer (Check-For-Abnormal-Shutdown))
      ((:lambda :cadr)))))

))
