$PLWRB,M,06,24,62,035,20,47,315,12,42,209,16,38,135,09,22,207,13,15,058*10
$PLWRC,M,01,03,12,268,,,,,,,,,,,,,,,*2A
$PLWRB,M,06,24,61,035,20,48,314,12,41,209,16,39,134,09,21,207,13,14,059*1D
$PLWRC,M,01,03,13,269,,,,,,,,,,,,,,,*2A
$PLWRB,M,06,24,60,035,20,49,314,12,40,208,16,40,133,09,20,206,13,14,060*1E
$PLWRC,M,01,03,13,270,,,,,,,,,,,,,,,*22
$PLWRB,M,06,24,59,035,20,50,313,16,40,132,12,39,208,09,20,206,03,14,271*17
$PLWRC,M,01,13,13,061,,,,,,,,,,,,,,,*21
$PLWRB,M,06,24,58,035,20,51,313,16,41,132,12,38,207,09,19,205,03,14,272*12
$PLWRC,M,02,13,13,061,17,05,228,,,,,,,,,,,,*19
$PLWRB,M,06,24,57,036,20,52,312,16,42,131,12,37,207,09,18,205,03,14,273*13
$PLWRC,M,02,13,12,062,17,06,229,,,,,,,,,,,,*19
$PLWRB,M,06,24,56,036,20,53,312,16,42,130,12,36,207,09,17,204,03,15,273*1C
$PLWRC,M,03,13,12,063,17,07,229,25,05,319,,,,,,,,,*21
$PLWRB,M,06,24,56,036,20,53,311,16,43,129,12,35,206,09,17,204,03,15,274*13
$PLWRC,M,03,13,11,064,17,07,229,25,06,318,,,,,,,,,*27
$PLWRB,M,06,24,55,036,20,54,311,16,44,128,12,34,206,09,16,203,03,16,275*14
$PLWRC,M,03,13,11,065,17,08,230,25,06,318,,,,,,,,,*21
$PLWRB,M,06,20,55,310,24,54,036,16,44,127,12,33,205,03,16,276,09,15,203*1E
$PLWRC,M,03,13,10,065,17,09,230,25,06,317,,,,,,,,,*2E
$PLWRB,M,06,20,56,309,24,53,037,16,45,126,12,32,205,03,17,277,09,14,202*12
$PLWRC,M,03,13,10,066,17,10,231,25,06,316,,,,,,,,,*25
$PLWRB,M,06,20,57,308,24,52,037,16,46,124,12,31,205,03,17,278,09,14,202*1E
$PLWRC,M,03,17,10,231,13,09,067,25,07,315,,,,,,,,,*2E
$PLWRB,M,06,20,58,307,24,51,037,16,46,123,12,30,204,03,17,279,09,13,201*1F
$PLWRC,M,03,17,11,232,13,09,068,25,07,315,,,,,,,,,*23
$PLWRB,M,06,20,58,306,24,50,037,16,47,122,12,29,204,03,18,280,09,12,201*1F
$PLWRC,M,03,17,12,232,13,08,069,25,07,314,,,,,,,,,*21
$PLWRB,M,06,20,59,305,24,49,038,16,47,121,12,29,204,03,18,281,17,12,233*16
$PLWRC,M,03,09,12,200,13,08,069,25,07,313,,,,,,,,,*28
$PLWRB,M,06,20,60,304,24,49,038,16,48,120,12,28,203,03,19,282,17,13,234*11
$PLWRC,M,03,09,11,200,25,08,312,13,07,070,,,,,,,,,*22
$PLWRB,M,06,20,61,303,16,49,119,24,48,038,12,27,203,03,19,283,17,14,234*14
$PLWRC,M,03,09,10,199,25,08,312,13,07,071,,,,,,,,,*21
$PLWRB,M,06,20,61,302,16,49,117,24,47,039,12,26,203,03,20,283,17,14,235*1F
$PLWRC,M,03,09,10,199,25,08,311,13,06,072,,,,,,,,,*20
$PLWRB,M,06,20,62,300,16,50,116,24,46,039,12,25,202,03,20,284,17,15,235*12
$PLWRC,M,03,09,09,198,25,08,310,13,06,073,,,,,,,,,*29
$PLWRB,M,06,20,63,299,16,50,115,24,45,039,12,24,202,03,20,285,17,16,236*12
$PLWRC,M,03,25,08,309,09,08,198,13,05,073,,,,,,,,,*23
$PLWRB,M,06,20,63,297,16,51,113,24,44,040,12,23,202,03,21,286,17,16,236*11
$PLWRC,M,02,25,09,309,09,08,197,,,,,,,,,,,,*1F
'Takes in RS232 NEMA 0183 formated data from most GPS's and displays sat pos.
'
'
CLS
LOCATE 12, 1: INPUT " Do want a playback y/n "; yn$
yn$ = RTRIM$(LTRIM$(UCASE$(yn$)))
IF yn$ = "Y" GOTO playback
OPEN "sat.dat" FOR APPEND AS #4
OPEN "COM1:4800,N,8,2,ASC,LF,OP0,RS,RB32000,TB1,CD0,DS0,CS0" FOR RANDOM AS #1
ON TIMER(120) GOSUB doit2
TIMER ON
CLS
SCREEN 12
CIRCLE (230, 230), 230
CIRCLE (230, 230), 2
LOCATE 4, 62
PRINT "Waiting for data.";
LOCATE 6, 62
PRINT " Please wait for"
LOCATE 8, 62
PRINT " 2 minutes."
LOCATE 30, 1: PRINT " Press Esc to Quit. SOUTH Lamar Instruments (310) 374 1673";
start2:
TIMER STOP
LOCATE 2, 65: PRINT TIME$;
TIMER ON
IF INKEY$ = CHR$(27) THEN GOTO enditall 'esc key
GOTO start2
playback:
CLS
SCREEN 12
CIRCLE (230, 230), 230
CIRCLE (230, 230), 2
LOCATE 30, 1: PRINT " Press Esc to Quit SOUTH Lamar Instruments (310) 374 1673";
OPEN "sat.dat" FOR INPUT AS #3 LEN = 18000
DO WHILE NOT EOF(3)
LINE INPUT #3, temp$
IF MID$(temp$, 1, 6) = "$PLWRB" THEN GOSUB dob:
IF MID$(temp$, 1, 6) = "$PLWRC" THEN GOSUB doc:
IF INKEY$ = CHR$(27) THEN GOTO enditall 'esc key
LOOP
CLOSE #3
enditall:
LOCATE 2, 50
INPUT " Press any key to end "; z$
CLS 0
LOCATE 5, 1: PRINT " SAT-DISPL.EXE Copyright 1993 Paul Lamar"
PRINT
PRINT " Lamar Instruments"
PRINT " 1715 Dixon St."
PRINT " Redondo Beach CA"
PRINT " 90278 (310) 374 1673"
LOCATE 18, 1: PRINT " HAVE A NICE DAY"
LOCATE 30, 1: PRINT " Press Esc to Quit.";
FOR z = 1 TO 50000
IF INKEY$ = CHR$(27) THEN GOTO enditall2 'esc key
NEXT
enditall2:
CLS 0
CLOSE
END
doit2:
TIMER STOP
x = x + 1
ON ERROR GOTO errorhand1
temp$ = INPUT$(LOC(1), #1) 'LOC(1) gives the number of char in the buff
OPEN "temp2.bas" FOR OUTPUT AS #2 LEN = 18000
PRINT #2, temp$
CLOSE 2
OPEN "temp2.bas" FOR INPUT AS #3 LEN = 18000
DO WHILE NOT EOF(3)
LINE INPUT #3, temp$
IF MID$(temp$, 1, 6) = "$PLWRB" THEN GOSUB dob:
IF MID$(temp$, 1, 6) = "$PLWRC" THEN GOSUB doc:
LOOP
CLOSE #3
TIMER ON
RETURN
errorhand1:
RESUME NEXT
dob:
IF yn$ = "Y" THEN GOTO skipdob1
PRINT #4, temp$;
PRINT #4, ",";
PRINT #4, TIME$;
PRINT #4, ",";
PRINT #4, DATE$
skipdob1:
' 1 2 3 4 5 6 7
'123456789012345678901234567890123456789012345678901234567890123456789012
'$PLWRB,M,06,24,77,174,12,71,275,09,51,240,13,39,029,20,15,312,07,14,067*1C
Prn01 = VAL(MID$(temp$, 13, 2))
elev1 = VAL(MID$(temp$, 16, 2))
azim1 = VAL(MID$(temp$, 19, 3))
Prnx = Prn01
azmith = elev1
angle = azim1
GOSUB plotit1
Linex = 4
GOSUB printit
Prn02 = VAL(MID$(temp$, 23, 2))
elev2 = VAL(MID$(temp$, 26, 2))
azim2 = VAL(MID$(temp$, 29, 3))
Prnx = Prn02
azmith = elev2
angle = azim2
GOSUB plotit2
Linex = 6
GOSUB printit
Prn03 = VAL(MID$(temp$, 33, 2))
elev3 = VAL(MID$(temp$, 36, 2))
azim3 = VAL(MID$(temp$, 39, 3))
Prnx = Prn03
azmith = elev3
angle = azim3
GOSUB plotit3
Linex = 8
GOSUB printit
' 1 2 3 4 5 6 7
'123456789012345678901234567890123456789012345678901234567890123456789012
'$PLWRB,M,06,24,77,174,12,71,275,09,51,240,13,39,029,20,15,312,07,14,067*1C
Prn04 = VAL(MID$(temp$, 43, 2))
elev4 = VAL(MID$(temp$, 46, 2))
azim4 = VAL(MID$(temp$, 49, 3))
Prnx = Prn04
azmith = elev4
angle = azim4
GOSUB plotit4
Linex = 10
GOSUB printit:
Prn05 = VAL(MID$(temp$, 53, 2))
elev5 = VAL(MID$(temp$, 56, 2))
azim5 = VAL(MID$(temp$, 59, 3))
Prnx = Prn05
azmith = elev5
angle = azim5
GOSUB plotit5
Linex = 12
GOSUB printit:
Prn06 = VAL(MID$(temp$, 63, 2))
elev6 = VAL(MID$(temp$, 66, 2))
azim6 = VAL(MID$(temp$, 69, 3))
Prnx = Prn06
azmith = elev6
angle = azim6
GOSUB plotit6
Linex = 14
GOSUB printit:
enddob:
RETURN
doc:
IF yn$ = "Y" THEN GOTO skipdoc1
PRINT #4, temp$;
PRINT #4, ",";
PRINT #4, TIME$;
PRINT #4, ",";
PRINT #4, DATE$
skipdoc1:
' 1 2 3 4 5 6 7
'123456789012345678901234567890123456789012345678901234567890123456789012
'$PLWRB,M,06,24,77,174,12,71,275,09,51,240,13,39,029,20,15,312,07,14,067*1C
numsat = VAL(MID$(temp$, 10, 2))
Prn07 = VAL(MID$(temp$, 13, 2))
elev7 = VAL(MID$(temp$, 16, 2))
azim7 = VAL(MID$(temp$, 19, 3))
Prnx = Prn07
azmith = elev7
angle = azim7
GOSUB plotit7
Linex = 16
GOSUB printit:
IF numsat < 2 THEN GOTO enddoc
Prn08 = VAL(MID$(temp$, 23, 2))
elev8 = VAL(MID$(temp$, 26, 2))
azim8 = VAL(MID$(temp$, 29, 3))
Prnx = Prn08
azmith = elev8
angle = azim8
GOSUB plotit8
Linex = 18
GOSUB printit:
IF numsat < 3 THEN GOTO enddoc
Prn09 = VAL(MID$(temp$, 33, 2))
elev9 = VAL(MID$(temp$, 36, 2))
azim9 = VAL(MID$(temp$, 39, 3))
Prnx = Prn09
azmith = elev9
angle = azim9
GOSUB plotit9
Linex = 20
GOSUB printit:
IF numsat < 4 THEN GOTO enddoc
' 1 2 3 4 5 6 7
'123456789012345678901234567890123456789012345678901234567890123456789012
'$PLWRB,M,06,24,77,174,12,71,275,09,51,240,13,39,029,20,15,312,07,14,067*1C
Prn010 = VAL(MID$(temp$, 43, 2))
elev10 = VAL(MID$(temp$, 46, 2))
azim10 = VAL(MID$(temp$, 49, 3))
Prnx = Prn010
azmith = elev10
angle = azim10
GOSUB plotit10
Linex = 22
GOSUB printit:
IF numsat < 5 THEN GOTO enddoc
Prn011 = VAL(MID$(temp$, 53, 2))
elev11 = VAL(MID$(temp$, 56, 2))
azim11 = VAL(MID$(temp$, 59, 3))
Prnx = Prn011
azmith = elev11
angle = azim11
GOSUB plotit11
Linex = 24
GOSUB printit:
IF numsat < 6 THEN GOTO enddoc
PRN012 = VAL(MID$(temp$, 63, 2))
elev12 = VAL(MID$(temp$, 66, 2))
azim12 = VAL(MID$(temp$, 69, 3))
Prnx = Prno12
azmith = elev12
angle = azim12
GOSUB plotit12
Linex = 26
GOSUB printit:
enddoc:
RETURN
printit:
LOCATE Linex, 62
PRINT "S"; Prnx;
LOCATE Linex, 67
PRINT " E"; azmith;
LOCATE Linex, 72
PRINT " A"; angle
RETURN
plotit1:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x11, y11), 5, 0 'r = 5 color = off
CIRCLE (x11, y11), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y11 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x11 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x11, y11), 1
CIRCLE (x11, y11), 5
RETURN
plotit2:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x12, y12), 5, 0 'r = 5 color = off
CIRCLE (x12, y12), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y12 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x12 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x12, y12), 1
CIRCLE (x12, y12), 5
RETURN
plotit3:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x13, y13), 5, 0 'r = 5 color = off
CIRCLE (x13, y13), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y13 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x13 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x13, y13), 1
CIRCLE (x13, y13), 5
RETURN
plotit4:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x14, y14), 5, 0 'r = 5 color = off
CIRCLE (x14, y14), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y14 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x14 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x14, y14), 1
CIRCLE (x14, y14), 5
RETURN
plotit5:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x15, y15), 5, 0 'r = 5 color = off
CIRCLE (x15, y15), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y15 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x15 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x15, y15), 1
CIRCLE (x15, y15), 5
RETURN
plotit6:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x16, y16), 5, 0 'r = 5 color = off
CIRCLE (x16, y16), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y16 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x16 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x16, y16), 1
CIRCLE (x16, y16), 5
RETURN
plotit7:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x211, y211), 5, 0 'r = 5 color = off
CIRCLE (x211, y211), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y211 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x211 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x211, y211), 1
CIRCLE (x211, y211), 5
RETURN
plotit8:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x212, y212), 5, 0 'r = 5 color = off
CIRCLE (x212, y212), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y212 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x212 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x212, y212), 1
CIRCLE (x212, y212), 5
RETURN
plotit9:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x213, y213), 5, 0 'r = 5 color = off
CIRCLE (x213, y213), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y213 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x213 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x13, y13), 1
CIRCLE (x13, y13), 5
RETURN
plotit10:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x214, y214), 5, 0 'r = 5 color = off
CIRCLE (x214, y214), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y214 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x214 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x214, y214), 1
CIRCLE (x214, y214), 5
RETURN
plotit11:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x215, y215), 5, 0 'r = 5 color = off
CIRCLE (x215, y215), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y215 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x215 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x215, y215), 1
CIRCLE (x215, y215), 5
RETURN
plotit12:
IF angle <= 90 THEN angle2 = 270 + angle 'Finally! this is because
IF angle > 90 THEN angle2 = angle - 90 'the stupid basic starts due east.
CIRCLE (x216, y216), 5, 0 'r = 5 color = off
CIRCLE (x216, y216), 1
angr = angle2 / 57.295
hyp = 230 - (azmith * (230 / 90))
y216 = CINT(ABS(230 + (SIN(angr) * hyp))) 'ABS was big break through and ess.
x216 = CINT(ABS(230 + (COS(angr) * hyp)))
CIRCLE (x216, y216), 1
CIRCLE (x216, y216), 5
RETURN