TeledebugProtocol
Forrest April 10, 1980 12:13 PM
Copyright © 1985 by Xerox Corporation. All rights reserved.
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];
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.....