(FILECREATED "12-AUG-83 22:35:23" <BLISP>LLPARAMS.;140   31564

      changes to:  (VARS INITCONSTANTS)

      previous date: "20-JUL-83 11:52:26" <BLISP>LLPARAMS.;139)


(* Copyright (c) 1981, 1982, 1983 by Xerox Corporation)

(PRETTYCOMPRINT LLPARAMSCOMS)

(RPAQQ LLPARAMSCOMS [(E (RESETSAVE (RADIX 10Q)))
		     (FNS WRITEBCPLPARAMS WRITEMCPARAMS MAKERECORD STRIP\)
		     (FNS WRITECALLSUBRS)
		     (DECLARE: DONTCOPY [EXPORT (CONSTANTS (WINDFLG T))
						(VARS INITCONSTANTS \INITSUBRS MISCSTATSLAYOUT 
						      IFPAGELAYOUT IOPAGELAYOUT)
						(PROP ARGNAMES * \INITSUBRS)
						[CONSTANTS * (for X in INITCONSTANTS when
								  (FIXP (CADR X))
								  collect
								  (LIST (CAR X)
									(CADR X]
						(GLOBALVARS *
							    (for X in INITCONSTANTS when
								 [AND (NEQ (CAR X)
									   (QUOTE *))
								      (NOT (FIXP (CADR X]
								 collect
								 (CAR X)))
						(P * (LIST (MAKERECORD (QUOTE MISCSTATS)
								       MISCSTATSLAYOUT)
							   (MAKERECORD (QUOTE IFPAGE)
								       IFPAGELAYOUT)
							   (MAKERECORD (QUOTE IOPAGE)
								       IOPAGELAYOUT]
			       EVAL@COMPILE
			       (ADDVARS (DONTCOMPILEFNS WRITEBCPLPARAMS PRINTIPATOMS WRITEMCPARAMS 
							MAKERECORD STRIP\ WRITECALLSUBRS)))
		     (DECLARE: DONTCOPY (* Access to the emulator space)
			       (EXPORT (MACROS EMADDRESS EMGETBASE EMPUTBASE EMULATORSEGMENT 
					       EMPOINTER EMADDRESSP])
(DEFINEQ

(WRITEBCPLPARAMS
  [LAMBDA NIL                                                (* bvm: " 5-JAN-83 17:08")
                                                             (* This function writes out the parameter files used by 
							     BCPL)
    (RESETLST (OUTFILE (QUOTE LISPBCPL.PARAMS))
	      (RESETSAVE NIL (LIST [FUNCTION (LAMBDA (X)
				       (CLOSEF? X)
				       (COND
					 (RESETSTATE (DELFILE X]
				   (OUTPUT)))
	      (RESETSAVE (RADIX 10Q))
	      (printout NIL "// This file written from LLPARAMS on " (DATE)
			T T)
	      (printout NIL "manifest [" T)                  (* INITCONSTANTS is of the form 
							     (Lispname value bcplname MCNAME). If BCPLNAME = LispName
							     except for first char, BCPLNAME=T)
	      [for X in INITCONSTANTS unless (EQ (CAR X)
						 (QUOTE *))
		 do (COND
		      ((LISTP (CADR X))
			(for Z in (CADR X) as Y in (CADDR X) when Y
			   do (printout NIL Y " = #" Z T)))
		      (T (for Y inside (CADDR X) do (printout NIL (STRIP\ (COND
									    ((EQ Y T)
									      (CAR X))
									    (T Y)))
							      " = #"
							      (CADR X)
							      T]
	      (for X in MISCSTATSLAYOUT bind (I ← 0) unless (EQ (CAR X)
								(QUOTE *))
		 do (AND (CADDR X)
			 (NEQ (CADDR X)
			      T)
			 (printout NIL (CADDR X)
				   " = #" I T))
		    (add I (SELECTQ (CADR X)
				    ((FIXP FULLXPOINTER)
				      2)
				    (WORD 1)
				    (SHOULDNT)))
		 finally (printout NIL "lenMiscStats = #" I T))
	      [for X in IFPAGELAYOUT bind (I ← 0) unless (EQ (CAR X)
							     (QUOTE *))
		 do (AND (CAR X)
			 (printout NIL (QUOTE IFP)
				   (CAR X)
				   " = #" I T))
		    (add I (SELECTQ (CADR X)
				    ((FIXP FULLXPOINTER)
				      2)
				    (WORD 1)
				    (SHOULDNT]
	      (printout NIL "]" T)
	      (OUTPUT])

(WRITEMCPARAMS
  [LAMBDA NIL                      (* lmm "31-DEC-81 11:40")
                                   (* This function writes out the parameter files used by MICROCODE)
    (RESETLST (OUTFILE (QUOTE LPARAMS.DMC))
	      (RESETSAVE NIL (LIST [FUNCTION (LAMBDA (X)
				       (CLOSEF? X)
				       (COND
					 (RESETSTATE (DELFILE X]
				   (OUTPUT)))
	      (RESETSAVE (RADIX 10Q))
	      (printout NIL "Title[LParams.dmc, " (DATE)
			", written from Lisp];" T T)
	      (for X in INITCONSTANTS do (COND
					   ((EQ (CAR X)
						(QUOTE *)))
					   [(LISTP (CADR X))
					     (for Z in (CADR X) as Y in (CADDDR X) when Y
						do (printout NIL "mc[" Y "," Z "];" T))
					     (COND
					       ((CAR (CADDDR X))
						 (printout NIL "MC[" (CAR (CADDDR X))
							   "L, "
							   (LLSH (CAADR X)
								 10Q)
							   "];" T]
					   (T (for Y inside (CADDDR X)
						 do (printout NIL "mc[" (COND
								((EQ Y T)
								  (STRIP\ (CAR X)))
								(T Y))
							      ","
							      (CADR X)
							      "];" T])

(MAKERECORD
  [LAMBDA (NAME LAYOUT)                                      (* bvm: "29-NOV-82 17:40")
    (PROG ((I 0)
	   PTRS M NAM)
          (RETURN
	    (BQUOTE
	      (BLOCKRECORD
		, NAME ,
		[for X in LAYOUT
		   collect (CONS (SETQ NAM (CAR X))
				 (COND
				   ((EQ NAM (QUOTE *))
				     (CDR X))
				   (T (PROG1 [COND
					       [[FIXP (SETQ M (CAR (SETQ X (CDR X]
						 (LIST M (CAR (SETQ X (CDR X]
					       (T (SETQ M (SELECTQ (CAR X)
								   ((FIXP FULLXPOINTER)
								     (OR (EVENP I WORDSPERCELL)
									 (ERROR 
								       "Record field not aligned"
										(CONS NAM X)))
								     2)
								   (WORD 1)
								   (SHOULDNT)))
						  (LIST (CAR X]
					     [COND
					       ((CADDR X)
						 (SETQ PTRS
						   (CONS (LIST (PACK* NAM (QUOTE PTR))
							       (BQUOTE (\ADDBASE DATUM , I)))
							 PTRS]
					     (add I M]
		,.
		[AND PTRS (BQUOTE ((ACCESSFNS , NAME , PTRS]
		(CREATE (\ALLOCBLOCK , (FOLDHI I WORDSPERCELL])

(STRIP\
  [LAMBDA (X)                      (* lmm "16-MAR-81 23:14")
    (COND
      ((EQ (NTHCHAR X 1)
	   (QUOTE \))
	(SUBATOM X 2))
      (T X])
)
(DEFINEQ

(WRITECALLSUBRS
  [LAMBDA NIL                                                (* bvm: "13-APR-82 14:01")
    [RESETVARS ((DFNFLG (QUOTE PROP)))
	       (for X in \INITSUBRS as I from 0 bind ARGS
		  do (DEFINE (LIST (LIST X (LIST (QUOTE LAMBDA)
						 (SETQ ARGS (GETPROP X (QUOTE ARGNAMES)))
						 (CONS (LIST (QUOTE OPCODES)
							     (QUOTE SUBRCALL)
							     I
							     (LENGTH ARGS))
						       ARGS]
    [SETQQ LLSUBRSCOMS ((FNS *(PROGN \INITSUBRS))
	    (VARS \INITSUBRS)
	    (PROP ARGNAMES *(PROGN \INITSUBRS]
    (CONS (RESETLST (OUTFILE (QUOTE CALLSUBRS.BCPL))
		    (RESETSAVE NIL (LIST [FUNCTION (LAMBDA (X)
					     (CLOSEF? X)
					     (COND
					       (RESETSTATE (DELFILE X]
					 (OUTPUT)))
		    (RESETSAVE (RADIX 10Q))
		    (printout NIL "// This file written from LLPARAMS on " (DATE)
			      T T)
		    (printout NIL "external [" T)
		    (for X in \INITSUBRS do (PRINT (STRIP\ X)))
		    (printout NIL "]" T)
		    (printout NIL "let CALLSUBRS() be [" T)
		    (for X in \INITSUBRS as I from 0 do (printout NIL (STRIP\ X)
								  "()" 62Q "//" I T))
		    (printout NIL "]" T)
		    (OUTPUT))
	  (MAKEFILE (QUOTE LLSUBRS)
		    (QUOTE (C F])
)
(DECLARE: DONTCOPY 
(* FOLLOWING DEFINITIONS EXPORTED)


(DECLARE: EVAL@COMPILE 

(RPAQQ WINDFLG T)

(CONSTANTS (WINDFLG T))
)

(RPAQQ INITCONSTANTS ((* (LISPNAME VALUE BCPLNAME UCODENAME))
		      (* * version numbers)
		      (\MinRamVersion 10000Q T T)
		      (\MinBcplVersion 21400Q T T)
		      (\LispVersion 107400Q T T)
		      (* IF CDRCODING=0, CDR CODING IS OFF, OTHERWISE ON)
		      (CDRCODING 1 T T)
		      (* * type numbers)
		      (\SMALLP 1 SMALLTYPE SmallType)
		      (\FIXP 2 INTEGERTYPE FixpType)
		      (\FLOATP 3 FLTPTTYPE FloatpType)
		      (\LITATOM 4 ATOMTYPE AtomType)
		      (\LISTP 5 LISTTYPE ListType)
		      (\ARRAYP 6 ARRAYPTRTYPE ArrayType)
		      (\STRINGP 7 STRINGPTRTYPE)
		      (\STACKP 10Q)
		      (\VMEMPAGEP 12Q NIL VMemPagePType)
		      (\STREAM 13Q NIL STREAMTYPE)
		      (* * TYPE TABLE CONSTANTS)
		      (\TT.TYPEMASK 377Q TTTypeMask T)
		      (\TT.NOREF 100000Q NIL T)
		      (\TT.LISPREF 40000Q NIL T)
		      (* * page map)
		      (\PMblockSize 40Q PMBLOCKSIZE)
		      (\STATSsize 10Q T)
		      (\NumPMTpages 2)
		      (\EmptyPMTEntry 177777Q T)
		      (\FirstVmemBlock 2 T)
		      (* * interface page)
		      (\IFPValidKey 12743Q T)
		      (* * atoms)
		      (\HashInc 23Q T)
		      (* * MDS)
		      (\FirstMDSPage 400Q T)
		      (\MDSIncrement 1000Q)
		      (* * stack block constants)
		      (\StackMask 160000Q T T)
		      (\FxtnBlock 140000Q T T)
		      (\GuardBlock 160000Q T T)
		      (\BFBlock 100000Q T T)
		      (\FreeStackBlock 120000Q T T)
		      (\NotStackBlock 0)
		      (* none of the above)
		      (\MinExtraStackWords 40Q T T)
		      (* * backspace kludge)
		      (ERASECHARCODE 0 T)
		      (* * GC constants)
		      (\HT1CNT 2000Q NIL T)
		      (\HTSTKBIT 1000Q NIL T)
		      (\HTCNTMASK 176000Q NIL T)
		      (\HTMAINSIZE 100000Q NIL T)
		      (\HTCOLLSIZE 177770Q NIL T)
		      (\HTENDFREE 1 NIL T)
		      (\HTFREEPTR 0 NIL T)
		      (* * pointers and lengths of various data spaces)
		      (\ATOMSPACE (0 0)
				  (ATOMspace NIL)
				  (atomHiVal NIL))
		      (\AtomHI 0)
		      (\SMALLPOSPSPACE (16Q 0))
		      (\SmallPosHi 16Q SMALLPOSspace smallpl)
		      (\SMALLNEGSPACE (17Q 0))
		      (\SmallNegHi 17Q SMALLNEGspace smallneg)
		      (\NumSmallPages 1000Q)
		      (\Guard1MDSPage 6400Q)
		      (\GuardMDSPage 6440Q)
		      (\LastMDSPage 6777Q)
		      (\PNPSPACE (20Q 0)
				 (PNPspace PNPbase))
		      (\LastPnPage 3777Q)
		      (\DEFSPACE (21Q 0)
				 (DEFspace DEFbase)
				 (DEFspace DEFbase))
		      (\VALSPACE (22Q 0)
				 (TOPVALspace TOPVALbase)
				 (VALspace VALbase))
		      (\PLISTSPACE (23Q 0)
				   (PLISTspace PLISTbase))
		      (\AtomHashTable (24Q 0)
				      (AHTspace AHTbase))
		      (\AtomHTpages 200Q AHTSIZE)
		      (\PAGEMAP (25Q 0)
				(PAGEMAPspace PAGEMAPbase))
		      (\NumPageMapPages 400Q)
		      (\PageMapTBL (26Q 0)
				   (PMTspace PMTbase))
		      (\InterfacePage (26Q 10000Q)
				      (INTERFACEspace INTERFACEbase)
				      (INTERFACEspace INTERFACEbase))
		      (\CurrentFXP 0 T T)
		      (\ResetFXP 1 T T)
		      (\SubovFXP 2 T T)
		      (\KbdFXP 3 T T)
		      (\HardReturnFXP 4 T T)
		      (\GCFXP 5)
		      (\FAULTFXP 6 T T)
		      (\MiscFXP 16Q T T)
		      (\TeleRaidFXP 30Q T T)
		      (\IOPAGE (0 177400Q))
		      (\IOCBPAGE (0 400Q))
		      (\MDSTypeTable (26Q 100000Q)
				     (MDSTYPEspace MDSTYPEbase)
				     (NIL MDSTYPEbase))
		      (\MDSTTsize 40Q T)
		      (\STATSSPACE (26Q 120000Q)
				   (STATSspace STATSbase)
				   (STATSspace NIL))
		      (\InterruptTBL (26Q 121200Q)
				     (NIL InterruptTBLbase))
		      (\MISCSTATS (26Q 122000Q)
				  (NIL MISCSTATSbase))
		      (\UFNTable (26Q 123000Q)
				 NIL
				 (NIL UFNTablebase))
		      (\DTDSpaceBase (26Q 124000Q)
				     (DTDspace DTDbase)
				     (DTDspace DTDbase))
		      (\DTDSize 20Q T)
		      (\LISTPDTD (26Q 124120Q))
		      (\EndTypeNumber 377Q)
		      (\STACKSPACE (27Q 0)
				   (STACKspace NIL)
				   (STACKspace NIL))
		      (\GuardStackAddr 170000Q)
		      (\LastStackAddr 177776Q)
		      (\STACKHI 27Q NIL T)
		      (\PNCHARSSPACE (30Q 0))
		      (\PNAMESPACEEND (37Q 177777Q))
		      (\ARRAYSPACE (40Q 0)
				   NIL
				   (ARRAYspace NIL))
		      (\ARRAYspace 40Q)
		      (\ARRAYbase 0)
		      (\LastArrayPage 15377Q)
		      (\HTMAIN (73Q 0)
			       (HTMAINspace HTMAINbase)
			       (HTMAINspace HTMAINbase))
		      (\HTMAINnpages 201Q T)
		      (\HTMAIN1 (73Q 1))
		      (\HTOVERFLOW (73Q 100000Q)
				   NIL
				   (NIL HTOVERFLOWbase))
		      (\HTCOLL (74Q 0)
			       NIL
			       (HTCOLLspace HTCOLLbase))
		      (\HTCOLL1 (74Q 1))
		      (\DISPLAYREGION (76Q 0))
		      (\DefaultScARRAYhi 76Q)
		      (\D1BCPLspace 0 T LEmubrHiVal)
		      (\D0BCPLspace 0 T)
		      (* emulator segment locations)
		      (DCB.EM 420Q)
		      (DISPINTERRUPT.EM 421Q)
		      (CURSORBITMAP.EM 431Q)
		      (KBDAD0.EM 177034Q)
		      (KBDAD1.EM 177035Q)
		      (KBDAD2.EM 177036Q)
		      (KBDAD3.EM 177037Q)
		      (UTILIN.EM 177030Q)
		      (CURSORX.EM 426Q)
		      (CURSORY.EM 427Q)
		      (MOUSEX.EM 424Q)
		      (MOUSEY.EM 425Q)
		      (\LispKeyMask 20000Q T T)
		      (\BcplKeyMask 10400Q T T)
		      (* Machine types)
		      (\DOLPHIN 4)
		      (\DORADO 5)
		      (\DANDELION 6)
		      (* * FOR DLION)
		      (\VP.DISPLAY 37000Q)
		      (* for wide display 1024x808/16x256)
		      (\NP.DISPLAY 312Q)
		      (\RP.DISPLAY 0)
		      (\RP.STACK 1000Q)
		      (\VP.STACK 13400Q)
		      (\VP.STATS 13200Q)
		      (\RP.STATS 600Q)
		      (\NP.STATS 200Q)
		      (\RP.MAP 400Q)
		      (\NP.MAP 100Q)
		      (\RP.IOPAGE 500Q)
		      (\VP.IOPAGE 377Q)
		      (\VP.IFPAGE 13020Q)
		      (\VP.FPTOVP 13100Q)
		      (\NP.FPTOVP 100Q)
		      (\RP.FPTOVP 501Q)
		      (\RP.STARTBUFFERS 601Q)
		      (\VP.TYPETABLE 13200Q)
		      (\NP.TYPETABLE 40Q)
		      (\RP.TYPETABLE 1600Q)
		      (\VP.GCTABLE 35400Q)
		      (\NP.GCTABLE 200Q)
		      (\RP.GCTABLE 1400Q)
		      (\VP.GCOVERFLOW 35600Q)
		      (\NP.GCOVERFLOW 1)
		      (\RP.GCOVERFLOW 1640Q)
		      (\FP.IFPAGE 2)
		      (\VP.IOCBS 1)
		      (\RP.TEMPDISPLAY 1641Q)
		      (* DLion processor commands)
		      (\DL.PROCESSORBUSY 100000Q)
		      (\DL.SETTOD 100001Q)
		      (\DL.READTOD 100002Q)
		      (\DL.READPID 100003Q)
		      (\DL.BOOTBUTTON 100004Q)
		      (\RP.AFTERDISPLAY 316Q)
		      (\VP.INITSCRATCH 10Q)
		      (\VP.RPT 200Q)
		      (\VP.BUFFERS 300Q)
		      (* * These going away...)
		      (\RP.IOCBS 1401Q)
		      (\RP.RPT 501Q)))

(RPAQQ \INITSUBRS (\uCodeCheck was\StackOverflow \NWWInterrupt was\PageFault \StatsOverflow NOOPSUBR 
			       \BACKGROUNDSUBR \CHECKBCPLPASSWORD DISKPARTITION DSPBOUT \DSPRATE 
			       \GATHERSTATS \GETPACKETBUFFER \LISPFINISH \MOREVMEMFILE RAID 
			       \READRAWPBI \WRITERAWPBI SETSCREENCOLOR SHOWDISPLAY \PUPLEVEL1STATE 
			       \WRITESTATS \CONTEXTSWITCH \COPYSYS0SUBR \WRITEMAP))

(RPAQQ MISCSTATSLAYOUT ((STARTTIME FIXP MSstrtTime)
			(TOTALTIME FIXP)
			(SWAPWAITTIME FIXP T)
			(PAGEFAULTS FIXP T)
			(SWAPWRITES FIXP T)
			(DISKIOTIME FIXP T)
			(DISKOPS FIXP T)
			(KEYBOARDWAITTIME FIXP T)
			(GCTIME FIXP T)
			(NETIOTIME FIXP T)
			(NETIOOPS FIXP T)
			(SWAPTEMP0 FIXP)
			(SWAPTEMP1 FIXP)
			(RCLKSECOND FIXP)
			(SECONDSCLOCK FIXP)
			(MILLISECONDSCLOCK FIXP)
			(BASECLOCK FIXP)
			(RCLKTEMP0 FIXP)
			(SECONDSTMP FIXP)
			(MILLISECONDSTMP FIXP)
			(BASETMP FIXP)
			(EXCESSTIMETMP FIXP)
			(CLOCKTEMP0 FIXP)
			(DISKTEMP0 FIXP)
			(DISKTEMP1 FIXP)
			(TELERAIDTEMP1 FIXP)
			(TELERAIDTEMP2 FIXP)
			(TELERAIDTEMP3 FIXP)
			(LASTUSERACTION FIXP)))

(RPAQQ IFPAGELAYOUT ((CurrentFXP WORD)
		     (ResetFXP WORD)
		     (SubovFXP WORD)
		     (KbdFXP WORD)
		     (HardReturnFXP WORD)
		     (GCFXP WORD)
		     (FAULTFXP WORD)
		     (EndOfStack WORD)
		     (LVersion WORD)
		     (MinRVersion WORD)
		     (MinBVersion WORD)
		     (RVersion WORD)
		     (BVersion WORD)
		     (MachineType WORD)
		     (MiscFXP WORD)
		     (Key WORD)
		     (SerialNumber WORD)
		     (EmulatorSpace WORD)
		     (ScreenWidth WORD)
		     (NxtPMAddr WORD)
		     (NActivePages WORD)
		     (NDirtyPages WORD)
		     (filePnPMP0 WORD)
		     (filePnPMT0 WORD)
		     (TELERAIDFXP WORD)
		     (wasInterruptEnable WORD)
		     (wasInterruptChar WORD)
		     (wasRaidExitFn WORD)
		     (UserNameAddr WORD)
		     (UserPswdAddr WORD)
		     (StackBase WORD)
		     (FAULTHI WORD)
		     (FAULTLO WORD)
		     (REALPAGETABLE WORD)
		     (RPTSIZE WORD)
		     (RPOFFSET WORD)
		     (RPTLAST WORD)
		     (EMBUFVP WORD)
		     (NSHost0 WORD)
		     (NSHost1 WORD)
		     (NSHost2 WORD)
		     (MDSZone WORD)
		     (MDSZoneLength WORD)
		     (EMUBUFFERS WORD)
		     (EMUBUFLENGTH WORD)
		     (LASTNUMCHARS WORD)
		     (SYSDISK WORD)
		     (ISFMAP WORD)
		     (* These are for \MISCAPPLY* -- note that they are not ref counted, so don't 
			pass the only pointer to something this way!)
		     (MISCSTACKFN FULLXPOINTER)
		     (MISCSTACKARG1 FULLXPOINTER)
		     (MISCSTACKARG2 FULLXPOINTER)
		     (MISCSTACKRESULT FULLXPOINTER)
		     (NRealPages WORD)
		     (LastLockedFilePage WORD)
		     (LastDominoFilePage WORD)
		     (FPTOVPStart WORD)))

(RPAQQ IOPAGELAYOUT ((NIL 70Q WORD)
		     (DLMOUSEX WORD NIL T)
		     (DLMOUSEY WORD NIL T)
		     (DLUTILIN WORD NIL T)
		     (DLKBDAD0 WORD NIL T)
		     (DLKBDAD1 WORD NIL T)
		     (DLKBDAD2 WORD NIL T)
		     (DLKBDAD3 WORD NIL T)
		     (DLKBDAD4 WORD NIL T)
		     (DLKBDAD5 WORD NIL T)
		     (DLMAINTPANEL WORD NIL T)
		     (NIL 2 WORD)
		     (DLCP 5 WORD)
		     (DLFLOPPY 10Q WORD)
		     (DLTTYPORT 6 WORD NIL T)
		     (DLPROCESSOR2 WORD)
		     (DLPROCESSOR1 WORD)
		     (DLPROCESSOR0 WORD)
		     (DLPROCESSORCMD WORD)
		     (NEWMOUSEX WORD)
		     (NEWMOUSEY WORD)
		     (NEWMOUSESTATE WORD)
		     (DLBEEPCMD WORD)
		     (DLBEEPFREQ WORD)
		     (DLRS232 15Q WORD NIL T)
		     (NIL 117Q WORD)
		     (DLMAGTAPE 4 WORD)
		     (DLETHERNET 20Q WORD NIL T)
		     (DLTODVALID WORD)
		     (DLTODLO WORD NIL T)
		     (DLTODHI WORD)
		     (DLTODLO2 WORD)
		     (NIL 27Q WORD)
		     (DLDISPINTERRUPT WORD NIL T)
		     (DLDISPCONTROL WORD)
		     (DLDISPBORDER WORD)
		     (DLCURSORX WORD NIL T)
		     (DLCURSORY WORD NIL T)
		     (DLCURSORBITMAP 20Q WORD NIL T)))

(PUTPROPS \uCodeCheck ARGNAMES (DUMMY))

(PUTPROPS was\StackOverflow ARGNAMES (DUMMY))

(PUTPROPS \NWWInterrupt ARGNAMES (DUMMY))

(PUTPROPS \StatsOverflow ARGNAMES (DUMMY))

(PUTPROPS NOOPSUBR ARGNAMES (DUMMY))

(PUTPROPS \BACKGROUNDSUBR ARGNAMES (DUMMY))

(PUTPROPS \CHECKBCPLPASSWORD ARGNAMES (PASS VECTOR))

(PUTPROPS DISKPARTITION ARGNAMES NIL)

(PUTPROPS DSPBOUT ARGNAMES (CHARCODE))

(PUTPROPS \DSPRATE ARGNAMES (AC0 AC1 AC2))

(PUTPROPS \GATHERSTATS ARGNAMES (FID))

(PUTPROPS \GETPACKETBUFFER ARGNAMES NIL)

(PUTPROPS \LISPFINISH ARGNAMES (DUMMY))

(PUTPROPS \MOREVMEMFILE ARGNAMES (FILEPAGE))

(PUTPROPS RAID ARGNAMES (MESS1 MESS2 FLG))

(PUTPROPS \READRAWPBI ARGNAMES NIL)

(PUTPROPS \WRITERAWPBI ARGNAMES (PBI))

(PUTPROPS SETSCREENCOLOR ARGNAMES (FLG))

(PUTPROPS SHOWDISPLAY ARGNAMES (BASE RASTERWIDTH))

(PUTPROPS \PUPLEVEL1STATE ARGNAMES (FLG))

(PUTPROPS \WRITESTATS ARGNAMES (TYPE X1 X2 X3 X4 X5 X6 X7 X8 X9 X10))

(PUTPROPS \CONTEXTSWITCH ARGNAMES (DUMMY))

(PUTPROPS \COPYSYS0SUBR ARGNAMES (FID))

(PUTPROPS \WRITEMAP ARGNAMES (VP RP FLAGS))
(DECLARE: EVAL@COMPILE 

(RPAQQ \MinRamVersion 10000Q)

(RPAQQ \MinBcplVersion 21400Q)

(RPAQQ \LispVersion 107400Q)

(RPAQQ CDRCODING 1)

(RPAQQ \SMALLP 1)

(RPAQQ \FIXP 2)

(RPAQQ \FLOATP 3)

(RPAQQ \LITATOM 4)

(RPAQQ \LISTP 5)

(RPAQQ \ARRAYP 6)

(RPAQQ \STRINGP 7)

(RPAQQ \STACKP 10Q)

(RPAQQ \VMEMPAGEP 12Q)

(RPAQQ \STREAM 13Q)

(RPAQQ \TT.TYPEMASK 377Q)

(RPAQQ \TT.NOREF 100000Q)

(RPAQQ \TT.LISPREF 40000Q)

(RPAQQ \PMblockSize 40Q)

(RPAQQ \STATSsize 10Q)

(RPAQQ \NumPMTpages 2)

(RPAQQ \EmptyPMTEntry 177777Q)

(RPAQQ \FirstVmemBlock 2)

(RPAQQ \IFPValidKey 12743Q)

(RPAQQ \HashInc 23Q)

(RPAQQ \FirstMDSPage 400Q)

(RPAQQ \MDSIncrement 1000Q)

(RPAQQ \StackMask 160000Q)

(RPAQQ \FxtnBlock 140000Q)

(RPAQQ \GuardBlock 160000Q)

(RPAQQ \BFBlock 100000Q)

(RPAQQ \FreeStackBlock 120000Q)

(RPAQQ \NotStackBlock 0)

(RPAQQ \MinExtraStackWords 40Q)

(RPAQQ ERASECHARCODE 0)

(RPAQQ \HT1CNT 2000Q)

(RPAQQ \HTSTKBIT 1000Q)

(RPAQQ \HTCNTMASK 176000Q)

(RPAQQ \HTMAINSIZE 100000Q)

(RPAQQ \HTCOLLSIZE 177770Q)

(RPAQQ \HTENDFREE 1)

(RPAQQ \HTFREEPTR 0)

(RPAQQ \AtomHI 0)

(RPAQQ \SmallPosHi 16Q)

(RPAQQ \SmallNegHi 17Q)

(RPAQQ \NumSmallPages 1000Q)

(RPAQQ \Guard1MDSPage 6400Q)

(RPAQQ \GuardMDSPage 6440Q)

(RPAQQ \LastMDSPage 6777Q)

(RPAQQ \LastPnPage 3777Q)

(RPAQQ \AtomHTpages 200Q)

(RPAQQ \NumPageMapPages 400Q)

(RPAQQ \CurrentFXP 0)

(RPAQQ \ResetFXP 1)

(RPAQQ \SubovFXP 2)

(RPAQQ \KbdFXP 3)

(RPAQQ \HardReturnFXP 4)

(RPAQQ \GCFXP 5)

(RPAQQ \FAULTFXP 6)

(RPAQQ \MiscFXP 16Q)

(RPAQQ \TeleRaidFXP 30Q)

(RPAQQ \MDSTTsize 40Q)

(RPAQQ \DTDSize 20Q)

(RPAQQ \EndTypeNumber 377Q)

(RPAQQ \GuardStackAddr 170000Q)

(RPAQQ \LastStackAddr 177776Q)

(RPAQQ \STACKHI 27Q)

(RPAQQ \ARRAYspace 40Q)

(RPAQQ \ARRAYbase 0)

(RPAQQ \LastArrayPage 15377Q)

(RPAQQ \HTMAINnpages 201Q)

(RPAQQ \DefaultScARRAYhi 76Q)

(RPAQQ \D1BCPLspace 0)

(RPAQQ \D0BCPLspace 0)

(RPAQQ DCB.EM 420Q)

(RPAQQ DISPINTERRUPT.EM 421Q)

(RPAQQ CURSORBITMAP.EM 431Q)

(RPAQQ KBDAD0.EM 177034Q)

(RPAQQ KBDAD1.EM 177035Q)

(RPAQQ KBDAD2.EM 177036Q)

(RPAQQ KBDAD3.EM 177037Q)

(RPAQQ UTILIN.EM 177030Q)

(RPAQQ CURSORX.EM 426Q)

(RPAQQ CURSORY.EM 427Q)

(RPAQQ MOUSEX.EM 424Q)

(RPAQQ MOUSEY.EM 425Q)

(RPAQQ \LispKeyMask 20000Q)

(RPAQQ \BcplKeyMask 10400Q)

(RPAQQ \DOLPHIN 4)

(RPAQQ \DORADO 5)

(RPAQQ \DANDELION 6)

(RPAQQ \VP.DISPLAY 37000Q)

(RPAQQ \NP.DISPLAY 312Q)

(RPAQQ \RP.DISPLAY 0)

(RPAQQ \RP.STACK 1000Q)

(RPAQQ \VP.STACK 13400Q)

(RPAQQ \VP.STATS 13200Q)

(RPAQQ \RP.STATS 600Q)

(RPAQQ \NP.STATS 200Q)

(RPAQQ \RP.MAP 400Q)

(RPAQQ \NP.MAP 100Q)

(RPAQQ \RP.IOPAGE 500Q)

(RPAQQ \VP.IOPAGE 377Q)

(RPAQQ \VP.IFPAGE 13020Q)

(RPAQQ \VP.FPTOVP 13100Q)

(RPAQQ \NP.FPTOVP 100Q)

(RPAQQ \RP.FPTOVP 501Q)

(RPAQQ \RP.STARTBUFFERS 601Q)

(RPAQQ \VP.TYPETABLE 13200Q)

(RPAQQ \NP.TYPETABLE 40Q)

(RPAQQ \RP.TYPETABLE 1600Q)

(RPAQQ \VP.GCTABLE 35400Q)

(RPAQQ \NP.GCTABLE 200Q)

(RPAQQ \RP.GCTABLE 1400Q)

(RPAQQ \VP.GCOVERFLOW 35600Q)

(RPAQQ \NP.GCOVERFLOW 1)

(RPAQQ \RP.GCOVERFLOW 1640Q)

(RPAQQ \FP.IFPAGE 2)

(RPAQQ \VP.IOCBS 1)

(RPAQQ \RP.TEMPDISPLAY 1641Q)

(RPAQQ \DL.PROCESSORBUSY 100000Q)

(RPAQQ \DL.SETTOD 100001Q)

(RPAQQ \DL.READTOD 100002Q)

(RPAQQ \DL.READPID 100003Q)

(RPAQQ \DL.BOOTBUTTON 100004Q)

(RPAQQ \RP.AFTERDISPLAY 316Q)

(RPAQQ \VP.INITSCRATCH 10Q)

(RPAQQ \VP.RPT 200Q)

(RPAQQ \VP.BUFFERS 300Q)

(RPAQQ \RP.IOCBS 1401Q)

(RPAQQ \RP.RPT 501Q)

(CONSTANTS (\MinRamVersion 10000Q)
	   (\MinBcplVersion 21400Q)
	   (\LispVersion 107400Q)
	   (CDRCODING 1)
	   (\SMALLP 1)
	   (\FIXP 2)
	   (\FLOATP 3)
	   (\LITATOM 4)
	   (\LISTP 5)
	   (\ARRAYP 6)
	   (\STRINGP 7)
	   (\STACKP 10Q)
	   (\VMEMPAGEP 12Q)
	   (\STREAM 13Q)
	   (\TT.TYPEMASK 377Q)
	   (\TT.NOREF 100000Q)
	   (\TT.LISPREF 40000Q)
	   (\PMblockSize 40Q)
	   (\STATSsize 10Q)
	   (\NumPMTpages 2)
	   (\EmptyPMTEntry 177777Q)
	   (\FirstVmemBlock 2)
	   (\IFPValidKey 12743Q)
	   (\HashInc 23Q)
	   (\FirstMDSPage 400Q)
	   (\MDSIncrement 1000Q)
	   (\StackMask 160000Q)
	   (\FxtnBlock 140000Q)
	   (\GuardBlock 160000Q)
	   (\BFBlock 100000Q)
	   (\FreeStackBlock 120000Q)
	   (\NotStackBlock 0)
	   (\MinExtraStackWords 40Q)
	   (ERASECHARCODE 0)
	   (\HT1CNT 2000Q)
	   (\HTSTKBIT 1000Q)
	   (\HTCNTMASK 176000Q)
	   (\HTMAINSIZE 100000Q)
	   (\HTCOLLSIZE 177770Q)
	   (\HTENDFREE 1)
	   (\HTFREEPTR 0)
	   (\AtomHI 0)
	   (\SmallPosHi 16Q)
	   (\SmallNegHi 17Q)
	   (\NumSmallPages 1000Q)
	   (\Guard1MDSPage 6400Q)
	   (\GuardMDSPage 6440Q)
	   (\LastMDSPage 6777Q)
	   (\LastPnPage 3777Q)
	   (\AtomHTpages 200Q)
	   (\NumPageMapPages 400Q)
	   (\CurrentFXP 0)
	   (\ResetFXP 1)
	   (\SubovFXP 2)
	   (\KbdFXP 3)
	   (\HardReturnFXP 4)
	   (\GCFXP 5)
	   (\FAULTFXP 6)
	   (\MiscFXP 16Q)
	   (\TeleRaidFXP 30Q)
	   (\MDSTTsize 40Q)
	   (\DTDSize 20Q)
	   (\EndTypeNumber 377Q)
	   (\GuardStackAddr 170000Q)
	   (\LastStackAddr 177776Q)
	   (\STACKHI 27Q)
	   (\ARRAYspace 40Q)
	   (\ARRAYbase 0)
	   (\LastArrayPage 15377Q)
	   (\HTMAINnpages 201Q)
	   (\DefaultScARRAYhi 76Q)
	   (\D1BCPLspace 0)
	   (\D0BCPLspace 0)
	   (DCB.EM 420Q)
	   (DISPINTERRUPT.EM 421Q)
	   (CURSORBITMAP.EM 431Q)
	   (KBDAD0.EM 177034Q)
	   (KBDAD1.EM 177035Q)
	   (KBDAD2.EM 177036Q)
	   (KBDAD3.EM 177037Q)
	   (UTILIN.EM 177030Q)
	   (CURSORX.EM 426Q)
	   (CURSORY.EM 427Q)
	   (MOUSEX.EM 424Q)
	   (MOUSEY.EM 425Q)
	   (\LispKeyMask 20000Q)
	   (\BcplKeyMask 10400Q)
	   (\DOLPHIN 4)
	   (\DORADO 5)
	   (\DANDELION 6)
	   (\VP.DISPLAY 37000Q)
	   (\NP.DISPLAY 312Q)
	   (\RP.DISPLAY 0)
	   (\RP.STACK 1000Q)
	   (\VP.STACK 13400Q)
	   (\VP.STATS 13200Q)
	   (\RP.STATS 600Q)
	   (\NP.STATS 200Q)
	   (\RP.MAP 400Q)
	   (\NP.MAP 100Q)
	   (\RP.IOPAGE 500Q)
	   (\VP.IOPAGE 377Q)
	   (\VP.IFPAGE 13020Q)
	   (\VP.FPTOVP 13100Q)
	   (\NP.FPTOVP 100Q)
	   (\RP.FPTOVP 501Q)
	   (\RP.STARTBUFFERS 601Q)
	   (\VP.TYPETABLE 13200Q)
	   (\NP.TYPETABLE 40Q)
	   (\RP.TYPETABLE 1600Q)
	   (\VP.GCTABLE 35400Q)
	   (\NP.GCTABLE 200Q)
	   (\RP.GCTABLE 1400Q)
	   (\VP.GCOVERFLOW 35600Q)
	   (\NP.GCOVERFLOW 1)
	   (\RP.GCOVERFLOW 1640Q)
	   (\FP.IFPAGE 2)
	   (\VP.IOCBS 1)
	   (\RP.TEMPDISPLAY 1641Q)
	   (\DL.PROCESSORBUSY 100000Q)
	   (\DL.SETTOD 100001Q)
	   (\DL.READTOD 100002Q)
	   (\DL.READPID 100003Q)
	   (\DL.BOOTBUTTON 100004Q)
	   (\RP.AFTERDISPLAY 316Q)
	   (\VP.INITSCRATCH 10Q)
	   (\VP.RPT 200Q)
	   (\VP.BUFFERS 300Q)
	   (\RP.IOCBS 1401Q)
	   (\RP.RPT 501Q))
)
(DECLARE: DOEVAL@COMPILE DONTCOPY

(ADDTOVAR GLOBALVARS \ATOMSPACE \SMALLPOSPSPACE \SMALLNEGSPACE \PNPSPACE \DEFSPACE \VALSPACE 
	  \PLISTSPACE \AtomHashTable \PAGEMAP \PageMapTBL \InterfacePage \IOPAGE \IOCBPAGE 
	  \MDSTypeTable \STATSSPACE \InterruptTBL \MISCSTATS \UFNTable \DTDSpaceBase \LISTPDTD 
	  \STACKSPACE \PNCHARSSPACE \PNAMESPACEEND \ARRAYSPACE \HTMAIN \HTMAIN1 \HTOVERFLOW \HTCOLL 
	  \HTCOLL1 \DISPLAYREGION)
)
(BLOCKRECORD MISCSTATS ((STARTTIME FIXP)
	      (TOTALTIME FIXP)
	      (SWAPWAITTIME FIXP)
	      (PAGEFAULTS FIXP)
	      (SWAPWRITES FIXP)
	      (DISKIOTIME FIXP)
	      (DISKOPS FIXP)
	      (KEYBOARDWAITTIME FIXP)
	      (GCTIME FIXP)
	      (NETIOTIME FIXP)
	      (NETIOOPS FIXP)
	      (SWAPTEMP0 FIXP)
	      (SWAPTEMP1 FIXP)
	      (RCLKSECOND FIXP)
	      (SECONDSCLOCK FIXP)
	      (MILLISECONDSCLOCK FIXP)
	      (BASECLOCK FIXP)
	      (RCLKTEMP0 FIXP)
	      (SECONDSTMP FIXP)
	      (MILLISECONDSTMP FIXP)
	      (BASETMP FIXP)
	      (EXCESSTIMETMP FIXP)
	      (CLOCKTEMP0 FIXP)
	      (DISKTEMP0 FIXP)
	      (DISKTEMP1 FIXP)
	      (TELERAIDTEMP1 FIXP)
	      (TELERAIDTEMP2 FIXP)
	      (TELERAIDTEMP3 FIXP)
	      (LASTUSERACTION FIXP))
	     (CREATE (\ALLOCBLOCK 35Q)))
(BLOCKRECORD IFPAGE ((CurrentFXP WORD)
	      (ResetFXP WORD)
	      (SubovFXP WORD)
	      (KbdFXP WORD)
	      (HardReturnFXP WORD)
	      (GCFXP WORD)
	      (FAULTFXP WORD)
	      (EndOfStack WORD)
	      (LVersion WORD)
	      (MinRVersion WORD)
	      (MinBVersion WORD)
	      (RVersion WORD)
	      (BVersion WORD)
	      (MachineType WORD)
	      (MiscFXP WORD)
	      (Key WORD)
	      (SerialNumber WORD)
	      (EmulatorSpace WORD)
	      (ScreenWidth WORD)
	      (NxtPMAddr WORD)
	      (NActivePages WORD)
	      (NDirtyPages WORD)
	      (filePnPMP0 WORD)
	      (filePnPMT0 WORD)
	      (TELERAIDFXP WORD)
	      (wasInterruptEnable WORD)
	      (wasInterruptChar WORD)
	      (wasRaidExitFn WORD)
	      (UserNameAddr WORD)
	      (UserPswdAddr WORD)
	      (StackBase WORD)
	      (FAULTHI WORD)
	      (FAULTLO WORD)
	      (REALPAGETABLE WORD)
	      (RPTSIZE WORD)
	      (RPOFFSET WORD)
	      (RPTLAST WORD)
	      (EMBUFVP WORD)
	      (NSHost0 WORD)
	      (NSHost1 WORD)
	      (NSHost2 WORD)
	      (MDSZone WORD)
	      (MDSZoneLength WORD)
	      (EMUBUFFERS WORD)
	      (EMUBUFLENGTH WORD)
	      (LASTNUMCHARS WORD)
	      (SYSDISK WORD)
	      (ISFMAP WORD)
	      (* These are for \MISCAPPLY* -- note that they are not ref counted, so don't pass the 
		 only pointer to something this way!)
	      (MISCSTACKFN FULLXPOINTER)
	      (MISCSTACKARG1 FULLXPOINTER)
	      (MISCSTACKARG2 FULLXPOINTER)
	      (MISCSTACKRESULT FULLXPOINTER)
	      (NRealPages WORD)
	      (LastLockedFilePage WORD)
	      (LastDominoFilePage WORD)
	      (FPTOVPStart WORD))
	     (CREATE (\ALLOCBLOCK 36Q)))
(BLOCKRECORD IOPAGE ((NIL 70Q WORD)
	      (DLMOUSEX WORD)
	      (DLMOUSEY WORD)
	      (DLUTILIN WORD)
	      (DLKBDAD0 WORD)
	      (DLKBDAD1 WORD)
	      (DLKBDAD2 WORD)
	      (DLKBDAD3 WORD)
	      (DLKBDAD4 WORD)
	      (DLKBDAD5 WORD)
	      (DLMAINTPANEL WORD)
	      (NIL 2 WORD)
	      (DLCP 5 WORD)
	      (DLFLOPPY 10Q WORD)
	      (DLTTYPORT 6 WORD)
	      (DLPROCESSOR2 WORD)
	      (DLPROCESSOR1 WORD)
	      (DLPROCESSOR0 WORD)
	      (DLPROCESSORCMD WORD)
	      (NEWMOUSEX WORD)
	      (NEWMOUSEY WORD)
	      (NEWMOUSESTATE WORD)
	      (DLBEEPCMD WORD)
	      (DLBEEPFREQ WORD)
	      (DLRS232 15Q WORD)
	      (NIL 117Q WORD)
	      (DLMAGTAPE 4 WORD)
	      (DLETHERNET 20Q WORD)
	      (DLTODVALID WORD)
	      (DLTODLO WORD)
	      (DLTODHI WORD)
	      (DLTODLO2 WORD)
	      (NIL 27Q WORD)
	      (DLDISPINTERRUPT WORD)
	      (DLDISPCONTROL WORD)
	      (DLDISPBORDER WORD)
	      (DLCURSORX WORD)
	      (DLCURSORY WORD)
	      (DLCURSORBITMAP 20Q WORD))
	     [ACCESSFNS IOPAGE ((DLCURSORBITMAPPTR (\ADDBASE DATUM 360Q))
			 (DLCURSORYPTR (\ADDBASE DATUM 357Q))
			 (DLCURSORXPTR (\ADDBASE DATUM 356Q))
			 (DLDISPINTERRUPTPTR (\ADDBASE DATUM 353Q))
			 (DLTODLOPTR (\ADDBASE DATUM 321Q))
			 (DLETHERNETPTR (\ADDBASE DATUM 300Q))
			 (DLRS232PTR (\ADDBASE DATUM 140Q))
			 (DLTTYPORTPTR (\ADDBASE DATUM 121Q))
			 (DLMAINTPANELPTR (\ADDBASE DATUM 101Q))
			 (DLKBDAD5PTR (\ADDBASE DATUM 100Q))
			 (DLKBDAD4PTR (\ADDBASE DATUM 77Q))
			 (DLKBDAD3PTR (\ADDBASE DATUM 76Q))
			 (DLKBDAD2PTR (\ADDBASE DATUM 75Q))
			 (DLKBDAD1PTR (\ADDBASE DATUM 74Q))
			 (DLKBDAD0PTR (\ADDBASE DATUM 73Q))
			 (DLUTILINPTR (\ADDBASE DATUM 72Q))
			 (DLMOUSEYPTR (\ADDBASE DATUM 71Q))
			 (DLMOUSEXPTR (\ADDBASE DATUM 70Q]
	     (CREATE (\ALLOCBLOCK 200Q)))


(* END EXPORTED DEFINITIONS)

EVAL@COMPILE 

(ADDTOVAR DONTCOMPILEFNS WRITEBCPLPARAMS PRINTIPATOMS WRITEMCPARAMS MAKERECORD STRIP\ WRITECALLSUBRS)
)
(DECLARE: DONTCOPY 



(* Access to the emulator space)


(* FOLLOWING DEFINITIONS EXPORTED)


(DECLARE: EVAL@COMPILE 

(PUTPROPS EMADDRESS MACRO [ARGS ([LAMBDA (ADDR)
				    (COND
				      [(EQ \D1BCPLspace \D0BCPLspace)
					(LIST (LIST (QUOTE OPCODES)
						    (QUOTE GCONST)
						    0
						    (LRSH ADDR 10Q)
						    (LOGAND ADDR 377Q]
				      (T (BQUOTE (\VAG2 (fetch EmulatorSpace of \InterfacePage)
							, ADDR]
				  (EVAL (CAR ARGS])

(PUTPROPS EMGETBASE MACRO ((OFFSET)
			   (\GETBASE (EMADDRESS OFFSET)
				     0)))

(PUTPROPS EMPUTBASE MACRO ((OFFSET VAL)
			   (\PUTBASE (EMADDRESS OFFSET)
				     0 VAL)))

(PUTPROPS EMULATORSEGMENT MACRO (NIL (fetch EmulatorSpace of \InterfacePage)))

(PUTPROPS EMPOINTER MACRO [X (COND
			       ((NEQ \D1BCPLspace \D0BCPLspace)
				 (LIST (QUOTE \VAG2)
				       (QUOTE (fetch (IFPAGE EmulatorSpace)
						     of \InterfacePage))
				       (CAR X)))
			       ((ZEROP (CAR X))
				 NIL)
			       (T (LIST (QUOTE \VAG2)
					\D0BCPLspace
					(CAR X])

(PUTPROPS EMADDRESSP MACRO [X (LIST (QUOTE EQ)
				    (LIST (QUOTE \HILOC)
					  (CAR X))
				    (COND
				      ((EQ \D1BCPLspace \D0BCPLspace)
					\D0BCPLspace)
				      (T (QUOTE (fetch (IFPAGE EmulatorSpace)
						       of \InterfacePage])
)


(* END EXPORTED DEFINITIONS)

)
(PUTPROPS LLPARAMS COPYRIGHT ("Xerox Corporation" 3675Q 3676Q 3677Q))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (1430 5680 (WRITEBCPLPARAMS 1440 . 3397) (WRITEMCPARAMS 3399 . 4515) (MAKERECORD 4517 . 
5521) (STRIP\ 5523 . 5678)) (5681 6970 (WRITECALLSUBRS 5691 . 6968)))))
STOP
360Q . 16015Q)))))
STOP