(DEFINEQ
    (CREATE.WINDOWS
	(LAMBDA  (POSITION1 POSITION2 POSITION3)
	    (IF 
		(BOUNDP (QUOTE WINDOW1))
	     THEN
	        ()
	     ELSE
	        (SETQ WINDOW1 (CREATEW POSITION1))
	    )
	    (IF
	       (BOUNDP (QUOTE WINDOW2))
	     THEN
	       ()
	     ELSE
	       (SETQ WINDOW2 (CREATEW POSITION2))
	    )
	    (IF
	       (BOUNDP (QUOTE WINDOW3))
	     THEN
	       ()
	     ELSE
	       (SETQ WINDOW3 (CREATEW POSITION3))
	       (SETQ DEMOFONT (FONTCREATE (QUOTE (HELVETICA 18 STANDARD))))
	       (DSPFONT DEMOFONT WINDOW3)
	    )
	)
    )
)

(DEFINEQ
    (SET.STEP.TYPE
	(LAMBDA (STEPTYPE)
	    (SETQ STEP.SWITCH STEPTYPE)
	)
    )
)

(DEFINEQ
    (GRAPH.STRUCTURES
	(LAMBDA (STRUCTURE.LIST1 STRUCTURE.LIST2)
	    (SHOWGRAPH		
		(LAYOUTSEXPR 		
		    STRUCTURE.LIST1
		    (QUOTE (VERTICAL (MARK))) NIL 
		    (FONTCREATE (QUOTE HELVETICA) 18 
		    		(QUOTE STANDARD)
		    )
		)
		WINDOW1
		() () T
	    )
	    (SHOWGRAPH		
		(LAYOUTSEXPR 		
		    STRUCTURE.LIST2
		    (QUOTE (VERTICAL (MARK))) NIL 
		    (FONTCREATE (QUOTE HELVETICA) 18 
				(QUOTE STANDARD)
		    )
		)
		WINDOW2
		() () T
	    )
	)
    )
)

(DEFINEQ
    (WAIT.FOR.STEP
	(LAMBDA ()
	    (IF
	       (EQ STEP.SWITCH (QUOTE one.second))
	     THEN
	       (DISMISS 1000)
	     ELSEIF
	       (EQ STEP.SWITCH (QUOTE mouse.button))
	     THEN
	       (UNTILMOUSESTATE LEFT)
	     ELSE
	       NIL
	    )
	)
    )
)

(DEFINEQ
    (RUN.PROLOG.DEMO
	(LAMBDA ()
	    (NULL (PROLOG (QUOTE run) 0 (QUOTE si)))
	)
    )
)

(DEFINEQ
    (RUN.FOREVER
	(LAMBDA ()
	    (WHILE T (PROLOG (QUOTE run.all.eg) 0 (QUOTE si)))
	)
    )
)

(DEFINEQ
    (DISPLAY.SENTENCE
	(LAMBDA (LST)
            (DSPFILL () () () WINDOW3)
	    (CENTERPRINTINREGION (MAKSTR LST) () WINDOW3)
	)
    )
)

(DEFINEQ
    (MAKSTR
	 (LAMBDA (LST)
	     (CONCATLIST 
		 (MAPLIST LST (QUOTE ADDSP)))
	 )
    )
)

(DEFINEQ
    (ADDSP
	 (LAMBDA (LST)
	     (CONCAT (CAR LST) " ")
	 )
    )
)


(SETQ PROLOG.INPUT.MENU1  
    (create MENU ITEMS ← 
	       (QUOTE ( ("The intelligent customer requires... " 
			 (QUOTE (the intelligent customer requires intelligent workstations .)))
		        ("Xerox produces intelligent... " 
			 (QUOTE (xerox produces intelligent workstations .)))
			("Xerox workstations run... "
			 (QUOTE (xerox workstations run quintus prolog .)))
		      )
	       )
	    MENUFONT ← 
	       (FONTCREATE (QUOTE (HELVETICA 18 STANDARD)))
    )
)

(DEFINEQ
    (GET.SENTENCE 
	(LAMBDA NIL
	   (MENU PROLOG.INPUT.MENU1)
	)
    )
)

STOP