(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED "25-Jan-98 01:55:48" ("compiled on " {DSK}sources>10MBDECLS.;1) "30-Mar-95 20:33:04" bcompl'd in "Medley 14-Aug-95 ..." dated "14-Aug-95 15:27:48") (FILECREATED "16-May-90 11:35:37" {DSK}local>lde>lispcore>sources>10MBDECLS.;2 18593 changes to%: (VARS 10MBDECLSCOMS) previous date%: "14-Apr-88 15:31:50" {DSK}local>lde>lispcore>sources>10MBDECLS.;1) (PRETTYCOMPRINT 10MBDECLSCOMS) (RPAQQ 10MBDECLSCOMS ((COMS (RECORDS 10MBENCAPSULATION) (CONSTANTS \10MBHOST.WORDS \10MBENCAPSULATION.WORDS)) (MACROS \D0.CONTROLLERBITS \D0.TURNOFFETHER \DL.TURNOFFETHER) (RECORDS D0ETHERCSB D0ETHERIOCB DLETHERCSB DLETHERIOCB) (CONSTANTS (\D0.ENABLE.10MBINPUT 49152) ( \D0.ENABLE.10MBOUTPUT 192) (\D0.RESET.10MBCONTROLLER 512) (\D0.INPUTSTATE 1) (\D0.OUTPUTSTATE 2) ( \CSB.LENGTH 16) (\IOCB.LENGTH 8) (\MIN2PAGEBUFLENGTH 232) (\10MB.MINPACKETLENGTH 30)) (CONSTANTS * DLIONETHERCONSTANTS) (CONSTANTS * ETHERSTATUSCONSTANTS) (CONSTANTS * D0ETHERSTATUSCONSTANTS) ( CONSTANTS * DLETHERSTATUSCONSTANTS) (CONSTANTS (\MAXLLBUFFERPAGES 2) (\MINLLBUFFERPAGES 1) (\MAXIOCBS 64) (\10MB.MAX.INPUT.LENGTH 20)) (GLOBALVARS \IOCB.INPUT.ALLOC \IOCB.INPUT.TOTAL \IOCB.OUTPUT.ALLOC \IOCB.OUTPUT.TOTAL \IOCBTOTAL \10MB.GETGARBAGE \10MB.RAWPACKETQ \10MB.IDEAL.INPUT.LENGTH \10MB.COLLECTSTATS \MACHINETYPE \10MBPACKETLENGTH \IOCBFREELIST))) (ACCESSFNS 10MBENCAPSULATION ((10MBBASE (LOCF (fetch (ETHERPACKET EPENCAPSULATION) of DATUM))) ( 10MBDESTNSADDRESSBASE (PROGN (* ; "This is a pseudo-field. There isn't really an NS address here, but you can fetch the host fields of it." ) (\ADDBASE DATUM (SUB1 (INDEXF (fetch (ETHERPACKET EPENCAPSULATION) of DATUM))))))) (BLOCKRECORD 10MBBASE ((10MBLENGTH WORD) (* ; "Length of packet in words, starting at the next word. Not part of the actual packet; it is here for convenience" ) (10MBDESTHOST0 3 WORD) (* ; "Immediate destination host") (10MBSOURCEHOST0 3 WORD) (* ; "Us") ( 10MBTYPE WORD) (* ; "Type of packet -- PUP, NS")) (BLOCKRECORD 10MBBASE ((NIL WORD) (* ; "Length") ( NIL BITS 7) (10MBMULTICASTP FLAG) (NIL BITS 8) (* ; "Lo bit of first destination byte is the multicast bit"))) (ACCESSFNS 10MBDESTHOST0 ((10MBDESTHOST ( \LOADNSHOSTNUMBER (LOCF DATUM)) (\STORENSHOSTNUMBER (LOCF DATUM) NEWVALUE)) (10MBPACKETBASE (LOCF DATUM)) (10MBDESTHOSTBASE (LOCF DATUM)))) (ACCESSFNS 10MBSOURCEHOST0 ((10MBSOURCEHOST ( \LOADNSHOSTNUMBER (LOCF DATUM)) (\STORENSHOSTNUMBER (LOCF DATUM) NEWVALUE)) (10MBSOURCEHOSTBASE (LOCF DATUM))))) (TYPE? (type? ETHERPACKET DATUM))) (RPAQQ \10MBHOST.WORDS 3) (RPAQQ \10MBENCAPSULATION.WORDS 7) (CONSTANTS \10MBHOST.WORDS \10MBENCAPSULATION.WORDS) (PUTPROPS \D0.CONTROLLERBITS MACRO ((NDB STATE) (* ;; "Returns a TASKREG argument for use with \DEVICE.INPUT / OUTPUT for controller's STATE reg, 0 <= STATE < 15; \D0.ETHERTASKNUMBER is a global set in initialization" ) (LOGOR (LLSH (fetch NDBTASK# of NDB) 4) STATE))) (PUTPROPS \D0.TURNOFFETHER MACRO (OPENLAMBDA (NDB) (\D0.STARTIO \D0.RESET.10MBCONTROLLER))) (PUTPROPS \DL.TURNOFFETHER MACRO (NIL (PROGN (\DEVICE.OUTPUT \DL.TURNOFFETHER \DL.ETHERINPUTREG) (to 3 repeatuntil (ZEROP (LOGAND (\DEVICE.INPUT \DL.ETHERSTATUSREG) (LOGOR \DL.INPUT.ENABLED \DL.OUTPUT.ENABLED))))))) (BLOCKRECORD D0ETHERCSB ((D0FIRSTOCB WORD) (* ; "Short pointer to first OCB") (D0OUTPUTMASK WORD) (* ; "Bit mask for output interrupt") (D0INPUTMASK WORD) (* ; "Bit mask for input interrupt") ( D0MISSEDPACKETS WORD) (* ; "Count of missed packets (for debugging)") (D0FIRSTICB WORD) (* ; "Short pointer to first ICB") (D0LOCALHOST0 WORD) (* ; "Address we are listening for, 48d bits") ( D0LOCALHOST1 WORD) (D0LOCALHOST2 WORD) (D0UCODESCRATCH 4 WORD) (* ; "Scratch buffer for microcode") ( D0LASTICB WORD) (* ; "Short pointer to last ICB if D0FIRSTICB non-null; not used by microcode") ( D0LASTOCB WORD) (* ; "last OCB if D0FIRSTOCB non-null") (D0CSBSPARE 2 WORD))) (BLOCKRECORD D0ETHERIOCB ((D0NEXTIOCB WORD) (* ; "Short pointer to next one") (D0RETRANSMISSIONMASK WORD) (* ; "Retransmission mask, output only") (NIL WORD) (D0IOCBSTATUS WORD) (* ; "Completion code, filled in by microcode task") (D0IOCBBYTESUSED WORD) (* ; "Number of bytes received" ) (D0IOCBLENGTH WORD) (* ; "Length of buffer in bytes") (D0IOCBBUFFERLO WORD) (* ; "Long pointer to buffer. Must be locked and quad-1 aligned") (D0IOCBBUFFERHI WORD)) (ACCESSFNS D0ETHERIOCB ((D0IOCBBUFFER (\VAG2 (fetch D0IOCBBUFFERHI of DATUM) (fetch D0IOCBBUFFERLO of DATUM)) ( PROGN (replace D0IOCBBUFFERHI of DATUM with (\HILOC NEWVALUE)) (replace D0IOCBBUFFERLO of DATUM with ( \LOLOC NEWVALUE))))))) (BLOCKRECORD DLETHERCSB ((DLLOCALHOST0 WORD) (* ; "Address we are listening for, 48d bits") ( DLLOCALHOST1 WORD) (DLLOCALHOST2 WORD) (DLFIRSTICB WORD) (* ; "Short pointer to first ICB") ( DLINPUTMASK WORD) (* ; "Bit mask for input interrupt") (DLFIRSTOCB WORD) (* ; "Short pointer to first OCB") (DLOUTPUTMASK WORD) (* ; "Bit mask for output interrupt") ( DLMISSEDPACKETS WORD) (* ; "Count of missed packets (for debugging)") (DLLASTICB WORD) (* ; "Short pointer to last ICB if DLFIRSTICB non-null; not used by microcode") (DLLASTOCB WORD) (* ; "last OCB if DLFIRSTOCB non-null"))) (BLOCKRECORD DLETHERIOCB ((DLIOCBLENGTH WORD) (* ; "Length of buffer in bytes") (DLIOCBBUFFERLO WORD) (* ; "Long pointer to buffer. Must be locked and quad-1 aligned") (DLIOCBBUFFERHI WORD) ( DLRETRANSMISSIONMASK WORD) (* ; "Retransmission mask, output only") (DLIOCBBYTESUSED WORD) (* ; "Number of bytes received") (DLIOCBSTATUS WORD) (* ; "Completion code, filled in by microcode task") ( DLNEXTIOCB WORD) (* ; "Short pointer to next one") (DLFOROUTPUTUSE WORD) (* ; "Not used by microcode") ) (ACCESSFNS DLETHERIOCB ((DLIOCBBUFFER (\VAG2 (fetch DLIOCBBUFFERHI of DATUM) (fetch DLIOCBBUFFERLO of DATUM)) (PROGN (replace DLIOCBBUFFERHI of DATUM with (\HILOC NEWVALUE)) (replace DLIOCBBUFFERLO of DATUM with (\LOLOC NEWVALUE))))))) (RPAQQ \D0.ENABLE.10MBINPUT 49152) (RPAQQ \D0.ENABLE.10MBOUTPUT 192) (RPAQQ \D0.RESET.10MBCONTROLLER 512) (RPAQQ \D0.INPUTSTATE 1) (RPAQQ \D0.OUTPUTSTATE 2) (RPAQQ \CSB.LENGTH 16) (RPAQQ \IOCB.LENGTH 8) (RPAQQ \MIN2PAGEBUFLENGTH 232) (RPAQQ \10MB.MINPACKETLENGTH 30) (CONSTANTS (\D0.ENABLE.10MBINPUT 49152) (\D0.ENABLE.10MBOUTPUT 192) (\D0.RESET.10MBCONTROLLER 512) ( \D0.INPUTSTATE 1) (\D0.OUTPUTSTATE 2) (\CSB.LENGTH 16) (\IOCB.LENGTH 8) (\MIN2PAGEBUFLENGTH 232) ( \10MB.MINPACKETLENGTH 30)) (RPAQQ DLIONETHERCONSTANTS ((\DL.ETHERINPUTREG 5) (\DL.ETHEROUTPUTREG 12) (\DL.ETHERSTATUSREG 1) ( \DL.TURNOFFETHER 2) (\DL.ENABLE.OUTPUT 1) (\DL.ENABLE.INPUT 1) (\DL.INPUT.ENABLED 1024) ( \DL.OUTPUT.ENABLED 256))) (RPAQQ \DL.ETHERINPUTREG 5) (RPAQQ \DL.ETHEROUTPUTREG 12) (RPAQQ \DL.ETHERSTATUSREG 1) (RPAQQ \DL.TURNOFFETHER 2) (RPAQQ \DL.ENABLE.OUTPUT 1) (RPAQQ \DL.ENABLE.INPUT 1) (RPAQQ \DL.INPUT.ENABLED 1024) (RPAQQ \DL.OUTPUT.ENABLED 256) (CONSTANTS (\DL.ETHERINPUTREG 5) (\DL.ETHEROUTPUTREG 12) (\DL.ETHERSTATUSREG 1) (\DL.TURNOFFETHER 2) ( \DL.ENABLE.OUTPUT 1) (\DL.ENABLE.INPUT 1) (\DL.INPUT.ENABLED 1024) (\DL.OUTPUT.ENABLED 256)) (RPAQQ ETHERSTATUSCONSTANTS ((\ES.PENDING 0) (\ES.GOOD.PACKET 1) (\ES.PACKET.TOO.LONG 2) (\ES.BAD.CRC 3) (\ES.BAD.CRC&ALIGNMENT 4) (\ES.BAD.ALIGNMENT 5) (\ES.OVERRUN 6) (\ES.TOO.MANY.COLLISIONS 7) ( \ES.UNDERRUN 8) (\ES.LATE.COLLISION 9) (\ES.OTHER.ERROR 10))) (RPAQQ \ES.PENDING 0) (RPAQQ \ES.GOOD.PACKET 1) (RPAQQ \ES.PACKET.TOO.LONG 2) (RPAQQ \ES.BAD.CRC 3) (RPAQQ \ES.BAD.CRC&ALIGNMENT 4) (RPAQQ \ES.BAD.ALIGNMENT 5) (RPAQQ \ES.OVERRUN 6) (RPAQQ \ES.TOO.MANY.COLLISIONS 7) (RPAQQ \ES.UNDERRUN 8) (RPAQQ \ES.LATE.COLLISION 9) (RPAQQ \ES.OTHER.ERROR 10) (CONSTANTS (\ES.PENDING 0) (\ES.GOOD.PACKET 1) (\ES.PACKET.TOO.LONG 2) (\ES.BAD.CRC 3) ( \ES.BAD.CRC&ALIGNMENT 4) (\ES.BAD.ALIGNMENT 5) (\ES.OVERRUN 6) (\ES.TOO.MANY.COLLISIONS 7) ( \ES.UNDERRUN 8) (\ES.LATE.COLLISION 9) (\ES.OTHER.ERROR 10)) (RPAQQ D0ETHERSTATUSCONSTANTS ((\D0.BAD.ALIGNMENT 2048) (\D0.INPUT.OVERRUN 1024) (\D0.INPUT.BAD.PACKET 512) (\D0.INPUT.BAD.CRC 256) (\D0.OUTPUT.UNDERRUN 64) (\D0.COLLISION 32) (\D0.OUTPUT.BAD.PARITY 128) (\D0.OUTPUT.FAULT 16) (\D0.GOOD.PACKET 16384) (\D0.PACKET.TOO.LONG 25088) (\D0.TOO.MANY.COLLISIONS 25600) (\D0.LATE.COLLISION 26112) (\D0.BUFFER.TOO.SHORT 26624))) (RPAQQ \D0.BAD.ALIGNMENT 2048) (RPAQQ \D0.INPUT.OVERRUN 1024) (RPAQQ \D0.INPUT.BAD.PACKET 512) (RPAQQ \D0.INPUT.BAD.CRC 256) (RPAQQ \D0.OUTPUT.UNDERRUN 64) (RPAQQ \D0.COLLISION 32) (RPAQQ \D0.OUTPUT.BAD.PARITY 128) (RPAQQ \D0.OUTPUT.FAULT 16) (RPAQQ \D0.GOOD.PACKET 16384) (RPAQQ \D0.PACKET.TOO.LONG 25088) (RPAQQ \D0.TOO.MANY.COLLISIONS 25600) (RPAQQ \D0.LATE.COLLISION 26112) (RPAQQ \D0.BUFFER.TOO.SHORT 26624) (CONSTANTS (\D0.BAD.ALIGNMENT 2048) (\D0.INPUT.OVERRUN 1024) (\D0.INPUT.BAD.PACKET 512) ( \D0.INPUT.BAD.CRC 256) (\D0.OUTPUT.UNDERRUN 64) (\D0.COLLISION 32) (\D0.OUTPUT.BAD.PARITY 128) ( \D0.OUTPUT.FAULT 16) (\D0.GOOD.PACKET 16384) (\D0.PACKET.TOO.LONG 25088) (\D0.TOO.MANY.COLLISIONS 25600) (\D0.LATE.COLLISION 26112) (\D0.BUFFER.TOO.SHORT 26624)) (RPAQQ DLETHERSTATUSCONSTANTS ((\DL.COLLISION 64) (\DL.UNDERRUN 32) (\DL.BAD.ALIGNMENT 16) ( \DL.OVERRUN 8) (\DL.BAD.CRC 4) (\DL.ODDLENGTH 2))) (RPAQQ \DL.COLLISION 64) (RPAQQ \DL.UNDERRUN 32) (RPAQQ \DL.BAD.ALIGNMENT 16) (RPAQQ \DL.OVERRUN 8) (RPAQQ \DL.BAD.CRC 4) (RPAQQ \DL.ODDLENGTH 2) (CONSTANTS (\DL.COLLISION 64) (\DL.UNDERRUN 32) (\DL.BAD.ALIGNMENT 16) (\DL.OVERRUN 8) (\DL.BAD.CRC 4) (\DL.ODDLENGTH 2)) (RPAQQ \MAXLLBUFFERPAGES 2) (RPAQQ \MINLLBUFFERPAGES 1) (RPAQQ \MAXIOCBS 64) (RPAQQ \10MB.MAX.INPUT.LENGTH 20) (CONSTANTS (\MAXLLBUFFERPAGES 2) (\MINLLBUFFERPAGES 1) (\MAXIOCBS 64) (\10MB.MAX.INPUT.LENGTH 20)) (PUTPROPS 10MBDECLS COPYRIGHT ("Venue & Xerox Corporation" 1986 1988 1990)) NIL