(FILECREATED " 9-Apr-85 18:12:12" {ERIS}<LISPCORE>LIBRARY>DANDELIONUFO.;13 19778  

      changes to:  (FNS \UFOCOLOR.EVENTFN PCWRITEPIXEL)
		   (VARS \RochesterDisplayOffsetRegister \RochesterBUSADDRHI \RochesterBUSADDRLO)

      previous date: "27-Mar-85 16:30:55" {ERIS}<LISPCORE>LIBRARY>DANDELIONUFO.;11)


(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT DANDELIONUFOCOMS)

(RPAQQ DANDELIONUFOCOMS [(COMS (* driver for UFO systems Dandelion BusMaster color card with 6 bit 
				  colormap)
			       (FNS \DANDELIONUFOINITCOLOR)
			       (FNS \DANDELIONUFO\EXTRACTCOLORINTENSITY \DANDELION\STARTCOLOR 
				    \DANDELION\STOPCOLOR \DANDELION\SETSCREENCOLORMAP 
				    \DANDELIONCOLORLEVEL \DANDELION\CONVERTCOLORMAPENTRY 
				    \DANDELION\WRITELUT \DANDELION\SENDCOLORMAPENTRY 
				    \DANDELIONROTATECOLORMAP)
			       (FNS \DDLCOLOR.LOCKFNS \DDLCOLOR.LOCKPAGES)
			       (FNS \REMOVE.PERIODIC.INTERRUPT \INSTALL.PERIODIC.INTERRUPT)
			       (FNS PCCOLORSCROLL PCCOLORSCROLLH PCROTATELUT PCWRITELUT PCWRITECOLOR 
				    PCWRITEPIXEL PCREADPIXEL PCSENDCOLORMAPENTRY \RochesterWritePage)
			       (FNS \BITMAPPAGES \BitmapWords \DIRTYPAGEP \MAKECLEANPAGE 
				    \MAKEDIRTYPAGE \DANDELIONUFO.UPDATEDAEMON \UFOCOLOR.EVENTFN 
				    \DANDELION\INITCOLORS)
			       (MACROS \DIRTYPAGEP)
			       (CONSTANTS DDLPIXELSPERPAGE DDLPIXELSPERWORD \VMAP.NOTDIRTY 
					  \PCColorMapBase \RochesterDisplayBase 
					  \RochesterDisplayOffsetRegister 
					  \RochesterDisplayOffsetRegisterLo \RochesterBUSADDRHI 
					  \RochesterBUSADDRLO \RochesterPIXELSPERPAGE)
			       (PROP ARGNAMES \BUSBLTOUTNYBBLES)
			       (FILES BUSMASTER)
			       (VARS \DDLCOLOR.LOCKEDFNS \DDLCOLOR.LOCKEDVARS)
			       (P (\DDLCOLOR.LOCKFNS)))
			 (DECLARE: DONTEVAL@COMPILE DOCOPY (P (\DANDELIONUFOINITCOLOR)
							      (\CREATEDISPLAY (QUOTE 
									      DANDELIONUFODISPLAY)
									      \DANDELIONUFOWSOPS 
									      \DANDELIONUFOWSDATA
									      (FUNCTION 
										\UFOCOLOR.EVENTFN])



(* driver for UFO systems Dandelion BusMaster color card with 6 bit colormap)

(DEFINEQ

(\DANDELIONUFOINITCOLOR
  [LAMBDA NIL                                                (* hdj " 5-Feb-85 11:46")
    (DECLARE (GLOBALVARS \DANDELIONUFOWSOPS \DANDELIONUFOWSDATA))
    (SETQ \DANDELIONUFOWSOPS (create WSOPS
				     WSCHANGEBACKGROUND ←(FUNCTION COLORBACKGROUND)
				     WSCHANGEBACKGROUNDBORDER ←(FUNCTION NILL)
				     WSDISPLAYHEIGHT ←(FUNCTION NILL)
				     STARTCOLOR ←(FUNCTION \DANDELION\STARTCOLOR)
				     STOPCOLOR ←(FUNCTION \DANDELION\STOPCOLOR)
				     SETSCREENCOLORMAP ←(FUNCTION \DANDELION\SETSCREENCOLORMAP)
				     COLORLEVEL ←(FUNCTION \DANDELIONCOLORLEVEL)
				     ROTATECOLORMAP ←(FUNCTION \DANDELIONROTATECOLORMAP)))
    (SETQ \DANDELIONUFOWSDATA
      (create WSDATA
	      WSREGION ←(create REGION
				LEFT ← 0
				BOTTOM ← 0
				WIDTH ← 640
				HEIGHT ← 400])
)
(DEFINEQ

(\DANDELIONUFO\EXTRACTCOLORINTENSITY
  [LAMBDA (COLORLEVEL)

          (* * picks the two most significant bits out of a color level)


    (LRSH COLORLEVEL 6])

(\DANDELION\STARTCOLOR
  [LAMBDA (DISPLAY COLORMAP PTRTOBITS BITSPP)                (* hdj " 8-Mar-85 11:01")
                                                             (* turns on the color display with a given colormap and
							     pointer to the screen bitmap.)
    (DECLARE (GLOBALVARS ColorScreenBitMap ColorScreenBitMapBase ColorScreenBitMapEnd 
			 ColorScreenBitMapEndPage ColorScreenBitMapBasePage ColorScreenBitMapPages 
			 \DDLCOLOR.MOVELIMIT \DDLCOLOR.LASTMOVEDPAGE \PERIODIC.INTERRUPT.FREQUENCY))
    (if (NEQ \MACHINETYPE \DANDELION)
	then (ERROR "Can't run Dandelion color on a" (MACHINETYPE)))
    (COND
      ((NEQ BITSPP 4)
	(ERROR "Color only comes in 4 bits per pixel on this machine." BITSPP)))
    (SCREENCOLORMAP COLORMAP)
    (\DANDELION\INITCOLORS DISPLAY)
    (SETQ ColorScreenBitMapBase (fetch (BITMAP BITMAPBASE) of ColorScreenBitMap))
    (SETQ ColorScreenBitMapEnd (\ADDBASE ColorScreenBitMapBase (\BitmapWords ColorScreenBitMap)))
    (SETQ ColorScreenBitMapEndPage (fetch (POINTER PAGE#) of ColorScreenBitMapEnd))
    (SETQ ColorScreenBitMapBasePage (fetch (POINTER PAGE#) of ColorScreenBitMapBase))
    (SETQ ColorScreenBitMapPages (\BITMAPPAGES ColorScreenBitMap))
    (\TEMPLOCKPAGES ColorScreenBitMapBase ColorScreenBitMapPages)
    (SETQ \DDLCOLOR.MOVELIMIT 20)                            (* move no more than 20 pages per go-round of 
							     \DDLCOLOR.UPDATEDAEMON)
    (SETQ \DDLCOLOR.LASTMOVEDPAGE 0)
    (SETQ \PERIODIC.INTERRUPT.FREQUENCY 10)                  (* do update every 10 / 77 of a sec)
    (\INSTALL.PERIODIC.INTERRUPT (FUNCTION \DANDELIONUFO.UPDATEDAEMON))
    (replace (DISPLAYSTATE RUNNING?) of (fetch (FDEV DEVICEINFO) of DISPLAY) with T])

(\DANDELION\STOPCOLOR
  [LAMBDA (DISPLAY)                                          (* hdj " 5-Feb-85 12:04")
                                                             (* turns the color display off unlocks the colormap and
							     clobbers it.)
    (if (COLORMAPP \SystemColorMap)
	then (\UNLOCKPAGES \SystemColorMap 1)                (* should turn color map to black 
							     (SCREENCOLORMAP BLACKMAP))
	     (\REMOVE.PERIODIC.INTERRUPT (FUNCTION \DANDELIONUFO.UPDATEDAEMON)))
    (replace (DISPLAYSTATE RUNNING?) of (fetch (FDEV DEVICEINFO) of DISPLAY) with NIL])

(\DANDELION\SETSCREENCOLORMAP
  [LAMBDA (DISPLAY COLORMAP)                                 (* hdj " 4-Feb-85 10:08")
                                                             (* machine dependent part of setting the colormap.
							     This is always called from code that is 
							     UNINTERRUPTABLY)
    (for I from 0 to 15 do (\DANDELION\SENDCOLORMAPENTRY DISPLAY I COLORMAP])

(\DANDELIONCOLORLEVEL
  [LAMBDA (DISPLAY COLORMAP COLOR# PRIMARYCOLOR NEWLEVEL)    (* hdj " 4-Feb-85 09:54")
                                                             (* returns the value of the intensity for color gun 
							     PRIMARYCOLOR {RED, GREEN or BLUE} in COLOR#)
    (PROG (RETVAL)
          (SETQ COLOR# (COLORNUMBERP COLOR#))
          (SETQ RETVAL (\GENERICCOLORLEVEL COLORMAP COLOR# PRIMARYCOLOR NEWLEVEL))
          (COND
	    (NEWLEVEL (\DANDELION\SENDCOLORMAPENTRY DISPLAY COLOR# COLORMAP)))
          (RETURN RETVAL])

(\DANDELION\CONVERTCOLORMAPENTRY
  [LAMBDA (DISPLAY COLOR# COLORMAP)                          (* hdj " 4-Feb-85 10:02")
                                                             (* converts between an internal colormap entry and the 
							     format desired by the pc bus.)
    (LOGXOR 63 (LOGOR 128 (LLSH (\DANDELIONUFO\EXTRACTCOLORINTENSITY (COLORLEVEL COLORMAP COLOR#
										 (QUOTE BLUE)
										 NIL DISPLAY))
				4)
		      (LLSH (\DANDELIONUFO\EXTRACTCOLORINTENSITY (COLORLEVEL COLORMAP COLOR#
									     (QUOTE GREEN)
									     NIL DISPLAY))
			    2)
		      (\DANDELIONUFO\EXTRACTCOLORINTENSITY (COLORLEVEL COLORMAP COLOR# (QUOTE RED)
								       NIL DISPLAY])

(\DANDELION\WRITELUT
  [LAMBDA (DISPLAY A D)                                      (* hdj " 5-Feb-85 15:09")
    (BUS.WRITE (IPLUS \PCColorMapBase A)
	       D])

(\DANDELION\SENDCOLORMAPENTRY
  [LAMBDA (DISPLAY COLOR# COLORMAP)                          (* hdj " 4-Feb-85 10:02")
                                                             (* sends the Ith entry of the colormap COLORMAP to the 
							     extension bus.)
    (\DANDELION\WRITELUT DISPLAY COLOR# (\DANDELION\CONVERTCOLORMAPENTRY DISPLAY COLOR# COLORMAP])

(\DANDELIONROTATECOLORMAP
  [LAMBDA (DISPLAY COLORMAP STARTCOLOR THRUCOLOR)            (* hdj " 4-Feb-85 10:55")
                                                             (* rotates the colors STARTCOLOR through THRUCOLOR in 
							     the color map)
    (OR (COLORMAPP COLORMAP)
	(SETQ COLORMAP (SCREENCOLORMAP)))
    (SETQ STARTCOLOR (COLORNUMBERP (OR STARTCOLOR 0)))
    (SETQ THRUCOLOR (COLORNUMBERP (OR THRUCOLOR 15)))
    [COND
      ((IGREATERP STARTCOLOR THRUCOLOR)
	(SETQ STARTCOLOR (PROG1 THRUCOLOR (SETQ THRUCOLOR STARTCOLOR]
    (\GENERICROTATECOLORMAP COLORMAP STARTCOLOR THRUCOLOR)
    (for COLOR# from STARTCOLOR to THRUCOLOR do (\DANDELION\SENDCOLORMAPENTRY DISPLAY COLOR# COLORMAP]
)
)
(DEFINEQ

(\DDLCOLOR.LOCKFNS
  [LAMBDA NIL                                                (* hdj "24-Jan-85 13:28")
    (for FN in \DDLCOLOR.LOCKEDFNS do (\LOCKFN FN))
    (for VAR in \DDLCOLOR.LOCKEDVARS do (\LOCKVAR VAR])

(\DDLCOLOR.LOCKPAGES
  [LAMBDA NIL                                                (* hdj "16-Nov-84 16:10")
    (\TEMPLOCKPAGES ColorScreenBitMapBase ColorScreenBitMapPages])
)
(DEFINEQ

(\REMOVE.PERIODIC.INTERRUPT
  [LAMBDA (INTERRUPT)
    (DECLARE (GLOBALVARS \PERIODIC.INTERRUPT))               (* hdj "31-Oct-84 17:08")
    (PROG1 \PERIODIC.INTERRUPT (SETQ \PERIODIC.INTERRUPT NIL])

(\INSTALL.PERIODIC.INTERRUPT
  [LAMBDA (INTERRUPT)
    (DECLARE (GLOBALVARS \PERIODIC.INTERRUPT))               (* hdj "31-Oct-84 17:08")
    (PROG1 \PERIODIC.INTERRUPT (SETQ \PERIODIC.INTERRUPT INTERRUPT])
)
(DEFINEQ

(PCCOLORSCROLL
  [LAMBDA (N)                                                (* edited: "12-Jul-84 16:24")
    (OR N (SETQ N 50))
    (for I from 0 to 39
       do (DISMISS N)
	  (PCWRITECOLOR 2 (LOGAND 255 I])

(PCCOLORSCROLLH
  [LAMBDA (N)                                                (* edited: "12-Jul-84 16:26")
    (for I from 400 to 0 by -1
       do (DISMISS N)
	  (PCWRITECOLOR 2 (LOGAND 255 (ITIMES I 39)))
	  (PCWRITECOLOR 3 (LRSH (ITIMES I 39)
				8])

(PCROTATELUT
  [LAMBDA NIL                                                (* hdj "30-Oct-84 12:55")
    (PROG (TEMP)
          (SETQ TEMP (BUS.READ 917521))
          [for I from 1 to 14 do (PCWRITELUT I (PCREAD (IPLUS 917521 I]
          (PCWRITELUT 15 TEMP])

(PCWRITELUT
  [LAMBDA (A D)                                              (* hdj "24-Jan-85 12:19")
    (BUS.WRITE (IPLUS \PCColorMapBase A)
	       D])

(PCWRITECOLOR
  [LAMBDA (A D)                                              (* hdj "30-Oct-84 12:38")
    (BUS.WRITE (IPLUS 917504 A)
	       D])

(PCWRITEPIXEL
  [LAMBDA (X Y VALUE)                                        (* hdj " 8-Apr-85 14:40")
    (LET [(ADDR (IPLUS X (ITIMES 640 Y]
      (BUS.WRITE (ADD1 \RochesterDisplayOffsetRegister)
		 (LRSH ADDR 12))
      (BUS.WRITE (IPLUS 524288 (LOGAND 4095 ADDR))
		 VALUE)
      VALUE])

(PCREADPIXEL
  [LAMBDA (X Y)                                              (* hdj "31-Jan-85 22:54")
    (LET [(ADDR (IPLUS X (ITIMES Y 640]
      (BUS.WRITE 917697 (LRSH ADDR 12))
      (LOGAND 15 (BUS.READ (IPLUS 524288 (LOGAND 4095 ADDR])

(PCSENDCOLORMAPENTRY
  [LAMBDA (COLOR# COLORMAP)                                  (* hdj "24-Jan-85 12:37")
                                                             (* sends the Ith entry of the colormap COLORMAP to the 
							     extension bus.)
    (\DANDELION\WRITELUT COLOR# (\DANDELION\CONVERTCOLORMAPENTRY COLOR# COLORMAP])

(\RochesterWritePage
  (LAMBDA (AbsCurrPage CurrPageInBitMap)                     (* kbr: " 1-Mar-85 16:29")
    (BUS.WRITE2 \RochesterDisplayOffsetRegister (UNFOLD CurrPageInBitMap 64))
                                                             (* ((1024 pixels / page) / (16 pixels / offset)) = 64 
							     offsets / page)
    (\BUSBLTOUTNYBBLES (create POINTER
			       PAGE# ← AbsCurrPage)
		       \RochesterBUSADDRHI \RochesterBUSADDRLO \RochesterPIXELSPERPAGE)))
)
(DEFINEQ

(\BITMAPPAGES
  [LAMBDA (BITMAP)                                           (* hdj "23-Oct-84 11:47")
    (FOLDHI (ITIMES (fetch (BITMAP BITMAPRASTERWIDTH) of BITMAP)
		    (fetch (BITMAP BITMAPHEIGHT) of BITMAP))
	    WORDSPERPAGE])

(\BitmapWords
  [LAMBDA (BM)                                               (* hdj "23-Oct-84 15:56")
    (ITIMES (fetch (BITMAP BITMAPRASTERWIDTH) of BM)
	    (fetch (BITMAP BITMAPHEIGHT) of BM])

(\DIRTYPAGEP
  [LAMBDA (VPAGE)                                            (* hdj "19-Oct-84 12:31")
    (fetch (VMEMFLAGS DIRTY) of (\READFLAGS VPAGE])

(\MAKECLEANPAGE
  [LAMBDA (VPAGE)                                            (* hdj "18-Oct-84 18:26")
    (\WRITEMAP VPAGE (\READRP VPAGE)
	       (LOGAND \VMAP.NOTDIRTY (\READFLAGS VPAGE])

(\MAKEDIRTYPAGE
  [LAMBDA (VPAGE)                                            (* hdj "18-Oct-84 18:27")
    (\WRITEMAP VPAGE (\READRP VPAGE)
	       (LOGOR \VMAP.DIRTY (\READFLAGS VPAGE])

(\DANDELIONUFO.UPDATEDAEMON
  (LAMBDA NIL                                                (* hdj " 5-Feb-85 12:05")

          (* * Runs under periodic interrupt; flushes changed pages in local copy of PC framebuffer out to PC)


    (DECLARE (GLOBALVARS \DDLCOLOR.LASTMOVEDPAGE \DDLCOLOR.MOVELIMIT))
    (if \INTERRUPTABLE
	then (UNINTERRUPTABLY
                 (\REMOVE.PERIODIC.INTERRUPT (FUNCTION \DANDELIONUFO.UPDATEDAEMON))
		 (PROG ((PagesMoved 0)
			(CurrPage (IREMAINDER (ADD1 \DDLCOLOR.LASTMOVEDPAGE)
					      ColorScreenBitMapPages))
			(StoppingPage \DDLCOLOR.LASTMOVEDPAGE)
			(LastMovedPage \DDLCOLOR.LASTMOVEDPAGE)
			AbsCurrPage)
		       (repeatuntil (OR (EQ PagesMoved \DDLCOLOR.MOVELIMIT)
					(EQ CurrPage StoppingPage))
			  do (SETQ AbsCurrPage (IPLUS ColorScreenBitMapBasePage CurrPage))
			     (if (\DIRTYPAGEP AbsCurrPage)
				 then (\RochesterWritePage AbsCurrPage CurrPage)
				      (\MAKECLEANPAGE AbsCurrPage)
				      (SETQ PagesMoved (ADD1 PagesMoved))
				      (SETQ LastMovedPage CurrPage))
			     (SETQ CurrPage (ADD1 CurrPage))
			     (if (EQ CurrPage ColorScreenBitMapPages)
				 then (SETQ CurrPage 0)))
		       (SETQ \DDLCOLOR.LASTMOVEDPAGE LastMovedPage))
		 (\INSTALL.PERIODIC.INTERRUPT (FUNCTION \DANDELIONUFO.UPDATEDAEMON))))))

(\UFOCOLOR.EVENTFN
  [LAMBDA (DEVICE EVENT)                                     (* hdj " 8-Apr-85 19:26")

          (* * if we are about to SYSOUT, MAKESYS, SAVEVM or LOGOUT we flush all local framebuffer pages to PC and mark all 
	  pages dirty so they get written out to vmem file. We turn off the update agent for the interim to avoid creating a 
	  race condition)



          (* * we only want to do it if the display is turned on, and not merely extant)


    (if (fetch (DISPLAYSTATE RUNNING?) of (fetch (FDEV DEVICEINFO) of DEVICE))
	then (SELECTQ EVENT
		      ((BEFORELOGOUT BEFORESYSOUT BEFOREMAKESYS)
                                                             (* turn off display since we may awake on different 
							     machine)
                                                             (* will disable interrupt and thus avoid race 
							     condition)
			(COLORDISPLAY NIL)
			(for PAGE from ColorScreenBitMapBasePage to ColorScreenBitMapEndPage
			   do (\RochesterWritePage PAGE (IDIFFERENCE PAGE ColorScreenBitMapBasePage))
			      (\MAKEDIRTYPAGE PAGE)))
		      (BEFORESAVEVM (\REMOVE.PERIODIC.INTERRUPT (QUOTE \DANDELIONUFO.UPDATEDAEMON))
                                                             (* disable interrupt to avoid race condition)
				    (for PAGE from ColorScreenBitMapBasePage to 
									 ColorScreenBitMapEndPage
				       do (\RochesterWritePage PAGE (IDIFFERENCE PAGE 
									ColorScreenBitMapBasePage))
					  (\MAKEDIRTYPAGE PAGE)))
		      [AFTERSAVEVM                           (* lifted from \DisplayEventFn -
							     not sure it makes sense here)
				   (COND
				     (\SystemColorMap        (* colordisplay was on. turn it off.
							     User may have moved to machine without color display)
						      (SETQ LastSystemColorMap \SystemColorMap)
						      (SETQ \SystemColorMap NIL)
						      (SETQ \COLORCURSORBM NIL]
		      ((AFTERDOSYSOUT AFTERDOSAVEVM AFTERDOMAKESYS)
                                                             (* enable interrupt)
			(\TEMPLOCKPAGES ColorScreenBitMapBase ColorScreenBitMapPages)
			(SETQ \DDLCOLOR.LASTMOVEDPAGE 0)
			(\INSTALL.PERIODIC.INTERRUPT (QUOTE \DANDELIONUFO.UPDATEDAEMON)))
		      NIL])

(\DANDELION\INITCOLORS
  (LAMBDA (DISPLAY TYPEOFMONITOR)                            (* kbr: "27-Mar-85 16:30")
    (PCWRITECOLOR 1 0)
    (PCWRITECOLOR 1 0)
    (PCWRITECOLOR 1 16)
    (PCWRITECOLOR 0 24)
    (PCWRITECOLOR 0 (SELECTQ TYPEOFMONITOR
			     ((NIL CONRAC)
			       10)
			     (HITACHI 11)
			     (LISPERROR "ILLEGAL ARG" TYPEOFMONITOR)))
    (PCWRITECOLOR 0 25)
    (PCWRITECOLOR 0 43)
    (PCWRITECOLOR 0 227)
    (PCWRITECOLOR 0 39)
    (PCWRITECOLOR 0 0)
    (PCWRITECOLOR 0 0)
    (PCWRITECOLOR 0 0)
    (PCWRITECOLOR 0 0)
    (PCWRITECOLOR 0 0)
    (PCWRITECOLOR 1 63)
    (PCWRITECOLOR 2 1)
    (PCWRITECOLOR 3 0)
    (PCWRITECOLOR 32 8)
    (PCWRITECOLOR 48 0)
    (PCWRITECOLOR 49 0)))
)
(DECLARE: EVAL@COMPILE 
[PUTPROPS \DIRTYPAGEP DMACRO ((VPAGE)
	   (fetch (VMEMFLAGS DIRTY)
		  of
		  (\READFLAGS VPAGE]
)
(DECLARE: EVAL@COMPILE 

(RPAQQ DDLPIXELSPERPAGE 1024)

(RPAQQ DDLPIXELSPERWORD 4)

(RPAQQ \VMAP.NOTDIRTY -4097)

(RPAQQ \PCColorMapBase 917520)

(RPAQQ \RochesterDisplayBase 917504)

(RPAQQ \RochesterDisplayOffsetRegister 917552)

(RPAQQ \RochesterDisplayOffsetRegisterLo 917553)

(RPAQQ \RochesterBUSADDRHI 8)

(RPAQQ \RochesterBUSADDRLO 0)

(RPAQQ \RochesterPIXELSPERPAGE 1024)

(CONSTANTS DDLPIXELSPERPAGE DDLPIXELSPERWORD \VMAP.NOTDIRTY \PCColorMapBase \RochesterDisplayBase 
	   \RochesterDisplayOffsetRegister \RochesterDisplayOffsetRegisterLo \RochesterBUSADDRHI 
	   \RochesterBUSADDRLO \RochesterPIXELSPERPAGE)
)

(PUTPROPS \BUSBLTOUTNYBBLES ARGNAMES (VMADDR BUSADDRHI BUSADDRLO NWORDS))
(FILESLOAD BUSMASTER)

(RPAQQ \DDLCOLOR.LOCKEDFNS (\DDLCOLOR.UPDATEDAEMON \REMOVE.PERIODIC.INTERRUPT \RochesterWritePage 
						   \RochesterWritePage.4096 \MAKECLEANPAGE 
						   \INSTALL.PERIODIC.INTERRUPT BUS.WRITE2 BUS.WRITE 
						   BUS.WRITEHL))

(RPAQQ \DDLCOLOR.LOCKEDVARS (ColorScreenBitMapPages ColorScreenBitMapBasePage \DDLCOLOR.MOVELIMIT 
						    \DDLCOLOR.LASTMOVEDPAGE))
(\DDLCOLOR.LOCKFNS)
(DECLARE: DONTEVAL@COMPILE DOCOPY 
(\DANDELIONUFOINITCOLOR)
(\CREATEDISPLAY (QUOTE DANDELIONUFODISPLAY)
		\DANDELIONUFOWSOPS \DANDELIONUFOWSDATA (FUNCTION \UFOCOLOR.EVENTFN))
)
(PUTPROPS DANDELIONUFO COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (2132 3016 (\DANDELIONUFOINITCOLOR 2142 . 3014)) (3017 8887 (
\DANDELIONUFO\EXTRACTCOLORINTENSITY 3027 . 3203) (\DANDELION\STARTCOLOR 3205 . 5088) (
\DANDELION\STOPCOLOR 5090 . 5731) (\DANDELION\SETSCREENCOLORMAP 5733 . 6161) (\DANDELIONCOLORLEVEL 
6163 . 6753) (\DANDELION\CONVERTCOLORMAPENTRY 6755 . 7514) (\DANDELION\WRITELUT 7516 . 7692) (
\DANDELION\SENDCOLORMAPENTRY 7694 . 8078) (\DANDELIONROTATECOLORMAP 8080 . 8885)) (8888 9341 (
\DDLCOLOR.LOCKFNS 8898 . 9151) (\DDLCOLOR.LOCKPAGES 9153 . 9339)) (9342 9817 (
\REMOVE.PERIODIC.INTERRUPT 9352 . 9579) (\INSTALL.PERIODIC.INTERRUPT 9581 . 9815)) (9818 12512 (
PCCOLORSCROLL 9828 . 10081) (PCCOLORSCROLLH 10083 . 10392) (PCROTATELUT 10394 . 10702) (PCWRITELUT 
10704 . 10871) (PCWRITECOLOR 10873 . 11033) (PCWRITEPIXEL 11035 . 11365) (PCREADPIXEL 11367 . 11647) (
PCSENDCOLORMAPENTRY 11649 . 12008) (\RochesterWritePage 12010 . 12510)) (12513 18235 (\BITMAPPAGES 
12523 . 12783) (\BitmapWords 12785 . 13008) (\DIRTYPAGEP 13010 . 13177) (\MAKECLEANPAGE 13179 . 13385)
 (\MAKEDIRTYPAGE 13387 . 13589) (\DANDELIONUFO.UPDATEDAEMON 13591 . 15013) (\UFOCOLOR.EVENTFN 15015 . 
17425) (\DANDELION\INITCOLORS 17427 . 18233)))))
STOP