-- Communication.pack, last editted by Andrew Birrell on August 30, 1982 10:15 am
-- Communication.pack, last editted by BLyon, on March 21, 1981 12:42 PM
-- Communication.pack, last editted by HGM, on March 14, 1981 6:44 PM
LowestCommLevels: SEGMENT =
BEGIN
CommunicationsCantSleep: CODE PACK =
BEGIN
-- this stuff is always doing sometihing when communications is on
DispatcherImpl [
MainDispatcher, PutOnGlobalInputQueue, PutOnGlobalDoneQueue, DummyInputer];
BufferMgr [
CreditReceiveOisBuffer, ReturnFreeBuffer, GetFreeBuffer, GetInputBuffer, Enqueue,
Dequeue];
RouterImpl [
ReceivePacket, DeliveredToLocalSocket, GetOisPacketTextLength, SetOisPacketLength,
SetOisPacketTextLength];
RoutingTableImpl [RoutingInformationPacket];
ChecksumsImpl [TestChecksum];
END;
EthernetCantSleep: CODE PACK =
BEGIN
-- this stuff is always active if communications is turned on
EthernetDriver [
Watcher, SmashCSBs, DecapsulateBuffer, InInterrupt, InactiveReceiveAckOrRequest,
MaybeChangeNumberOfInputBuffers];
END;
EthernetOut: CODE PACK =
BEGIN
EthernetDriver [
OutInterrupt, EncapsulateOis, EncapsulatePup, ForwardBuffer, SendBuffer,
SendBufferInternal];
END;
EthernetTranslation: CODE PACK =
BEGIN
EthernetDriver [
ReceiveRequest, AddAddressPair, DeallocateEntry, Demon, SendRequest,
ReceiveAck, InactiveTranslate, Translate, FindEntry, RemoveEntry, AddEntry];
END;
EthernetOneCantSleep: CODE PACK =
BEGIN
-- this stuff is always active if communications is turned on
EthernetOneDriver [
Watcher, SmashCSBs, DecapsulateBuffer, InInterrupt, InactiveReceiveAck,
MaybeChangeNumberOfInputBuffers, ReturnBuffer--RPC--];
END;
EthernetOneOut: CODE PACK =
BEGIN
EthernetOneDriver [
OutInterrupt, EncapsulatePup, EncapsulateOis, ForwardBuffer,
SendBuffer, SendBufferInternal];
END;
EthernetOneTranslation: CODE PACK =
BEGIN
EthernetOneDriver [
AddAddressPair, DeallocateEntry, Demon, SendRequest, ReceiveAck, ReceiveRequest,
InactiveTranslate, Translate, FindEntry, RemoveEntry, AddEntry];
END;
PhonesHot: CODE PACK =
BEGIN
PhoneNetworkDriver [
FrameAny, OISFrameIt, PupFrameIt, TypeOfBuffer, SendFrame,
SendWait, TranslateChannelStatus, PreemptedSending, ForwardFrame,
Receiver, AwaitAndDisposeOfFrame, StatsNop, InterruptNop,
StatusChangeWait, ProcessStatusChange, StatIncr, StatBump,
EnqueueSend, Sender, DequeueSend];
END;
PhonesHalfDup: CODE PACK =
BEGIN
HalfDuplexImpl [
TimerProcess, WaitTimer, WaitToSend,
SendCompleted, CheckForTurnAround, NotifyOurTurnToSend,
AwaitCTS, SendLTA, ClearOurTurn, AwaitNoSending, StatIncr,
StatBump, MAIN, Initialize, Destroy, MilliSecondsToPulses];
END;
RoutingTableUpdaterAndWarm: CODE PACK =
BEGIN
-- this stuff is always active if communications is turned on.
-- there are three (odered in importance) criteria here:
-- 1) don’t use more than one page!
-- 2) get the normal workings of the RoutingTableUpdater in here.
-- 3) get the less common entry vectors in here if possible.
RoutingTableImpl [RoutingTableUpdater, FindNetworkNumber];
Boss [ChangeNumberOfInputBuffers, GetGiantVector];
PilotCommUtil [LockBuffers];
END;
ExchangeProtocol: CODE PACK =
BEGIN
PacketExchangeImpl [
SendRequestPacket, SendRequest, WaitForRequestPacket, WaitForRequest,
SendReplyPacket, SendReply, NotifySendCompleted];
END;
SocketsActive: CODE PACK =
BEGIN
BufferMgr [MaybeGetFreeBuffer];
PacketExchangeImpl [GetFreeSendPacket];
SocketImpl [GetPacket, PutPacket];
RouterImpl [SendPacket, SendErrorPacket];
RoutingTableImpl [
FindNetworkAndTransmit, FindDestinationRelativeNetID];
ChecksumsImpl [SetChecksum];
Boss [GetDeviceChain];
END;
INRAndMultinetBroadcast: CODE PACK =
BEGIN
DispatcherImpl [SendToNextNetwork];
SocketImpl [PutPacketToAllConnectedNets];
RouterImpl [SendBroadcastPacketToCorrectNet, BroadcastThisPacket];
RoutingTableImpl [
RoutingTableCacheFault, InternetRouterServer, SendRoutingInfoResponse,
ForwardPacket];
ChecksumsImpl [IncrOisTransportControlAndUpdateChecksum];
END;
SocketCreation: CODE PACK =
BEGIN
RouterImpl [AssignOisAddress, AddSocket, AssignDestinationRelativeOisAddress];
SocketImpl [
AssignNetworkAddress, Create, SetWaitTime, MilliSecondsToPulses, GetBufferPool];
PacketExchangeImpl [Create, CreateRequestor, CreateReplyer, SetWaitTime];
BufferMgr [QueueInitialize, MakeBufferPool];
PilotCommUtil [AllocateBuffers, AllocateIocbs];
END;
SocketDeletion: CODE PACK =
BEGIN
SocketImpl [Delete, Abort, Reset, GetStatus];
PacketExchangeImpl [Delete];
RouterImpl [RemoveSocket];
BufferMgr [
QueueCleanup, FreeBufferPool, DestroyBufferPoolLocked, EnqueueActiveBuffersOnly];
PilotCommUtil [FreeIocbs, FreeBuffers, UnlockBuffers];
END;
CommonCool: CODE PACK =
BEGIN
DispatcherImpl [
DummyAddDelete, DummyBroadcaster, DummyStateChanged, GetOisRouter];
BufferMgr [
DataWordsPerRawBuffer, DataWordsPerOisBuffer, DataWordsPerSppBuffer,
SendBuffersLeft, ReceiveBuffersLeft, ExtractFromQueue];
RouterImpl [
FindMyHostID, SetOisStormy, SetOisCheckit, SetOisDriverLoopback];
RoutingTableImpl [
AddNetwork, AddNetworkLocked, RemoveNetwork, RemoveNetworkLocked,
StateChanged, ProbeAnInternetRouter, FindNetwork, RemoveEntry, AddEntry];
END;
PhonesCool: CODE PACK =
BEGIN
PhoneNetworkDriver [
MAIN, ActivateTransporter, KillTransporter, CreatePhonePath, PreemptCleanup,
Initialize, Destroy, CreateSendReceiveProcesses, CheckPath,
RemoveSendReceiveProcesses, NotifySenderToGoAway, NotifyDialComplete,
WaitDialComplete];
PhoneNetworkImpl [
MAIN, FindPhonePath, KnowAboutPhonePath, ForgetAboutPhonePath,
AppendString];
END;
CommonCold: CODE PACK =
BEGIN
Boss [
AddDeviceToChain, RemoveDeviceFromChain, SmashDeviceChain, GetNthDevice,
GetNetworkID, SetNetworkID];
DispatcherImpl [SetOisRouter, SetSpyProc];
BufferMgr [
GetWordsPerIocb, GetBufferSize, BuffersLeft, EnumerateBuffersInPool,
AdjustBufferSize, SetWordsPerIocb];
EthernetOneDriver [
AdjustLengtoOfD0EthernetInputQueue, GetNthDeviceLikeMe,
EthernetOneListenForHost, GetRPCPackets, SetEthernetOneCollectGarbageToo,
SetCollectGarbageToo, SetEthernetOneListener];
EthernetDriver [
AdjustLengtoOfD0EthernetInputQueue, GetNthDeviceLikeMe, EthernetListenForHost,
SetEthernetCollectGarbageToo, SetCollectGarbageToo, SetEthernetListener];
RoutingTableImpl [SetRouterFunction, GetRouterFunction, EnumerateRoutingTable];
END;
CommunicationTurnOnTurnOff: CODE PACK =
BEGIN
-- start-up + finish-up procedures
CommunicationControl [OiscpPackageMake, OiscpPackageDestroy];
Boss [OiscpPackageReady, CommPackageReady, CommPackageGo, CommPackageOff];
EthernetDriver [
MAIN, CreateDefaultEthernetDrivers, CreateAnEthernetDriver, SetupEthernetDriver,
ActivateDriver, DeactivateDriver, DeleteDriver];
EthernetOneDriver [
MAIN, CreateDefaultEthernetOneDrivers, CreateAnEthernetOneDriver,
SetupEthernetOneDriver, ActivateDriver, DeactivateDriver, DeleteDriver];
PilotCommUtil [Zero];
DispatcherImpl [DispatcherOn, DispatcherOff];
RouterImpl [OisRouterOn, OisRouterOff];
RoutingTableImpl [RoutingTableOn, RoutingTableOff];
SocketImpl [SocketOn];
END;
CommunicationDeepFreeze: CODE PACK =
BEGIN
-- in order of STARTs
CommunicationControl [
MAIN, InitializeCommunication, StartupCommunication];
PilotCommUtil [MAIN, CaptureErrors, DefaultErrorHandler, Glitch];
PacketExchangeImpl [LostBuffer];
Boss [MAIN];
BufferMgr [MAIN];
DispatcherImpl [MAIN];
ChecksumsImpl [MAIN];
RouterImpl [MAIN];
RoutingTableImpl [MAIN];
SocketImpl [MAIN];
PacketExchangeImpl [MAIN];
END;
DevelopmentStuff: CODE PACK =
BEGIN
BufferMgr [GetFreePupBuffer, GetClumpOfPupBuffers, DataWordsPerPupBuffer];
StatsHot [MAIN, StatGetCounter, StatIncr, StatBump];
RouterImpl [PacketHit];
DispatcherImpl [GetPupRouter, SetPupRouter];
PilotCommUtil [SecondsToTocks, MsToTocks];
END;
ShitCan: CODE PACK =
BEGIN
Boss [GetDoStats, GetUseCount];
ChecksumsImpl [SlowlyComputeChecksum];
PilotCommUtil [FriendOfCopyLong];
PilotCommUtilPup;
END;
END;
HighCommLevels: SEGMENT =
BEGIN
HotAndEVs: CODE PACK =
BEGIN
PacketStreamInstance [
SendSystemPacket, PutPacketOnSocketChannel,
EnqueueTransmittedPacketAppropriately];
END;
RetransmitAndReceive: CODE PACK =
BEGIN
PacketStreamInstance [
Retransmitter, Receiver, GotSequencedPacket,
AttentionPacketProcessed, UpdateAttnSeqTable,
GotErrorPacket];
END;
InOut: CODE PACK =
BEGIN
PacketStreamInstance [
TakeFromUser, GetForUser, WaitForAttention, ReturnGetSppDataBuffer];
NetworkStreamInstance [
SendNow, PutBlock, PutByte, PutWord, SetSST, SendAttention,
FlushOutputBuffer, GetByte, GetWord, GetBlock, WaitAttention];
END;
Cool: CODE PACK =
BEGIN
PacketStreamInstance [
MAIN, SetWaitTime, SuspendStream, SuspendStreamLocked,
FindAddresses, GetSenderSizeLimit, EstablishThisConnection,
ActivelyEstablish, WaitUntilEstablished, Delete, MilliSecondsToPulses];
PacketStreamMgr [
MAIN, Make, Destroy, GetUniqueConnectionID, InsertIntoConnectionTable,
RemoveFromConnectionTable, ConnectionAlreadyThere];
NetworkStreamInstance [MAIN, Delete];
NetworkStreamMgr [
MAIN, Create, AssignNetworkAddress, FindAddresses, SetWaitTime,
CreateListener, DeleteListener, CreateTransducer, Close, CloseReply,
Listen];
END;
TheEchoServer: CODE PACK =
BEGIN
EchoServerImpl [MAIN, CreateServer, DeleteServer, EchoServer];
END;
END;
CommunicationAlwaysActiveFrames: FRAME PACK =
BEGIN
Communication.BufferMgr;
Communication.Level0 [EthernetDriver, DispatcherImpl];
Communication.Level1;
END;
CommunicationHotFrames: FRAME PACK =
BEGIN
Communication.Level2 [
PacketStreamMgr, NetworkStreamMgr, PacketStreamInstance, NetworkStreamInstance];
END;
CommunicationOtherFrames: FRAME PACK =
BEGIN
Communication.PilotCommUtil;
Communication.PilotCommUtilPup;
Communication.Boss;
Communication.CommunicationControl;
Communication.Level0 [PhoneNetworkDriver, PhoneNetworkImpl, HalfDuplexImpl];
Communication.Level2 [EchoServerImpl];
Communication.Level2 [PacketExchangeImpl];
END;
CommunicationDevelopementEnvironment: FRAME PACK =
BEGIN
Communication.StatsHot;
Communication.Level0 [EthernetOneDriver];
END;