<> <> <> DIRECTORY CrRPC, Rope; RapunzelP2200V0: CEDAR DEFINITIONS ~ { ROPE: TYPE ~ Rope.ROPE; FaultCode: TYPE ~ MACHINE DEPENDENT { nonexistent(1), protection(2), alignmentShort(3), alignmentLong(4) }; PokeLong: PROC [h: CrRPC.Handle, address: CARD, arg: CARD]; 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]; Result: TYPE ~ RECORD [ SELECT type: OpCode FROM pokeShort => [pokeShort: PokeShortResult], peekShort => [peekShort: PeekShortResult] ENDCASE ]; PokeShort: PROC [h: CrRPC.Handle, address: CARD, arg: CARDINAL]; SeqLong: TYPE ~ REF SeqLongObject; SeqLongObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF CARD ]; PeekShortResult: TYPE ~ RECORD [ value: CARDINAL ]; PeekLong: PROC [h: CrRPC.Handle, address: CARD] RETURNS [result: 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 pokeShort => [pokeShort: PokeShortCmd], peekShort => [peekShort: PeekShortCmd] ENDCASE ]; OpCode: TYPE ~ MACHINE DEPENDENT { pokeShort(0), peekShort(1) }; PeekShort: PROC [h: CrRPC.Handle, address: CARD] RETURNS [result: CARDINAL]; 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 ]; }...