(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "16-May-90 16:04:03" {DSK}<usr>local>lde>lispcore>sources>DOVEETHERDECLS.;2 14397  

      changes to%:  (VARS DOVEETHERDECLSCOMS)

      previous date%: "17-Dec-86 18:38:00" {DSK}<usr>local>lde>lispcore>sources>DOVEETHERDECLS.;1)


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

(PRETTYCOMPRINT DOVEETHERDECLSCOMS)

(RPAQQ DOVEETHERDECLSCOMS
       ((FILES MESATYPES)
        (RECORDS Dove.EtherSCB)
        (RECORDS Dove.EtherAddr Dove.EtherConfigure Dove.EtherDumpStatus Dove.EtherFCB 
               Dove.Etheri586Status Dove.EtherIOCB Dove.EtherCommandIOCB Dove.EtherIOIOCB 
               Dove.EtherMulticastAddr Dove.EtherTransmit Dove.RxBufferDesc Dove.RxFrameDesc 
               Dove.TimeDomainRFL)
        (FUNCTIONS \DoveEther.DoOutput)
        (CONSTANTS \DoveEther.MulticastAddr \DoveEther.QueuePtrSize \DoveEther.ClientConditionSize 
               \DoveEther.IOIOCBLength \DoveEther.RequestON \DoveEther.RequestOFF)
        (CONSTANTS * DoveEther.IOCBTypes)
        (CONSTANTS * DoveEther.ActionCommands)))

