;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for MEDIUM-RESOLUTION-COLOR version 2.2
;;; Reason:
;;;  add filing, some frame-grabber stuff & misc., mostly for fed.
;;; Written 4-Mar-86 11:04:28 by PECANN at site LMI Cambridge
;;; while running on The Importance of Being Earnest from band 1
;;; with Experimental System 110.90, Experimental Local-File 66.1, Experimental FILE-Server 18.1, Experimental Lambda-Diag 3.0, Experimental KERMIT 31.1, NIL Tiger 23.0, Experimental Unix-Interface 9.0, Experimental Window-Maker 1.0, Experimental ZMail 65.6, Experimental TCP-Kernel 39.4, Experimental TCP-User 62.2, Experimental TCP-Server 45.5, Experimental Tape 1.11, Experimental MEDIUM-RESOLUTION-COLOR 2.1, microcode 1368, SDU ROM 8, Patched from 110.31 Alphafork '86.3.3 by pc..



; From file DJ: L.VIDEO-DEVICE.GREY; GREY-WINDOW.LISP#20 at 4-Mar-86 11:04:49
#8R GREY#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "GREY")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: VIDEO-DEVICE; GREY; GREY-WINDOW  "

(DEFMETHOD (GREY-SCREEN :MOUSEBUTTON-GRAB-FRAME) (&OPTIONAL (CHAN 0) (MASK 0) (SCAN-MODE NIL) (EXT-SYNC NIL))
  (IF (NOT SCAN-MODE)					;test SCAN-MODE flag
      (COND ((NOT EXT-SYNC)
	     (WRITE-MODE (DPB CHAN 1402 44000201))	;Enter FG MODE
	     (PROCESS-SLEEP 3)
	     (LOOP WHILE (NOT (ZEROP (TV:MOUSE-BUTTONS))))
	     (WRITE-MODE (DPB CHAN 1402 44000241)))	;Back to TV MODE
	    (T
	     (WRITE-MODE (DPB MASK 3010
			      (DPB CHAN 1402 44001202)));Enter FG MODE, externally sync'ed
	     (PROCESS-SLEEP 3)
	     (LOOP WHILE (NOT (ZEROP (TV:MOUSE-BUTTONS))))
	     (WAIT-FOR-VSYNC)
	     (WRITE-MODE (DPB MASK 3010			;Back to TV MODE, externally sync'ed
			      (DPB CHAN 1402 44001242)));and still masked.
	     (WAIT-FOR-VSYNC)				;When sure frame grabbing has stopped
	     (WRITE-MODE (DPB CHAN 1402 44001242))))	;clear mask field.
    
    (COND ((NOT EXT-SYNC)				;SCAN-MODE flag is set
	   (WRITE-MODE (DPB CHAN 1402 44100201))	;Enter FG MODE
	   (PROCESS-SLEEP 3)
	   (LOOP WHILE (NOT (ZEROP (TV:MOUSE-BUTTONS))))
	   (WRITE-MODE (DPB CHAN 1402 44100241)))	;Back to TV MODE
	  (T
	   (WRITE-MODE (DPB MASK 3010
			    (DPB CHAN 1402 44101202)))	;Enter FG MODE, externally sync'ed
	   (PROCESS-SLEEP 3)
	   (LOOP WHILE (NOT (ZEROP (TV:MOUSE-BUTTONS))))
	   (WAIT-FOR-VSYNC)
	   (WRITE-MODE (DPB MASK 3010			;Back to TV MODE, externally sync'ed
			    (DPB CHAN 1402 44101242)))	;and still masked.
	   (WAIT-FOR-VSYNC)				;When sure frame grabbing has stopped
	   (WRITE-MODE (DPB CHAN 1402 44101242))))))	;clear mask field.

))

; From file DJ: L.VIDEO-DEVICE.GREY; GREY-WINDOW.LISP#20 at 4-Mar-86 11:05:06
#8R GREY#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "GREY")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: VIDEO-DEVICE; GREY; GREY-WINDOW  "

