(FILECREATED "27-JUL-83 16:28:47" {PHYLUM}<FIKES>LISP>MONITOR.;26 27386  

      changes to:  (FNS InitializeDoPlanWindows)

      previous date: "16-MAR-83 13:09:26" {PHYLUM}<FIKES>LISP>MONITOR.;25)


(PRETTYCOMPRINT MONITORCOMS)

(RPAQQ MONITORCOMS [(FNS * MONITORFNS)
		    (RECORDS * MONITORRECORDS)
		    [VARS (IAssume (create Paragraph text ← (QUOTE (Assumptions:))
					   lookY ← 1))
			  [WeAreNow (create Paragraph text ← (QUOTE (We are now:]
			  [CommentHeader (create Paragraph text ← (QUOTE (Comment:]
			  [Overview (create Paragraph text ← (QUOTE (Overview:]
			  [SavedJobState (create JobState machineState ← (ARRAY 30 (QUOTE BYTE]
			  (JobStateRecord (RECLOOK (QUOTE JobState]
		    (DECLARE: EVAL@COMPILE (P (LOADCOMP? 'LOADBLUEBONNET])

(RPAQQ MONITORFNS (BYE ClearOpStatusCode CompletePrintingStep DisplayStartButton DisplayStopButton 
		       DoAddPaperStep DoPlan DoPlanStep DoSelectNumberOfCopiesStep EvalKernelEntry 
		       EvalWhenNotReading8200 HelpFromUserInstruction InitializeDoPlanWindows 
		       InitializePlan IntroducePlan MakeReady PrintInstructions PrintParagraph 
		       SaveJobState ShowPlanSummary TellUser UpdateMachineState UpdateStatusWindow 
		       WaitForStateChange))
(DEFINEQ

(BYE
  [LAMBDA NIL                                                (* edited: "16-MAR-83 09:36")
    (LOGOUT)
    (\DSPRATE 139)
    (CLOSEW (TTYDISPLAYSTREAM))
    (while T do (\BACKGROUND])

(ClearOpStatusCode
  [LAMBDA (job)                                              (* edited: " 6-FEB-83 21:51")
                                                             (* Create and perform a plan to clear an op status 
							     code.)
    (PROG [(planGenerator (GETPROP JobState:OpStatusCode (QUOTE PlanGenerator]
          (DoPlan (if planGenerator
		      then (APPLY* planGenerator job)
		    else (PlanStatusCodeMessage JobState:OpStatusCode))
		  job)
          (WINDOWPROP StatusWindow (QUOTE PlanSummary)
		      NIL])

(CompletePrintingStep
  [LAMBDA NIL                                                (* edited: "15-MAR-83 17:44")

          (* The plan step that monitors printing. Its preconditions are that the 8200 is in the printing state.
	  It returns with the 8200 in Ready State. If the printing completes without error, then it sets CopiesMade to T and
	  returns T.)


    (DisplayStopButton)
    (if (MakeReady)
	then (JobState:CopiesMade←T])

(DisplayStartButton
  [LAMBDA NIL                                                (* edited: "15-MAR-83 17:42")
    (ADDMENU (WINDOWPROP UserInstructionWindow (QUOTE StartMenu))
	     UserInstructionWindow
	     (create POSITION
		     XCOORD ← 186
		     YCOORD ← 10])

(DisplayStopButton
  [LAMBDA NIL                                                (* edited: "15-MAR-83 18:04")
    (ADDMENU (WINDOWPROP UserInstructionWindow (QUOTE StopMenu))
	     UserInstructionWindow
	     (create POSITION
		     XCOORD ← 284
		     YCOORD ← 10])

(DoAddPaperStep
  [LAMBDA NIL                      (* ref: "25-AUG-82 10:22")
    NIL])

(DoPlan
  [LAMBDA (plan job)                                         (* edited: "10-MAR-83 13:16")
                                                             (* Perform and monitor a plan for a copy job.
							     Return non-NIL if the goal kernel of the plan is 
							     achieved.)
    (PROG (entry helpMenu goals assumptions (JobState (create JobState
							      job ← job))
		 (kernel (plan:Plan.goal)))
          (InitializeDoPlanWindows plan)
          (ShowPlanSummary job)
          (UpdateMachineState)
          (InitializePlan plan)
          (while (type? Kernel kernel)
	     do (if kernel:step:PlanStep.goal
		    then (push goals kernel:step:PlanStep.goal))
		(PAGEHEIGHT 0)
		(entry←(for e in kernel:entries thereis ~(if (EvalKernelEntry e)
							     then (if e:assumption
								      then (push assumptions 
										 e:assumption))
								  T)))
		(if entry
		    then kernel←(if entry:producer
				    then entry:producer:kernel)
		  else (SaveJobState)
		       (DoPlanStep kernel:step goals (DREVERSE assumptions)
				   job)
		       kernel←(if kernel=plan:Plan.goal
				  then T
				else goals←NIL
				     assumptions←NIL
				     (WaitForStateChange)
				     plan:Plan.goal)))
          (RETURN kernel])

(DoPlanStep
  [LAMBDA (step goals assumptions job)                       (* edited: " 4-MAR-83 15:32")
                                                             (* Perform the given plan step.)
    (PrintInstructions step)
    (UpdateStatusWindow goals assumptions job)
    (SearchHelp step:keywords)
    (EVAL step:action])

(DoSelectNumberOfCopiesStep
  [LAMBDA (numberOfCopies)         (* ref: "25-AUG-82 10:22")
                                   (* Select the given number of copies and indicate the change in the job state.)
    (DECLARE (USEDFREE JobState))
    (SelectNumberOfCopies numberOfCopies)
    JobState:numberOfCopiesSelected←numberOfCopies])

(EvalKernelEntry
  [LAMBDA (entry)                                            (* edited: "10-MAR-83 13:51")
                                                             (* Evaluate the entry's wff.)
    (PROG ((val (EvalWff entry:KernelEntry.wff JobState)))
          (\TraceIt BluebonnetTrace "ke:  " (WffToList entry:KernelEntry.wff)
		    " = " val)
          (RETURN val])

(EvalWhenNotReading8200
  [LAMBDA (exp)                                              (* edited: "10-MAR-83 14:29")
                                                             (* If Reading8200Flg is set, then assume it is a list 
							     and add exp to it. Otherwise, eval exp)
    (if Reading8200Flg
	then (Reading8200Flg::-1::1← <exp>)
      else (EVAL exp])

(HelpFromUserInstruction
  [LAMBDA (menu)                                             (* edited: "10-MAR-83 15:39")
                                                             (* Provide user with help about the currently displayed 
							     plan step.)
    (CLEARW StatusWindow)
    (for p
       in (fetch help of (WINDOWPROP (WFROMMENU menu)
				     (QUOTE CurrentStep)))
	    or (QUOTE ((No help available for this step.)))
       do (PrintParagraph StatusWindow (if (type? Paragraph p)
					   then p
					 else (create Paragraph
						      text ← p])

(InitializeDoPlanWindows
  [LAMBDA (plan)                                             (* edited: "27-JUL-83 14:22")
                                                             (* Initialize the windows used to instruct the user 
							     during the performance of a plan.)
    (PROG (restartMenu)
          [if ~((BOUNDP (QUOTE UserInstructionWindow)) and (WINDOWP UserInstructionWindow))
	      then UserInstructionWindow←(CREATEW (create REGION
							  HEIGHT ← 410
							  LEFT ← 10
							  BOTTOM ← 10
							  WIDTH ← 490)
						  "Instructions")
		   (DSPFONT Gacha12Bold UserInstructionWindow)
		   (WINDOWPROP UserInstructionWindow (QUOTE RIGHTBUTTONFN)
			       (FUNCTION [LAMBDA NIL NIL]))
		   (ADDMENU [create MENU
				    MENUFONT ← Gacha12Bold
				    ITEMS ←(QUOTE ("" % HELP%  ""))
				    WHENSELECTEDFN ←(FUNCTION (LAMBDA (item menu)
					(HelpFromUserInstruction menu]
			    UserInstructionWindow
			    (create POSITION
				    XCOORD ← 382
				    YCOORD ← 10))
		   restartMenu←[create MENU
				       MENUFONT ← Gacha12Bold
				       ITEMS ←(QUOTE ("" Change% Task Description ""))
				       WHENSELECTEDFN ←(FUNCTION (LAMBDA (item menu)
					   (ALLOW.BUTTON.EVENTS)
					   (CLOSEW UserInstructionWindow)
					   (CLOSEW StatusWindow)
					   (CLOSEW HelpWindow)
					   (DELETEMENU (WINDOWPROP HelpWindow (QUOTE HelpMenu))
						       T)
					   (UpdateJobDescriptionPanel CopyJob:descriptionPanel T)
					   (RETFROM (QUOTE ProceedFromPanel]
		   (ADDMENU restartMenu UserInstructionWindow
			    (create POSITION
				    XCOORD ← 78
				    YCOORD ← 10))
		   [WINDOWPROP UserInstructionWindow (QUOTE StartMenu)
			       (create MENU
				       MENUFONT ← Gacha12Bold
				       ITEMS ←(QUOTE ("" % START%  ""))
				       WHENSELECTEDFN ←(FUNCTION (LAMBDA NIL
					   (ALLOW.BUTTON.EVENTS)
					   (EvalWhenNotReading8200 (QUOTE (Push8200Button
									    (QUOTE StartPrint]
		   [WINDOWPROP UserInstructionWindow (QUOTE StopMenu)
			       (create MENU
				       MENUFONT ← Gacha12Bold
				       ITEMS ←(QUOTE ("" % STOP%  ""))
				       WHENSELECTEDFN ←(FUNCTION (LAMBDA NIL
					   (ALLOW.BUTTON.EVENTS)
					   (EvalWhenNotReading8200 (QUOTE (Push8200Button
									    (QUOTE StopPrint]
		   (WINDOWPROP UserInstructionWindow (QUOTE InstructionRegion)
			       (create REGION
				       LEFT ← 0
				       BOTTOM ←(11+restartMenu:IMAGEHEIGHT)
				       WIDTH ←(WINDOWPROP UserInstructionWindow (QUOTE WIDTH))
				       HEIGHT ←(WINDOWPROP UserInstructionWindow (QUOTE HEIGHT]
          [if ~((BOUNDP (QUOTE StatusWindow)) and (WINDOWP StatusWindow))
	      then StatusWindow←(CREATEW (create REGION
						 HEIGHT ← 360
						 LEFT ← 10
						 BOTTOM ← 430
						 WIDTH ← 490)
					 "Current Status")
		   (DSPFONT Gacha12Bold StatusWindow)
		   (WINDOWPROP StatusWindow (QUOTE RIGHTBUTTONFN)
			       (FUNCTION (LAMBDA NIL NIL]
          (WINDOWPROP StatusWindow (QUOTE PlanSummary)
		      plan:summary])

(InitializePlan
  [LAMBDA (plan)                                             (* edited: " 3-MAR-83 14:58")
                                                             (* Establish the plan's initial state in JobState.)
    (for pair in plan:initialState do (RECORDACCESS (if (LISTP pair)
							then pair:1
						      else pair)
						    JobState JobStateRecord 'replace
						    (if (LISTP pair)
							then pair:2])

(IntroducePlan
  [LAMBDA (waitSecs)               (* ref: "11-JAN-83 09:36")
                                   (* A plan step to introduce a plan that waits waitSecs seconds and sets 
				   PlanIntroduced to true.)
    (DISMISS waitSecs*1000)
    JobState:PlanIntroduced←T])

(MakeReady
  [LAMBDA (job)                                              (* edited: " 6-FEB-83 21:22")
                                                             (* A plan step to monitor a printing step and then 
							     respond to any op status codes or add paper problems..)
    (repeatwhile JobState:State=(QUOTE Printing) do (UpdateMachineState))
    (if JobState:OpStatusCode
	then (ClearOpStatusCode job)
	     NIL
      elseif JobState:AddPaper=(QUOTE on)
	then (DoAddPaperStep job)
	     NIL
      else T])

(PrintInstructions
  [LAMBDA (step)                                             (* edited: "13-MAR-83 22:54")
                                                             (* Print the step's instructions in the user instruction
							     window after clearing it.)
    (DSPFILL (WINDOWPROP UserInstructionWindow (QUOTE InstructionRegion))
	     NIL NIL UserInstructionWindow)
    (for m in (QUOTE (StartMenu StopMenu)) bind menu
       do (menu←(WINDOWPROP UserInstructionWindow m))
	  (if (WFROMMENU menu)
	      then (DELETEMENU menu NIL UserInstructionWindow)))
    (MOVETOUPPERLEFT UserInstructionWindow)
    (WINDOWPROP UserInstructionWindow (QUOTE CurrentStep)
		step)
    (if step:instructions
	then [PrintParagraph UserInstructionWindow (create Paragraph
							   text ←(QUOTE (Instructions:]
	     (printout UserInstructionWindow T))
    (for para in step:instructions do (PrintParagraph UserInstructionWindow para])

(PrintParagraph
  [LAMBDA (window para)            (* edited: "26-JAN-83 15:09")
                                   (* Print paragraph para in window.)
    (printout window .SKIP ((para:lookY or 0)+ 1)
	      .SP
	      (para:leftMargin or 0)
	      .PARA para:leftMargin (para:rightMargin or (LINELENGTH NIL window))
	      para:Paragraph.text])

(SaveJobState
  [LAMBDA NIL                      (* ref: "27-AUG-82 12:40")
                                   (* Save a copy of JobState in SavedJobState.
				   Assumes that the eval is in the scope of a GLOBALRESOURCE.)
    (DECLARE (USEDFREE SavedJobState JobState))
    (PROG ((savedms SavedJobState:machineState)
	   (ms JobState:machineState))
          (SavedJobState:FirstPageCopied ← JobState:FirstPageCopied)
          (SavedJobState:CopiesMade ← JobState:CopiesMade)
          (SavedJobState:numberOfCopiesSelected ← JobState:numberOfCopiesSelected)
          (SavedJobState:Pass1Done ← JobState:Pass1Done)
          (SavedJobState:PlanIntroduced ← JobState:PlanIntroduced)
          (for i to 30
	     do (ELT savedms i)←(ELT ms i])

(ShowPlanSummary
  [LAMBDA (job)                                              (* edited: " 6-FEB-83 20:17")
                                                             (* Print the summary of the job's plan in the status 
							     window.)
    (PROG [(summary (WINDOWPROP StatusWindow (QUOTE PlanSummary]
          (CLEARW StatusWindow)
          (if summary
	      then (PrintParagraph StatusWindow Overview)
		   summary:leftMargin←5
		   (PrintParagraph StatusWindow summary)
		   (printout StatusWindow T T])

(TellUser
  [LAMBDA (msg waitSecs)           (* ref: "30-AUG-82 18:16")

          (* Present msg to the user as an instruction in the PlanDisplayWindow. Msg is either a paragraph or a list of 
	  paragraphs. If waitSecs is nonNIL, cause a wait of that many seconds before returning.)


    (DECLARE (USEDFREE PlanDisplayWindow))
    (printout PlanDisplayWindow T T T)
    (for para in (if (type? Paragraph msg)
		     then <msg>
		   else msg)
       do (PrintParagraph PlanDisplayWindow para))
    (if waitSecs
	then (DISMISS waitSecs*1000])

(UpdateMachineState
  [LAMBDA NIL                      (* ref: "25-AUG-82 10:23")
                                   (* Update the machine state field of JobStatus by doing a new Read8200.)
    (DECLARE (USEDFREE JobState))
    (repeatwhile ~(JobState : State) or JobState:State='ComponentControl do (JobState:machineState←(
										Read8200 
									    JobState:machineState])

(UpdateStatusWindow
  [LAMBDA (goals assumptions job)                            (* edited: " 6-FEB-83 12:57")
                                                             (* Update the status window to include the given goals 
							     and assumptions.)
    (ShowPlanSummary job)
    (if NIL and goals
	then (PrintParagraph StatusWindow WeAreNow)
	     (for g on goals bind (lm ← 5)
		do (PrintParagraph StatusWindow (create Paragraph
							leftMargin ← lm
							text ←(if g::1
								  then < ! g:1 (QUOTE to)
									 (QUOTE enable) >
								else g:1)))
		   (add lm 5)))
    (if assumptions
	then (PrintParagraph StatusWindow IAssume)
	     (for a in assumptions bind (lm ← 5)
		do (a:leftMargin←lm)
		   (PrintParagraph StatusWindow a])

(WaitForStateChange
  [LAMBDA NIL                                                (* edited: " 3-MAR-83 14:46")
                                                             (* Continually update the machine state of JobState 
							     until it changes.)
    (PROG ((savedms SavedJobState:machineState)
	   (ms JobState:machineState))
          (UpdateMachineState)
          (if JobState:FirstPageCopied=SavedJobState:FirstPageCopied and 
						     JobState:CopiesMade=SavedJobState:CopiesMade
		and JobState:numberOfCopiesSelected=SavedJobState:numberOfCopiesSelected
		and JobState:Pass1Done=SavedJobState:Pass1Done and 
				       JobState:OriginalsReversed=SavedJobState:OriginalsReversed
		and JobState:LeftChecked=SavedJobState:LeftChecked and 
						 JobState:RightChecked=SavedJobState:RightChecked
		and JobState:GlassChecked=SavedJobState:GlassChecked
	      then (repeatwhile (for i to 30
				   always (ELT savedms i)=(ELT ms i))
		      do (UpdateMachineState])
)

(RPAQQ MONITORRECORDS (JobState))
[DECLARE: EVAL@COMPILE 

(DATATYPE JobState (FirstPageCopied CopiesMade machineState job numberOfCopiesSelected Pass1Done 
				    OriginalsReversed LeftChecked RightChecked GlassChecked 
				    MasterMade)
		   [ACCESSFNS ((APLight (Get8200 (fetch machineState of DATUM)
						 (QUOTE APLight)))
			       (AddPaper (Get8200 (fetch machineState of DATUM)
						  (QUOTE AddPaper)))
			       (AddPaperLed (Get8200 (fetch machineState of DATUM)
						     (QUOTE AddPaperLed)))
			       (BSkiis (Get8200 (fetch machineState of DATUM)
						(QUOTE BSkiis)))
			       (BTransport (Get8200 (fetch machineState of DATUM)
						    (QUOTE BTransport)))
			       (BeltMistrackNOT (Get8200 (fetch machineState of DATUM)
							 (QUOTE BeltMistrackNOT)))
			       (CBPTDLight (Get8200 (fetch machineState of DATUM)
						    (QUOTE CBPTDLight)))
			       (CDCLight (Get8200 (fetch machineState of DATUM)
						  (QUOTE CDCLight)))
			       (CTransport (Get8200 (fetch machineState of DATUM)
						    (QUOTE CTransport)))
			       (CleanPopSensor (Get8200 (fetch machineState of DATUM)
							(QUOTE CleanPopSensor)))
			       (CloseBottomPaperTrayDoor (Get8200 (fetch machineState of DATUM)
								  (QUOTE CloseBottomPaperTrayDoor)))
			       (CloseDocumentCover (Get8200 (fetch machineState of DATUM)
							    (QUOTE CloseDocumentCover)))
			       (ClosePaperDoorLed (Get8200 (fetch machineState of DATUM)
							   (QUOTE ClosePaperDoorLed)))
			       (CloseRDHLed (Get8200 (fetch machineState of DATUM)
						     (QUOTE CloseRDHLed)))
			       (CompilerEntrySwitch (Get8200 (fetch machineState of DATUM)
							     (QUOTE CompilerEntrySwitch)))
			       (CompilerExitSwitch (Get8200 (fetch machineState of DATUM)
							    (QUOTE CompilerExitSwitch)))
			       (Copy (Get8200 (fetch machineState of DATUM)
					      (QUOTE Copy)))
			       (CopyButton (Get8200 (fetch machineState of DATUM)
						    (QUOTE CopyButton)))
			       (CopyMode (Get8200 (fetch machineState of DATUM)
						  (QUOTE CopyMode)))
			       (CopyModeButton (Get8200 (fetch machineState of DATUM)
							(QUOTE CopyModeButton)))
			       (DeveloperDoor (Get8200 (fetch machineState of DATUM)
						       (QUOTE DeveloperDoor)))
			       (DocumentInRDH (Get8200 (fetch machineState of DATUM)
						       (QUOTE DocumentInRDH)))
			       (EmptyTopTrayLed (Get8200 (fetch machineState of DATUM)
							 (QUOTE EmptyTopTrayLed)))
			       (FPBLPTLight (Get8200 (fetch machineState of DATUM)
						     (QUOTE FPBLPTLight)))
			       (FinisherCover (Get8200 (fetch machineState of DATUM)
						       (QUOTE FinisherCover)))
			       (FirstPageBottomLastPageTop (Get8200 (fetch machineState of DATUM)
								    (QUOTE FirstPageBottomLastPageTop)
								    ))
			       (FuserJamReset (Get8200 (fetch machineState of DATUM)
						       (QUOTE FuserJamReset)))
			       (FuserOverTempNOT (Get8200 (fetch machineState of DATUM)
							  (QUOTE FuserOverTempNOT)))
			       (FuserUnderTemperature (Get8200 (fetch machineState of DATUM)
							       (QUOTE FuserUnderTemperature)))
			       (JamSwitch2 (Get8200 (fetch machineState of DATUM)
						    (QUOTE JamSwitch2)))
			       (JamSwitch3 (Get8200 (fetch machineState of DATUM)
						    (QUOTE JamSwitch3)))
			       (JamSwitch4 (Get8200 (fetch machineState of DATUM)
						    (QUOTE JamSwitch4)))
			       (JamSwitch5 (Get8200 (fetch machineState of DATUM)
						    (QUOTE JamSwitch5)))
			       (LCITTLight (Get8200 (fetch machineState of DATUM)
						    (QUOTE LCITTLight)))
			       (LPBFPTLight (Get8200 (fetch machineState of DATUM)
						     (QUOTE LPBFPTLight)))
			       (LastPageBottomFirstPageTop (Get8200 (fetch machineState of DATUM)
								    (QUOTE LastPageBottomFirstPageTop)
								    ))
			       (LoadCopiesInTopTray (Get8200 (fetch machineState of DATUM)
							     (QUOTE LoadCopiesInTopTray)))
			       (MainFeederLed (Get8200 (fetch machineState of DATUM)
						       (QUOTE MainFeederLed)))
			       (MainPaperTrayDoor (Get8200 (fetch machineState of DATUM)
							   (QUOTE MainPaperTrayDoor)))
			       (MisStrip (Get8200 (fetch machineState of DATUM)
						  (QUOTE MisStrip)))
			       (ModuleInterlockNOT (Get8200 (fetch machineState of DATUM)
							    (QUOTE ModuleInterlockNOT)))
			       (OFDLight (Get8200 (fetch machineState of DATUM)
						  (QUOTE OFDLight)))
			       (OFULight (Get8200 (fetch machineState of DATUM)
						  (QUOTE OFULight)))
			       (OffsettingCatchTray (Get8200 (fetch machineState of DATUM)
							     (QUOTE OffsettingCatchTray)))
			       (OffsettingCatchTrayPosition (Get8200 (fetch machineState
									of DATUM)
								     (QUOTE 
								      OffsettingCatchTrayPosition)))
			       (OpStatusCode (Get8200 (fetch machineState of DATUM)
						      (QUOTE OpStatusCode)))
			       (OperatorStatusCode (Get8200 (fetch machineState of DATUM)
							    (QUOTE OperatorStatusCode)))
			       (OriginalsFaceDown (Get8200 (fetch machineState of DATUM)
							   (QUOTE OriginalsFaceDown)))
			       (OriginalsFaceUp (Get8200 (fetch machineState of DATUM)
							 (QUOTE OriginalsFaceUp)))
			       (Output (Get8200 (fetch machineState of DATUM)
						(QUOTE Output)))
			       (OutputButton (Get8200 (fetch machineState of DATUM)
						      (QUOTE OutputButton)))
			       (PWLight (Get8200 (fetch machineState of DATUM)
						 (QUOTE PWLight)))
			       (PaperTray (Get8200 (fetch machineState of DATUM)
						   (QUOTE PaperTray)))
			       (PaperTrayButton (Get8200 (fetch machineState of DATUM)
							 (QUOTE PaperTrayButton)))
			       (PaperUnderPopSensor (Get8200 (fetch machineState of DATUM)
							     (QUOTE PaperUnderPopSensor)))
			       (PleaseWait (Get8200 (fetch machineState of DATUM)
						    (QUOTE PleaseWait)))
			       (PopJam (Get8200 (fetch machineState of DATUM)
						(QUOTE PopJam)))
			       (PopReset (Get8200 (fetch machineState of DATUM)
						  (QUOTE PopReset)))
			       (PopSensorLed (Get8200 (fetch machineState of DATUM)
						      (QUOTE PopSensorLed)))
			       (ProcessorCover (Get8200 (fetch machineState of DATUM)
							(QUOTE ProcessorCover)))
			       (RDHLeftCover (Get8200 (fetch machineState of DATUM)
						      (QUOTE RDHLeftCover)))
			       (RDHMotor (Get8200 (fetch machineState of DATUM)
						  (QUOTE RDHMotor)))
			       (RDHOpen (Get8200 (fetch machineState of DATUM)
						 (QUOTE RDHOpen)))
			       (RDHRightCover (Get8200 (fetch machineState of DATUM)
						       (QUOTE RDHRightCover)))
			       (RLight (Get8200 (fetch machineState of DATUM)
						(QUOTE RLight)))
			       (RXShroudOpen (Get8200 (fetch machineState of DATUM)
						      (QUOTE RXShroudOpen)))
			       (Ready (Get8200 (fetch machineState of DATUM)
					       (QUOTE Ready)))
			       (Reduction (Get8200 (fetch machineState of DATUM)
						   (QUOTE Reduction)))
			       (ReductionButton (Get8200 (fetch machineState of DATUM)
							 (QUOTE ReductionButton)))
			       (SCSILight (Get8200 (fetch machineState of DATUM)
						   (QUOTE SCSILight)))
			       (STTTSLight (Get8200 (fetch machineState of DATUM)
						    (QUOTE STTTSLight)))
			       (SetsTooThickLed (Get8200 (fetch machineState of DATUM)
							 (QUOTE SetsTooThickLed)))
			       (SetsTooThickToStaple (Get8200 (fetch machineState of DATUM)
							      (QUOTE SetsTooThickToStaple)))
			       (ShadeOpen (Get8200 (fetch machineState of DATUM)
						   (QUOTE ShadeOpen)))
			       (StandbyRelayNOT (Get8200 (fetch machineState of DATUM)
							 (QUOTE StandbyRelayNOT)))
			       (StaplerCover (Get8200 (fetch machineState of DATUM)
						      (QUOTE StaplerCover)))
			       (StaplerPresent (Get8200 (fetch machineState of DATUM)
							(QUOTE StaplerPresent)))
			       (State (Get8200 (fetch machineState of DATUM)
					       (QUOTE State)))
			       (StatusCodeSeeInstructions (Get8200 (fetch machineState of DATUM)
								   (QUOTE StatusCodeSeeInstructions)))
			       (TechStatusCode (Get8200 (fetch machineState of DATUM)
							(QUOTE TechStatusCode)))
			       (TopTrayFeederLed (Get8200 (fetch machineState of DATUM)
							  (QUOTE TopTrayFeederLed)))
			       (TurnAroundTransport (Get8200 (fetch machineState of DATUM)
							     (QUOTE TurnAroundTransport)))
			       (UOTLight (Get8200 (fetch machineState of DATUM)
						  (QUOTE UOTLight)))
			       (USShroudOpen (Get8200 (fetch machineState of DATUM)
						      (QUOTE USShroudOpen)))
			       (UTPTLight (Get8200 (fetch machineState of DATUM)
						   (QUOTE UTPTLight)))
			       (UnloadOutputTray (Get8200 (fetch machineState of DATUM)
							  (QUOTE UnloadOutputTray)))
			       (UnloadTopPaperTray (Get8200 (fetch machineState of DATUM)
							    (QUOTE UnloadTopPaperTray)))
			       (X2Led (Get8200 (fetch machineState of DATUM)
					       (QUOTE X2Led)))
			       (X3Led (Get8200 (fetch machineState of DATUM)
					       (QUOTE X3Led)))
			       (X4Led (Get8200 (fetch machineState of DATUM)
					       (QUOTE X4Led)))
			       (X5Led (Get8200 (fetch machineState of DATUM)
					       (QUOTE X5Led)))
			       (X6Led (Get8200 (fetch machineState of DATUM)
					       (QUOTE X6Led)))
			       (X7Led (Get8200 (fetch machineState of DATUM)
					       (QUOTE X7Led])
]
(/DECLAREDATATYPE (QUOTE JobState)
		  (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER 
				  POINTER POINTER)))

(RPAQ IAssume (create Paragraph text ← (QUOTE (Assumptions:))
		      lookY ← 1))

(RPAQ WeAreNow (create Paragraph text ← (QUOTE (We are now:))))

(RPAQ CommentHeader (create Paragraph text ← (QUOTE (Comment:))))

(RPAQ Overview (create Paragraph text ← (QUOTE (Overview:))))

(RPAQ SavedJobState (create JobState machineState ← (ARRAY 30 (QUOTE BYTE))))

(RPAQ JobStateRecord (RECLOOK (QUOTE JobState)))
(DECLARE: EVAL@COMPILE 
(LOADCOMP? 'LOADBLUEBONNET)
)
(DECLARE: DONTCOPY
  (FILEMAP (NIL (1237 16682 (BYE 1247 . 1453) (ClearOpStatusCode 1455 . 2019) (CompletePrintingStep 2021
 . 2493) (DisplayStartButton 2495 . 2775) (DisplayStopButton 2777 . 3055) (DoAddPaperStep 3057 . 3152)
 (DoPlan 3154 . 4542) (DoPlanStep 4544 . 4891) (DoSelectNumberOfCopiesStep 4893 . 5242) (
EvalKernelEntry 5244 . 5632) (EvalWhenNotReading8200 5634 . 6027) (HelpFromUserInstruction 6029 . 6655
) (InitializeDoPlanWindows 6657 . 9700) (InitializePlan 9702 . 10167) (IntroducePlan 10169 . 10461) (
MakeReady 10463 . 11039) (PrintInstructions 11041 . 12045) (PrintParagraph 12047 . 12409) (
SaveJobState 12411 . 13188) (ShowPlanSummary 13190 . 13742) (TellUser 13744 . 14351) (
UpdateMachineState 14353 . 14762) (UpdateStatusWindow 14764 . 15621) (WaitForStateChange 15623 . 16680
)))))
STOP