-- TeledebugProtocol last edited by Forrest April 10, 1980 12:13 PM
DIRECTORY
Device: FROM "Device" 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: Device.Type, deviceOrdinal: CARDINAL];
-- failure not possible
DiskAddressSetAcknowledgement: TYPE = MACHINE DEPENDENT RECORD [
page: DiskPage, device: Device.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.....