-- TeledebugProtocol last edited by Forrest April 10, 1980 12:13 PM DIRECTORY DiskFace USING [Type], PupTypes: FROM "PupTypes" USING [maxDataWordsPerGatewayPup, PupType, PupSocketID]; TeledebugProtocol: DEFINITIONS = BEGIN CorePage, DiskPage: TYPE = LONG CARDINAL; Flag: TYPE = WORD; Label: TYPE = ARRAY [0..10) OF UNSPECIFIED; Page: TYPE = ARRAY [0..256) OF WORD; acknowledgement: PupTypes.PupType = LOOPHOLE[204B]; coreStoreRequest: PupTypes.PupType = LOOPHOLE[300B]; CoreStoreRequest: TYPE = MACHINE DEPENDENT RECORD [ page: CorePage, flags: Flag, data: Page]; CoreStoreAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [ page: CorePage, flags: Flag]; -- vacant flag if failure (not mapped) coreFetchRequest: PupTypes.PupType = LOOPHOLE[301B]; CoreFetchRequest: TYPE = MACHINE DEPENDENT RECORD [page: CorePage]; -- reply with vacant flag if failure (not mapped) CoreFetchAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [ page: CorePage, flags: Flag, data: Page]; -- server is free to ignore device and ordinal diskAddressSetRequest: PupTypes.PupType = LOOPHOLE[302B]; DiskAddressSetRequest: TYPE = MACHINE DEPENDENT RECORD [ page: DiskPage, device: DiskFace.Type, deviceOrdinal: CARDINAL]; -- failure not possible DiskAddressSetAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [ page: DiskPage, device: DiskFace.Type, deviceOrdinal: CARDINAL]; diskStoreRequest: PupTypes.PupType = LOOPHOLE[303B]; DiskStoreRequest: TYPE = MACHINE DEPENDENT RECORD [ label: Label, data: Page]; -- reply with noLabel indicates failure. Garbage can be usefull for debugging DiskStoreAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [ label: Label, garbage: ARRAY [0..0) OF UNSPECIFIED]; diskFetchRequest: PupTypes.PupType = LOOPHOLE[304B]; -- DiskFetchRequest: TYPE = RECORD [no contents]; -- If a disk fetch request comes by with contents size = diskAddressSet request, then set the disk address BEFORE doing the Fetch DiskFetchAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [ label: Label, data: Page]; go: PupTypes.PupType = LOOPHOLE[202B]; -- GoRequest, GoAcknowledgement: TYPE = RECORD [no contents]; goReply: PupTypes.PupType = LOOPHOLE[203B]; -- GoAcknowledgementRequest: TYPE = RECORD [no contents]; -- no reply frome server noLabel: Label = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; vacantFlag: Flag = 60000B; -- writeProtected+dirty=vacant teleSwatSocket: PupTypes.PupSocketID = [0, 60B]; -- Checks MaxSize: TYPE = CARDINAL [0..PupTypes.maxDataWordsPerGatewayPup]; coreStoreRequestSize: MaxSize = SIZE[CoreStoreRequest]; coreStoreAcknowledgementSize: MaxSize = SIZE[CoreStoreAcknowledgement]; coreFetchRequestSize: MaxSize = SIZE[CoreFetchRequest]; coreFetchAcknowledgementSize: MaxSize = SIZE[CoreFetchAcknowledgement]; diskAddressSetRequestSize: MaxSize = SIZE[DiskAddressSetRequest]; diskAddressSetAcknowledgementSize: MaxSize = SIZE[DiskAddressSetAcknowledgement]; diskStoreRequestSize: MaxSize = SIZE[DiskStoreRequest]; diskStoreAcknowledgementSize: MaxSize = SIZE[DiskStoreAcknowledgement]; diskFetchAcknowledgementSize: MaxSize = SIZE[DiskFetchAcknowledgement]; END.....