; ; FILE: tap_burst_v03.ips ; PURPOSE: To take a quick series of images, and then to take several minutes ; to telemeter them down. ; METHOD: This source is used for several different IP program entry points ; depending on how many images are to be taken and saved. ; ; The observation is written such that there are twice as many images ; in the frame list as a person wan't downlinked. If you want 10 images ; taken and downlinked, then you write the sequence to take the 10 ; in quick succession (probably separated by 3 seconds), and then take ; an image every 60(?) seconds to do the downlinking (10 images there too) ; RESTRICTIONS: ; Pages used: 0 (for input of the raw camera image) ; 1 (for output of 1024x1024 extracted image with a header) ; ?? (for storing of the image) ; HISTORY: Written 25-Aug-95 by M.Morrison ; 30-Aug-95 (MDM) - Changed the name ; 20-Sep-95 (MDM) - Worked on debugging it so it can work ; 2-Oct-95 (MDM) - fixed timing problem ; 19-Oct-95 (MDM) - Changed how FLTGRAM_PARAM is used ; 9-Nov-95 (MDM) - Added several new entry points so there are entry ; points for frames 1-14 now. ; 16-Nov-95 (MDM) - Changed the subroutine call for the debug statement ; from QSR_DUMP_IPREG to QSR_DEBUG_IPREG ; 17-Nov-95 (MDM) - Modified to use 0x0500 offsets instead of 0x0226 ; NOTES: ; N_FRMS = 6 ; ; Frm: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; N_FRM - Frm: 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 ; N_FRM - Frm + N_FRM: . . . . . . 5 4 3 2 1 0 -1 -2 -3 ; Store images: ***************** ; DL images: ********************* ; Ignore: ********** QPROG_TAPB_1FRM:: SETREG $IPRL_TAPB_N_FRMS 1 ;set up how many frames will be coming in GOTO &QPROG_TAPB QPROG_TAPB_2FRM:: SETREG $IPRL_TAPB_N_FRMS 2 ;set up how many frames will be coming in GOTO &QPROG_TAPB QPROG_TAPB_3FRM:: SETREG $IPRL_TAPB_N_FRMS 3 ;set up how many frames will be coming in GOTO &QPROG_TAPB QPROG_TAPB_4FRM:: SETREG $IPRL_TAPB_N_FRMS 4 ;set up how many frames will be coming in GOTO &QPROG_TAPB QPROG_TAPB_5FRM:: SETREG $IPRL_TAPB_N_FRMS 5 ;set up how many frames will be coming in GOTO &QPROG_TAPB QPROG_TAPB_6FRM:: SETREG $IPRL_TAPB_N_FRMS 6 ;set up how many frames will be coming in GOTO &QPROG_TAPB QPROG_TAPB_7FRM:: SETREG $IPRL_TAPB_N_FRMS 7 GOTO &QPROG_TAPB QPROG_TAPB_8FRM:: SETREG $IPRL_TAPB_N_FRMS 8 GOTO &QPROG_TAPB QPROG_TAPB_9FRM:: SETREG $IPRL_TAPB_N_FRMS 9 GOTO &QPROG_TAPB QPROG_TAPB_10FRM:: SETREG $IPRL_TAPB_N_FRMS 10 GOTO &QPROG_TAPB QPROG_TAPB_11FRM:: SETREG $IPRL_TAPB_N_FRMS 11 GOTO &QPROG_TAPB QPROG_TAPB_12FRM:: SETREG $IPRL_TAPB_N_FRMS 12 GOTO &QPROG_TAPB QPROG_TAPB_13FRM:: SETREG $IPRL_TAPB_N_FRMS 13 GOTO &QPROG_TAPB QPROG_TAPB_14FRM:: SETREG $IPRL_TAPB_N_FRMS 14 GOTO &QPROG_TAPB QPROG_TAPB:: ;----- Common code starts here GETQADR $IPRL_DEBUG_ADDR CALLQUE $QSR_DEBUG_IPREG ;get the IP register status COPYREG R3072 $IPRL_TAPB_Q_DL ;copies the frame number in the observation REGSUB $IPRL_TAPB_N_FRMS $IPRL_TAPB_Q_DL $IPRL_TAPB_Q_DL ;subracts off the number of frame to be stored/downlinked BRANCHLT $IPRL_TAPB_Q_DL 0 &DL_PART ;If we've already got all frames to downlink, do the downlink ;--- Frames 1 to N_FRMS ;<<<< Receiving the image, making the header, and storing it >>>> COPYREG R3072 $IPRL_TAPB_FRMNUM ;first half they are the true frame number ADDREGD $IPRL_TAPB_FRMNUM -1 ;really want N-1 SETREG $IPRP_TAPB_PAGENUM $IPRL_TAPB_PAGELST ;put the starting register number for the page list info a reg REGADD $IPRP_TAPB_PAGENUM $IPRL_TAPB_FRMNUM $IPRP_TAPB_PAGENUM ;move forward to point to the right page COPYRI2D $IPRP_TAPB_PAGENUM $IPRL_TAPB_PAGENUM 3 ;copy the page number out into a fixed place SETREGS $IPRL_FLTGRAM_PARAM 4 0:0x0000 0:0x0500 ;set source page to zero (and destination page low word) COPYREG $IPRL_TAPB_PAGENUM $IPRL_FLTGRAM_PARAM+3 ;set the high word of the destination page COPYRD2D $IPRL_FLTGRAM_TAPB $IPRL_FLTGRAM_PARAM+8 3 ;last three words are n/k, dpc(l), dpc(h) CALLQUE $QSR_MK_FLTGRAM GOTO &DONE DL_PART: REGADD $IPRL_TAPB_N_FRMS $IPRL_TAPB_Q_DL $IPRL_TAPB_Q_DL ;subracts off the number of frame to be stored/downlinked BRANCHLT $IPRL_TAPB_Q_DL 0 &DONE ;If we've already downlinked all of the images, exit ;--- Frames N_FRMS+1 to N_FRMS*2 REGSUB R3072 $IPRL_TAPB_N_FRMS $IPRL_TAPB_FRMNUM ;the frame number to downlink ADDREGD $IPRL_TAPB_FRMNUM -1 ;really want N-1 SETREG $IPRP_TAPB_PAGENUM $IPRL_TAPB_PAGELST ;put the starting register number for the page list info a reg REGADD $IPRP_TAPB_PAGENUM $IPRL_TAPB_FRMNUM $IPRP_TAPB_PAGENUM ;move forward to point to the write page COPYRI2D $IPRP_TAPB_PAGENUM $IPRL_TAPB_PAGENUM 3 ;copy the page number out into a fixed place COPYREG $IPRL_TAPB_PAGENUM $IPRL_DL_PARAM ;set up the source page to be downlinked GETQADR $IPRL_DEBUG_ADDR CALLQUE $QSR_DEBUG_IPREG ;get the IP register status CALLQUE $QSR_DL_1PAGE DONE: END