DIRECTORY RoseTypes, RoseCreate, BitOps, CacheMicroMachine; CacheMInterfaceMROM: CEDAR PROGRAM IMPORTS RoseCreate, BitOps, CacheMicroMachine = BEGIN OPEN RoseTypes, BitOps, CacheMicroMachine; RegisterCells: PROC = BEGIN [] _ RoseCreate.RegisterCellType[name: "MROM", expandProc: NIL, ioCreator: CreateMROMIO, initializer: InitializeMROM, evals: [EvalSimple: MROMEvalSimple], blackBox: NIL, stateToo: NIL, ports: CreateMROMPorts[], drivePrototype: NEW [MROMDrive]]; END; otherss: SymbolTable _ RoseCreate.GetOtherss["CacheMInterfaceMROM.pass"]; CreateMROMPorts: PROC RETURNS [ports: Ports] = {ports _ RoseCreate.PortsFromFile["CacheMInterfaceMROM.MROM.rosePorts"]}; MROMIORef: TYPE = REF MROMIORec; MROMIORec: TYPE = MACHINE DEPENDENT RECORD [ fill0(0:0..14): [0..32767], Vdd(0:15..15): BOOLEAN, fill1(1:0..14): [0..32767], Gnd(1:15..15): BOOLEAN, fill2(2:0..14): [0..32767], PhAb(2:15..15): BOOLEAN, fill3(3:0..14): [0..32767], PhBb(3:15..15): BOOLEAN, fill4(4:0..14): [0..32767], Resetb(4:15..15): BOOLEAN, fill5(5:0..14): [0..32767], FinishSharedStoreAB(5:15..15): BOOLEAN, fill6(6:0..14): [0..32767], SenseRMatchB(6:15..15): BOOLEAN, fill7(7:0..14): [0..32767], SelPageFlagsBA(7:15..15): BOOLEAN, fill8(8:0..14): [0..32767], StartWordMachineBA(8:15..15): BOOLEAN, fill9(9:0..14): [0..32767], CAMRegSenseMDataIB(9:15..15): BOOLEAN, fill10(10:0..14): [0..32767], ACAMRegDriveCAMBitsA(10:15..15): BOOLEAN, fill11(11:0..14): [0..32767], BCAMRegDriveCAMBitsAB(11:15..15): BOOLEAN, fill12(12:0..14): [0..32767], FormAddressBA(12:15..15): BOOLEAN, fill13(13:0..14): [0..32767], PageDriveMDataIA(13:15..15): BOOLEAN, fill14(14:0..14): [0..32767], BlockDriveMDataIA(14:15..15): BOOLEAN, fill15(15:0..14): [0..32767], DriveMBitsA(15:15..15): BOOLEAN, fill16(16:0..14): [0..32767], DriveMBitsNoMatchA(16:15..15): BOOLEAN, fill17(17:0..14): [0..32767], SenseMBitsA(17:15..15): BOOLEAN, fill18(18:0..14): [0..32767], DriveMDataIA(18:15..15): BOOLEAN, fill19(19:0..14): [0..32767], SenseMDataIB(19:15..15): BOOLEAN, fill20(20:0..14): [0..32767], DrivePBitsB(20:15..15): BOOLEAN, fill21(21:0..14): [0..32767], SensePBitsB(21:15..15): BOOLEAN, fill22(22:0..14): [0..32767], SuppressPSampleAB(22:15..15): BOOLEAN, fill23(23:0..14): [0..32767], MIsDoneAB(23:15..15): BOOLEAN, fill24(24:0..14): [0..32767], SetWantWSA(24:15..15): BOOLEAN, fill25(25:0..14): [0..32767], CheckFaultsAB(25:15..15): BOOLEAN, fill26(26:0..14): [0..32767], SenseSharedB(26:15..15): BOOLEAN, fill27(27:0..14): [0..32767], ReleaseMBusBA(27:15..15): BOOLEAN, fill28(28:0..14): [0..32767], ForceIdleAB(28:15..15): BOOLEAN, fill29(29:0..14): [0..32767], DoneAB(29:15..15): BOOLEAN, fill30(30:0..14): [0..32767], ForceSlaveBA(30:15..15): BOOLEAN, fill31(31:0..14): [0..32767], SenseReadyBA(31:15..15): BOOLEAN, fill32(32:0..14): [0..32767], MDataIToFaultsB(32:15..15): BOOLEAN, fill33(33:0..14): [0..32767], MapBitsToMDataIA(33:15..15): BOOLEAN, fill34(34:0..14): [0..32767], ACheckParityA(34:15..15): BOOLEAN, fill35(35:0..14): [0..32767], BCheckParityB(35:15..15): BOOLEAN, fill36(36:0..14): [0..32767], SampleRealMatchA(36:15..15): BOOLEAN, fill37(37:0..14): [0..32767], MCmdDriveA(37:15..15): BOOLEAN, fill38(38:0..14): [0..32767], MDataDriveA(38:15..15): BOOLEAN, fill39(39:0..14): [0..32767], DriveSharedHighA(39:15..15): BOOLEAN, fill40(40:0..14): [0..32767], DriveSharedLowA(40:15..15): BOOLEAN, fill41(41:0..14): [0..32767], MasterEnableMBusDriveAB(41:15..15): BOOLEAN, fill42(42:0..14): [0..32767], MCmdDriveToDataTransportAB(42:15..15): BOOLEAN, fill43(43:0..14): [0..32767], MCmdDriveToNoOpAB(43:15..15): BOOLEAN, fill44(44:0..14): [0..32767], SetSharedA(44:15..15): BOOLEAN, fill45(45:0..14): [0..32767], ResetMasterA(45:15..15): BOOLEAN, fill46(46:0..14): [0..32767], SetRPDirtyVPValidA(46:15..15): BOOLEAN, fill47(47:0..14): [0..32767], FlagLatchB(47:15..15): BOOLEAN, fill48(48:0..14): [0..32767], SetFlagsA(48:15..15): BOOLEAN, fill49(49:0..14): [0..32767], IncrementVictimBA(49:15..15): BOOLEAN, fill50(50:0..14): [0..32767], IncrementMAdrCtrB(50:15..15): BOOLEAN, fill51(51:0..14): [0..32767], ZeroMAdrCtrB(51:15..15): BOOLEAN, fill52(52:0..14): [0..32767], SampleDirtyBitsB(52:15..15): BOOLEAN, fill53(53:0..14): [0..32767], DeleteDirtyBitB(53:15..15): BOOLEAN, fill54(54:0..14): [0..32767], VictimSelectBA(54:15..15): BOOLEAN, fill55(55:0..14): [0..32767], RefreshToDecoderBA(55:15..15): BOOLEAN, fill56(56:0..14): [0..32767], IfGrantThenGetAdrElseRefreshToDecoderBA(56:15..15): BOOLEAN, fill57(57:0..14): [0..32767], FetchAddressBA(57:15..15): BOOLEAN, fill58(58:0..14): [0..32767], DirtyBitsToMQSelBA(58:15..15): BOOLEAN, fill59(59:0..14): [0..32767], SamplePAdr2831B(59:15..15): BOOLEAN, fill60(60:0..14): [0..32767], SampleMAdr2831B(60:15..15): BOOLEAN, fill61(61:0..14): [0..32767], Adr2829ToMQSelBA(61:15..15): BOOLEAN, fill62(62:0..14): [0..32767], AddressBitsToMDataIA(62:15..15): BOOLEAN, fill63(63:0..14): [0..32767], VictimAddressBitsToMDataIA(63:15..15): BOOLEAN, fill64(64:0..14): [0..32767], SelectRPBA(64:15..15): BOOLEAN, fill65(65:0..14): [0..32767], SelectVPVictimOrOrphanBA(65:15..15): BOOLEAN, fill66(66:0..14): [0..32767], SelectRealDataBA(66:15..15): BOOLEAN, fill67(67:0..14): [0..32767], SelVictimOrOrphanBA(67:15..15): BOOLEAN, fill68(68:0..14): [0..32767], RefreshIfRefVirtualBA(68:15..15): BOOLEAN, fill69(69:0..14): [0..32767], SenseVictimBA(69:15..15): BOOLEAN, fill70(70:0..14): [0..32767], MDataDriveDelayedA(70:15..15): BOOLEAN, fill71(71:0..8): [0..511], ROMSequenceBA(71:9..15): [0..127], fill72(72:0..14): [0..32767], ROMSlaveBA(72:15..15): BOOLEAN, fill73(73:0..8): [0..511], ROMCycleBA(73:9..15): [0..127]]; MROMDrive: TYPE = MACHINE DEPENDENT RECORD [ fill0(0:0..14): [0 .. 32768), Vdd(0:15..15): BOOLEAN, fill1(1:0..14): [0 .. 32768), Gnd(1:15..15): BOOLEAN, fill2(2:0..14): [0 .. 32768), PhAb(2:15..15): BOOLEAN, fill3(3:0..14): [0 .. 32768), PhBb(3:15..15): BOOLEAN, fill4(4:0..14): [0 .. 32768), Resetb(4:15..15): BOOLEAN, fill5(5:0..14): [0 .. 32768), FinishSharedStoreAB(5:15..15): BOOLEAN, fill6(6:0..14): [0 .. 32768), SenseRMatchB(6:15..15): BOOLEAN, fill7(7:0..14): [0 .. 32768), SelPageFlagsBA(7:15..15): BOOLEAN, fill8(8:0..14): [0 .. 32768), StartWordMachineBA(8:15..15): BOOLEAN, fill9(9:0..14): [0 .. 32768), CAMRegSenseMDataIB(9:15..15): BOOLEAN, fill10(10:0..14): [0 .. 32768), ACAMRegDriveCAMBitsA(10:15..15): BOOLEAN, fill11(11:0..14): [0 .. 32768), BCAMRegDriveCAMBitsAB(11:15..15): BOOLEAN, fill12(12:0..14): [0 .. 32768), FormAddressBA(12:15..15): BOOLEAN, fill13(13:0..14): [0 .. 32768), PageDriveMDataIA(13:15..15): BOOLEAN, fill14(14:0..14): [0 .. 32768), BlockDriveMDataIA(14:15..15): BOOLEAN, fill15(15:0..14): [0 .. 32768), DriveMBitsA(15:15..15): BOOLEAN, fill16(16:0..14): [0 .. 32768), DriveMBitsNoMatchA(16:15..15): BOOLEAN, fill17(17:0..14): [0 .. 32768), SenseMBitsA(17:15..15): BOOLEAN, fill18(18:0..14): [0 .. 32768), DriveMDataIA(18:15..15): BOOLEAN, fill19(19:0..14): [0 .. 32768), SenseMDataIB(19:15..15): BOOLEAN, fill20(20:0..14): [0 .. 32768), DrivePBitsB(20:15..15): BOOLEAN, fill21(21:0..14): [0 .. 32768), SensePBitsB(21:15..15): BOOLEAN, fill22(22:0..14): [0 .. 32768), SuppressPSampleAB(22:15..15): BOOLEAN, fill23(23:0..14): [0 .. 32768), MIsDoneAB(23:15..15): BOOLEAN, fill24(24:0..14): [0 .. 32768), SetWantWSA(24:15..15): BOOLEAN, fill25(25:0..14): [0 .. 32768), CheckFaultsAB(25:15..15): BOOLEAN, fill26(26:0..14): [0 .. 32768), SenseSharedB(26:15..15): BOOLEAN, fill27(27:0..14): [0 .. 32768), ReleaseMBusBA(27:15..15): BOOLEAN, fill28(28:0..14): [0 .. 32768), ForceIdleAB(28:15..15): BOOLEAN, fill29(29:0..14): [0 .. 32768), DoneAB(29:15..15): BOOLEAN, fill30(30:0..14): [0 .. 32768), ForceSlaveBA(30:15..15): BOOLEAN, fill31(31:0..14): [0 .. 32768), SenseReadyBA(31:15..15): BOOLEAN, fill32(32:0..14): [0 .. 32768), MDataIToFaultsB(32:15..15): BOOLEAN, fill33(33:0..14): [0 .. 32768), MapBitsToMDataIA(33:15..15): BOOLEAN, fill34(34:0..14): [0 .. 32768), ACheckParityA(34:15..15): BOOLEAN, fill35(35:0..14): [0 .. 32768), BCheckParityB(35:15..15): BOOLEAN, fill36(36:0..14): [0 .. 32768), SampleRealMatchA(36:15..15): BOOLEAN, fill37(37:0..14): [0 .. 32768), MCmdDriveA(37:15..15): BOOLEAN, fill38(38:0..14): [0 .. 32768), MDataDriveA(38:15..15): BOOLEAN, fill39(39:0..14): [0 .. 32768), DriveSharedHighA(39:15..15): BOOLEAN, fill40(40:0..14): [0 .. 32768), DriveSharedLowA(40:15..15): BOOLEAN, fill41(41:0..14): [0 .. 32768), MasterEnableMBusDriveAB(41:15..15): BOOLEAN, fill42(42:0..14): [0 .. 32768), MCmdDriveToDataTransportAB(42:15..15): BOOLEAN, fill43(43:0..14): [0 .. 32768), MCmdDriveToNoOpAB(43:15..15): BOOLEAN, fill44(44:0..14): [0 .. 32768), SetSharedA(44:15..15): BOOLEAN, fill45(45:0..14): [0 .. 32768), ResetMasterA(45:15..15): BOOLEAN, fill46(46:0..14): [0 .. 32768), SetRPDirtyVPValidA(46:15..15): BOOLEAN, fill47(47:0..14): [0 .. 32768), FlagLatchB(47:15..15): BOOLEAN, fill48(48:0..14): [0 .. 32768), SetFlagsA(48:15..15): BOOLEAN, fill49(49:0..14): [0 .. 32768), IncrementVictimBA(49:15..15): BOOLEAN, fill50(50:0..14): [0 .. 32768), IncrementMAdrCtrB(50:15..15): BOOLEAN, fill51(51:0..14): [0 .. 32768), ZeroMAdrCtrB(51:15..15): BOOLEAN, fill52(52:0..14): [0 .. 32768), SampleDirtyBitsB(52:15..15): BOOLEAN, fill53(53:0..14): [0 .. 32768), DeleteDirtyBitB(53:15..15): BOOLEAN, fill54(54:0..14): [0 .. 32768), VictimSelectBA(54:15..15): BOOLEAN, fill55(55:0..14): [0 .. 32768), RefreshToDecoderBA(55:15..15): BOOLEAN, fill56(56:0..14): [0 .. 32768), IfGrantThenGetAdrElseRefreshToDecoderBA(56:15..15): BOOLEAN, fill57(57:0..14): [0 .. 32768), FetchAddressBA(57:15..15): BOOLEAN, fill58(58:0..14): [0 .. 32768), DirtyBitsToMQSelBA(58:15..15): BOOLEAN, fill59(59:0..14): [0 .. 32768), SamplePAdr2831B(59:15..15): BOOLEAN, fill60(60:0..14): [0 .. 32768), SampleMAdr2831B(60:15..15): BOOLEAN, fill61(61:0..14): [0 .. 32768), Adr2829ToMQSelBA(61:15..15): BOOLEAN, fill62(62:0..14): [0 .. 32768), AddressBitsToMDataIA(62:15..15): BOOLEAN, fill63(63:0..14): [0 .. 32768), VictimAddressBitsToMDataIA(63:15..15): BOOLEAN, fill64(64:0..14): [0 .. 32768), SelectRPBA(64:15..15): BOOLEAN, fill65(65:0..14): [0 .. 32768), SelectVPVictimOrOrphanBA(65:15..15): BOOLEAN, fill66(66:0..14): [0 .. 32768), SelectRealDataBA(66:15..15): BOOLEAN, fill67(67:0..14): [0 .. 32768), SelVictimOrOrphanBA(67:15..15): BOOLEAN, fill68(68:0..14): [0 .. 32768), RefreshIfRefVirtualBA(68:15..15): BOOLEAN, fill69(69:0..14): [0 .. 32768), SenseVictimBA(69:15..15): BOOLEAN, fill70(70:0..14): [0 .. 32768), MDataDriveDelayedA(70:15..15): BOOLEAN, fill71(71:0..14): [0 .. 32768), ROMSequenceBA(71:15..15): BOOLEAN, fill72(72:0..14): [0 .. 32768), ROMSlaveBA(72:15..15): BOOLEAN, fill73(73:0..14): [0 .. 32768), ROMCycleBA(73:15..15): BOOLEAN]; CreateMROMIO: PROC [cell: Cell] --IOCreator-- = { cell.realCellStuff.newIO _ NEW [MROMIORec]; cell.realCellStuff.oldIO _ NEW [MROMIORec]; }; MROMStateRef: TYPE = REF MROMStateRec; MROMStateRec: TYPE = RECORD [ dSenseRMatchAB, dCAMRegSenseMDataIAB, dSenseMDataIAB, dDrivePBitsAB, dSensePBitsAB, dFlagLatchAB, dIncrementMAdrCtrAB, dZeroMAdrCtrAB, dSampleDirtyBitsAB, dDeleteDirtyBitAB, dSamplePAdr2831AB, dSampleMAdr2831AB, dSenseSharedAB, dMDataIToFaultsAB, dBCheckParityAB: BOOL, dSelPageFlagsAB, dFormAddressAB, dIncrementVictimAB, dVictimSelectAB, dRefreshToDecoderAB, dIfGrantThenGetAdrElseRefreshToDecoderAB, dFetchAddressAB, dDirtyBitsToMQSelAB, dAdr2829ToMQSelAB, dSelectRPAB, dSelectVPVictimOrOrphanAB, dSelectRealDataAB, dSelVictimOrOrphanAB, dSenseVictimAB, dRefreshIfRefVirtualAB, dReleaseMBusAB, dForceSlaveAB, dSenseReadyAB, dStartWordMachineAB: BOOL, dACAMRegDriveCAMBitsAB, dDriveMBitsAB, dDriveMBitsNoMatchAB, dSetSharedAB, dResetMasterAB, dSetRPDirtyVPValidAB, dSetFlagsAB, dACheckParityAB, dMDataDriveDelayedAB: BOOL, dACAMRegDriveCAMBitsBA, dDriveMBitsBA, dDriveMBitsNoMatchBA, dSetSharedBA, dResetMasterBA, dSetRPDirtyVPValidBA, dSetFlagsBA, dACheckParityBA, dMDataDriveDelayedBA: BOOL ]; InitializeMROM: Initializer = { IF leafily THEN BEGIN state: MROMStateRef _ NEW [MROMStateRec]; cell.realCellStuff.state _ state; END; }; MROMEvalSimple: CellProc = BEGIN newIO: MROMIORef _ NARROW[cell.realCellStuff.newIO]; state: MROMStateRef _ NARROW[cell.realCellStuff.state]; BEGIN OPEN newIO, state; seq: SequenceNumber _ 1; cyc: CycleNumber _ 1; FOR i:SequenceNumber IN SequenceNumber DO IF EBFW[ROMSequenceBA, 7, i] THEN {seq _ i; EXIT}; ENDLOOP; FOR i:CycleNumber IN CycleNumber DO IF EBFW[ROMCycleBA, 7, i] THEN {cyc _ i; EXIT}; ENDLOOP; CacheMicroMachine.SetState[slave: ROMSlaveBA, sequence: seq, cycle: cyc]; IF PhAb THEN { PageDriveMDataIA _ Decode[$PageDriveMDataI]; BlockDriveMDataIA _ Decode[$BlockDriveMDataI]; SenseMBitsA _ Decode[$SenseMBits]; DriveMDataIA _ Decode[$DriveMDataI]; AddressBitsToMDataIA _ Decode[$AddressBitsToMDataI]; VictimAddressBitsToMDataIA _ Decode[$VictimAddressBitsToMDataI]; SetWantWSA _ Decode[$SetWantWS]; MapBitsToMDataIA _ Decode[$MapBitsToMDataI]; SampleRealMatchA _ Decode[$SampleRealMatch]; MCmdDriveA _ Decode[$MCmdDrive]; MDataDriveA _ Decode[$MDataDrive]; DriveSharedHighA _ Decode[$DriveSharedHigh]; DriveSharedLowA _ Decode[$DriveSharedLow]; } ELSE PageDriveMDataIA _ BlockDriveMDataIA _ SenseMBitsA _ DriveMDataIA _ AddressBitsToMDataIA _ VictimAddressBitsToMDataIA _ SetWantWSA _ MapBitsToMDataIA _ SampleRealMatchA _ MCmdDriveA _ MDataDriveA _ DriveSharedHighA _ DriveSharedLowA _ FALSE; IF PhAb THEN { dSenseRMatchAB _ Decode[$SenseRMatch]; dCAMRegSenseMDataIAB _ Decode[$CAMRegSenseMDataI]; dSenseMDataIAB _ Decode[$SenseMDataI]; dDrivePBitsAB _ Decode[$DrivePBits]; dSensePBitsAB _ Decode[$SensePBits]; dFlagLatchAB _ Decode[$FlagLatch]; dIncrementMAdrCtrAB _ Decode[$IncrementMAdrCtr]; dZeroMAdrCtrAB _ Decode[$ZeroMAdrCtr]; dSampleDirtyBitsAB _ Decode[$SampleDirtyBits]; dDeleteDirtyBitAB _ Decode[$DeleteDirtyBit]; dSamplePAdr2831AB _ Decode[$SamplePAdr2831]; dSampleMAdr2831AB _ Decode[$SampleMAdr2831]; dSenseSharedAB _ Decode[$SenseShared]; dMDataIToFaultsAB _ Decode[$MDataIToFaults]; dBCheckParityAB _ Decode[$BCheckParity]; }; IF PhBb THEN { SenseRMatchB _ dSenseRMatchAB; CAMRegSenseMDataIB _ dCAMRegSenseMDataIAB; SenseMDataIB _ dSenseMDataIAB; DrivePBitsB _ dDrivePBitsAB; SensePBitsB _ dSensePBitsAB; FlagLatchB _ dFlagLatchAB; IncrementMAdrCtrB _ dIncrementMAdrCtrAB; ZeroMAdrCtrB _ dZeroMAdrCtrAB; SampleDirtyBitsB _ dSampleDirtyBitsAB; DeleteDirtyBitB _ dDeleteDirtyBitAB; SamplePAdr2831B _ dSamplePAdr2831AB; SampleMAdr2831B _ dSampleMAdr2831AB; SenseSharedB _ dSenseSharedAB; MDataIToFaultsB _ dMDataIToFaultsAB; BCheckParityB _ dBCheckParityAB; } ELSE SenseRMatchB _ CAMRegSenseMDataIB _ SenseMDataIB _ DrivePBitsB _ SensePBitsB _ FlagLatchB _ IncrementMAdrCtrB _ ZeroMAdrCtrB _ SampleDirtyBitsB _ DeleteDirtyBitB _ SamplePAdr2831B _ SampleMAdr2831B _ SenseSharedB _ MDataIToFaultsB _ BCheckParityB _ FALSE; IF PhAb THEN { FinishSharedStoreAB _ Decode[$FinishSharedStore]; BCAMRegDriveCAMBitsAB _ Decode[$BCAMRegDriveCAMBits]; SuppressPSampleAB _ Decode[$SuppressPSample]; DoneAB _ Decode[$Done]; MasterEnableMBusDriveAB _ Decode[$MasterEnableMBusDrive]; MCmdDriveToDataTransportAB _ Decode[$MCmdDriveToDataTransport]; MCmdDriveToNoOpAB _ Decode[$MCmdDriveToNoOp]; ForceIdleAB _ Decode[$ForceIdle]; }; IF PhAb THEN { dSelPageFlagsAB _ Decode[$SelPageFlags]; dFormAddressAB _ Decode[$FormAddress]; dIncrementVictimAB _ Decode[$IncrementVictim]; dVictimSelectAB _ Decode[$VictimSelect]; dRefreshToDecoderAB _ Decode[$RefreshToDecoder]; dIfGrantThenGetAdrElseRefreshToDecoderAB _ Decode[$IfGrantThenGetAdrElseRefreshToDecoder]; dFetchAddressAB _ Decode[$FetchAddress]; dDirtyBitsToMQSelAB _ Decode[$DirtyBitsToMQSel]; dAdr2829ToMQSelAB _ Decode[$Adr2829ToMQSel]; dSelectRPAB _ Decode[$SelectRP]; dSelectVPVictimOrOrphanAB _ Decode[$SelectVPVictimOrOrphan]; dSelectRealDataAB _ Decode[$SelectRealData]; dSelVictimOrOrphanAB _ Decode[$SelVictimOrOrphan]; dSenseVictimAB _ Decode[$SenseVictim]; dRefreshIfRefVirtualAB _ Decode[$RefreshIfRefVirtual]; MIsDoneAB _ Decode[$MIsDone]; CheckFaultsAB _ Decode[$CheckFaults]; dReleaseMBusAB _ Decode[$ReleaseMBus]; dForceSlaveAB _ Decode[$ForceSlave]; dSenseReadyAB _ Decode[$SenseReady]; dStartWordMachineAB _ Decode[$StartWordMachine]; }; IF PhBb THEN { SelPageFlagsBA _ dSelPageFlagsAB; FormAddressBA _ dFormAddressAB; IncrementVictimBA _ dIncrementVictimAB; VictimSelectBA _ dVictimSelectAB; RefreshToDecoderBA _ dRefreshToDecoderAB; IfGrantThenGetAdrElseRefreshToDecoderBA _ dIfGrantThenGetAdrElseRefreshToDecoderAB; FetchAddressBA _ dFetchAddressAB; DirtyBitsToMQSelBA _ dDirtyBitsToMQSelAB; Adr2829ToMQSelBA _ dAdr2829ToMQSelAB; SelectRPBA _ dSelectRPAB; SelectVPVictimOrOrphanBA _ dSelectVPVictimOrOrphanAB; SelectRealDataBA _ dSelectRealDataAB; SelVictimOrOrphanBA _ dSelVictimOrOrphanAB; SenseVictimBA _ dSenseVictimAB; RefreshIfRefVirtualBA _ dRefreshIfRefVirtualAB; ReleaseMBusBA _ dReleaseMBusAB; ForceSlaveBA _ dForceSlaveAB; SenseReadyBA _ dSenseReadyAB; StartWordMachineBA _ dStartWordMachineAB; }; IF PhAb THEN { dACAMRegDriveCAMBitsAB _ Decode[$ACAMRegDriveCAMBits]; dDriveMBitsAB _ Decode[$DriveMBits]; dDriveMBitsNoMatchAB _ Decode[$DriveMBitsNoMatch]; dSetSharedAB _ Decode[$SetShared]; dResetMasterAB _ Decode[$ResetMaster]; dSetRPDirtyVPValidAB _ Decode[$SetRPDirtyVPValid]; dSetFlagsAB _ Decode[$SetFlags]; dACheckParityAB _ Decode[$ACheckParity]; dMDataDriveDelayedAB _ Decode[$MDataDriveDelayed]; }; IF PhBb THEN { dACAMRegDriveCAMBitsBA _ dACAMRegDriveCAMBitsAB; dDriveMBitsBA _ dDriveMBitsAB; dDriveMBitsNoMatchBA _ dDriveMBitsNoMatchAB; dSetSharedBA _ dSetSharedAB; dResetMasterBA _ dResetMasterAB; dSetRPDirtyVPValidBA _ dSetRPDirtyVPValidAB; dSetFlagsBA _ dSetFlagsAB; dACheckParityBA _ dACheckParityAB; dMDataDriveDelayedBA _ dMDataDriveDelayedAB; }; IF PhAb THEN { ACAMRegDriveCAMBitsA _ dACAMRegDriveCAMBitsBA; DriveMBitsA _ dDriveMBitsBA; DriveMBitsNoMatchA _ dDriveMBitsNoMatchBA; SetSharedA _ dSetSharedBA; ResetMasterA _ dResetMasterBA; SetRPDirtyVPValidA _ dSetRPDirtyVPValidBA; SetFlagsA _ dSetFlagsBA; ACheckParityA _ dACheckParityBA; MDataDriveDelayedA _ dMDataDriveDelayedBA; } ELSE ACAMRegDriveCAMBitsA _ DriveMBitsA _ DriveMBitsNoMatchA _ SetSharedA _ ResetMasterA _ SetRPDirtyVPValidA _ SetFlagsA _ ACheckParityA _ MDataDriveDelayedA _ FALSE; END; END; RegisterCells[]; END. ÐCacheMInterfaceMROM.Mesa created by RoseTranslate from CacheMInterfaceMROM.Rose of January 29, 1985 9:31:30 pm PST for curry.pa at January 29, 1985 9:38:42 pm PST Signal Type decls port indices: A xA _ PhAb AND Decode[$x]; B IF PhAb THEN dxAB _ Decode[$x]; xB _ PhBb AND dxAB; AB IF PhAb THEN xAB _ Decode[$x]; BA IF PhAb THEN dxAB _ Decode[$x]; IF PhBb THEN xBA _ dxAB; DA IF PhAb THEN dxAB _ Decode[$x]; IF PhBb THEN dxBA _ dxAB; xA _ PhAb AND dxBA; Ê <˜Icodešœ™Kšœ‰™‰K˜K˜šÏk ˜ K˜1—K˜šÐblœœ˜"Kšœ(˜/—K˜šœ˜ K˜%—K˜šœ™K˜—K˜šÏn œœ˜Kš˜˜.Kšœ œ˜K˜5K˜$Kšœ œ œ˜K˜Kšœœ˜!—Kšœ˜—K˜IK˜KšŸœœœ[˜xK˜Kšœ œœ ˜ š œ œœ œœ˜,K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜'K˜Kšœœ˜ K˜Kšœœ˜"K˜Kšœœ˜&K˜Kšœœ˜&K˜Kšœ!œ˜)K˜Kšœ"œ˜*K˜Kšœœ˜"K˜Kšœœ˜%K˜Kšœœ˜&K˜Kšœœ˜ K˜Kšœœ˜'K˜Kšœœ˜ K˜Kšœœ˜!K˜Kšœœ˜!K˜Kšœœ˜ K˜Kšœœ˜ K˜Kšœœ˜&K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜"K˜Kšœœ˜!K˜Kšœœ˜"K˜Kšœœ˜ K˜Kšœœ˜K˜Kšœœ˜!K˜Kšœœ˜!K˜Kšœœ˜$K˜Kšœœ˜%K˜Kšœœ˜"K˜Kšœœ˜"K˜Kšœœ˜%K˜Kšœœ˜K˜Kšœœ˜ K˜Kšœœ˜%K˜Kšœœ˜$K˜Kšœ$œ˜,K˜Kšœ'œ˜/K˜Kšœœ˜&K˜Kšœœ˜K˜Kšœœ˜!K˜Kšœœ˜'K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜&K˜Kšœœ˜&K˜Kšœœ˜!K˜Kšœœ˜%K˜Kšœœ˜$K˜Kšœœ˜#K˜Kšœœ˜'K˜Kšœ4œ˜