CKFixed IDNT ; Title of Check Fixed Data Routine SECTION Check_Data,4,C ; Declare a noncommon code section. ; Align to Longwords. ****************************************************************************** * * * Routine to Check a fixed pattern of data stored in CTFEs and transported * * to the MVME214 After It Has Moved Through the Full Readout Chain * * including ERPBs and DCs) and into the MVME214 * * Rev. 22-MAR-1994 * * * * An arbitrary (but FIXED) pattern of data is stored in the CTFEs for Racks * * M103 and M104. This data is learned by a different routine (a Learner * * routine). * * * * Once this data is learned, this module is used to verify all subsequent * * MFP Data Blocks (corresponding to the following L1.5 Cal Trig Cycles * * * * This module is insensitive to the details of the data. It simply * * checks the MFP Data Blocks against the values learned by the Learner. * ****************************************************************************** Align 4 CheckFxD Move.L A0,-(A7) ; Store the contents of register A0. Move.L A1,-(A7) ; Store the contents of register A1. Move.L A2,-(A7) ; Store the contents of register A2. Move.L A3,-(A7) ; Store the contents of register A3. Move.L D0,-(A7) ; Store the contents of register D0. Move.L D1,-(A7) ; Store the contents of register D1. Move.L D2,-(A7) ; Store the contents of register D2. Move.L D3,-(A7) ; Store the contents of register D3. ; Load the Address Registers with ; pointers to the data in the ; MVME214 memory module. MoveA.L #$010027b8,A0 ; A0 points to first rack TotEt in B4 MoveA.L #$010028b8,A1 ; A1 points to second rack TotEt in B4 MoveA.L #$01002738,A2 ; A2 points to first rack EMEt in B4 MoveA.L #$01002838,A3 ; A3 points to second rack EMEt in B4 Clr.L D0 Clr.L D1 Clr.L D2 Clr.L D3 Move.L (A0),D0 ; Get the first byte from the first AndI.L #$000000FF,D0 ; rack Tot Et. This is the "Seed" ; that we start with. MoveA.L #$010022FC,A0 ; A0 points the beginning of the ; MFP Data Block for LDSP B3 MoveA.L #Data_Block_Storage_Loc,A1 ; A1 points to the beginning of the ; memory used to store the MFP Data ; Block for verification on subsequent ; L1.5 Cal Trig Cycles Clr.L D0 Clr.L D1 Clr.L D2 Clr.L D3 FOR.L D3 = #1 TO #B3_B4_B1_MFP_Data_Length DO.L ; Loop over the length of the ; MFP Data Block of interest. ; Check each longword of the Data ; Block against the value stored in ; private memory Move.L (A0)+,D0 ; Get the longword from the Data ; Block IF.L D0 (A1)+ THEN.S ; Check the longword against the JSR Verify_Error ; value stored in private memory. ENDI ; If it does not match then jump ; to a "dead loop." ENDF ; End of this FOR loop Move.L (A7)+,D3 ; Restore the contents of register D3. Move.L (A7)+,D2 ; Restore the contents of register D2. Move.L (A7)+,D1 ; Restore the contents of register D1. Move.L (A7)+,D0 ; Restore the contents of register D0. Move.L (A7)+,A3 ; Restore the contents of register A3. Move.L (A7)+,A2 ; Restore the contents of register A2. Move.L (A7)+,A1 ; Restore the contents of register A1. Move.L (A7)+,A0 ; Restore the contents of register A0. RTS ; Return to the calling routine. Verify_Error NOP ; If there is an error then stall JMP Verify_Error ; out at this point. XDEF CheckFxD ; Export these symbols to other ; program modules. XREF Data_Block_Storage_Loc XREF B3_B4_B1_MFP_Data_Length ; These symbols are referenced in ; other program modules