;================================================================ ; DEP_MOS.DPS (v 2.00) ; ; Sequence to test List processing instrcutions ; (This version is currently built into DFC1002) ; ; V2.00 22 Mar 95 Dnyanesh Mathur ; 1. Moved the command to set frame exposure after the call ; to DFRM (decode frame) in the OBSPROC section. This ; enables each frame to use different exposures. ; 2. Frame numbers count from 1 to 20, rather than 0 to 19. ;---------------------------------------------------------------- ; ; Register Usage: ; ; ; Regsiter Usage: ; dpm 26 Aug 94 ; ; Range Usage ; 0-7 IP-DEP Communication ; 8-15 Main Sequence Parameters ; 16-23 DEP Flags ; 24-31 SCR implicit operands ; 32-47 SCR List Processing Instructions ; 48-63 Normal Sequence Table ; 64-72 Main Sequence Control Flags ; ; ; IP_DEP Commnunications Registers: ; ; Register # Usage ; R0 Frame Number ; R1 Ticks w.r.t. Reference Time ; R2 Cycle # (Interval Count) ; R3 Telemetry Virtual Channel ; R4 ; R5 Dynamics ; R6-R7 Offset ; ; R8 # Observations performed ; R9 Current observation repeat count ; R10 Duration in current mode ; R11 Frame number in current observation ; ; R12-R15 Spare ; ; DEP Flags: ; R16 IP Interrupt Code ; R17 IP Interrupt Count ; R18 Intra Instrument Command flag ; ; R23 DEP Master Sequence Stage ; R24 Epoch ; R25 Hidden IPB address ; R26 MTM1 Offset Register ; R27 MTM2 Offset Register ; R28 DMB address auto incr/decr flag ; R29 Hidden DMB Address ; R30 OCB Address auto incr/decr flag ; R31 Hidden OCB Address ; ; Frame List Processing ; R32 Sequence ID (LS word) ; R33 Sequence ID (MS word) ; R34 Time of 1st Frame ; R35 Exposure ; R36 CAL1 Device Fucntion ; R37 CAL1 Position ; R38 CAL2 Device Function ; R39 CAL2 Position ; R40 PAW Device Function ; R41 PAW Position ; R42 CAL Move Flag ; R43 Image Type ; R44 Time ; ; R45 Address of Frame List ; R47 ALT Seq Address (Temporary) ; ; Normal Sequence Table (Load Registers): ; R48 Prime60 Address ; R49 Prime30 Address ; R50 ALT Address ; R51 ALT Header Sequence ; R52 ALT Tail Sequence ; R53 ALT Repeat Count ; R54 ALT Cadence ; ; ALT Observation Control: ; R55 Cycle Time (Cadence + ALT repeat count) ; R56 # ALT repeats remaining ; ; Normal Sequence Table (Working Registers): ; R57 Prime60 Address ; R58 Prime30 Address ; R59 ALT Address ; R60 ALT Header Sequence ; R61 ALT Tail Sequence ; R62 ALT Repeat Count ; R63 ALT Cadence ; ; Control Flags: ; R64 New Prime Table Flag ; R65 ALT Enable Flag ; R66 Campaign Flag ; R67 Campaign List Address ; R68 New List Flag ; R69 New List Address ; R70 II Flag ; R71 II List Address ; R72 Chain List Enable Flag ; R73 Chain List Address ; ; Miscellaneous Register Usage: ; R81 Campaign Header Seq ; R82 Prime30C ; R83 Campaign Seq ; R84 Campaign Tail Seq ; ;================================================================ ; LT: .SEQ 0xABCD 0xFFFF SET R24 1 ; Set Epoch = 1 ; TOP: SET R12 &PriT LDR R48 R12 ; Address of PRIME60 LDR R49 R12 ; Address of PRIME30 LDR R50 R12 ; Address of ALT Obs LDR R51 R12 ; ALT Header Obs LDR R52 R12 ; ALT Tail Obs LDR R53 R12 ; ALT Repeat Count LDR R54 R12 ; ALT Cadence ; LDR R67 R12 ; Campaign List Address LDR R69 R12 ; New List Address LDR R71 R12 ; II List Address ; CLR R8 ; Set number of observations = 0 CLR R10 ; SRT TIM 16 ; There are 59 sec to next Ref Time ; SIC ; NEW_PRIME: ; Copy Prime List to the working registers CLR R64 ; SET R57 R48 SET R58 R49 SET R59 R50 SET R60 R51 SET R61 R52 SET R62 R53 SET R63 R54 ; SET R55 R63 ; The interval Counter is reset if it ADD R55 R62 ;_equals R55 (= Cadence+#Repeats) ; INC R8 ; Increment Observations count CLR R9 ; Initialize observation repeat count CLR R11 ; Initialize Frame counter ; MAINLOOP: BNZ &NEW_PRIME R64 ; Re-load table if a new prime list available INC R9 ; Increment repeat count GIC R2 BLT &DOPRIME R2 R55 ; Check if interval counter needs to be reset SIC ; DOPRIME: BEQ &LISPROC R66 0x0001 ; Do campaign if flag set ; INC R10 ; Increment duration in mode count ; SET R45 R57 SRT SET R23 0 ; Set Stage Variable CLL &OBSPROC 0x0000 ; Prime60 ; BZ &MAINLOOP R65 ; ALT disabled; repeat prime60 GIC R2 BLT &MAINLOOP R2 R63 ; Time to do ALT? ; SET R19 R9 ; Save Prime60 repeat count CLR R9 SET R20 R11 CLR R11 ; SRT SET R45 R60 SET R23 1 ; STAGE = 1 CLL &OBSPROC 0x0000 ; ALT Header ; SET R56 R62 ALTLOOP: INC R10 ; Increment duration in mode count SRT SET R45 R58 SET R23 2 ; STAGE = 2 CLL &OBSPROC 0x0000 ; Prime30 BZ &ALTDONE R56 SET R45 R59 SET R23 3 ; STAGE = 3 CLL &OBSPROC 0x0000 ; Alt DEC R56 INC R9 ; Incr ALT Repeat Count UBR &ALTLOOP ; ALTDONE: SET R45 R61 SET R23 4 ; STAGE = 4 CLL &OBSPROC 0x0000 ; Tail ; SET R9 R19 ; Restore Prime60 Repeat Count SET R11 R20 UBR &MAINLOOP ; ;.......................................................... LISPROC: OPNL R81 R67 ; List Header address is in R81 ; SRT SET R45 R81 SET R23 8 ; STAGE = 8 CLL &OBSPROC 0x0000 ; Call Header Obs ; GPRI R82 ; R82 = Prime30C SET R10 0xFFFF ; Reset duration in mode flag ; LISTLOOP: INC R10 ; Increment Mode duration counter GIC R2 BLT &DOPRI30 R2 R55 ; Time to reset Interval Counter? SIC ; DOPRI30: SRT SET R45 R82 SET R23 9 ; STAGE = 9 CLL &OBSPROC 0x0000 ; Do Prime30C Obs ; CHKALT: BZ &CKIIFLG R65 ; ALT Disabled BNZ &DOALTC R56 ; GIC R2 BNE &CKIIFLG R2 R63 ; Not time to call ALT yet GALT R47 SET R56 R62 ; Initialize repeat count ; DOALTC: SET R45 R47 SET R23 11 ; STAGE = 11 CLL &OBSPROC 0x0000 ; Call ALT Obs DEC R56 UBR &LISTLOOP ; CKIIFLG: BZ &CKNEWL R70 ; Check if II flag has been received SET R67 R71 ; List Address = II List Address CLR R70 ; Clear II Flag UBR &CMPGDONE ; Make a clean transition to II list ; CKNEWL: BZ &CALLOBS R68 ; Check if a new list is available SET R67 R69 ; List Address = New List Address CLR R68 ; Clear new list flag UBR &CMPGDONE ; Finish off the old list ; CALLOBS: BZ &CMPGDONE R66 ; Campaign still active? GLSQ R45 ; Get address of next list observation BEQ &CKCHAIN R45 0xFFFF ; If end of list, check for chain list SET R23 10 ; STAGE = 10 CLL &OBSPROC 0x0000 ; Do Campaign Obs UBR &LISTLOOP ; CMPGDONE: CLSL R45 ; Get address of tail obs SET R23 12 ; STAGE = 12 CLL &OBSPROC 0x0000 ; SET R10 0xFFFF ; Reset Duration in mode counter UBR &MAINLOOP ; CKCHAIN: BZ &LISTLOOP R72 ; Chain list specified? CLSL R45 ; Close current list SET R67 R73 ; List Address = Chain List address OPNL R81 R67 ; Open chain list GPRI R82 ; Get new Prime30C address UBR &LISTLOOP ; Continue campaign loop ; ;.......................................................... ; OBSPROC: IFRM R45 R128 ; CLR R0 ; Initialize Frame Number ; BEQ &SETC1 R40 4 DC2 R40 R41 SETC1: BEQ &SETC2 R36 7 DC2 R36 R37 SETC2: BEQ &NXTFRM R38 8 DC2 R38 R39 ; NXTFRM: DFRM R128 EXP R35 ; DFRM stores exposure value in R35 BZ &DOCON R42 ; DC2 R36 R37 DC2 R38 R39 ; DOCON: INC R0 ; Frame_Number++; Must be before CON INC R11 ; Frames_in_OBS++ CO1 $ $ &IPB0 TIM R44 ; DFRM saves time in R44 BEQ &CHKFRM R43 3 TAP ; CHKFRM: BZ &DONEOBS R128 GRT R1 ; Ticks since Reference Time UBR &NXTFRM ; DONEOBS: RET ; IPB0: .IPB 0x00o 0x00o 0x01o 0x00o 0x00o 0x00o DMB0: .DMB 0x00o 0x00o 0x00o 0x00o OCB0: .OCB 0x00o 0x00o 0x00o 0x00o PriT3: .IPB 0x0000 0x0000 0x0000 PriT2: .IPB 0x0002 0x0000 0x0000 PriT1: .IPB 0x0004 0x0005 0x0003 PriT: .IPB 0x0000 0x0002 0x0003 ;===============================================================