(FILECREATED "30-Oct-85 19:00:30" {ERIS}<LISPCORE>SOURCES>TRSERVER.;7 22684        changes to:  (FNS \TELERAIDENTRY \TELERAIDEXIT)      previous date: "16-Aug-85 08:22:50" {ERIS}<LISPCORE>SOURCES>TRSERVER.;6)(* Copyright (c) 1983, 1984, 1985 by Xerox Corporation. All rights reserved.)(PRETTYCOMPRINT TRSERVERCOMS)(RPAQQ TRSERVERCOMS ((FNS \DOTELERAID \TELERAIDINIT \TELERAIDSERVER \TELEBLTCURSOR \TELERAIDCOMMAND 			    \TELERAIDBREAK \TELERAIDGET \TELERAIDSEND \TELERAIDRELEASE \TELERAIDENTRY 			    \TELERAIDEXIT \3MBRAWRECEIVE \3MBRAWTRANSMIT \10MBRAWRECEIVE 			    \10MBRAWTRANSMIT \10MBRAWENCAPSULATE \10MBSETUPRECEIVER)	(INITVARS (\TELERAIDBUFFER)		  (\TELERAIDBLOCK))	(BITMAPS \TELERAIDBITMAPS)	(DECLARE: EVAL@COMPILE DONTCOPY (GLOBALVARS \TELERAIDPACKET \TELERAIDBUFFER \TELERAIDIOCB 						    \TELERAIDBLOCK \TELERAIDBITMAPS)		  (RECORDS TRBLOCK)		  (MACROS \TELEKBDWAIT)		  (CONSTANTS \#WORDS.CURSOR)		  (FILES (LOADCOMP)			 LLETHER 10MBDRIVER REMOTEVMEM LLFAULT))	(DECLARE: DONTEVAL@LOAD DOCOPY (P (\TELERAIDINIT)))))(DEFINEQ(\DOTELERAID  [LAMBDA NIL                                                (* bvm: "15-MAR-83 17:10")    (PROG NIL      LP  (\TELERAIDSERVER)          (\CONTEXTSWITCH \TeleRaidFXP)          (GO LP])(\TELERAIDINIT  [LAMBDA NIL                                                (* bvm: "16-Aug-85 01:06")    (for FN       in (QUOTE (\TELERAIDSERVER \TELERAIDCOMMAND \DOTELERAID \TELERAIDGET \TELERAIDSEND 				  \TELERAIDSETUP \TELERAIDENTRY \TELERAIDEXIT \TELEBLTCURSOR 				  \3MBRAWTRANSMIT \3MBRAWRECEIVE \WRITERAWPBI \READRAWPBI 				  \GETPACKETBUFFER \10MBRAWRECEIVE \10MBRAWTRANSMIT \TELERAIDRELEASE 				  \10MBRAWENCAPSULATE \10MBSETUPRECEIVER FLIPCURSOR \KEYBOARDON 				  \KEYBOARDOFF \10MB.TURNONETHER \QUEUE.OUTPUT.IOCB \QUEUE.INPUT.IOCB 				  \10MB.GETPACKETSTATUS \10MB.GETPACKETLENGTH SETMAINTPANEL 				  \TELERAIDBREAK \FREESTACKBLOCK \DOHELPINTERRUPT1 \MAKEFRAME 				  \DoveEther.ByteSwapIOCB \DoveEther.DeQueue \DoveEther.EnQueue 				  \DoveEther.GetPacketStatus \DoveEther.MakeSureOff 				  \DoveEther.QueueInput \DoveEther.QueueOutput \DoveEther.TurnOn))       do (\LOCKFN FN))    (for VAR in (QUOTE (\TELERAIDPACKET \TELERAIDBUFFER \TELERAIDIOCB \TELERAIDBLOCK \LOCALNDBS 					\PUP.READY \DEFSPACE))       do (\LOCKVAR VAR))    (COND      ((NOT (TYPENAMEP \TELERAIDPACKET (QUOTE ETHERPACKET)))	(SETQ \TELERAIDPACKET (\ALLOCATE.ETHERPACKET))	(\LOCKPAGES \TELERAIDPACKET 2)))    (\LOCKWORDS (SETQ \TELERAIDBLOCK (fetch BITMAPBASE of \TELERAIDBITMAPS))		(fetch BITMAPHEIGHT of \TELERAIDBITMAPS])(\TELERAIDSERVER  (LAMBDA (METADEBUGGING)                                    (* ejs: "16-Aug-85 06:46")    (DECLARE (GLOBALVARS \RCLKSECOND))    (PROG ((NDB \LOCALNDBS)	   (PACKET \TELERAIDPACKET)	   RECEIVER PTR VP FILEPAGE BODY)          (SETQ RECEIVER (\TELERAIDENTRY NDB METADEBUGGING))      LP  (COND	    ((AND RECEIVER (\TELERAIDGET NDB PACKET RECEIVER))	      (SELECTC (fetch PUPTYPE of PACKET)		       (TR.GIVEPAGE (COND				      ((NOT (EVENP (fetch PUPIDLO of PACKET)						   WORDSPERPAGE))					(GO ERROR)))				    (SETQ VP (create WORD						     HIBYTE _(fetch LOBYTE								of (fetch PUPIDHI of PACKET))						     LOBYTE _(fetch HIBYTE								of (fetch PUPIDLO of PACKET))))				    (COND				      ((fetch (VP INVALID) of VP)					(GO ERROR)))				    (SETQ PTR (\GETBASEPTR (LOCF (fetch PUPIDHI of PACKET))							   0))				    (COND				      ((NOT (fetch (VMEMFLAGS VACANT) of (\READFLAGS VP)))                                                             (* page is resident, we can just blt it)					(\BLT (fetch PUPCONTENTS of PACKET)					      PTR WORDSPERPAGE))				      ((AND (SETQ FILEPAGE (\LOOKUPPAGEMAP VP))					    (NEQ FILEPAGE 0))                                                             (* Page exists, so swap it into private buffer)					(\ACTONVMEMFILE FILEPAGE \TELERAIDBUFFER 1)					(\BLT (fetch PUPCONTENTS of PACKET)					      \TELERAIDBUFFER WORDSPERPAGE))				      (T (GO ERROR)))				    (replace PUPLENGTH of PACKET with (IPLUS BYTESPERPAGE \PUPOVLEN))				    (replace PUPTYPE of PACKET with TR.HEREISPAGE)				    (\TELERAIDSEND NDB PACKET))		       (TR.STORE (SETQ BODY (fetch PUPCONTENTS of PACKET))				 (COND				   ((NEQ (\GETBASEBYTE BODY 0)					 0)				     (GO ERROR)))				 (SETQ VP (create WORD						  HIBYTE _(\GETBASEBYTE BODY 1)						  LOBYTE _(\GETBASEBYTE BODY 2)))				 (COND				   ((fetch (VP INVALID) of VP)				     (GO ERROR)))				 (SETQ PTR (\GETBASEPTR BODY 0))				 (COND				   ((NOT (fetch (VMEMFLAGS VACANT) of (\READFLAGS VP)))                                                             (* page is resident, we can just store directly)				     (\PUTBASE PTR 0 (\GETBASE BODY 2)))				   ((AND (SETQ FILEPAGE (\LOOKUPPAGEMAP VP))					 (NEQ FILEPAGE 0))   (* Page exists, so swap it into private buffer)				     (\ACTONVMEMFILE FILEPAGE \TELERAIDBUFFER 1)				     (\PUTBASE \TELERAIDBUFFER (fetch (POINTER WORDINPAGE)								  of PTR)					       (\GETBASE BODY 2))				     (\ACTONVMEMFILE FILEPAGE \TELERAIDBUFFER 1 T))				   (T (GO ERROR)))				 (replace PUPLENGTH of PACKET with \PUPOVLEN)				 (replace PUPTYPE of PACKET with TR.STOREDONE)				 (\TELERAIDSEND NDB PACKET))		       (TR.GO (COND				((PROG ((IDHI (fetch PUPIDHI of PACKET))					(IDLO (fetch PUPIDLO of PACKET)))				       (replace PUPTYPE of PACKET with TR.GOACK)				       (\TELERAIDSEND NDB PACKET)				       (RETURN (to 20000 when (\TELERAIDGET NDB PACKET RECEIVER)						  do (COND						       ((AND (EQ (fetch PUPTYPE of PACKET)								 TR.GOREPLY)							     (COND							       ((EQ IDLO MAX.SMALL.INTEGER)                                                             (* Sigh, opencoded 32-bit arithmetic)								 (AND (EQ (fetch PUPIDLO									     of PACKET)									  0)								      (EQ (fetch PUPIDHI									     of PACKET)									  (ADD1 IDHI))))							       (T (AND (EQ (fetch PUPIDLO									      of PACKET)									   (ADD1 IDLO))								       (EQ (fetch PUPIDHI									      of PACKET)									   IDHI)))))							 (RETURN T))						       (T (\TELERAIDRELEASE NDB PACKET))))))				  (\TELERAIDEXIT NDB)				  (RETURN))))		       (\TELERAIDRELEASE NDB PACKET))))          (COND	    ((OR (XKEYDOWNP (QUOTE BLANK-BOTTOM))		 (XKEYDOWNP (QUOTE CTRL)))                   (* Command key)	      (\TELEBLTCURSOR (fetch TRCOMMAND of \TELERAIDBLOCK))	      (SELECTQ (\TELERAIDCOMMAND NDB)		       (RESET (\TELERAIDEXIT NDB T)			      (COND				(METADEBUGGING (HARDRESET))				(T (\CONTEXTSWITCH \ResetFXP))))		       (RETURN (\TELERAIDEXIT NDB)			       (RETURN))		       NIL))	    (T (\TELEBLTCURSOR (fetch TRCURSOR of \TELERAIDBLOCK))))          (\UPDATETIMERS)                                    (* Keep the clock running)          (GO LP)      ERROR          (replace PUPLENGTH of PACKET with \PUPOVLEN)          (replace PUPTYPE of PACKET with TR.ERROR)          (\TELERAIDSEND NDB PACKET)          (GO LP))))(\TELEBLTCURSOR  [LAMBDA (CURSOR)                                           (* bvm: "14-Aug-85 16:26")    (\BLT \EM.CURSORBITMAP CURSOR \#WORDS.CURSOR)    (COND      ((EQ \MACHINETYPE \DAYBREAK)	(\DoveDisplay.SetCursorShape])(\TELERAIDCOMMAND  (LAMBDA (NDB)                                              (* lmm "18-Apr-85 02:22")    (COND      ((XKEYDOWNP (QUOTE D))                                 (* D -							     hard reset)	(\TELEBLTCURSOR (fetch TRCONTROLD of \TELERAIDBLOCK))	(COND	  ((\TELEKBDWAIT (QUOTE D))	    (QUOTE RESET))))      ((XKEYDOWNP (QUOTE N))                                 (* ^N returns)	(\TELEBLTCURSOR (fetch TRCONTROLN of \TELERAIDBLOCK))	(COND	  ((\TELEKBDWAIT (QUOTE N))	    (QUOTE RETURN))))      ((XKEYDOWNP (QUOTE B))                                 (* Break offender if possible)	(\TELERAIDBREAK))      ((XKEYDOWNP (QUOTE P))                                 (* Display pup number in maintenance panel)	(SETMAINTPANEL (fetch NDBPUPHOST# of NDB))	(\TELEKBDWAIT (QUOTE P)))      ((AND (NEQ \MACHINETYPE \DANDELION)	    (XKEYDOWNP (QUOTE R)))                           (* Get RAID)	(\TELEBLTCURSOR (fetch TRRAID of \TELERAIDBLOCK))	(COND	  ((\TELEKBDWAIT (QUOTE R))	    (RAID)	    (\TELEBLTCURSOR (fetch TRCURSOR of \TELERAIDBLOCK))))))))(\TELERAIDBREAK  (LAMBDA NIL                                                (* bvm: " 6-AUG-83 22:44")    (PROG ((FRAME (fetch (IFPAGE TELERAIDFXP) of \InterfacePage))	   NEWFRAME USERFRAME FREE NXT NXTEND)               (* Build a frame to invoke \DOHELPINTERRUPT1 on top of 							     user process. This code adapted from \PROCESS.MAKEFRAME							     and \PROCESS.MAKEFRAME0)          (\TELEBLTCURSOR (fetch TRBREAK of \TELERAIDBLOCK))          (COND	    ((ILESSP FRAME (fetch (IFPAGE StackBase) of \InterfacePage))                                                             (* Running in a system context)	      (COND		((AND (IGREATERP (SETQ USERFRAME (fetch (IFPAGE FAULTFXP) of \InterfacePage))				 (fetch (IFPAGE StackBase) of \InterfacePage))		      (SELECTQ (fetch (FX FRAMENAME) of FRAME)			       (\MP.ERROR T)			       (RAID (EQ (fetch (FX FRAMENAME) of (SETQ FRAME (fetch (FX CLINK)										 of FRAME)))					 (QUOTE \MP.ERROR)))			       NIL)		      (SELECTC (\GETBASEPTR (STACKADDBASE (fetch (BF IVAR)							     of (fetch (FX BLINK) of FRAME)))					    0)			       ((LIST \MP.INVALIDADDR \MP.INVALIDVP \MP.MOB \MP.RESIDENT)                                                             (* MP codes in fault handler that are "safe")				 T)			       NIL))                         (* Special case: allow breaks in user process in these 							     cases, because fault handler will just switch right 							     back to user context)		  (SETQ FRAME USERFRAME)		  (FLIPCURSOR))		(T                                           (* Refuse to do it--chances of surviving a full-fledged							     break are slim)		   (\TELEBLTCURSOR (fetch TRNOBREAK of \TELERAIDBLOCK))		   (\TELEKBDWAIT (QUOTE B))		   (RETURN)))))          (COND	    ((NOT (\TELEKBDWAIT (QUOTE B)))	      (RETURN)))          (SETQ NXT (fetch (FX NEXTBLOCK) of FRAME))          (SETQ NXTEND (IPLUS NXT (fetch (FSB SIZE) of NXT)))          (while (type? FSB NXTEND) do (SETQ NXTEND (IPLUS NXTEND (fetch (FSB SIZE) of NXTEND))))          (RETURN (COND		    ((SETQ NEWFRAME			(OR (\MAKEFRAME (FUNCTION \DOHELPINTERRUPT1)					NXT NXTEND FRAME FRAME)			    (\MAKEFRAME (FUNCTION \DOHELPINTERRUPT1)					(SETQ FREE					  (\FREESTACKBLOCK					    (IPLUS (PROG1 (fetch (FNHEADER STKMIN)							     of (fetch (LITATOM DEFPOINTER)								   of (FUNCTION \DOHELPINTERRUPT1)))                                                             (* Stack needed to call this fn)							  )						   (PROG1 (UNFOLD 20 WORDSPERCELL)                                                             (* Extra slop)							  ))					    FRAME))					(IPLUS FREE (fetch (FSB SIZE) of FREE))					FRAME FRAME)))		      (COND			(USERFRAME (replace (IFPAGE FAULTFXP) of \InterfacePage with NEWFRAME))			(T (replace (IFPAGE TELERAIDFXP) of \InterfacePage with NEWFRAME)))		      (QUOTE RETURN)))))))(\TELERAIDGET  (LAMBDA (NDB PACKET RECEIVER)                              (* ejs: "16-Aug-85 07:10")    (DECLARE (GLOBALVARS CHECKPOINT))    (COND      ((APPLY* RECEIVER NDB PACKET T)	(SELECTC (fetch EPTYPE of PACKET)		 (\EPT.PUP (FLIPCURSOR)			   (COND			     ((AND (EQ (fetch PUPDESTSOCKETLO of PACKET)				       \PUPSOC.TELERAID)				   (EQ (fetch PUPDESTHOST of PACKET)				       (fetch NDBPUPHOST# of NDB))				   (EQ (fetch PUPDESTSOCKETHI of PACKET)				       0)))			     (T (\TELERAIDRELEASE NDB PACKET)				NIL)))		 (\EPT.3TO10 (COND			       ((AND (EQ (fetch TRANSOPERATION of PACKET)					 \TRANS.OP.REQUEST)				     (EQ (fetch TRANSPUPHOST of PACKET)					 (fetch NDBPUPHOST# of NDB)))                                                             (* It's for us)				 (\BLTLOCALHOSTNUMBER (LOCF (fetch BASETRANSNSHOST of PACKET)))                                                             (* Add in the information he wants)				 (replace TRANSOPERATION of PACKET with \TRANS.OP.RESPONSE)				 (\10MBRAWENCAPSULATE NDB PACKET \TRANS.DATALENGTH)                                                             (* Send back the response)				 (\10MBRAWTRANSMIT NDB PACKET))			       (T (\10MBSETUPRECEIVER NDB PACKET)))			     NIL)		 (\TELERAIDRELEASE NDB PACKET))))))(\TELERAIDSEND  [LAMBDA (NDB PACKET)                                       (* bvm: "19-JUL-83 11:10")                                                             (* Swap the ports on PACKET and send it back where it 							     came from)    (swap (fetch PUPDESTHOST of PACKET)	  (fetch PUPSOURCEHOST of PACKET))    (swap (fetch PUPDESTNET of PACKET)	  (fetch PUPSOURCENET of PACKET))    (replace PUPDESTSOCKETHI of PACKET with (fetch PUPSOURCESOCKETHI of PACKET))    (replace PUPDESTSOCKETLO of PACKET with (fetch PUPSOURCESOCKETLO of PACKET))    (replace PUPSOURCESOCKETHI of PACKET with 0)    (replace PUPSOURCESOCKETLO of PACKET with \PUPSOC.TELERAID)    (replace PUPCHECKSUM of PACKET with \NULLCHECKSUM)    (SELECTQ (fetch NETTYPE of NDB)	     (3 (swap (fetch 3MBDESTHOST of PACKET)		      (fetch 3MBSOURCEHOST of PACKET))		(replace 3MBLENGTH of PACKET with (IPLUS \3MBENCAPSULATION.WORDS							 (FOLDHI (fetch PUPLENGTH of PACKET)								 BYTESPERWORD)))		(\3MBRAWTRANSMIT NDB PACKET))	     (10 (\10MBRAWENCAPSULATE NDB PACKET (fetch PUPLENGTH of PACKET))		 (\10MBRAWTRANSMIT NDB PACKET))	     NIL)    (FLIPCURSOR])(\TELERAIDRELEASE  [LAMBDA (NDB PACKET)                                       (* bvm: "16-JUL-83 16:42")                                                             (* Called when Teleraid is finished with PACKET, so that							     it can be reused for receiving)    (SELECTQ (fetch NETTYPE of NDB)	     (12Q (\10MBSETUPRECEIVER NDB PACKET))	     NIL)    (FLIPCURSOR)    NIL])(\TELERAIDENTRY  (LAMBDA (NDB METADEBUGGING)                                (* ejs: "30-Oct-85 17:41")                                                             (* Called on entry to TeleRaid.							     Returns a packet receiver function)    (OR METADEBUGGING (\KEYBOARDOFF))    (\BLT (fetch TROLDCURSOR of \TELERAIDBLOCK)	    \EM.CURSORBITMAP \#WORDS.CURSOR)    (\TELEBLTCURSOR (fetch TRCURSOR of \TELERAIDBLOCK))    (COND      ((AND NDB \PUP.READY)	(SELECTQ (AND NDB (fetch NETTYPE of NDB))		   (3 (FUNCTION \3MBRAWRECEIVE))		   (10 (\10MB.TURNONETHER NDB (fetch TROLDCSB of \TELERAIDBLOCK)					    NIL T 0 0)		       (\10MBSETUPRECEIVER NDB \TELERAIDPACKET)		       (FUNCTION \10MBRAWRECEIVE))		   NIL)))))(\TELERAIDEXIT  (LAMBDA (NDB RESET)                                        (* ejs: "30-Oct-85 17:41")                                                             (* Restore state for teleraid exit)    (SELECTQ (AND NDB (fetch NETTYPE of NDB))	       (10 (\10MB.TURNONETHER NDB NIL (fetch TROLDCSB of \TELERAIDBLOCK)))	       NIL)    (\TELEBLTCURSOR (fetch TROLDCURSOR of \TELERAIDBLOCK))    (OR RESET (\KEYBOARDON))))(\3MBRAWRECEIVE  [LAMBDA (NDB PACKET)                                       (* bvm: "12-JUL-83 19:09")    (COND      ((UNINTERRUPTABLY           (PROG ((PBI (\READRAWPBI)))	         [COND		   (PBI (\BLT (fetch 3MBBASE of PACKET)			      (fetch PBIRAWSTART of PBI)			      (ADD1 (fetch PBILENGTH of PBI]	         (RETURN PBI)))	(replace EPTYPE of PACKET with (fetch 3MBTYPE of PACKET))	PACKET])(\3MBRAWTRANSMIT  [LAMBDA (NDB PACKET)                                       (* bvm: "14-MAR-83 15:23")                                                             (* Sends raw seething etherpacket on the 3mb net denoted							     by NDB)    (SETQ PACKET (\DTEST PACKET (QUOTE ETHERPACKET)))    (UNINTERRUPTABLY        (PROG ((PBI (\GETPACKETBUFFER)))	      (OR PBI (RETURN))	      (\BLT (fetch PBIRAWSTART of PBI)		    (fetch 3MBBASE of PACKET)		    (ADD1 (fetch 3MBLENGTH of PACKET)))	      (\WRITERAWPBI PBI)	      (RETURN T)))])(\10MBRAWRECEIVE  (LAMBDA (NDB PACKET METADEBUGGING)                         (* ejs: "16-Aug-85 08:01")    (COND      ((AND (EQ \MACHINETYPE \DAYBREAK)	    (EQ (fetch (Dove.EtherIOCB IOCBType) of \TELERAIDIOCB)		\DoveEther.OutputType))	(\10MBSETUPRECEIVER NDB PACKET)	NIL)      (T (LET ((STATUS (\10MB.GETPACKETSTATUS \TELERAIDIOCB METADEBUGGING)))	      (COND		((EQ STATUS \ES.PENDING)                     (* nothing received yet)		  NIL)		((OR (EQ STATUS \ES.GOOD.PACKET)		     \10MB.GETGARBAGE)                       (* Accept the packet)		  (replace 10MBLENGTH of PACKET with (\10MB.GETPACKETLENGTH \TELERAIDIOCB))		  (replace EPTYPE of PACKET with (fetch 10MBTYPE of PACKET))		  PACKET)		(T                                           (* Bad packet, stuff it back on input)		   (\10MBSETUPRECEIVER NDB PACKET)		   NIL)))))))(\10MBRAWTRANSMIT  (LAMBDA (NDB PACKET)                                       (* ejs: "16-Aug-85 07:30")    (\QUEUE.OUTPUT.IOCB NDB \TELERAIDIOCB (fetch 10MBPACKETBASE of PACKET)			(IMAX (fetch 10MBLENGTH of PACKET)			      \10MB.MINPACKETLENGTH))        (* And then wait until transmitted)    (repeatuntil (NEQ (\10MB.GETPACKETSTATUS \TELERAIDIOCB)		      \ES.PENDING))))(\10MBRAWENCAPSULATE  [LAMBDA (NDB PACKET LENGTH)                                (* bvm: "16-Dec-84 22:11")    (replace 10MBLENGTH of PACKET with (IPLUS \10MBENCAPSULATION.WORDS (FOLDHI LENGTH BYTESPERWORD)))    (\BLT (fetch 10MBDESTHOSTBASE of PACKET)	  (fetch 10MBSOURCEHOSTBASE of PACKET)	  3)    (\BLTLOCALHOSTNUMBER (fetch 10MBSOURCEHOSTBASE of PACKET])(\10MBSETUPRECEIVER  [LAMBDA (NDB PACKET)                                       (* bvm: "14-JUL-83 13:45")    (\QUEUE.INPUT.IOCB NDB \TELERAIDIOCB (fetch 10MBPACKETBASE of PACKET)		       \10MBPACKETLENGTH]))(RPAQ? \TELERAIDBUFFER )(RPAQ? \TELERAIDBLOCK )(RPAQ \TELERAIDBITMAPS (READBITMAP))(16 144"@@@@""@@NA""@@@@""@@NA""@@@@""@@@@""IJML""@@NA""HOML""@@NA""IJML""@@@@""@@@@""@@@@""@@@@""@@@@""H@@@""L@@@""N@@@""O@@@""OH@@""OL@@""ON@@""O@@@""MH@@""IH@@""@L@@""@L@@""@F@@""@F@@""@C@@""@C@@""N@@@""DNHN""DHHH""DNHN""DHHH""DNNN""@@@@""@@@@""@@@@""N@@@""ICGF""IEBE""NGBE""JEBE""IEGF""@@@@""@@@@""@@@@""@@@@""@@GH""@@DD""@HDD""ALDD""BJDD""@HDD""@HDD""@HGH""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@DD""@@FD""@HFD""ALED""BJED""@HDL""@HDL""@HDD""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""FDEL""IFMB""HGMB""HEEB""HEEB""IDEB""FDEL""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@B@""N@@A""ICBG""NDJI""ICJI""IDJI""IGGG""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""@@@@""O@A@""HHA@""HJMB""OCAD""HJAL""HJAB""OBAA""@@@@""@@@@""@@@@""@@@@""@@@@""GHD@""HDJ@""H@J@""HAA@""HEO@""GJ@H""@@@@""@@@@""DBMO""FBDD""EBHD""DJ@D""DF@D""DB@D""@@@@""@@@@")(DECLARE: EVAL@COMPILE DONTCOPY (DECLARE: DOEVAL@COMPILE DONTCOPY(GLOBALVARS \TELERAIDPACKET \TELERAIDBUFFER \TELERAIDIOCB \TELERAIDBLOCK \TELERAIDBITMAPS))[DECLARE: EVAL@COMPILE (ACCESSFNS TRBLOCK ((TROLDCSB (PROGN DATUM))		      (TROLDCURSOR (\ADDBASE DATUM 16))		      (TRCURSOR (\ADDBASE DATUM 32))		      (TRCONTROLD (\ADDBASE DATUM 48))		      (TRCONTROLN (\ADDBASE DATUM 64))		      (TRCOMMAND (\ADDBASE DATUM 80))		      (TRRAID (\ADDBASE DATUM 96))		      (TRBREAK (\ADDBASE DATUM 112))		      (TRNOBREAK (\ADDBASE DATUM 128))))](DECLARE: EVAL@COMPILE (PUTPROPS \TELEKBDWAIT MACRO ((KEY)	   (while (AND (XKEYDOWNP KEY)		       (OR (XKEYDOWNP (QUOTE BLANK-BOTTOM))			   (XKEYDOWNP (QUOTE CTRL))))		  finally		  (RETURN (COND ((OR (XKEYDOWNP (QUOTE BLANK-BOTTOM))				     (XKEYDOWNP (QUOTE CTRL)))				 T)				(T (\TELEBLTCURSOR (fetch TRCURSOR of \TELERAIDBLOCK))				   NIL)))))))(DECLARE: EVAL@COMPILE (RPAQQ \#WORDS.CURSOR 16)(CONSTANTS \#WORDS.CURSOR))(FILESLOAD (LOADCOMP)	   LLETHER 10MBDRIVER REMOTEVMEM LLFAULT))(DECLARE: DONTEVAL@LOAD DOCOPY (\TELERAIDINIT))(PUTPROPS TRSERVER COPYRIGHT ("Xerox Corporation" 1983 1984 1985))(DECLARE: DONTCOPY  (FILEMAP (NIL (1065 20320 (\DOTELERAID 1075 . 1288) (\TELERAIDINIT 1290 . 2724) (\TELERAIDSERVER 2726 . 7897) (\TELEBLTCURSOR 7899 . 8157) (\TELERAIDCOMMAND 8159 . 9378) (\TELERAIDBREAK 9380 . 12687) (\TELERAIDGET 12689 . 14169) (\TELERAIDSEND 14171 . 15516) (\TELERAIDRELEASE 15518 . 15931) (\TELERAIDENTRY 15933 . 16757) (\TELERAIDEXIT 16759 . 17243) (\3MBRAWRECEIVE 17245 . 17701) (\3MBRAWTRANSMIT 17703 . 18288) (\10MBRAWRECEIVE 18290 . 19244) (\10MBRAWTRANSMIT 19246 . 19672) (\10MBRAWENCAPSULATE 19674 . 20090) (\10MBSETUPRECEIVER 20092 . 20318)))))STOP