; MAG_DL_SETUP ; ; Routine to downlink stored magnetograms. This routine should be called ; by the VC2 campaign observation. The VC2 campaign observation generates ; a High-Resolution magnetogram. ; ; The downlink is started on the first frame of the VC2 OBS. At this time ; the velocity created by the Prime30 program is available in Page 5 and ; continuum in Page 6. ; ; The Call Number is incremented by the routine. It is reset by the CHEAD ; program. ; ; ; Call Number Page 1 Page 2 ; (Minute) ; 1 Stored Mag 1 Velocity-CB ; (Velocity) ; ; 2 Stored Mag 2 Ic-CB ; (Velocity) ; ; 3 Stored Mag 3 ; (No Mag Flag) ; ; 4 Stored Mag 4 ; (No Mag Flag) ; ; 5 Stored Mag 5 ; (No Mag Flag) ; ; 6 No Mag Flag ; ; 7 No Mag Flag ; ; . . ; ;...................... ; ; Calling Sequence: ; CALLQUE &MAG_DL_SET ; ; The call updates the following registers: ; $IPRL_MAG_DLPAGES 1st Page Number ; ; $IPRL_MAG_DLPAGES+1 2nd Page Number ; ; $IPRL_MAG_PGLEN1 LS word of length of Page 1 ; $IPRL_MAG_PGLEN1+1 MS word of length of page 1 ; ; $IPRL_MAG_PGLEN2 LS word of length of Page 2 (= 0 if no Page 2) ; $IPRL_MAG_PGLEN2+1 MS word of length of Page 2 (= 0 if no page 2) ; ; Notes: ; 1. $IPRL_MAG_PAGE = 0xA000 to indicate "No Mag Page" Condition ; 2. $IPRL_MAG_PAGE+1 = 0xFFFF if only 1 page is to be downlinked ; 3. $IPRL_MAG_DLC is incremented by 1 on each call ; 4. The LS Word for $IPRL_MAG_PAGE+1 is 0 for min1 and min2. ; ; HISTORY: ; Written Nov-95 by D.Mathur ; 16-Nov-95 (MDM) - Modified how the $IPRL_MAG_PGLEN1 registers ; are set for stored magnetogram. Copy the value ; from R71-72 instead of from $IPRL_MAG_DLPLEN ; (where it wasn't being set ever). ; 7-Feb-96 (DPM) - Changed downlink length for 800 minute circular ; buffers. ; 14-May-96 (MDM) - Changed source page for circular buffer from ; 6001 to 7008 (LOI-V) and ; 6005 to 7006 (LOI-C) ;...................... ; QSR_MAG_STORD_PG:: ; ADDREGD $IPRL_MAG_DLC 1 BRANCHEQ $IPRL_MAG_DLC 1 &MIN_1 BRANCHEQ $IPRL_MAG_DLC 2 &MIN_2 GOTO &MIN_3 ; ;...................... ; MIN_1: SETREG $IPRL_MAG_DLPAGES+1 0x7008 ; $VEL_CB_PAGE SETREGS $IPRL_MAG_PGLEN2 2 0x23F00L ; $VEL_CB_LEN SETREG $IPRL_MAG_P1DP &DL_VEL CALLQUE &SETP1 RTNQUE ; MIN_2: SETREG $IPRL_MAG_DLPAGES+1 0x7006 ; $IC_CB_PAGE SETREGS $IPRL_MAG_PGLEN2 2 0x23F00L ; $LEN_IC_CB SETREG $IPRL_MAG_P1DP &DL_VEL CALLQUE &SETP1 RTNQUE ; MIN_3: SETREG $IPRL_MAG_P1DP &DL_HRMAG CALLQUE &SETP1 ; SETREG $IPRL_MAG_DLPAGES+1 0xFFFF SETREGS $IPRL_MAG_PGLEN2 2 0L RTNQUE ; ;...................... ; SETP1: ; CALLQUE &QSR_MAG_CKMAG BRANCHNE $IPRL_MAG_DLPAGE 0xFFFF &DL_STOR_MAG ; GOTOREG $IPRL_MAG_P1DP ; DL_STOR_MAG: COPYREG $IPRL_MAG_DLPAGE $IPRL_MAG_DLPAGES ; COPYREG $IPRL_MAG_DLPLEN $IPRL_MAG_PGLEN1 ; COPYREG $IPRL_MAG_DLPLEN+1 $IPRL_MAG_PGLEN1+1 COPYREG R71 $IPRL_MAG_PGLEN1 COPYREG R72 $IPRL_MAG_PGLEN1+1 RTNQUE ; DL_VEL: SETREG $IPRL_MAG_DLPAGES 0x2800 ; $VEL_PAGE COPYREG R71 $IPRL_MAG_PGLEN1 COPYREG R72 $IPRL_MAG_PGLEN1+1 RTNQUE ; DL_HRMAG: SETREG $IPRL_MAG_DLPAGES 0xA000 SETREGS $IPRL_MAG_PGLEN1 2 0L RTNQUE ;...................... ; ; Subroutine to downlink stored magnetograms ; ; The MAG30 routine sets a register for each page which contains a ; completed magnetogram. This routine examines each register in turn ; and copies the first magnetogram found to the downlink page. ; ; QSR_MAG_CKMAG:: ; SETREG $IPRL_MAG_DLPAGE 0xFFFF ; CKMAG: BRANCHIF $IPRL_MAG_DONE1 &CKMAG2 COPYREG $IPRL_MAG_DONE1 $IPRL_MAG_DLPAGE SETREG $IPRL_MAG_DONE1 0 RTNQUE ; CKMAG2: BRANCHIF $IPRL_MAG_DONE1+1 &CKMAG3 COPYREG $IPRL_MAG_DONE1+1 $IPRL_MAG_DLPAGE SETREG $IPRL_MAG_DONE1+1 0 RTNQUE ; CKMAG3: BRANCHIF $IPRL_MAG_DONE1+2 &CKMAG4 COPYREG $IPRL_MAG_DONE1+2 $IPRL_MAG_DLPAGE SETREG $IPRL_MAG_DONE1+2 0 RTNQUE ; CKMAG4: BRANCHIF $IPRL_MAG_DONE1+3 &CKMAG5 COPYREG $IPRL_MAG_DONE1+3 $IPRL_MAG_DLPAGE SETREG $IPRL_MAG_DONE1+3 0 RTNQUE ; CKMAG5: BRANCHIF $IPRL_MAG_DONE1+4 &MAG_DL_END COPYREG $IPRL_MAG_DONE1+4 $IPRL_MAG_DLPAGE SETREG $IPRL_MAG_DONE1+4 0 RTNQUE ; MAG_DL_END: RTNQUE