<> <> <> DIRECTORY DragOpsCross USING [Inst, Word], LizardHeart USING [Processor]; LizardTweaker: CEDAR DEFINITIONS = BEGIN OpcodeHandler: TYPE = PROC [ data: REF, -- callback data processor: LizardHeart.Processor, -- the processor executing the instruction inst: DragOpsCross.Inst, -- the instruction rest: DragOpsCross.Word] -- the operand (right-justified) RETURNS [normal: BOOL _ FALSE]; -- normal => do normal opcode processing Register: PROC [inst: DragOpsCross.Inst, handler: OpcodeHandler, data: REF _ NIL]; OpcodeRegistry: TYPE = REF OpcodeRegistryRep; OpcodeRegistryRep: TYPE = ARRAY DragOpsCross.Inst OF OpcodeRegistryEntry; OpcodeRegistryEntry: TYPE = RECORD [handler: OpcodeHandler, data: REF]; END.