-- File: [Indigo]Dragon>DragonCache.sak -- 15-Mar-82 11:37:56 DIRECTORY SakuraRT; DragonCache: DEFINITIONS = { PbusType: TYPE = RECORD [ body: SELECT kind: {Instruction, Data} FROM Instruction => [vp: LONG CARDINAL -- actually 25 bits --, bl: [0..37B], word: [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: [0..37B], word: [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: [0..37B], word: [0..3], val: LONG CARDINAL]; Cache: DEVICE = { IN Op: PbusOp, PDataIn, MDataIn: LONG CARDINAL, ClockA, ClockB, CMDIn, RQ, SharedIn, Grant: BOOLEAN OUT Exception, Reject, SharedOut, CMDOut, Rq: BOOLEAN, PDataOut: PbusType, MDataOut: MbusType }; }.