(FILECREATED "29-JUL-83 18:23:05" {PHYLUM}<DMRUSSELL>EXERCISE1.;6 3986   

      changes to:  (VARS EXERCISE1COMS)
		   (FNS Ask)

      previous date: "20-JUL-83 17:15:09" {PHYLUM}<DMRUSSELL>EXERCISE1.;5)


(PRETTYCOMPRINT EXERCISE1COMS)

(RPAQQ EXERCISE1COMS ((VARS (GWINDOWLIST NIL))
		      (VARS XeroxComputers)
		      (BITMAPS ICON1)
		      (PROP (LAN DolphinCycleTime DolphinCost DoradoCost DandelionCost D-Machines 
				 BitMapDisplays Languages)
			    XeroxComputers)
		      (FNS EXERCISEWINDOWS JitterWindow REMOVEWINDOWFROMLIST Ask)))

(RPAQQ GWINDOWLIST NIL)

(RPAQQ XeroxComputers NIL)
(RPAQ ICON1 (READBITMAP))
(30 70
"OOOOOOOL"
"H@@@@@@D"
"OOOOOOOL"
"H@@@@@@D"
"OOOOOOOL"
"H@@@@@@D"
"OOOOOOOL"
"H@@@@@@D"
"OOOOOOOL"
"H@@@@@@D"
"OOOOOOOL"
"H@@@@@@D"
"OOOOOOOL"
"H@@@@@@D"
"H@@@@@@D"
"H@@@@@@D"
"H@@@@@@D"
"H@@@@@@D"
"H@@@@@@D"
"KON@@@@D"
"KON@@@@D"
"HF@@@@@D"
"HFGCBD@D"
"HFLDKD@D"
"HFHDKL@D"
"HFHDJL@D"
"HFLDJL@D"
"HFGCBD@D"
"HF@@@@@D"
"HF@@@@@D"
"KON@@@@D"
"KON@@@@D"
"H@@@@@@D"
"H@@@@@@D"
"HCOOOOHD"
"HB@@@@HD"
"HB@@@@HD"
"HB@@@@HD"
"HB@@@@HD"
"HB@@@@HD"
"HB@OOHHD"
"HB@H@HHD"
"HB@H@HHD"
"HB@H@HHD"
"HB@H@HHD"
"HB@H@HHD"
"HB@ILHHD"
"HB@IDHHD"
"HB@IDHHD"
"HB@IDHHD"
"HB@IDHHD"
"HB@IDHHD"
"HB@IDHHD"
"HB@ILHHD"
"HB@H@HHD"
"HB@H@HHD"
"HB@H@HHD"
"HB@H@HHD"
"HB@H@HHD"
"HB@OOHHD"
"HB@@@@HD"
"HB@@@@HD"
"HB@@@@HD"
"HB@@@@HD"
"HB@@@@HD"
"HCOOOOHD"
"H@@@@@@D"
"H@@@@@@D"
"H@@@@@@D"
"OOOOOOOL")
(PUTPROPS XeroxComputers LAN EtherNet)

(PUTPROPS XeroxComputers DolphinCycleTime (200 ns micro-instruction cycle time))

(PUTPROPS XeroxComputers DolphinCost 33000)

(PUTPROPS XeroxComputers DoradoCost 179000)

(PUTPROPS XeroxComputers DandelionCost 25000)

(PUTPROPS XeroxComputers D-Machines (Dorado Dolphin Dandelion))

(PUTPROPS XeroxComputers BitMapDisplays (Alto Star Dorado Dolphin Dandelion))

(PUTPROPS XeroxComputers Languages (MESA InterLisp-D SmallTalk BCPL))
(DEFINEQ

(EXERCISEWINDOWS
  [LAMBDA NIL                                                (* dmr: "20-JUL-83 17:06")
    (PROG NIL
          [GWINDOWLIST←(for i from 1 to 10 collect (CREATEW (create REGION
								    LEFT ←(RAND 100 600)
								    BOTTOM ←(RAND 100 300)
								    WIDTH ←(RAND 50 200)
								    HEIGHT ←(RAND 50 200))
							    (DATE]
          (for window in GWINDOWLIST
	     do (WINDOWPROP window (QUOTE CLOSEFN)
			    (QUOTE REMOVEWINDOWFROMLIST))
		(WINDOWPROP window (QUOTE ICON)
			    ICON1))
          (while (GREATERP (LENGTH GWINDOWLIST)
			   0)
	     do (for W in GWINDOWLIST
		   do (JitterWindow W)
		      (BLOCK)))
      NIL (RETURN GWINDOWLIST])

(JitterWindow
  [LAMBDA (window)                                           (* dmr: "20-JUL-83 17:06")
                                                             (* generate a random offset that will move the window, 
							     but not off the screen)
    (PROG ([width (fetch WIDTH of (WINDOWPROP W (QUOTE REGION]
	   [height (fetch WIDTH of (WINDOWPROP W (QUOTE REGION]
	   [left (fetch LEFT of (WINDOWPROP W (QUOTE REGION]
	   [bottom (fetch BOTTOM of (WINDOWPROP W (QUOTE REGION]
	   (r1 (RAND -20 20))
	   (r2 (RAND -20 20)))
          (if (LESSP r1+left 10) or (GREATERP r1+left 800)
	      then r1←0)
          (if (LESSP r2+bottom 10) or (GREATERP r2+bottom 800)
	      then r2←0)
          (MOVEW window r1+left r2+bottom])

(REMOVEWINDOWFROMLIST
  [LAMBDA (window)                                           (* dmr: " 7-JUL-83 06:53")
    GWINDOWLIST←(REMOVE window GWINDOWLIST])

(Ask
  [LAMBDA (question)                                         (* dmr: "29-JUL-83 17:29")
    (if question=NIL
	then NIL
      elseif (GETPROP (QUOTE XeroxComputers)
		      question:1)
	then (GETPROP (QUOTE XeroxComputers)
		      question:1)
      else (Ask question::1])
)
(DECLARE: DONTCOPY
  (FILEMAP (NIL (1928 3964 (EXERCISEWINDOWS 1938 . 2679) (JitterWindow 2681 . 3488) (
REMOVEWINDOWFROMLIST 3490 . 3652) (Ask 3654 . 3962)))))
STOP