<> <> <> DIRECTORY CrRPC, Rope; RapunzelP1620V0: CEDAR DEFINITIONS ~ { ROPE: TYPE ~ Rope.ROPE; FaultCode: TYPE ~ MACHINE DEPENDENT { nonexistent(1), protection(2), alignmentShort(3), alignmentLong(4) }; PeekLongResult: TYPE ~ RECORD [ value: CARD ]; PokeLong: PROC [h: CrRPC.Handle, address: CARD, arg: CARD]; PokeSeqLong: PROC [h: CrRPC.Handle, address: CARD, args: SeqLong]; SeqCmd: TYPE ~ REF SeqCmdObject; SeqCmdObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF Cmd ]; DoCmds: PROC [h: CrRPC.Handle, cmds: SeqCmd] RETURNS [results: SeqResult]; Long: TYPE ~ CARD; Fault: ERROR [code: FaultCode, address: CARD]; PokeLongResult: TYPE ~ RECORD []; Result: TYPE ~ RECORD [ SELECT type: OpCode FROM peekShort => [peekShort: PeekShortResult], pokeShort => [pokeShort: PokeShortResult], peekLong => [peekLong: PeekLongResult], pokeLong => [pokeLong: PokeLongResult] ENDCASE ]; PeekSeqLong: PROC [h: CrRPC.Handle, address: CARD, count: CARDINAL] RETURNS [results: SeqLong]; PokeShort: PROC [h: CrRPC.Handle, address: CARD, arg: CARDINAL]; PeekShortResult: TYPE ~ RECORD [ value: CARDINAL ]; PeekLong: PROC [h: CrRPC.Handle, address: CARD] RETURNS [result: CARD]; SeqLong: TYPE ~ REF SeqLongObject; SeqLongObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF CARD ]; PokeLongCmd: TYPE ~ RECORD [ address: CARD, value: CARD ]; PokeSeqShort: PROC [h: CrRPC.Handle, address: CARD, args: SeqShort]; PokeShortCmd: TYPE ~ RECORD [ address: CARD, value: CARDINAL ]; PokeShortResult: TYPE ~ RECORD []; SeqResult: TYPE ~ REF SeqResultObject; SeqResultObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF Result ]; Cmd: TYPE ~ RECORD [ SELECT type: OpCode FROM peekShort => [peekShort: PeekShortCmd], pokeShort => [pokeShort: PokeShortCmd], peekLong => [peekLong: PeekLongCmd], pokeLong => [pokeLong: PokeLongCmd] ENDCASE ]; OpCode: TYPE ~ MACHINE DEPENDENT { peekShort(0), pokeShort(1), peekLong(2), pokeLong(3) }; PeekShort: PROC [h: CrRPC.Handle, address: CARD] RETURNS [result: CARDINAL]; PeekLongCmd: TYPE ~ RECORD [ address: CARD ]; PeekSeqShort: PROC [h: CrRPC.Handle, address: CARD, count: CARDINAL] RETURNS [results: SeqShort]; Address: TYPE ~ CARD; Short: TYPE ~ CARDINAL; PeekShortCmd: TYPE ~ RECORD [ address: CARD ]; SeqShort: TYPE ~ REF SeqShortObject; SeqShortObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF CARDINAL ]; }...