-- File: AltoEthernetDefs.mesa, Last Edit: HGM December 4, 1980 7:22 AM DIRECTORY Mopcodes USING [zSTARTIO], InlineDefs USING [BcplLongNumber]; AltoEthernetDefs: DEFINITIONS = BEGIN Byte: TYPE = [0..377B]; EthernetPost: TYPE = MACHINE DEPENDENT RECORD [ microcodeStatus: EthernetMicrocodeStatus, hardwareStatus: EthernetHardwareStatus]; ethernetNotPosted: EthernetPost = LOOPHOLE[0]; EthernetMicrocodeStatus: TYPE = MACHINE DEPENDENT{ inputDone(0), outputDone(1), inputBufferOverflow(2), outputLoadOverflow(3), zeroLengthBuffer(4), hardwareReset(5), interfaceBroken(6), last(377B)}; EthernetHardwareStatus: TYPE = RECORD [Byte]; hardwareAOK: EthernetHardwareStatus = [377B]; -- from bit 200 [unused,unused,inputDataLate,Collision -- ,CRCbad,InputIssued,OutputIssued,packetNoEndOnWord] EthernetDeviceBlockHandle: TYPE = POINTER TO EthernetDeviceBlock; EthernetDeviceBlock: TYPE = MACHINE DEPENDENT RECORD [ postData: EthernetPost, interruptBit: WORD, wordsLeft: CARDINAL, retransmissionMask: WORD, inputBuffer: WordBlockDescriptor, outputBuffer: WordBlockDescriptor, hostNumber: WORD, inputControlBlock: EthernetDeviceBlockHandle]; -- Only used by Special MicroCode WordBlockDescriptor: TYPE = MACHINE DEPENDENT RECORD [ count: CARDINAL, pointer: POINTER]; NIL0: POINTER = LOOPHOLE[0]; -- hardware end tests StartIO: PROCEDURE [SioParameter] = MACHINE CODE BEGIN Mopcodes.zSTARTIO END; SioParameter: TYPE = RECORD [WORD]; -- Standard Ethernet board standardEthernet: EthernetDeviceBlockHandle = LOOPHOLE[600B]; standardReset: SioParameter = [standardInput + standardOutput]; standardInput: SioParameter = [2]; standardOutput: SioParameter = [1]; -- Second Ethernet board secondEthernet: EthernetDeviceBlockHandle = LOOPHOLE[630B]; secondReset: SioParameter = [secondInput + secondOutput]; secondInput: SioParameter = [2*4]; secondOutput: SioParameter = [1*4]; -- Third Ethernet board thirdEthernet: EthernetDeviceBlockHandle = LOOPHOLE[642B]; thirdReset: SioParameter = [thirdInput + thirdOutput]; thirdInput: SioParameter = [2*4*4]; thirdOutput: SioParameter = [1*4*4]; -- Stats info for GateControl ethernetStatsReply: WORD = 1; EtherStatsEntry: TYPE = RECORD [ version: WORD, packetsSent: InlineDefs.BcplLongNumber, badSendSatus: InlineDefs.BcplLongNumber, overruns: InlineDefs.BcplLongNumber, packetsRecv: InlineDefs.BcplLongNumber, badRecvStatus: InlineDefs.BcplLongNumber, inputOff: InlineDefs.BcplLongNumber, loadTable: ARRAY [0..16] OF InlineDefs.BcplLongNumber]; etherVersion: WORD = 1; -- This is the way it is stored internally EtherStatsInfo: TYPE = RECORD [ packetsSent: LONG CARDINAL _ 0, wordsSent: LONG CARDINAL _ 0, badSendSatus: LONG CARDINAL _ 0, overruns: LONG CARDINAL _ 0, packetsRecv: LONG CARDINAL _ 0, wordsRecv: LONG CARDINAL _ 0, badRecvStatus: LONG CARDINAL _ 0, inputOff: LONG CARDINAL _ 0, loadTable: ARRAY [0..16] OF LONG CARDINAL _ ALL[0]]; END.