(DEFMETHOD (GREY-SCREEN :GRAB-FRAME-NOW) (&OPTIONAL (CHAN 0) (MASK 0) (SCAN-MODE NIL) (EXT-SYNC NIL))
  (IF (NOT SCAN-MODE)					;test SCAN-MODE flag
      (COND ((NOT EXT-SYNC)
	     (WRITE-MODE (DPB CHAN 1402 44000201))	;Enter FG MODE
	     (PROCESS-SLEEP 3)
	     (WRITE-MODE (DPB CHAN 1402 44000241)))	;Back to TV MODE
	    (T
	     (WRITE-MODE (DPB MASK 3010
			      (DPB CHAN 1402 44001202)));Enter FG MODE, externally sync'ed
	     (PROCESS-SLEEP 3)
	     (WAIT-FOR-VSYNC)
	     (WRITE-MODE (DPB MASK 3010			;Back to TV MODE, externally sync'ed
			      (DPB CHAN 1402 44001242)));and still masked.
	     (WAIT-FOR-VSYNC)				;When sure frame grabbing has stopped
	     (WRITE-MODE (DPB CHAN 1402 44001242))))	;clear mask field.
    
    (COND ((NOT EXT-SYNC)				;SCAN-MODE flag is set
	   (WRITE-MODE (DPB CHAN 1402 44100201))	;Enter FG MODE
	   (PROCESS-SLEEP 3)
	   (WRITE-MODE (DPB CHAN 1402 44100241)))	;Back to TV MODE
	  (T
	   (WRITE-MODE (DPB MASK 3010
			    (DPB CHAN 1402 44101202)))	;Enter FG MODE, externally sync'ed
	   (PROCESS-SLEEP 3)
	   (WAIT-FOR-VSYNC)
	   (WRITE-MODE (DPB MASK 3010			;Back to TV MODE, externally sync'ed
			    (DPB CHAN 1402 44101242)))	;and still masked.
	   (WAIT-FOR-VSYNC)				;When sure frame grabbing has stopped
	   (WRITE-MODE (DPB CHAN 1402 44101242))))))	;clear mask field.

))

; From file DJ: L.VIDEO-DEVICE.GREY; GREY-WINDOW.LISP#20 at 4-Mar-86 11:05:17
#8R GREY#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "GREY")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: VIDEO-DEVICE; GREY; GREY-WINDOW  "

(DEFMETHOD (GREY-SCREEN :LOAD-COLORMAP-FALSE-COLOR-ODD) ()
  (DOTIMES (I 256.)
    (IF (ZEROP (LOGAND I 1))
	(WRITE-COLOR-MAP I I I I NIL SELF)
        (COND ((LESSP I 128.)
	       (WRITE-COLOR-MAP I (+ 128.  I) (* I 2) (MAX (- I 64.) 0) NIL SELF))
	      ((LESSP I 192.)
	       (WRITE-COLOR-MAP I (- 384. I) 255. (- I 64.) NIL SELF))
	      (T
	       (WRITE-COLOR-MAP I (- 384. I) 255. (- I 64.) NIL SELF))))))

))

; From file DJ: L.VIDEO-DEVICE.GREY; GREY-WINDOW.LISP#20 at 4-Mar-86 11:05:40
#8R GREY#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "GREY")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: VIDEO-DEVICE; GREY; GREY-WINDOW  "

(DEFVAR *FILING-ARRAY* NIL "FOR LOADING AND SAVING IMAGES; THEY SHOULD ALWAYS BE `FASD'ED AS THIS SYMBOL")

(DEFMETHOD (GREY-SCREEN :LOAD) (FILE)
  (LET (*FILING-ARRAY*)
    (LOAD FILE)
    *FILING-ARRAY*))

(DEFMETHOD (GREY-SCREEN :SAVE) (ARRAY FILE)
  (LET ((*FILING-ARRAY* ARRAY))
    (COMPILER:FASD-SYMBOL-VALUE FILE '*FILING-ARRAY*)))

(defmethod (grey-screen :blt) (from to)
  (blt from to))

(defmethod (grey-screen :grab-frame) ()
  (grab-frame))

))
