CachePPads.rose
Last edited by: Barth, April 16, 1984 2:07:52 pm PST
Imports Dragon;
Open Dragon;
PDataPads: CELL[
Timing and housekeeping interface
Vdd, Gnd<BOOL,
PadVdd, PadGnd<BOOL,
Processor interface
PData=INT[32],
PParityB=BOOL,
Internal processor interface
PDataI=INT[32],
DrivePData, DrivePDataI<BOOL,
PParityI=BOOL
]
EvalSimple
Assert[NOT MoreThanOneOf[DrivePData, DrivePDataI]];
IF DrivePData THEN {
PData ← PDataI;
PParityB ← PParityI;
};
IF DrivePDataI THEN {
PDataI ← PData;
PParityI ← PParityB;
};
ENDCELL;
PCtlPads: CELL[
Timing and housekeeping interface
Vdd, Gnd<BOOL,
PadVdd, PadGnd<BOOL,
Processor interface
PCmdA<EnumType["Dragon.PBusCommands"],
PRejectB=BOOL,
PFaultB=EnumType["Dragon.PBusFaults"],
PNPError>BOOL,
Internal processor interface
PCmdI>EnumType["Dragon.PBusCommands"],
PRejectDriveHigh, PRejectDriveLow<BOOL,
PFaultDrive<BOOL,
PFaultI=EnumType["Dragon.PBusFaults"],
PNPErrorDriveLow<BOOL
]
EvalSimple
PCmdI ← PCmdA;
IF PRejectDriveHigh THEN PRejectB ← TRUE;
IF PRejectDriveLow THEN PRejectB ← FALSE;
IF PFaultDrive THEN PFaultB ← PFaultI;
IF PNPErrorDriveLow THEN PNPError ← FALSE;
ENDCELL