<> <> <> <<>> <> <<>> DIRECTORY SoftcardBDVM, SoftcardBDVMCheck; SoftcardBDVMCheckImpl: CEDAR PROGRAM IMPORTS SoftcardBDVM EXPORTS SoftcardBDVMCheck ~ BEGIN commStart: CARD32 = 1E2000h; commLength: CARD32 = 10000h/2; -- in words softcardWordPageSize: CARD32 = 1000h; prevFirstPhiAd: CARD32 _ 0; Mismatch: SIGNAL ~ CODE; Check: PUBLIC PROC ~ { <<Description of the procedure.>> prevPagePhiAd: CARD32 _ SoftcardBDVM.RealFromAddress[[commStart]]; IF prevFirstPhiAd=0 THEN prevFirstPhiAd _ prevPagePhiAd ELSE IF prevFirstPhiAd#prevPagePhiAd THEN Mismatch; FOR realAd: CARD32 _ commStart+softcardWordPageSize, realAd+softcardWordPageSize UNTIL realAd>=commStart+commLength DO thisPagePhiAd: CARD32 _ SoftcardBDVM.RealFromAddress[[realAd]]; IF thisPagePhiAd#prevPagePhiAd+2*softcardWordPageSize THEN Mismatch; prevPagePhiAd _ thisPagePhiAd; ENDLOOP; }; <<>> END.