(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") (FILECREATED "17-May-90 15:58:24" {DSK}local>lde>lispcore>sources>TRSERVER.;2 17572 changes to%: (VARS TRSERVERCOMS) previous date%: " 6-Jun-88 11:27:47" {DSK}local>lde>lispcore>sources>TRSERVER.;1) (* ; " Copyright (c) 1983, 1984, 1985, 1988, 1990 by Venue & 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) (* ; "Edited 6-Jun-88 11:17 by bvm") (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) (* ; "Edited 6-Jun-88 11:19 by bvm") (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) (NEQ \MACHINETYPE \DAYBREAK) (XKEYDOWNP (QUOTE R))) (* ; "Get RAID") (\TELEBLTCURSOR (fetch TRRAID of \TELERAIDBLOCK)) (COND ((\TELEKBDWAIT (QUOTE R)) (RAID) (\TELEBLTCURSOR (fetch TRCURSOR of \TELERAIDBLOCK))))) ((AND (XKEYDOWNP (QUOTE S)) (XKEYDOWNP (QUOTE LSHIFT))) (\TELEBLTCURSOR (fetch TRCONTROLS of \TELERAIDBLOCK)) (\FLUSHVM) (\TELEBLTCURSOR (fetch TRCURSOR of \TELERAIDBLOCK))))) ) (\TELERAIDBREAK (LAMBDA NIL (* ; "Edited 6-Jun-88 11:20 by bvm") (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) (* ; "Edited 6-Jun-88 11:27 by bvm") (COND ((CL:FUNCALL 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)))) (\EPT.3TO10 (COND ((AND (EQ (fetch NETTYPE OF NDB) 10) (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) NIL) (T (* ; "Not on a 10mb net (e.g., on 3mb this packet type is IP), or not for us") (\TELERAIDRELEASE NDB PACKET)))) (\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) (10 (\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%: " 6-Nov-85 22:18") (COND ((AND (EQ \MACHINETYPE \DAYBREAK) (EQ (fetch (Dove.EtherIOCB IOCBType) of \TELERAIDIOCB) DoveEther.outputIOCBType)) (\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 ) (RPAQQ \TELERAIDBITMAPS #*(16 160)@@@@@@NA@@@@@@NA@@@@@@@@IJML@@NAHOML@@NAIJML@@@@@@@@@@@@@@@@@@@@H@@@L@@@N@@@O@@@OH@@OL@@ON@@O@@@MH@@IH@@@L@@@L@@@F@@@F@@@C@@@C@@N@@@DNHNDHHHDNHNDHHHDNNN@@@@@@@@@@@@N@@@ICGFIEBENGBEJEBEIEGF@@@@@@@@@@@@@@@@@@GH@@DD@HDDALDDBJDD@HDD@HDD@HGH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DD@@FD@HFDALEDBJED@HDL@HDL@HDD@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FDELIFMBHGMBHEEBHEEBIDEBFDEL@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@N@@AICBGNDJIICJIIDJIIGGG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O@A@HHA@HJMBOCADHJALHJABOBAA@@@@@@@@@@@@@@@@@@@@GHD@HDJ@H@J@HAA@HEO@GJ@H@@@@@@@@DBMOFBDDEBHDDJ@DDF@DDB@D@@@@@@@@@@@@FDJ@HJJ@LJJ@BNJLJJD@LJD@@@@@@JDN@KEB@KE@@JMF@JMB@JEL@@@@@@@@ ) (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)) (TRCONTROLS (\ADDBASE DATUM 144)))) ) (DECLARE%: EVAL@COMPILE (PUTPROPS \TELEKBDWAIT MACRO [(KEY) (while [AND (XKEYDOWNP KEY) (OR (XKEYDOWNP 'BLANK-BOTTOM) (XKEYDOWNP 'CTRL] finally (RETURN (COND ((OR (XKEYDOWNP 'BLANK-BOTTOM) (XKEYDOWNP '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 ("Venue & Xerox Corporation" 1983 1984 1985 1988 1990)) (DECLARE%: DONTCOPY (FILEMAP (NIL (1315 14489 (\DOTELERAID 1325 . 1454) (\TELERAIDINIT 1456 . 2622) (\TELERAIDSERVER 2624 . 5860) (\TELEBLTCURSOR 5862 . 6042) (\TELERAIDCOMMAND 6044 . 7063) (\TELERAIDBREAK 7065 . 9189) ( \TELERAIDGET 9191 . 10209) (\TELERAIDSEND 10211 . 11162) (\TELERAIDRELEASE 11164 . 11422) ( \TELERAIDENTRY 11424 . 11988) (\TELERAIDEXIT 11990 . 12294) (\3MBRAWRECEIVE 12296 . 12606) ( \3MBRAWTRANSMIT 12608 . 12995) (\10MBRAWRECEIVE 12997 . 13683) (\10MBRAWTRANSMIT 13685 . 13998) ( \10MBRAWENCAPSULATE 14000 . 14321) (\10MBSETUPRECEIVER 14323 . 14487))))) STOP