(FILESLOAD MESATYPES)
(DECLARE%: EVAL@COMPILE

(MESARECORD Dove.EtherSCB ((stat BITS 4)
                               (NIL BITS 1)
                               (cus BITS 3)                  (* command unit status)
                               (NIL BITS 1)
                               (rus BITS 3)                  (* receive unit status)
                               (NIL BITS 4)
                               (ack BITS 4)                  (* acknowledge int)
                               (NIL BITS 1)
                               (cuc BITS 3)                  (* command unit command)
                               (reset FLAG)
                               (ruc BITS 3)                  (* receive unit command)
                               (NIL BITS 4)
                               (cblOffset WORD)
                               (rfaOffset WORD)
                               (crcErrs WORD)
                               (alnErrs WORD)
                               (rscErrs WORD)
                               (ovrnErrs WORD)))
)
(DECLARE%: EVAL@COMPILE

(BLOCKRECORD Dove.EtherAddr ((id 3 WORD)))

(MESARECORD Dove.EtherConfigure ((NIL BITS 4)
                                     (ByteCount BITS 4)
                                     (NIL BITS 4)
                                     (FifoLimit BITS 4)
                                     (SaveBadFrames FLAG)
                                     (SyncReady FLAG)
                                     (NIL BITS 6)
                                     (ExternalLoopBack FLAG)
                                     (InternalLoopBack FLAG)
                                     (PreambleLength BITS 2)
                                     (AddrTypeLoc BITS 1)
                                     (AddrLength BITS 3)
                                     (ExpBackoffMethod BITS 1)
                                     (AccContRes BITS 3)
                                     (NIL BITS 1)
                                     (LinearPolarity BITS 3)
                                     (InterframeSpacing BYTE)
                                     (SlotTimeLow BYTE)
                                     (RetryNumber BITS 4)
                                     (NIL BITS 1)
                                     (SlotTimeHigh BITS 3)
                                     (Padding FLAG)
                                     (BitStuffing FLAG)
                                     (CRC16 FLAG)
                                     (NoCRCInsertion FLAG)
                                     (TxNoCRS FLAG)
                                     (NRZEncoding FLAG)
                                     (BroadcastDisable FLAG)
                                     (PromiscuousMode FLAG)
                                     (InternalCDT FLAG)
                                     (CDTFilter BITS 3)
                                     (InternalCRS FLAG)
                                     (CRSFilter BITS 3)
                                     (MinFrameLength BYTE)
                                     (NIL BYTE)))

(BLOCKRECORD Dove.EtherDumpStatus ((Buffer WORD)))

(MESARECORD Dove.EtherFCB ((mesaOutQueue Dove.QueueBlock)
                               (mesaInQueue Dove.QueueBlock)
                               (mesaClientStateRequest WORD)
                               (scb Dove.EtherSCB)
                               (etherOutWorkMask WORD)
                               (etherInWorkMask WORD)
                               (etherLockMask WORD)
                               (mesaInClientState WORD)
                               (mesaOutClientState WORD)))

(BLOCKRECORD Dove.Etheri586Status ((completion FLAG)
                                       (busy FLAG)
                                       (okay FLAG))
                                      (BLOCKRECORD Dove.Etheri586Status ((NIL BITS 3)
                                                             (* receiveframe variant)
                                                                         (unused FLAG)
                                                                         (crcErr FLAG)
                                                                         (alnErr FLAG)
                                                                         (rscErr FLAG)
                                                                         (ovrnErr FLAG)
                                                                         (frameTooShort FLAG)
                                                                         (noEOFFlag FLAG)
                                                                         (NIL BITS 6)))
                                      (BLOCKRECORD Dove.Etheri586Status ((NIL BITS 3)
                                                             (* command variant.
                                                           Mainly for transmit)
                                                                         (aborted FLAG)
                                                                         (NIL FLAG)
                                                                         (noCRS FLAG)
                                                                         (lossOfCTS FLAG)
                                                                         (underrun FLAG)
                                                                         (deferred FLAG)
                                                                         (sqeTest FLAG)
                                                                         (tooManyCollisions FLAG)
                                                                         (NIL BITS 1)
                                                                         (collisions BITS 4))))

(MESARECORD Dove.EtherIOCB ((next Dove.OpieAddress)      (* Next IOCB in IO queue)
                                (ClientCondition 3 WORD)     (* Gets notifed in Mesaland when IO 
                                                           is complete)
                                (i586Status WORD)            (* Status from the Dove ethernet 
                                                           coprocessor)
                                (Status BYTE)                (* IO status?)
                                (IOCBType BITS 4)            (* What type of IO operation is 
                                                           this?)
                                (Action BITS 4)              (* Used only for Command variant)
                                )
                               [ACCESSFNS ((nextIOCB (fetch (Dove.OpieAddress LispPointer)
                                                        of (fetch (Dove.EtherIOCB next)
                                                                  of DATUM))
                                                  (replace (Dove.OpieAddress LispPointer)
                                                     of (fetch (Dove.EtherIOCB next)
                                                               of DATUM) with NEWVALUE]
                               (BLOCKRECORD Dove.EtherIOCB ((NIL 6 WORD)
                                                            (done FLAG)
                                                            (handled FLAG)
                                                            (okay FLAG)
                                                            (frameTooLong FLAG)
                                                            (interruptTimeout FLAG)
                                                            (NIL BITS 2)
                                                            (isDequeued FLAG))))

(MESARECORD Dove.EtherCommandIOCB ((iocbCommon Dove.EtherIOCB)
                                       (select 7 WORD)))

(MESARECORD Dove.EtherIOIOCB ((iocbCommon Dove.EtherIOCB)
                                  (address Dove.OpieAddress)
                                  (length WORD)
                                  (count WORD))
                                 [ACCESSFNS ((bufferAddress (fetch (Dove.OpieAddress LispPointer)
                                                               of (fetch (Dove.EtherIOIOCB
                                                                                  address)
                                                                         of DATUM))
                                                    (replace (Dove.OpieAddress LispPointer)
                                                       of (fetch (Dove.EtherIOIOCB address)
                                                                 of DATUM) with NEWVALUE])

(BLOCKRECORD Dove.EtherMulticastAddr ((ByteCount WORD)
                                          (MulticastID1 3 WORD)
                                          (MulticastID2 3 WORD)))

(BLOCKRECORD Dove.EtherTransmit ((BdPtr WORD)
                                     (DestAddr 3 WORD)
                                     (Type WORD)))

(BLOCKRECORD Dove.RxBufferDesc ((EndOfFrame FLAG)
                                    (Filled FLAG)
                                    (ActualCount BITS 14)
                                    (Next WORD)
                                    (BufAddrIOPReal WORD)
                                    (EndOfList FLAG)
                                    (Unused FLAG)
                                    (Size BITS 14)))

(BLOCKRECORD Dove.RxFrameDesc ((Status WORD)
                                   (EndOfList FLAG)
                                   (Suspend FLAG)
                                   (NIL BITS 14)
                                   (Link WORD)
                                   (BDPtr WORD)
                                   (DestAddr 3 WORD)
                                   (SourceAddr 3 WORD)
                                   (Type WORD)))

(BLOCKRECORD Dove.TimeDomainRFL ((LinkOK FLAG)
                                     (XcvrProblem FLAG)
                                     (Open FLAG)
                                     (Short FLAG)
                                     (NIL FLAG)
                                     (Time BITS 11)))
)

(DEFMACRO \DoveEther.DoOutput (IOCB)
   `(PROGN (\DoveEther.Initiate ,IOCB)
           (until (fetch (Dove.EtherIOCB done) of ,IOCB))
           (\DoveEther.DeQueue (fetch (Dove.EtherFCB mesaOutQueue) of \DoveEther.FCBPointer)
                  ,IOCB)
           (fetch (Dove.EtherIOCB okay) of ,IOCB)))
(DECLARE%: EVAL@COMPILE 

(RPAQQ \DoveEther.MulticastAddr 3)

(RPAQQ \DoveEther.QueuePtrSize 6)

(RPAQQ \DoveEther.ClientConditionSize 3)

(RPAQQ \DoveEther.IOIOCBLength 11)

(RPAQQ \DoveEther.RequestON 1)

(RPAQQ \DoveEther.RequestOFF 0)


(CONSTANTS \DoveEther.MulticastAddr \DoveEther.QueuePtrSize \DoveEther.ClientConditionSize 
       \DoveEther.IOIOCBLength \DoveEther.RequestON \DoveEther.RequestOFF)
)

(RPAQQ DoveEther.IOCBTypes ((DoveEther.commandIOCBType 0)
                                (DoveEther.outputIOCBType 1)
                                (DoveEther.resetIOCBType 2)
                                (DoveEther.startRUIOCBType 3)
                                (DoveEther.inputIOCBType 15)))
(DECLARE%: EVAL@COMPILE 

(RPAQQ DoveEther.commandIOCBType 0)

(RPAQQ DoveEther.outputIOCBType 1)

(RPAQQ DoveEther.resetIOCBType 2)

(RPAQQ DoveEther.startRUIOCBType 3)

(RPAQQ DoveEther.inputIOCBType 15)


(CONSTANTS (DoveEther.commandIOCBType 0)
       (DoveEther.outputIOCBType 1)
       (DoveEther.resetIOCBType 2)
       (DoveEther.startRUIOCBType 3)
       (DoveEther.inputIOCBType 15))
)

(RPAQQ DoveEther.ActionCommands ((DoveEther.actionNop 0)
                                     (DoveEther.actionIndividualAddr 1)
                                     (DoveEther.actionConfigure 2)
                                     (DoveEther.actionMulticastAddr 3)
                                     (DoveEther.actionTransmit 4)
                                     (DoveEther.actionTimeDomainRfl 5)
                                     (DoveEther.actionDumpStatus 6)
                                     (DoveEther.actionDiagnose 7)))
(DECLARE%: EVAL@COMPILE 

(RPAQQ DoveEther.actionNop 0)

(RPAQQ DoveEther.actionIndividualAddr 1)

(RPAQQ DoveEther.actionConfigure 2)

(RPAQQ DoveEther.actionMulticastAddr 3)

(RPAQQ DoveEther.actionTransmit 4)

(RPAQQ DoveEther.actionTimeDomainRfl 5)

(RPAQQ DoveEther.actionDumpStatus 6)

(RPAQQ DoveEther.actionDiagnose 7)


(CONSTANTS (DoveEther.actionNop 0)
       (DoveEther.actionIndividualAddr 1)
       (DoveEther.actionConfigure 2)
       (DoveEther.actionMulticastAddr 3)
       (DoveEther.actionTransmit 4)
       (DoveEther.actionTimeDomainRfl 5)
       (DoveEther.actionDumpStatus 6)
       (DoveEther.actionDiagnose 7))
)
(PUTPROPS DOVEETHERDECLS COPYRIGHT ("Venue & Xerox Corporation" 1986 1990))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL)))
STOP
