(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "16-May-90 11:35:37" {DSK}<usr>local>lde>lispcore>sources>10MBDECLS.;2 18593  

      changes to%:  (VARS 10MBDECLSCOMS)

      previous date%: "14-Apr-88 15:31:50" {DSK}<usr>local>lde>lispcore>sources>10MBDECLS.;1)


(* ; "
Copyright (c) 1986, 1988, 1990 by Venue & Xerox Corporation.  All rights reserved.
")

(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)))
(DECLARE%: EVAL@COMPILE

(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)))
)
(DECLARE%: EVAL@COMPILE 

(RPAQQ \10MBHOST.WORDS 3)

(RPAQQ \10MBENCAPSULATION.WORDS 7)


(CONSTANTS \10MBHOST.WORDS \10MBENCAPSULATION.WORDS)
)
(DECLARE%: EVAL@COMPILE 

(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
                                                                                             ])
)
(DECLARE%: EVAL@COMPILE

(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])
)
(DECLARE%: EVAL@COMPILE 

(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)))
(DECLARE%: EVAL@COMPILE 

(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)))
(DECLARE%: EVAL@COMPILE 

(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)))
(DECLARE%: EVAL@COMPILE 

(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)))
(DECLARE%: EVAL@COMPILE 

(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))
)
(DECLARE%: EVAL@COMPILE 

(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))
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY

(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)
)
(PUTPROPS 10MBDECLS COPYRIGHT ("Venue & Xerox Corporation" 1986 1988 1990))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL)))
STOP
