home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 4.2 KB | 122 lines |
- 10 ' OLDROUTE.BAS NAVPROGseven Route Retrieval Program 22-Jan-82 Rev 01/22/86
- 20 ' Version F.03.02 for the IBM PC
- 30 ' (c) Copyright 1982 Alan Bose
- 40 ' 1224 Allison Lane
- 50 ' Schaumburg, IL 60194
- 60 '
- 70 ' CP/M modifications (c) 1982 by Glen Hassebrock, Jr.
- 75 ' HP-150 modifications (c) 1984 by Alan Bose
- 76 ' PC-DOS modifications (c) 1985 by Bruce Carson
- 80 '
- 90 CLEAR:WIDTH 80:ON ERROR GOTO 540:DEFINT I-J:KEY OFF:GOSUB 4000
- 92 PROGDISK$="A:":DATADISK$="B:"
- 94 OPEN "I",1,"NAVDISCS.DAT"
- 96 INPUT #1,PROGDISK$,DATADISK$:CLOSE
- 100 BL$=CHR$(7):E$=CHR$(27)
- 110 DIM I$(20),REF(20)
- 130 HD$="N A V P R O G s e v e n R O U T E R E T R I E V A L"
- 140 CLS:PRINT TAB(40-(LEN(HD$)/2))HD$
- 150 PRINT:PRINT"Routes on file: ";
- 160 '
- 170 OPEN"I",1,DATADISK$+"ROUTINGS.DAT":INPUT#1,M:DIM RT$(M+1)
- 180 FOR J=1 TO M:LINE INPUT #1,RT$(J):NEXT J:CLOSE:
- 190 FOR J = 1 TO M:CO=((J\16)*25)+1:RO=(J MOD 16)+4
- 200 LOCATE RO,CO:PRINT J;:LOCATE ,CO+4:PRINT"- "LEFT$(RT$(J),3)" to ";
- 205 IF MID$(RT$(J),4,1) = "." THEN PRINT RIGHT$(RT$(J),3);:GOTO 215
- 210 PRINT MID$(RT$(J),4,3);
- 211 IF RIGHT$(RT$(J),4) <> ".RT1" THEN PRINT " (";RIGHT$(RT$(J),3);")";
- 215 NEXT J:GOSUB 5000
- 219 LOCATE 24,1:PRINT "n - Select Route, D- Delete, P- Print Routes, L- List route ";
- 220 '
- 230 LOCATE 23,1:PRINT "Enter selection <MENU> ";:LOCATE ,POS(0)-3
- 250 LINE INPUT X$:IF X$="" THEN CLOSE:KEY OFF:CLS:RUN PROGDISK$+"NAVMENU"
- 251 X = VAL(RIGHT$(X$,LEN(X$)-1))
- 252 XL$ = LEFT$(X$,1)
- 260 IF XL$="D" OR XL$="d" THEN 610
- 270 IF XL$="P" OR XL$="p" THEN 330
- 275 IF XL$="L" OR XL$="l" THEN 800
- 280 X=VAL(X$):IF X>M OR X<1 THEN PRINT BL$:GOTO 230
- 290 RT$=RT$(X):IF ASC(RT$)<65 OR ASC(RT$)>90 THEN RT$="X"+RT$
- 300 F$=DATADISK$+RT$:GOSUB 490:F$=DATADISK$+"FLIGHT.SEQ":GOSUB 520
- 310 CLS:PRINT "Standby one...":RUN PROGDISK$+"NAVPROG7"
- 320 '
- 330 LPRINT TAB(15);"NAVPROGseven Stored Routes";TAB(59);DATE$
- 340 FOR I=1 TO M:RT$=RT$(I):IF ASC(RT$)<65 OR ASC(RT$)>90 THEN RT$="X"+RT$
- 350 F$=DATADISK$+RT$:GOSUB 490:LPRINT I;TAB(5);
- 352 LPRINT LEFT$(RT$(I),3);" to ";
- 354 IF MID$(RT$(I),4,1)="." THEN LPRINT RIGHT$(RT$(I),3):GOTO 360
- 356 LPRINT MID$(RT$(I),4,3);" via "RIGHT$(RT$(I),3);" routing"
- 360 FOR K=1 TO N:SP=INSTR(I$(K)," "):IF SP=0 THEN SP=6
- 370 LPRINT LEFT$(I$(K),SP-1);:IF K=N THEN LPRINT ELSE LPRINT" -> ";
- 380 NEXT K,I
- 390 OPEN"I",2,DATADISK$+"RNAVLIST.DAT":INPUT#2,KY
- 400 DIM LI$(KY),R1$(KY),R1(KY),R2$(KY),R2(KY):FOR J=1 TO KY:LINE INPUT#2,LI$(J)
- 410 LINE INPUT#2,R1$(J):INPUT#2,R1(J):LINE INPUT#2,R2$(J):INPUT#2,R2(J)
- 420 NEXT J:CLOSE#2:LPRINT:LPRINT:LPRINT"RNAV cross-references on file:":LPRINT
- 430 FOR J=1 TO KY:LPRINT" "LI$(J)" <-- ";
- 440 NV=1:IF R1$(J)<>"" THEN LPRINT"NAV"NV"= "R1$(J)" ";:NV=2
- 450 IF R2$(J)<>"" THEN LPRINT"NAV"NV"= "R2$(J) ELSE LPRINT
- 460 NEXT J:ERASE LI$,R1$,R1,R2$,R2
- 470 LPRINT CHR$(12):GOTO 230
- 480 '
- 490 OPEN "I",1,F$:FOR J=1 TO 20:LINE INPUT#1,I$(J):INPUT#1,REF(J):N=J
- 500 NEXT J:CLOSE#1:RETURN
- 510 '
- 520 OPEN"O",1,F$:FOR J=1 TO N:PRINT#1,I$(J):PRINT#1,REF(J):NEXT J:CLOSE#1
- 530 RETURN
- 540 'error trap
- 550 IF ERR=53 AND ERL=170 THEN PRINT "None":PRINT ELSE 570
- 560 PRINT"Hit <RETURN> to continue...";:X$=INPUT$(1):CLS:RUN PROGDISK$+"NAVMENU"
- 570 IF ERR=62 AND ERL=490 THEN N=J-1:J=21:RESUME 500
- 580 IF ERR=53 AND ERL=390 THEN RESUME 470
- 590 IF ERR=53 AND ERL=660 THEN RESUME 670
- 595 IF ERR=53 AND ERL=94 THEN CLOSE:RESUME 100
- 600 ON ERROR GOTO 0
- 610 'delete
- 620 LOCATE 23,1:PRINT "Delete which route? <EXIT> ";:LOCATE ,POS(0)-1
- 630 LINE INPUT X$:IF X$="" THEN 230
- 640 X=VAL(X$):IF X>M OR X<=0 THEN PRINT BL$:GOTO 620
- 650 RT$=RT$(X):IF ASC(RT$)<65 OR ASC(RT$)>90 THEN RT$="X"+RT$
- 660 KILL DATADISK$+RT$
- 670 IF M=1 THEN KILL DATADISK$+"ROUTINGS.DAT":GOTO 10
- 680 IF X<>M THEN FOR J=X+1 TO M:RT$(J-1)=RT$(J):NEXT J
- 690 RT$(M)="":M=M-1:OPEN"O",1,DATADISK$+"ROUTINGS.DAT":PRINT#1,M
- 700 FOR J=1 TO M:PRINT #1,RT$(J):NEXT J:CLOSE:GOTO 10
- 800 ' list
- 810 IF X > 0 THEN 850
- 820 LOCATE 22,1:PRINT SPC(79);:LOCATE 22,1:LINE INPUT "Enter Route number <Exit> ";X$
- 830 IF X$ = "" THEN 230
- 840 X = VAL(X$)
- 850 IF X > M OR X < 1 THEN PRINT BL$:GOTO 820
- 860 LOCATE 22,1:GOSUB 5000:
- 870 RT$ = RT$(X)
- 880 PRINT X;TAB(6);LEFT$(RT$,3);" to ";
- 882 IF MID$(RT$,4,1)="." THEN PRINT RIGHT$(RT$,3):GOTO 890
- 884 PRINT MID$(RT$,4,3);" via "RIGHT$(RT$,3);" routing"
- 890 IF ASC(RT$) < 65 OR ASC(RT$) > 90 THEN RT$ = "X" + RT$
- 900 F$ = DATADISK$+RT$:GOSUB 490
- 910 FOR K = 1 TO N:SP =INSTR(I$(K)," "):IF SP = 0 THEN SP = 6
- 920 PRINT LEFT$(I$(K),SP-1);:IF K=N THEN PRINT; ELSE PRINT " -> ";
- 930 NEXT K
- 940 PRINT:PRINT "Depress Enter to continue ";:X$=INPUT$(1)
- 950 GOTO 190
- 4000 ' install erase-to-end-of-screen subroutine
- 4010 DEF SEG=&H1700
- 4020 FOR ADDR% = 0 TO 19
- 4030 READ CODE%
- 4040 POKE ADDR%,CODE%
- 4050 NEXT
- 4060 CLREOS% = 0
- 4070 RETURN
- 4080 DATA &h55,&h8b,&hec,&h8b,&h76,&h06,&h8b,&h0c
- 4090 DATA &hb8,&h20,&h0a,&hb7,&h00
- 4100 DATA &hcd,&h10
- 4110 DATA &h5d,&hca,&h02,&h00,&h00
- 5000 ' erase to end-of-screen
- 5010 CLINE = CSRLIN 'remember cursor position
- 5020 CROW = POS(0)
- 5030 NUMCHR% = 1919 - ((CLINE - 1)*80 +CROW) 'num chars to write
- 5040 CALL CLREOS%(NUMCHR%) 'erase to end of screen
- 5050 LOCATE CLINE,CROW,1 'restore cursor
- 5060 RETURN
-