-- 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.....