-- File: [Indigo]<Sakura>Dragon>DragonCache.sak -- 15-Mar-82 11:37:56 DIRECTORY SakuraRT: TYPE; DragonCache: DEFINITIONS = BEGIN PbusType: TYPE = RECORD [body: SELECT kind: {Instruction, Data} FROM Instruction => [vp: LONG CARDINAL, -- actually 25 bits -- bl: INTEGER [0..37B], word: INTEGER [0..3]], Data => [data: LONG CARDINAL] ENDCASE]; PbusOp: TYPE = {Fetch, FetchHold, Store, MapOp}; MbusType: TYPE = RECORD [body: SELECT kind: {Instruction, MapCommand, Data} FROM Instruction => [command: MbusCommand, rp: LONG CARDINAL, -- actually 25 bits -- bl: INTEGER [0..37B], word: INTEGER [0..3]], MapCommand => [command: MbusCommand, mapop: MapOpKind, fault: BOOLEAN, rpdirty: BOOLEAN, vp: LONG CARDINAL], Data => [data: LONG CARDINAL] ENDCASE]; MbusCommand: TYPE = {ReadQuad, WriteQuad, WriteSingle, NotReady, ReadMap, ReadMapAndSetRpDirty, DoMapOp, SetRpDirty, MapOpDone}; MapOpKind: TYPE = {SetMap, SetMapFlags, GetMapFlags}; CheckVal: PROC [vp: LONG CARDINAL, bl: INTEGER [0..37B], word: INTEGER [0..3], val: LONG CARDINAL]; Cache: PROC [Op: SakuraRT.Handle, PDataIn, MDataIn: SakuraRT.Handle, ClockA, ClockB, CMDIn, RQ, SharedIn, Grant: SakuraRT.Handle, Exception, Reject, SharedOut, CMDOut, Rq: SakuraRT.Handle, PDataOut: SakuraRT.Handle, MDataOut: SakuraRT.Handle]; END.