(FILECREATED "24-Aug-85 13:23:34" {ERIS}<LISPCORE>SOURCES>DOVEDISPLAYHACK.;4 4507         changes to:  (VARS DOVEDISPLAYHACKCOMS)      previous date: "23-Jul-85 00:04:28" {ERIS}<LISPCORE>SOURCES>DOVEDISPLAYHACK.;3)(* Copyright (c) 1985 by XEROX. All rights reserved.)(PRETTYCOMPRINT DOVEDISPLAYHACKCOMS)(RPAQQ DOVEDISPLAYHACKCOMS ((FNS \STARTDISPLAY \CreateScreenBitMap)			    (DECLARE: DONTEVAL@LOAD DOCOPY (P (\LOCKFN (FUNCTION 								   \DoveDisplay.SetCursorPosition))))))(DEFINEQ(\STARTDISPLAY  (LAMBDA NIL                                                (* jwo: "23-Jul-85 00:04")    (DECLARE (GLOBALVARS SCREENWIDTH SCREENHEIGHT))    (COND      ((NEQ \MACHINETYPE \DAYBREAK)	(SETQ ScreenBitMap (\CreateScreenBitMap SCREENWIDTH SCREENHEIGHT))))    (UNINTERRUPTABLY        (SHOWDISPLAY (fetch BITMAPBASE of ScreenBitMap)		     (fetch BITMAPRASTERWIDTH of ScreenBitMap))	(CHANGETTYDEVICE (QUOTE LISPDISPLAY))	(SETQ \DisplayStarted T))    (COND      ((AND (NEQ \KEYBOARD.BEFORETYPE \DAYBREAK)	    (EQ \MACHINETYPE \DAYBREAK))	(PROG (OLDWINDOWS)	      (SETQ OLDWINDOWS (COPY (OPENWINDOWS)))	      (for W in OLDWINDOWS do (PROG ((WREG (fetch (WINDOW REG) of W)))          (* * This gook is designed to move open windows into reasonable positions on the Daybreak screen, from wherever they	  were on the LOADUP machine. The LOADUP process needs to be fixed to just leave around functions that initialize the 	  screen and related things in a machine dependent (intelligent) way.)					    (MOVEW W (IQUOTIENT (ITIMES 4 (fetch (REGION LEFT)									     of WREG))								5)						   (IQUOTIENT (ITIMES (fetch (REGION BOTTOM)									 of WREG)								      3)							      4))					    (\CLOSEW1 W)))	      (SETQ ScreenBitMap (\CreateScreenBitMap (SETQ SCREENWIDTH (\DoveDisplay.ScreenWidth))						      (SETQ SCREENHEIGHT (\DoveDisplay.ScreenHeight)))		)	      (CHANGEBACKGROUND)	      (for I in OLDWINDOWS do (\OPENW1 I)))))    (SETQ WHOLESCREEN (SETQ WHOLEDISPLAY	(create REGION		LEFT _ 0		BOTTOM _ 0		WIDTH _ SCREENWIDTH		HEIGHT _ SCREENHEIGHT)))))(\CreateScreenBitMap  (LAMBDA (WIDTH HEIGHT)                                     (* jwo: "22-Jul-85 23:51")    (DECLARE (GLOBALVARS \MaxScreenPage))          (* creates and locks the pages for the display bit map. Returns a BITMAP descriptor for it. Uses the first words of 	  the segment \DISPLAYREGION.)          (* * ??? (COND ((OR (NEQ \MACHINETYPE \DAYBREAK) FLG) (FOLDHI (CEIL WIDTH (UNFOLD \DisplayWordAlign BITSPERWORD)) 	  BITSPERWORD)) (T 52)))    (PROG ((RASTERWIDTH (IQUOTIENT WIDTH BITSPERWORD))	   MAXPAGE#)                                         (* the display microcode needs to have the display fall							     on \DisplayWordAlign word boundaries.)          (COND	    ((IGREATERP (SETQ MAXPAGE# (SUB1 (FOLDHI (ITIMES RASTERWIDTH HEIGHT)						     WORDSPERPAGE)))			\MaxScreenPage)          (* new screen size is larger, allocate more pages. All pages are locked. NOERROR is true in \NEWPAGE call in case 	  pages are already there, e.g. DLBOOT allocated them.)	      (for I from (ADD1 \MaxScreenPage) to MAXPAGE# do (\NEWPAGE (\ADDBASE \DISPLAYREGION										   (UNFOLD I 										     WORDSPERPAGE))									 T T))	      (SETQ \MaxScreenPage MAXPAGE#)))          (RETURN (COND		    ((BITMAPP ScreenBitMap)                  (* reuse the same BITMAP ptr so that it will stay EQ to							     the one in user datastructures.)		      (replace BITMAPBASE of ScreenBitMap with \DISPLAYREGION)		      (replace BITMAPWIDTH of ScreenBitMap with WIDTH)		      (replace BITMAPRASTERWIDTH of ScreenBitMap with RASTERWIDTH)		      (replace BITMAPHEIGHT of ScreenBitMap with HEIGHT)		      ScreenBitMap)		    (T (create BITMAP			       BITMAPBASE _ \DISPLAYREGION			       BITMAPRASTERWIDTH _ RASTERWIDTH			       BITMAPWIDTH _ WIDTH			       BITMAPHEIGHT _ HEIGHT))))))))(DECLARE: DONTEVAL@LOAD DOCOPY (\LOCKFN (FUNCTION \DoveDisplay.SetCursorPosition)))(PUTPROPS DOVEDISPLAYHACK COPYRIGHT ("XEROX" 1985))(DECLARE: DONTCOPY  (FILEMAP (NIL (502 4347 (\STARTDISPLAY 512 . 2342) (\CreateScreenBitMap 2344 . 4345)))))STOP