<> <> Directory BitOps; Open BitOps; MCtlSequencer: CELL[ <> Vdd, Gnd> <> PhAb, PhBb> nVirtualMatch, nMatchPageClean, nMatchCellShared=BOOL, nMapValid, nRealMatch, nVictimClean=BOOL, <

M control>> MDoneAB, MHeldAB>BOOL, MFaultAB>EnumType["Dragon.PBusFaults"], PCmdToMAB> DoShiftBA, DoExecuteBA, DoHoldBA> <> MDataI=INT[32], MDataDrive, MDataIDrive, MDataPipeBypass, MDataPipeTransfer>BOOL, MCmdInEnumType["Dragon.MBusCommands"], MCmdDrive>BOOL, MCmdDriveToDataTransport>BOOL, MCmdDriveToNoOp>BOOL, MNSharedSenseBABOOL, MNSharedDriveLow>BOOL, MNErrorDriveLow>BOOL, MReadySenseBOOL, MNewRqIBA>BOOL, MNewRqEnableBA>BOOL, MGntSense> ShiftEqual, nShiftEqual, ShiftFeedBack, nShiftFeedBack, ShiftShift, nShiftShift>BOOL, <> ParityOut> ShiftDataToSequencerBOOL, ShiftExecute, nShiftExecute>BOOL, <<>> <> CAMMDataIToMatchReg, CAMGetAdrRefresh, CAMGetAddress, CAMPageAccessToMDataI, CAMLowBitsAccessToMDataI, CAMAccessToMatch, CAMMatchToAccess, CAMVirtualAddressToAccess, CAMDriveCAMAccess>BOOL, <<>> <> RAMMDataIToMRAMReg, RAMMBitsToMRAMReg, RAMMRAMRegToMDataI, RAMMRAMRegToMBits, RAMMRAMRegToMBitsNoOrphan, RAMPBitsToMRAMReg, RAMLeftPBitsToMRAMReg, RAMMRAMRegToPBits>BOOL, <> FlagSetShared, FlagRPDirtyVPValid, FlagFlagLatch, FlagResetVPValid, FlagSetFlags, FlagSetTIP, FlagResetTIP, FlagResetMaster>BOOL, <<>> <> EntryMDataIToMAdrCtr, EntryGetAddress, EntryGetAdrRefresh, EntryRefresh, EntryMAdrCtrToMAdr, EntryIncMAdrCtr, EntryZeroMAdrCtr, EntryPAdrToMAdrCtr, EntryLowBitsAccessToMDataI, EntryLowBitsZeroToMDataI, EntrySelRealData, EntrySelPageFlag, EntrySelVictimData, EntrySelectVictimOrOrphan, EntryVirtualAccess, EntrynVirtualAccess, EntryShiftVictim, EntryFinishSharedStore>BOOL, <> GetAdrCmdBA>Mnemonic["GetAddressCommands"], GetAddressDoneBABOOL, IsNoOpBA, IsCleanBA, MatchRealBA>BOOL ] State holdTypeBA: BOOL, notHoldTypeBA: BOOL, pWantsM: BOOL, currentPDemandsBA, currentPDemandsAB: BitWord, -- this is actually an array of 7 bools, one per sequence needed. didRMBA, dirtyPageBA: BOOL, faultBitsAB: PBusFaults, mIdleAB, mIdleBA: BOOL, newRqAB, newRqBA: BOOL, mGntSenseAB, mRqAB: BOOL, holdingAB, holdingBA: BOOL, currentSequenceAB: BitWord, ioDoneAB: BOOL, parityErrorAB: BOOL, cycleShifterAB, cycleShifterBA: BitWord, -- sequence of 7 bits slaveAB: BOOL, forceSlaveBA: BOOL, driveMDataDelayedAB, dCheckParityAB, stopPipeAB: BOOL, parityBA: BOOL, mCmdOutAB, mCmdOutBA: MBusCommands, seqSenseSharedBA, seqMDoneBA, seqDoneBA, seqForceIdleBA, seqForceIdleAB, seqSenseReadyBA, seqMDataIToFaultsBA, seqCheckFaultsBA, seqDriveSharedBA, seqMDataIDriveBA, seqDriveMDataBA, seqDriveMDataDelayedBA, seqDriveMCmdBA, seqDriveMCmdToDataTransportBA, seqDriveMCmdToNoOpBA, seqDCheckParityBA, seqStopPipeNoReadyBA: BOOL, romSequence: BitWord, shiftData, nshiftData: BitDWord, phBLast: BOOL, pCAMMDataIToMatchReg, pCAMGetAdrRefresh, pCAMGetAddress, pCAMAccessToMatch, pCAMMatchToAccess, pCAMVirtualAddressToAccess, pCAMDriveCAMAccess: BOOL, pRAMMDataIToMRAMReg, pRAMMBitsToMRAMReg, pRAMMRAMRegToMDataI, pRAMMRAMRegToMBits, pRAMMRAMRegToMBitsNoOrphan, pRAMMRAMRegToPBits: BOOL, pFlagSetShared, pFlagRPDirtyVPValid, pFlagFlagLatch, pFlagSenseShared, pFlagResetVPValid, pFlagSetFlags, pFlagSetTIP, pFlagResetTIP, pFlagResetMaster:BOOL, pEntryFinishSharedStore:BOOL EvalSimple behaviour[cell]; ENDCELL; CEDAR behaviour: CellProc; RegisterBehaviour: PUBLIC PROC[b: CellProc]={ behaviour _ b};