IF CAMRegSenseMDataIB
THEN {
PageReg ← MDTD[MDataI, 32, 0, 24, PageReg, 24, 0, 24];
BlockReg ← MDTW[MDataI, 32, 24, 4, BlockReg, 4, 0, 4];
};
TRUSTED {
cpd: SwitchMWord ← DESCRIPTOR[CAMPage];
ncpd: SwitchMWord ← DESCRIPTOR[nCAMPage];
cbd: SwitchMWord ← DESCRIPTOR[CAMBlock];
ncbd: SwitchMWord ← DESCRIPTOR[nCAMBlock];
s: SwitchTypes.Strength ← IF DriveCAMBits THEN driveStrong ELSE none;
IF PageRegSenseCAMBitsA THEN PageReg ← CSTD[cpd, 24, 0, 24, PageReg, 24, 0, 24];
IF BlockRegSenseCAMBitsA THEN BlockReg ← CSTW[cbd, 4, 0, 4, BlockReg, 4, 0, 4];
SCDTS[PageReg, 24, 0, 24, cpd, 24, 0, 24, [[s, L], [s, H]]];
SCDTS[PageReg, 24, 0, 24, ncpd, 24, 0, 24, [[s, H], [s, L]]];
SCWTS[BlockReg, 4, 0, 4, cbd, 4, 0, 4, [[s, L], [s, H]]];
SCWTS[BlockReg, 4, 0, 4, ncbd, 4, 0, 4, [[s, H], [s, L]]];
IF PrechargeCAMBits
THEN {
SCDTS[BitDWordOnes, 24, 0, 24, cpd, 24, 0, 24, [[none, X], [drive, H]]];
SCDTS[BitDWordOnes, 24, 0, 24, ncpd, 24, 0, 24, [[none, X], [drive, H]]];
SCWTS[BitWordOnes, 4, 0, 4, cbd, 4, 0, 4, [[none, X], [drive, H]]];
SCWTS[BitWordOnes, 4, 0, 4, ncbd, 4, 0, 4, [[none, X], [drive, H]]];
};
};