10 CLS:PRINT "Intersection Program:":CLS:SET N
20 PRINT "Left Stn E:";LSE;:INPUT LSE:PRINT "Left Stn N:";LSN;:INPUT LSN:CLS
30 PRINT "Left RL:";LRL;:INPUT LRL:PRINT "Left IH:";LIH;:INPUT LIH:CLS
40 PRINT "        [B] Bearing to RO               [C] Coords of RO";
50 I$=INKEY$:IF I$="" THEN 50
60 IF I$="B" OR I$="b" THEN 110
70 IF I$="C" OR I$="c" THEN 80 ELSE GOTO 50
80 CLS:PRINT "Left RO E:";LROE;:INPUT LROE:PRINT "Left RO N:";LRON;:INPUT LRON:CLS
90 Z=POL((LROE-LSE),(LRON-LSN)):LRO=90-Y:IF LRO<0 THEN LRO=LRO+360
100 GOTO 120
110 CLS:PRINT "Left RO:";DMS$(LRO);:INPUT LRO:CLS
120 PRINT "Right Stn E:";RSE;:INPUT RSE:PRINT "Right Stn N:";RSN;:INPUT RSN:CLS
130 PRINT "Right RL:";RRL;:INPUT RRL:PRINT "Right IH:";RIH;:INPUT RIH:CLS
140 PRINT "        [B] Bearing to RO               [C] Coords of RO";
150 I$=INKEY$:IF I$="" THEN 150
160 IF I$="B" OR I$="b" THEN 210
170 IF I$="C" OR I$="c" THEN 180 ELSE GOTO 150
180 CLS:PRINT "Right RO E:";RROE;:INPUT RROE:PRINT "Right RO N:";RRON;:INPUT RRON:CLS
190 Z=POL((RROE-RSE),(RRON-RSN)):RRO=90-Y:IF RRO<0 THEN RRO=RRO+360
200 GOTO 220
210 CLS:PRINT "Right RO:";DMS$(RRO);:INPUT RRO:CLS
220 PRINT "Left HA:";DMS$(LHA);:INPUT LHA:PRINT "Left VA:";DMS$(LVA);:INPUT LVA:CLS
230 PRINT "Right HA:";DMS$(RHA);:INPUT RHA:PRINT "Right VA:";DMS$(RVA);:INPUT RVA:CLS
240 PRINT "Wait...";:LAZ=LRO+LHA:RAZ=RRO+RHA
250 XP=((RSE*(1/TAN(RAZ)))-(LSE*(1/TAN(LAZ)))-RSN+LSN)/((1/TAN(RAZ))-(1/TAN(LAZ)))
260 YP=((RSN*TAN(RAZ))-(LSN*TAN(LAZ))-RSE+LSE)/(TAN(RAZ)-(TAN(LAZ))
270 LDIST=SQR((LSE-XP)^2+(LSN-YP)^2:RDIST=SQR((RSE-XP)^2+(RSN-YP)^2:LZ=TAN((90-LVA))*LDIST+LRL+LIH:RZ=TAN((90-RVA))*RDIST+RRL+RIH
280 MZ=(LZ+RZ)/2:ERZ=ABS(ABS(LZ)-ABS(RZ))
290 DEL=LSE-XP:DNL=LSN-YP:DER=RSE-XP:DNR=RSN-YP
300 Z=POL(DEL,DNL):LB=90-Y:IF LB<0 THEN LB=LB+360
310 Z=POL(DER,DNR):RB=90-Y:IF RB<0 THEN RB=RB+360
320 ANGINT=ABS(LB-RB):IF ANGINT>180 THEN ANGINT=360-ANGINT
340 CLS:BEEP 0:PRINT "x: ";ROUND(XP,-5);TAB(16);"y: ";ROUND(YP,-5);TAB(32);"z: ";ROUND(MZ,-5);TAB(47);"dz: ";ROUND(ERZ,-5):CLS
350 CLS:BEEP 0:PRINT "z";CHR$(145);": ";ROUND(LZ,-5);TAB(16);"z";CHR$(146);": ";ROUND(RZ,-5);TAB(32);"Angle of cut: ";DMS$(ANGINT):CLS
360 PRINT "       [C]  Continue                   [N]  New Stations";
370 C$=INKEY$:IF C$="" THEN 370
380 IF C$="C" OR C$="c" THEN CLS:GOTO 220
390 IF C$="N" OR C$="n" THEN CLS:GOTO 20
400 GOTO 370