(FILECREATED "16-Aug-85 08:22:50" {ERIS}<LISPCORE>SOURCES>TRSERVER.;6 22870 changes to: (FNS \TELERAIDSERVER \TELERAIDENTRY \TELERAIDGET \TELERAIDEXIT \10MBRAWRECEIVE \10MBRAWTRANSMIT) previous date: "16-Aug-85 01:09:33" {ERIS}<LISPCORE>SOURCES>TRSERVER.;5) (* 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: "16-Aug-85 05: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 (AND (NEQ \MACHINETYPE \DAYBREAK) (fetch TROLDCSB of \TELERAIDBLOCK)) NIL T 0 0) (\10MBSETUPRECEIVER NDB \TELERAIDPACKET) (FUNCTION \10MBRAWRECEIVE)) NIL))))) (\TELERAIDEXIT (LAMBDA (NDB RESET) (* ejs: "16-Aug-85 08:21") (* Restore state for teleraid exit) (SELECTQ (AND NDB (fetch NETTYPE of NDB)) (10 (COND ((NEQ \MACHINETYPE \DAYBREAK) (\10MB.TURNONETHER NDB NIL (AND (NEQ \MACHINETYPE \DAYBREAK) (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 "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "@@@@" "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 (1125 20522 (\DOTELERAID 1135 . 1348) (\TELERAIDINIT 1350 . 2784) (\TELERAIDSERVER 2786 . 7957) (\TELEBLTCURSOR 7959 . 8217) (\TELERAIDCOMMAND 8219 . 9438) (\TELERAIDBREAK 9440 . 12747) ( \TELERAIDGET 12749 . 14229) (\TELERAIDSEND 14231 . 15576) (\TELERAIDRELEASE 15578 . 15991) ( \TELERAIDENTRY 15993 . 16851) (\TELERAIDEXIT 16853 . 17445) (\3MBRAWRECEIVE 17447 . 17903) ( \3MBRAWTRANSMIT 17905 . 18490) (\10MBRAWRECEIVE 18492 . 19446) (\10MBRAWTRANSMIT 19448 . 19874) ( \10MBRAWENCAPSULATE 19876 . 20292) (\10MBSETUPRECEIVER 20294 . 20520))))) STOP