// PupAlEth.decl -- declarations specific to Alto Ethernet // Copyright Xerox Corporation 1979, 1980 // Last modified March 9, 1980 5:27 PM by Taft manifest [ // An Ethernet packet type, in second word of Ether Packets typePup = 1000b // I'm a Pup in an Ether packet etherStatsVersion = 1 // Error codes ecNoEthernetInterface = 2230 ecBadEtherStatus = 2231 ecZeroHostAddress = 2232 ] //---------------------------------------------------------------------------- structure EtherPBI: // Ethernet encapsulation: //---------------------------------------------------------------------------- [ blank word offset PBI.pup/16-2 dest byte // destination host address src byte // source host address type word // packet type ] // ensure consistency of constants defined in PupAlEtha.asm compileif offset PBI.packetLength/16 ne 6 % offset EtherPBI.dest/16 ne 7 % offset EtherPBI.type/16 ne 8 % offset PBI.pup.length/16 ne 9 then [ Error("Change PBI constants in PupAlEtha.asm") ] //---------------------------------------------------------------------------- structure EtherStats: // Ethernet Statistics //---------------------------------------------------------------------------- [ statsType word // = netTypeEther statsVersion word // = etherStatsVersion packetsSent word 2 numBadXmtStatus word 2 numOverRuns word 2 // input or output data late packetsRcvd word 2 numBadRcvStatus word 2 inputOff word 2 loadTable↑0,16 word 2 ] manifest lenEtherStats = size EtherStats/8 // *** in BYTES *** //---------------------------------------------------------------------------- structure EtherNDB: // Ethernet NDB //---------------------------------------------------------------------------- [ @NDB // standard portion // *** Update PupAlEtha.asm if the following is moved or rearranged *** lastEPLoc word // EPLoc for most recent interrupt lastEELoc word // EELoc for most recent interrupt lastEIB word // -> input PBI for most recent interrupt eIB word // -> input PBI or 0 if none eOB word // -> output PBI or 0 if none eState word // -1: xmting, 0: off, 1: rcving ePLoc word // -> Post location eBLoc word // -> Interrupt bit mask location eELoc word // -> EOT count location, Posted eLLoc word // -> Load location (mask) eICLoc word // -> Input count location eIPLoc word // -> Input pointer location eOCLoc word // -> Output count location eOPLoc word // -> Output pointer location eHLoc word // -> Host Address location outCmd word // SIO bits to start transmitter inCmd word // SIO bits to start receiver resetCmd word // SIO bits to reset hardware & firmware prolog word 7 = // machine code prolog for this interface [ asmProlog word 3 // prolog for asm interrupt code bcplProlog word 2 // prolog for bcpl interrupt code ndb word // -> this ndb save3 word // ac3 temp ] savedID word // -> saved interrupt dispatch stack word // ac2 temp // *** tTimer word // for timing out transmitter oQ: // device output queue [ head word tail word ] mask word // interrupt mask stats word = @EtherStats zone word // zone from which NDB allocated ctxQ word // ctxQ on which EtherFeeder ctx put feederCtx word // the EtherFeeder context ] manifest lenEtherNDB = size EtherNDB/16 compileif offset EtherNDB.stack/16 ne 40 then [ Error("Change NDB offsets in PupAlEtha.asm") ]