TeledebugProtocol.mesa
Forrest April 10, 1980 12:13 PM
Copyright © 1985 by Xerox Corporation. All rights reserved.
Hal Murray, June 3, 1986 4:12:10 pm PDT
DIRECTORY
Basics USING [bytesPerWord],
DiskFace USING [Type],
PupType USING [maxOldGatewayBytes];
TeledebugProtocol: DEFINITIONS = {
CorePage, DiskPage: TYPE = LONG CARDINAL;
Flag: TYPE = WORD;
Label: TYPE = ARRAY [0..10) OF UNSPECIFIED;
Page: TYPE = ARRAY [0..256) OF WORD;
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: 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: 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: 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: 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];
GoRequest, GoAcknowledgement: TYPE = RECORD [no contents];
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
Checks
MaxSize: TYPE = CARDINAL [0..PupType.maxOldGatewayBytes/Basics.bytesPerWord];
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];
}.....