All_DSPs_Step_D0 IDNT ; Title of the program section that ; tests and trys to get all 12 DSPs ; to step D0. SECTION Sect_All_DSPs_Step_D0,4,C ; Declare a noncommon code section. ; Align to Longwords. *************************************************************************** * * * Routine to test to see if all DSP's are at Step D0. If they are not * * all at Step D0 then this routine checks to see if it can move them * * there. * * Rev. 17-MAY-1995 * * * * * * * * This routine uses and does not restore Registers: D4. * * * *************************************************************************** ************************************************************************* * * * First check to see if the All_DSPs_at_Step_D0 flag is already set. * * * ************************************************************************* Begin_All_DSPs_to_Step_D0: IF.B All_DSPs_at_Step_D0 #Flag_SET THEN.S ; Test to see if all RTS ; DSP's are already at ENDI ; step D0. If so, exit. ************************************************************************* * * * OK, if we reach here then the All_DSPs_at_Step_D0 flag is not * * already set, so let's test to see if we may move all DSP to Step D0. * * * * Read the "DSP to EC Status Word" for the Global DSP. * * * * If the "DSP to EC Status Word" indicates that the Global DSP * * HAS reached Step D15 then continue with this routine. If this * * status word indicates that the Global DSP has NOT yet reaches * * Step D15 then exit this routine. * * * * NOTE: When the Global DSP is at Step D15 it may have one of two * * different values in its "DSP to EC Status Word" (Status * * to 68k_Services) depending upon whether or not it * * transfered data to the MVME-214 memory module on the * * current L15CT cycle. * ************************************************************************* Move.L GDSP_B2_Status_Adrs,D4 ; Read the Glb DSP Status AndI.W #$8000,D4 ; Word. Keep only the D15 IF.W D4 #GDSP_at_D15 THEN.S ; bit. Test if Glb DSP has RTS ; reached Step D15. If NOT ENDI ; at Step D15 then exit. ************************************************************************* * * * If we reach this point then we are going to move all 12 DSP to * * Step D0 via the following steps. * * * * Re-Enable the External Enable signal to Ch#7 of the L15CT MTG, * * i.e. allow the L15CT MTG to send out a Transmit Trigger (either * * if it has remembered that there has already been a new L1 Trigger * * or as soon as there is a new L1 Trigger). * * * * Clear the previous valid Wake Up Word. * * * * Check the Told_GDSP_to_Transfer software flag. If it is Set * * then set the All_Data_In_Load_Buf software flag. * * * * Clear the previously valid "Transfer to 214 Required Word" that * * is used by the Global DSP. * * * * Check to see that all 12 DSP's now indicate in their "DSP to EC * * Status Words" that they are all at Step D0. * * * * Set the software flag, All_DSPs_at_Step_D0, that indicates * * that all 12 DSP's are at Step D0 and ready for the next WUW. * * * * Exit this routine. * * * ************************************************************************* ****** Re_Enable the ExtEnb Signal to Ch #7 of the L15CT MTG ******* Move.B #$00,Path_Select_Port_1 ****** CLEAR the previously valid Wake_Up_Word ******* Move.L #$0000FF00,Ser68_to_Hydra_A_Adrs ; Local DSP's Hydra-II A. Move.L #$0000FF00,Ser68_to_Hydra_B_Adrs ; Local DSP's Hydra-II B. Move.L #$0000FF00,Ser68_to_Hydra_C_Adrs ; Local DSP's Hydra-II C. Move.L #$0000FF00,Ser68_to_Hydra_B_Adrs+4 ; Global DSP's Hydra-II B. ****** Give the 12 DSP's time to reach Step D0 before checking ****** ****** on them by right now taking the time to test the ****** ****** Told_GDSP_to_Transfer software flag. If this flag is ****** ****** SET then set the All_Data_In_Load_Buf software flag. ****** IF.B Told_GDSP_to_Transfer #Flag_SET THEN.S Move.B #Flag_SET,All_Data_In_Load_Buf ; SET the All_Data_In_Load_ ; _Buf software flag. ENDI ****** Give the 12 DSP's even more time to reach Step D0 before ****** ****** checking on them by right now taking the time to CLEAR ****** ****** the previously valid "Transfer to 214 Required Word" ****** ****** that is used by the Global DSP. ****** Move.L #$000000FF,Ser68_to_Hydra_B_Adrs+8 ; Global DSPs card "B". ****** OK, now check all 12 DSP to verify that they have all ****** ****** reached Step D0. ****** Wait_A1 Move.L LDSP_A1_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP A1. If it is not at JMP Wait_A1 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_A2 Move.L LDSP_A2_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP A2. If it is not at JMP Wait_A2 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_A3 Move.L LDSP_A3_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP A3. If it is not at JMP Wait_A3 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_A4 Move.L LDSP_A4_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP A4. If it is not at JMP Wait_A4 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_B1 Move.L LDSP_B1_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP B1. If it is not at JMP Wait_B1 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_B2 Move.L GDSP_B2_Status_Adrs,D4 ; Read the current status of IF.W D4 #GDSP_at_D0 THEN.S ; DSP B2. If it is not at JMP Wait_B2 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_B3 Move.L LDSP_B3_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP B3. If it is not at JMP Wait_B3 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_B4 Move.L LDSP_B4_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP B4. If it is not at JMP Wait_B4 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_C1 Move.L LDSP_C1_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP C1. If it is not at JMP Wait_C1 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_C2 Move.L LDSP_C2_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP C2. If it is not at JMP Wait_C2 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_C3 Move.L LDSP_C3_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP C3. If it is not at JMP Wait_C3 ; Step D0 then wait for it ENDI ; to reach Step D0. Wait_C4 Move.L LDSP_C4_Status_Adrs,D4 ; Read the current status of IF.W D4 #LDSP_at_D0 THEN.S ; DSP C4. If it is not at JMP Wait_C4 ; Step D0 then wait for it ENDI ; to reach Step D0. ****** OK, we have verified that all 12 DSP's are at Step D0, so ****** ****** SET the All_DSPs_at_Step_D0 software flag and return. ****** Move.B #Flag_SET,All_DSPs_at_Step_D0 ; SET the All_DSPs_at_Step_D0 ; software flag. RTS ; Return to the calling routine. ************************************************************************* * Define Constants: * * * * * ************************************************************************* ALIGN 4 ; Align to longword address. ************************************************************************* * * * Constants Section * * * ************************************************************************* XDEF Begin_All_DSPs_to_Step_D0 ; Symbol exported to ; other modules. ; Symbols used in this module but defined in another program module. XREF Flag_CLR XREF Flag_SET XREF All_DSPs_at_Step_D0 XREF LDSP_A1_Status_Adrs,LDSP_A2_Status_Adrs XREF LDSP_A3_Status_Adrs,LDSP_A4_Status_Adrs XREF LDSP_B1_Status_Adrs XREF LDSP_B3_Status_Adrs,LDSP_B4_Status_Adrs XREF LDSP_C1_Status_Adrs,LDSP_C2_Status_Adrs XREF LDSP_C3_Status_Adrs,LDSP_C4_Status_Adrs XREF GDSP_B2_Status_Adrs XREF Ser68_to_Hydra_A_Adrs,Ser68_to_Hydra_B_Adrs XREF Ser68_to_Hydra_C_Adrs XREF All_Data_In_Load_Buf XREF Told_GDSP_to_Transfer XREF LDSP_at_D0 XREF GDSP_at_D0 XREF GDSP_at_D15 XREF Path_Select_Port_1 END