%%HP: T(3)A(D)F(.);
@ Direct/Reverse recording and averaging
@ Copyright 2003 By RAMSS, Inc.
@ All vars prefixed with 'dr'
@ Last shot taken is default FS-D
@ if user leaves BS-D alone, they can flop scope, record FS-R, BS-R, and compute
@ if drtext is toggled on a1/a2 is stored in tx
@ don't wrap diff, you want to see -0.0045 more than 359.5915
\<< SSTK
ha 'drfsd' STO za 'drzad' STO sd 'drsdd' STO @ STO last shot as FS-D
0 { drbsd drfsd drfsr drbsr drzad drsdd drzar drsdr drtext } SetDef
\<< 'sd' STO 'za' STO 'ha' STO CompHVD Measure TEXT \>> \-> Meas \<<
DO
   CLLCD TEXT CLEAR 4 FIX
   { "BS-D" "FS-D" "FS-R" "BS-R" "COMP" EXIT } TMENU
   "    Direct/Reverse
BS:"   drbsd RJ9 + "
FS:" + drfsd RJ9 + "
 "   + drzad RJ9 + " " + drsdd RJ9 + "
FS:" + drfsr RJ9 + "
BS:" + drbsr RJ9 + "
 "   + drzar RJ9 + " " + drsdr RJ9 +
   1 DISP 1 FREEZE GetKey
   CASE
      DUP 11 == THEN drbsd 90    0     Meas EVAL ha 'drbsd' STO 0 END
      DUP 12 == THEN drfsd drzad drsdd Meas EVAL ha 'drfsd' STO za 'drzad' STO sd 'drsdd' STO 0 END
      DUP 13 == THEN drfsr drzar drsdr Meas EVAL ha 'drfsr' STO za 'drzar' STO sd 'drsdr' STO 0 END
      DUP 14 == THEN drbsr 90    0     Meas EVAL ha 'drbsr' STO 0 END
      DUP 15 == THEN
         0 0 0 0 0 \-> a1 a2 aha aza asd \<<
         DO
            @ Comps copied from AvgAngle
            drfsd drbsd HMS- WRAP 'a1' STO
            drfsr drbsr HMS- WRAP 'a2' STO
            CASE a1 a2 HMS- DUP
                180 > THEN DROP a2 360 HMS+ 'a2' STO END
               -180 < THEN      a1 360 HMS+ 'a1' STO END
               END
            a1 a2 HMS+ 2 DMS/ WRAP 'aha' STO
            drzad 360 drzar HMS- HMS+ 2 DMS/ WRAP 'aza' STO
            drsdd drsdr + 2 / 'asd' STO
            { "\<-\[]" "HOLD" "TEXT" "" "" EXIT }
            IF drtext THEN 3 "TEXT\[]" PUT END
            TMENU
   "    Direct/Reverse
HA1:"   a1 RJ9 + "
HA2:" + a2 RJ9 + "
Dif:" + a2 a1 HMS- RJ9 + "
Avg:" + aha RJ9 + "
 ZA:" + aza RJ9 + "
 SD:" + asd RJ9 +
            1 DISP 1 FREEZE
               CASE GetKey
                  DUP 11 == THEN 0 1 END
                  DUP 12 == THEN
                     aha 'ha' STO aza 'za' STO asd 'sd' STO CompHVD
                     IF drtext THEN a1 "/" + a2 + 'tx' STO END
                     1 1 END
                  DUP 13 == THEN drtext NOT 'drtext' STO 0 END   
                  16 == THEN 1 1 END
                  0
                  END
         UNTIL END \>> END
      16 == END
UNTIL END \>>
EXIT \>>

