'   A = Main Camera Delay Time (MIN)
'   B = Right Strobe Charge Time (SEC)
'   C = Left Strobe Charge Time (SEC)
'   D = Strobe Charge Time Difference
'   P = Camera Pline Active Time (mSEC)
'   L = Camera Start Delay Time
'   V = Temporary Voltage Variable
'   Z = Temporary General Variable
'
100 PCLR(0): PCLR(2): PCLR(3): PCLR(5): PCLR(6)
102 ONERR 6000
105 A=60: B=6: C=6: P=200: L=0
110 A=A*60: B=B*100: C=C*100: D=B-C: P=P/10
'
300 PRINT: PRINT: PRINT: PRINT 
301 PRINT "LONG-TERM CAMERA TRIPOD MAIN MENU V1.0"
305 PRINT 
310 PRINT "1 - SET CLOCK"
320 PRINT "2 - SET SYSTEM VARIABLES"
330 PRINT "3 - TEST MENU"
340 PRINT "4 - DEPLOY"
345 PRINT "9 - OFFLOAD DATA"
350 PRINT
400 INPUT 'ENTER SELECTION  'Z
410 IF Z = 1 GOSUB 1000
420 IF Z = 2 GOSUB 2000
430 IF Z = 3 GOSUB 3000
440 IF Z = 4 GOSUB 4000
450 IF Z = 9 GOSUB 9000
460 GOTO 300
'
'
'    Set Real-Time Clock
1000 PRINT: INPUT 'THE YEAR IS (0 TO 99) ' ?(5)
1010 INPUT 'THE MONTH IS (1 TO 12) ' ?(4)
1020 INPUT 'THE DAY IS (1 TO 31) ' ?(3)
1030 INPUT 'THE HOUR IS (0 TO 23) ' ?(2)
1040 INPUT 'THE MINUTE IS (0 TO 59) ' ?(1)
1050 INPUT 'THE SECOND IS (0 TO 59) ' ?(0)
1060 STIME: RTIME: PRINT
1070 PRINT 'THE TIME IS ',?(2),':',?(1),':',?(0);
1080 PRINT ' on ',?(4),'/',?(3),'/',?(5)
1090 PRINT: INPUT 'HIT RETURN TO CONTINUE 'Z
1095 RETURN
'
'
'    Set System Variables
2000 PRINT: INPUT 'MAIN DELAY TIME IN MIN ' A 
2010 INPUT 'RIGHT STROBE CHARGE TIME IN SEC ' B
2020 INPUT 'LEFT STROBE CHARGE TIME IN SEC ' C
2021 IF C<=B GOTO 2025
2022 PRINT 'L-STROBE CHARGE TIME TOO LARGE': GOTO 2020
2025 INPUT 'P-LINE TIME IN mSEC 'P
2030 PRINT: PRINT 'MAIN TIME = ',A,' MIN'
2040 PRINT 'R-STROBE = ',B,' SEC'
2050 PRINT 'L-STROBE = ',C,' SEC'
2055 PRINT 'PLINE = ',P,' mSEC'
2060 A=A*60: B=B*100: C=C*100: D=B-C: P=P/10
2070 PRINT:INPUT 'HIT RETURN TO CONTINUE ' Z
2080 RETURN
'
'
'    Camera/Strobe Test Menu
3000 PRINT: PRINT: PRINT '1 - ADVANCE CAMERA ONCE'
3010 PRINT '2 - CYCLE STROBES ONCE'
3015 PRINT '3 - EXIT'
3020 INPUT 'ENTER SELECTION ' Z
'3030 IF Z=1 GOSUB 5100 
3100 IF Z=2 GOSUB 3500
3120 IF Z=3 RETURN
3130 GOTO 3000
'Charge strobes
3500 GOSUB 5000
3505 PRINT 'CONTROL BAT VOLTS(X10): ', BAT
'3506 PRINT 'MAIN BAT VOLTS: ', (V*5*9/256)
'3507 PRINT 'RIGHT STROBE HV: ', (2*CHAN(1))
'3508 PRINT 'LEFT STROBE HV: ', (2*CHAN(0))
'Trigger Strobes
'3510 GOSUB 5050
3520 RETURN
'
'
'    Deployment Loop
4000 INPUT 'ENTER LOOP START DELAY TIME IN HOURS' L
4010 PRINT: PRINT 'MAIN LOOP TIME: ', (A/60),' MIN'
4015 PRINT 'R-STROBE CHARGE TIME: ', (B/100),' SEC'
4020 PRINT 'L-STROBE CHARGE TIME: ', (C/100),' SEC'
4025 PRINT 'P-LINE ACTIVE TIME: ', (P*10),' mSEC'
4030 RTIME: PRINT: PRINT 'THE TIME IS ',?(2),':',?(1),':',?(0);
4035 PRINT ' on ',?(4),'/',?(3),'/',?(5)
4040 PRINT: PRINT 'CAMERA WILL START IN ',L,' HOURS'
4045 PRINT 'REMOVE COMM. CABLE AND DEPLOY'
4050 X=0
4055 HYB 0: HYB L
'
'    This is the main control loop. First, it charges
'    the two strobes, then stores the strobe high-voltage
'    and main battery voltage.  Second, it triggers the strobes
'    then measures the strobe high voltage and controller battery
'    voltage.  Third, it advances the camera and returns to
'    sleep. 
'
'Charge strobes
4100 GOSUB 5000
'4120 STORE X,#1,V
'4130 V=CHAN(0): STORE X,#1,V
'4140 V=CHAN(1): STORE X,#1,V
'
'Trigger Strobes
'4150 GOSUB 5050
'4160 V=CHAN(0): STORE X,#1,V
'4165 V=CHAN(1): STORE X,#1,V
'4170 V=CHAN(6): STORE X,#1,V
'
'Advance Camera
'4175 GOSUB 5100
'
'Sleep A seconds
4180 HYB A
4190 GOTO 4100
'
'
'Strobe Charge
5000 SLEEP 0: PSET 5: SLEEP D: PSET 2: SLEEP C
'5010 V=CHAN(3): PCLR 5: PCLR 2
'5020 RETURN
'Strobe Trigger
'5050 SLEEP 0: PSET 6: PSET 3: SLEEP 500: PCLR 6: PCLR 3
'5060 RETURN
'Camera P-Line Control
5100 SLEEP 0: PSET 0: SLEEP P: PCLR 0
5105 PCLR 5: PCLR 2
5110 RETURN
'
'
'Default Control Loop
6000 HYB 0
6005 PRINT 'RUNNING DEFAULT CONTROL LOOP'
'Charge strobes
6010 GOSUB 5000
'Trigger strobes    
'6015 GOSUB 5050
'Advance camera
'6020 GOSUB 5100
'Sleep an hour
6030 HYB 3600
6040 GOTO 6000
'
'
'    Offload Data
9000 INPUT 'ENABLE DATA CAPTURE AND PRESS RETURN TO CONTINUE' Z
9010 Y=0
9020 FOR I=1 TO (X/6): FOR J=1 TO 6
9030 PRINT #4, GET(Y, #1);
9040 NEXT J: PRINT: NEXT I
9050 RETURN
