RapunzelP2200V4ClientImpl.Mesa
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Generated by Willie-Sue.pa at April 9, 1987 4:58:20 pm PDT
using Sirocco [2.0] of January 31, 1987 1:52:42 am PST
DIRECTORY
CrRPC,
RapunzelP2200V4;
RapunzelP2200V4ClientImpl: CEDAR PROGRAM
IMPORTS CrRPC
EXPORTS RapunzelP2200V4 ~ {
OPEN RapunzelP2200V4;
Errors
Fault: PUBLIC FaultType ~ CODE;
GetErrorProc
GetError: CrRPC.GetErrorProc ~ {
SELECT errNum FROM
0 => {
code: FaultCode;
address: CARD32;
code ← VAL[CrRPC.GetCard16[s]];
address ← CrRPC.GetCard32[s];
ERROR Fault[code, address]
};
ENDCASE => {
ERROR CrRPC.Error[h, remoteError, "Unexpected Remote Error"];
};
};
Remote Procedures --
PokeSeqShort: PUBLIC PokeSeqShortType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, address];
MProc1[h, s, valueSeq];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~6 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PokeLong: PUBLIC PokeLongType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, address];
CrRPC.PutCard32[s, value];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~8 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
SetShftAddrs: PUBLIC SetShftAddrsType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, shftA];
CrRPC.PutCard32[s, shftB];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~10 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
DoCmds: PUBLIC DoCmdsType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
MProc2[h, s, cmdSeq];
};
GetResults: CrRPC.GetResultsProc ~ {
resultSeq ← UProc3[h, s];
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~9 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PeekSeqLong: PUBLIC PeekSeqLongType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, address];
CrRPC.PutCard16[s, count];
};
GetResults: CrRPC.GetResultsProc ~ {
resultSeq ← UProc4[h, s];
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~5 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PeekLong: PUBLIC PeekLongType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, address];
};
GetResults: CrRPC.GetResultsProc ~ {
result ← CrRPC.GetCard32[s];
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~7 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PeekSeqShort: PUBLIC PeekSeqShortType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, address];
CrRPC.PutCard16[s, count];
};
GetResults: CrRPC.GetResultsProc ~ {
resultSeq ← UProc5[h, s];
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~4 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PeekShort: PUBLIC PeekShortType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, address];
};
GetResults: CrRPC.GetResultsProc ~ {
result ← CrRPC.GetCard16[s];
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~1 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
WriteSequential: PUBLIC WriteSequentialType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, startingAddress];
CrRPC.PutCard16[s, count];
MProc6[h, s, seq];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~11 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
PokeShort: PUBLIC PokeShortType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutCard32[s, address];
CrRPC.PutCard16[s, value];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2200, remotePgmVersion~4, remoteProc~3 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Unmarshal / Marshal Procs --
MProc6: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: SeqLong] ~ {
CrRPC.PutCard16[s, val.length];
FOR i7: CARDINAL IN [0..val.length) DO
CrRPC.PutCard32[s, val.body[i7]];
ENDLOOP;
};
UProc5: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: SeqShort] ~ {
{
length9: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[SeqShortObject[length9]];
FOR i8: CARDINAL IN [0..length9) DO
res.body[i8] ← CrRPC.GetCard16[s];
ENDLOOP;
};
};
MProc1: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: SeqShort] ~ {
CrRPC.PutCard16[s, val.length];
FOR i10: CARDINAL IN [0..val.length) DO
CrRPC.PutCard16[s, val.body[i10]];
ENDLOOP;
};
UProc4: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: SeqLong] ~ {
{
length12: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[SeqLongObject[length12]];
FOR i11: CARDINAL IN [0..length12) DO
res.body[i11] ← CrRPC.GetCard32[s];
ENDLOOP;
};
};
UProc3: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: SeqResult] ~ {
{
length14: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[SeqResultObject[length14]];
FOR i13: CARDINAL IN [0..length14) DO
res.body[i13] ← UProc15[h, s];
ENDLOOP;
};
};
MProc2: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: SeqCmd] ~ {
CrRPC.PutCard16[s, val.length];
FOR i16: CARDINAL IN [0..val.length) DO
MProc17[h, s, val.body[i16]];
ENDLOOP;
};
UProc15: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Result] ~ {
{
tag18: OpCode ~ VAL[CrRPC.GetCard16[s]];
SELECT tag18 FROM
peekShort => {
temp19: PeekShortResult;
temp19.value ← CrRPC.GetCard16[s];
res ← NEW[ResultObject.peekShort ← [peekShort[temp19]]] };
pokeShort => {
temp19: PokeShortResult;
temp19.null ← 0;
res ← NEW[ResultObject.pokeShort ← [pokeShort[temp19]]] };
pokeLong => {
temp19: PokeLongResult;
temp19.null ← 0;
res ← NEW[ResultObject.pokeLong ← [pokeLong[temp19]]] };
shftRead => {
temp19: ShftReadResult;
temp19.numRepeats ← CrRPC.GetCard16[s];
res ← NEW[ResultObject.shftRead ← [shftRead[temp19]]] };
shftWrite => {
temp19: ShftWriteResult;
temp19.numRepeats ← CrRPC.GetCard16[s];
res ← NEW[ResultObject.shftWrite ← [shftWrite[temp19]]] };
returnLength => {
temp19: ReturnLengthResult;
temp19.null ← 0;
res ← NEW[ResultObject.returnLength ← [returnLength[temp19]]] };
ENDCASE => ERROR;
};
};
MProc17: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Cmd] ~ {
CrRPC.PutCard16[s, ORD[val.type]];
WITH val SELECT FROM
it: REF CmdObject.peekShort => {
CrRPC.PutCard32[s, it^.peekShort.address];
};
it: REF CmdObject.pokeShort => {
CrRPC.PutCard32[s, it^.pokeShort.address];
CrRPC.PutCard16[s, it^.pokeShort.value];
};
it: REF CmdObject.pokeLong => {
CrRPC.PutCard32[s, it^.pokeLong.address];
CrRPC.PutCard32[s, it^.pokeLong.value];
};
it: REF CmdObject.shftRead => {
CrRPC.PutCard32[s, it^.shftRead.address];
CrRPC.PutCard16[s, it^.shftRead.numRepeats];
};
it: REF CmdObject.shftWrite => {
CrRPC.PutCard32[s, it^.shftWrite.address];
CrRPC.PutCard16[s, it^.shftWrite.numRepeats];
};
it: REF CmdObject.returnLength => {
CrRPC.PutCard16[s, it^.returnLength.returnLength];
};
ENDCASE;
};
}...