DIRECTORY CrRPC, RapunzelP2200V2; RapunzelP2200V2ServerImpl: CEDAR PROGRAM IMPORTS CrRPC, RapunzelP2200V2 ~ { OPEN RapunzelP2200V2; PokeSeqShortCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { address: CARD32; valueSeq: SeqShort; { address _ CrRPC.GetCard32[s]; }; { valueSeq _ UProc16[h, s]; }; [] _ PokeSeqShort[h, address, valueSeq]; beginReturn[h]; }; PokeLongCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { address: CARD32; value: CARD32; { address _ CrRPC.GetCard32[s]; }; { value _ CrRPC.GetCard32[s]; }; [] _ PokeLong[h, address, value]; beginReturn[h]; }; SetShftAddrsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { shftA: CARD32; shftB: CARD32; { shftA _ CrRPC.GetCard32[s]; }; { shftB _ CrRPC.GetCard32[s]; }; [] _ SetShftAddrs[h, shftA, shftB]; beginReturn[h]; }; DoCmdsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { cmdSeq: SeqCmd; resultSeq: SeqResult; { cmdSeq _ UProc17[h, s]; }; [resultSeq] _ DoCmds[h, cmdSeq]; beginReturn[h]; { MProc18[h, s, resultSeq]; }; }; PeekLongCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { address: CARD32; result: CARD32; { address _ CrRPC.GetCard32[s]; }; [result] _ PeekLong[h, address]; beginReturn[h]; { CrRPC.PutCard32[s, result]; }; }; PeekSeqShortCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { address: CARD32; count: CARD16; resultSeq: SeqShort; { address _ CrRPC.GetCard32[s]; }; { count _ CrRPC.GetCard16[s]; }; [resultSeq] _ PeekSeqShort[h, address, count]; beginReturn[h]; { MProc19[h, s, resultSeq]; }; }; PeekShortCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { address: CARD32; result: CARD16; { address _ CrRPC.GetCard32[s]; }; [result] _ PeekShort[h, address]; beginReturn[h]; { CrRPC.PutCard16[s, result]; }; }; PokeShortCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { address: CARD32; value: CARD16; { address _ CrRPC.GetCard32[s]; }; { value _ CrRPC.GetCard16[s]; }; [] _ PokeShort[h, address, value]; beginReturn[h]; }; Server: CrRPC.ServerProc ~ { ENABLE { RapunzelP2200V2.Fault => { -- (0 ) beginError[h, 0 ]; CrRPC.PutCard16[s, ORD[code]]; CrRPC.PutCard32[s, address]; GOTO Finished; }; }; IF (pgmVersion # 2) THEN { beginReject[h, CrRPC.noSuchVersion]; CrRPC.PutCard16[s, 2]; --low CrRPC.PutCard16[s, 2]; --high RETURN }; SELECT proc FROM 4 => PokeSeqShortCaller[h, s, beginReturn]; 6 => PokeLongCaller[h, s, beginReturn]; 8 => SetShftAddrsCaller[h, s, beginReturn]; 7 => DoCmdsCaller[h, s, beginReturn]; 5 => PeekLongCaller[h, s, beginReturn]; 3 => PeekSeqShortCaller[h, s, beginReturn]; 1 => PeekShortCaller[h, s, beginReturn]; 2 => PokeShortCaller[h, s, beginReturn]; ENDCASE => { beginReject[h, CrRPC.noSuchProcedure]; }; EXITS Finished => { NULL }; }; MProc19: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: SeqShort] ~ { CrRPC.PutCard16[s, val.length]; FOR i20: CARDINAL IN [0..val.length) DO CrRPC.PutCard16[s, val.body[i20]]; ENDLOOP; }; UProc17: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: SeqCmd] ~ { { length22: CARDINAL ~ CrRPC.GetCard16[s]; res _ NEW[SeqCmdObject[length22]]; FOR i21: CARDINAL IN [0..length22) DO res.body[i21] _ UProc23[h, s]; ENDLOOP; }; }; MProc18: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: SeqResult] ~ { CrRPC.PutCard16[s, val.length]; FOR i24: CARDINAL IN [0..val.length) DO MProc25[h, s, val.body[i24]]; ENDLOOP; }; UProc16: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: SeqShort] ~ { { length27: CARDINAL ~ CrRPC.GetCard16[s]; res _ NEW[SeqShortObject[length27]]; FOR i26: CARDINAL IN [0..length27) DO res.body[i26] _ CrRPC.GetCard16[s]; ENDLOOP; }; }; MProc25: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Result] ~ { CrRPC.PutCard16[s, ORD[val.type]]; WITH val SELECT FROM it: REF ResultObject.peekShort => { CrRPC.PutCard16[s, it^.peekShort.value]; }; it: REF ResultObject.pokeShort => { NULL; -- RECORD [] -- }; it: REF ResultObject.shftRead => { CrRPC.PutCard16[s, it^.shftRead.numRepeats]; }; it: REF ResultObject.shftWrite => { CrRPC.PutCard16[s, it^.shftWrite.numRepeats]; }; it: REF ResultObject.returnLength => { NULL; -- RECORD [] -- }; ENDCASE; }; UProc23: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Cmd] ~ { { tag29: OpCode ~ VAL[CrRPC.GetCard16[s]]; SELECT tag29 FROM peekShort => { temp30: PeekShortCmd; temp30.address _ CrRPC.GetCard32[s]; res _ NEW[CmdObject.peekShort _ [peekShort[temp30]]] }; pokeShort => { temp30: PokeShortCmd; temp30.address _ CrRPC.GetCard32[s]; temp30.value _ CrRPC.GetCard16[s]; res _ NEW[CmdObject.pokeShort _ [pokeShort[temp30]]] }; shftRead => { temp30: ShftReadCmd; temp30.address _ CrRPC.GetCard32[s]; temp30.numRepeats _ CrRPC.GetCard16[s]; res _ NEW[CmdObject.shftRead _ [shftRead[temp30]]] }; shftWrite => { temp30: ShftWriteCmd; temp30.address _ CrRPC.GetCard32[s]; temp30.numRepeats _ CrRPC.GetCard16[s]; res _ NEW[CmdObject.shftWrite _ [shftWrite[temp30]]] }; returnLength => { temp30: ReturnLengthCmd; temp30.returnLength _ CrRPC.GetCard16[s]; res _ NEW[CmdObject.returnLength _ [returnLength[temp30]]] }; ENDCASE => ERROR; }; }; CrRPC.RegisterServerProc[pgm~2200, serverProc~Server, pgmVersion~2]; CrRPC.EnsureListener[class~$SPP]; }... –RapunzelP2200V2ServerImpl.Mesa Copyright (C) 1986 by Xerox Corporation. All rights reserved. Generated by Willie-Sue.pa at February 13, 1987 2:11:42 pm PST using Sirocco [2.0] of January 31, 1987 1:52:42 am PST [h: Handle, s: STREAM, pgm: CARD32, pgmVersion: CARD16, proc: CARD16, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc] Unmarshal / Marshal Procs -- Êz˜šœ™Jšœ>™>Jšœ>™>Jšœ6™6J˜—šÏk ˜ J˜J˜—J˜šÏnœœ˜(Jšœ˜"Jšœ˜—J˜šžœœœ)˜cJšœ œ˜J˜J˜˜J˜J˜—˜J˜J˜—J˜J˜(J˜J˜J˜J˜J˜—šžœœœ)˜_Jšœ œ˜Jšœœ˜J˜˜J˜J˜—˜J˜J˜—J˜J˜!J˜J˜J˜J˜J˜—šžœœœ)˜cJšœœ˜Jšœœ˜J˜˜J˜J˜—˜J˜J˜—J˜J˜#J˜J˜J˜J˜J˜—šž œœœ)˜]J˜J˜J˜˜J˜J˜—J˜J˜ J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜_Jšœ œ˜Jšœœ˜J˜˜J˜J˜—J˜J˜ J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜cJšœ œ˜Jšœœ˜J˜J˜˜J˜J˜—˜J˜J˜—J˜J˜.J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜`Jšœ œ˜Jšœœ˜J˜˜J˜J˜—J˜J˜!J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜`Jšœ œ˜Jšœœ˜J˜˜J˜J˜—˜J˜J˜—J˜J˜"J˜J˜J˜J˜J˜—šžœ˜Jšœ™J˜šœ˜šœÏc˜"J˜Jšœœ˜J˜Jšœ ˜J˜—J˜—J˜šœœ˜J˜$JšœŸ˜JšœŸ˜Jš˜J˜—J˜šœ˜J˜,J˜(J˜,J˜&J˜(J˜,J˜)J˜)šœ˜ J˜&J˜——J˜š˜Jšœœ˜—J˜—˜šœ™J˜J˜šžœœœ˜CJ˜šœœœ˜'J˜"Jšœ˜—J˜—J˜šžœœœœ˜J˜Jšœ œ˜(Jšœœ˜#šœœœ˜%J˜Jšœ˜—J˜—J˜—J˜šžœœœ˜DJ˜šœœœ˜'J˜Jšœ˜—J˜—J˜šžœœœœ˜L˜Jšœ œ˜(Jšœœ˜%šœœœ˜%J˜#Jšœ˜—J˜—J˜—J˜šžœœœ˜AJšœœ ˜"šœœ˜šœœ˜#J˜(J˜—šœœ˜#JšœŸ˜J˜—šœœ˜"J˜,J˜—šœœ˜#J˜-J˜—šœœ˜&JšœŸ˜J˜—Jšœ˜—J˜—J˜šžœœœœ˜G˜Jšœœ˜(šœ˜˜J˜J˜$Jšœœ.˜7—˜J˜J˜$J˜"Jšœœ.˜7—˜ J˜J˜$J˜'Jšœœ,˜5—˜J˜J˜$J˜'Jšœœ.˜7—˜J˜J˜)Jšœœ4˜=—Jšœœ˜—J˜—J˜—J˜——˜J˜DJ˜!—J˜J˜—…—.>