<> <> <> <> DIRECTORY CrRPC, Rope; RapunzelP2200V2: CEDAR DEFINITIONS ~ { ROPE: TYPE ~ Rope.ROPE; FaultCode: TYPE ~ MACHINE DEPENDENT { nonexistent(1), protection(2), alignmentShort(3), alignmentLong(4)}; PokeLongType: TYPE ~ PROC [h: CrRPC.Handle, address: CARD32, value: CARD32]; PokeLong: PokeLongType; SeqCmd: TYPE ~ REF SeqCmdObject; SeqCmdObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF Cmd ]; DoCmdsType: TYPE ~ PROC [h: CrRPC.Handle, cmdSeq: SeqCmd] RETURNS [resultSeq: SeqResult]; DoCmds: DoCmdsType; ReturnLengthResult: TYPE ~ RECORD [null: CARDINAL _ 0]; SetShftAddrsType: TYPE ~ PROC [h: CrRPC.Handle, shftA: CARD32, shftB: CARD32]; SetShftAddrs: SetShftAddrsType; ShftReadResult: TYPE ~ RECORD [ numRepeats: CARD16]; Long: TYPE ~ CARD32; FaultType: TYPE ~ ERROR [code: FaultCode, address: CARD32]; Fault: FaultType; Result: TYPE ~ REF ResultObject; ResultObject: TYPE ~ RECORD [ SELECT type: OpCode FROM peekShort => [peekShort: PeekShortResult], pokeShort => [pokeShort: PokeShortResult], shftRead => [shftRead: ShftReadResult], shftWrite => [shftWrite: ShftWriteResult], returnLength => [returnLength: ReturnLengthResult] ENDCASE ]; PokeShortType: TYPE ~ PROC [h: CrRPC.Handle, address: CARD32, value: CARD16]; PokeShort: PokeShortType; ShftReadCmd: TYPE ~ RECORD [ address: CARD32, numRepeats: CARD16]; PeekLongType: TYPE ~ PROC [h: CrRPC.Handle, address: CARD32] RETURNS [result: CARD32]; PeekLong: PeekLongType; PeekShortResult: TYPE ~ RECORD [ value: CARD16]; PokeSeqShortType: TYPE ~ PROC [h: CrRPC.Handle, address: CARD32, valueSeq: SeqShort]; PokeSeqShort: PokeSeqShortType; PokeShortCmd: TYPE ~ RECORD [ address: CARD32, value: CARD16]; PokeShortResult: TYPE ~ RECORD [null: CARDINAL _ 0]; ShftWriteCmd: TYPE ~ RECORD [ address: CARD32, numRepeats: CARD16]; SeqResult: TYPE ~ REF SeqResultObject; SeqResultObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF Result ]; ReturnLengthCmd: TYPE ~ RECORD [ returnLength: CARD16]; ShftWriteResult: TYPE ~ RECORD [ numRepeats: CARD16]; Cmd: TYPE ~ REF CmdObject; CmdObject: TYPE ~ RECORD [ SELECT type: OpCode FROM peekShort => [peekShort: PeekShortCmd], pokeShort => [pokeShort: PokeShortCmd], shftRead => [shftRead: ShftReadCmd], shftWrite => [shftWrite: ShftWriteCmd], returnLength => [returnLength: ReturnLengthCmd] ENDCASE ]; PeekShortType: TYPE ~ PROC [h: CrRPC.Handle, address: CARD32] RETURNS [result: CARD16]; PeekShort: PeekShortType; OpCode: TYPE ~ MACHINE DEPENDENT { peekShort(0), pokeShort(1), shftRead(2), shftWrite(3), returnLength(4)}; PeekSeqShortType: TYPE ~ PROC [h: CrRPC.Handle, address: CARD32, count: CARD16] RETURNS [resultSeq: SeqShort]; PeekSeqShort: PeekSeqShortType; Address: TYPE ~ CARD32; Short: TYPE ~ CARD16; PeekShortCmd: TYPE ~ RECORD [ address: CARD32]; SeqShort: TYPE ~ REF SeqShortObject; SeqShortObject: TYPE ~ MACHINE DEPENDENT RECORD [ body: PACKED SEQUENCE length: CARDINAL OF CARD16 ]; }...