DIRECTORY DiskFace USING [Type], 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]; CoreFetchAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [ page: CorePage, flags: Flag, data: Page]; diskAddressSetRequest: PupTypes.PupType = LOOPHOLE[302B]; DiskAddressSetRequest: TYPE = MACHINE DEPENDENT RECORD [ page: DiskPage, device: DiskFace.Type, deviceOrdinal: CARDINAL]; 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]; DiskStoreAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [ label: Label, garbage: ARRAY [0..0) OF UNSPECIFIED]; diskFetchRequest: PupTypes.PupType = LOOPHOLE[304B]; DiskFetchAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [ label: Label, data: Page]; go: PupTypes.PupType = LOOPHOLE[202B]; goReply: PupTypes.PupType = LOOPHOLE[203B]; noLabel: Label = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; vacantFlag: Flag = 60000B; -- writeProtected+dirty=vacant teleSwatSocket: PupTypes.PupSocketID = [0, 60B]; 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..... pTeledebugProtocol Forrest April 10, 1980 12:13 PM Copyright c 1985 by Xerox Corporation. All rights reserved. reply with vacant flag if failure (not mapped) server is free to ignore device and ordinal failure not possible reply with noLabel indicates failure. Garbage can be usefull for debugging 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 GoRequest, GoAcknowledgement: TYPE = RECORD [no contents]; GoAcknowledgementRequest: TYPE = RECORD [no contents]; no reply frome server Checks Ê"˜šœ™Jšœ ™ Jšœ Ïmœ1™<—J˜šÏk ˜ Jšœ žœ˜Jšœ žœ3˜AJ˜—Jšœž œž˜&J˜Jšœžœžœžœ˜)Jšœžœžœ˜Jš œžœžœ žœž œ˜+Jš œžœžœ žœžœ˜$J˜Jšœ$žœ˜3šœ%žœ˜4š œžœžœž œžœ˜3J˜)—š œžœžœž œžœ˜;JšœÏc&˜DJ˜——šœ%žœ˜4Jš œžœžœž œžœ˜CJšœ.™.š œžœžœž œžœ˜;J˜)J˜——Jšœ+™+šœ*žœ˜9š œžœžœž œžœ˜8Jšœ6žœ˜@—Jšœ™š œžœžœž œžœ˜@Jšœ6žœ˜@J˜——šœ%žœ˜4š œžœžœž œžœ˜3J˜—JšœK™Kš œžœžœž œžœ˜;Jšœžœžœž œ˜4J˜——šœ%žœ˜4Jšœ.™.Jšœ~™~š œžœžœž œžœ˜;J˜J˜——šœžœ˜&Jšœ:™:J˜—šœžœ˜+Jšœ6™6Jšœ™J˜—J˜:JšœŸ˜:J˜0J˜Jšœ™Jšœ žœžœ)˜AJšœ žœ˜7Jšœ(žœ˜GJšœ žœ˜7Jšœ(žœ˜GJšœ%žœ˜AJšœ-žœ ˜QJšœ žœ˜7Jšœ(žœ˜GJšœ(žœ˜GJ˜Jšžœ˜J˜J˜—…— ¨: