home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib24b.dsk
/
NAVIGATOR.1.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
7KB
|
254 lines
10 REM ********7.11.85*********
20 REM * NAVIGATOR.1 *
30 REM * BY LEE SWOBODA *
40 REM * COPYRIGHT (C) 1985 *
50 REM * BY MICROSPARC, INC *
60 REM * CONCORD, MA. 01742 *
70 REM ************************
80 REM
90 REM
100 BLANK$ = " ": REM 39 SPACES
110 Q$ = CHR$(34)
120 D$ = CHR$(4)
130 REM ----------------------
140 REM READ FORMAT PARAMETERS
150 REM ----------------------
160 EF = 1: ONERR GOTO 2460
170 PRINT D$"OPEN NAVIGATOR.TXT"
180 PRINT D$"READ NAVIGATOR.TXT"
190 INPUT NAME$,AUTH$,DT$,SELECT,COMMENTS,LMARGIN,RMARGIN,LPAGE,BMARGIN,D1,D2,SLOT
200 PRINT D$"CLOSE"
210 POKE 216,0
220 IF LPAGE = 0 THEN LPAGE = 66
230 IF RMARGIN = 0 THEN RMARGIN = 79
240 IF D1 = 0 THEN D1 = 1
250 IF D2 = 0 THEN D2 = 2
260 IF SLOT = 0 THEN SLOT = 1
270 REM -----------------
280 REM PROGRAM DATA MENU
290 REM -----------------
300 HEADER$ = "PROGRAM DATA"
310 GOSUB 2000
320 FOOTER$ = ""
330 GOSUB 2170
340 REM ENTER PROGRAM NAME
350 VTAB 10
360 PRINT "PROGRAM NAME (1 OR 2 FOR CATALOG)"
370 VTAB 11: CALL -868: INPUT ": ";NAME$
380 NF$ = LEFT$(NAME$,1)
390 EF = 4: ONERR GOTO 2460
400 IF NF$ = "1" OR NF$ = "2" THEN HOME : PRINT D$"CATALOGD";(NF$ = "2") +1: GET Z$: PRINT Z$: GOTO 300
410 POKE 216,0
420 IF NAME$ = "" OR NF$ <"A" OR NF$ >"Z" GOTO 350
430 REM ENTER AUTHOR'S NAME
440 VTAB 12
450 INPUT "AUTHOR = ";AUTH$
460 IF AUTH$ = "" GOTO 440
470 REM CONVERT TO LOWER CASE
480 I$ = LEFT$(AUTH$,1)
490 IF LEN(AUTH$) <2 GOTO 560
500 FOR I = 2 TO LEN(AUTH$)
510 J = ASC( MID$ (AUTH$,I,1))
520 IF MID$ (AUTH$,I -1,1) < >" " AND J >64 AND J <91 THEN J = J +32
530 I$ = I$ + CHR$(J)
540 NEXT I
550 AUTH$ = I$
560 REM ENTER DATE
570 VTAB 14
580 CALL -868
590 INPUT "DATE (9 CHARS):";IN$
600 IF LEN(IN$) >9 THEN 570
610 PRINT IN$: INPUT "OK? ";Y$: IF Y$ < >"Y" GOTO 570
620 DT$ = IN$
630 REM ----------------
640 REM DATA FORMAT MENU
650 REM ----------------
660 HEADER$ = "FORMAT DATA"
670 GOSUB 2000
680 FOOTER$ = "NUMBER TO CHANGE OR N"
690 GOSUB 2170
700 VTAB 10
710 PRINT "1) LEFT MARGIN = "LMARGIN
720 PRINT "2) RIGHT MARGIN = "RMARGIN
730 PRINT "3) LINES PER PAGE = "LPAGE
740 PRINT "4) BOTTOM MARGIN = "BMARGIN
750 PRINT "5) PRINT REMARKS? = ";
760 IF COMMENTS = 0 THEN PRINT "N"
770 IF COMMENTS = 1 THEN PRINT "Y"
780 PRINT "6) NAVIGATOR IN DRIVE "D1
790 PRINT "7) PROGRAM IN DRIVE "D2
800 PRINT "8) PRINTER IN SLOT "SLOT
810 VTAB 21: HTAB 25
820 PRINT "?";
830 GET A$
840 PRINT
850 IF A$ = "N" GOTO 1170
860 REM ---------
870 REM EDIT DATA
880 REM ---------
890 A = VAL(A$)
900 IF A <1 OR A >8 GOTO 810
910 PRINT
920 FOOTER$ = ""
930 GOSUB 2170
940 VTAB 9 +A: HTAB 23
950 CALL -868
960 INPUT "";A$
970 B = VAL(A$)
980 ON A GOTO 990,1010,1030,1050,1070,1110,1130,1150
990 IF B <1 OR B >20 GOTO 940
1000 LMARGIN = B: GOTO 660
1010 IF B <60 OR B >79 GOTO 940
1020 RMARGIN = B: GOTO 660
1030 IF B <50 OR B >88 GOTO 940
1040 LPAGE = B: GOTO 660
1050 IF B <1 OR B >10 GOTO 940
1060 BMARGIN = B: GOTO 660
1070 IF A$ < >"Y" AND A$ < >"N" GOTO 940
1080 COMMENTS = 0
1090 IF A$ = "Y" THEN COMMENTS = 1
1100 GOTO 660
1110 IF B <1 OR B >2 GOTO 940
1120 D1 = B: GOTO 660
1130 IF B <1 OR B >2 GOTO 940
1140 D2 = B: GOTO 660
1150 IF B <1 OR B >7 GOTO 940
1160 SLOT = B: GOTO 660
1170 REM --------------
1180 REM SELECTION MENU
1190 REM --------------
1200 HEADER$ = "LISTINGS"
1210 GOSUB 2000
1220 FOOTER$ = "SELECT"
1230 GOSUB 2170
1240 VTAB 10
1250 PRINT "1) LISTING ONLY"
1260 VTAB 12
1270 PRINT "2) FLOW CHART ONLY"
1280 VTAB 14
1290 PRINT "3) LISTING & FLOW CHART"
1300 VTAB 21: HTAB 10
1310 PRINT "?";
1320 GET A$
1330 A = VAL(A$)
1340 IF A <1 OR A >3 GOTO 1300
1350 SELECT = A
1360 NR = 2
1370 IF SELECT = 2 THEN NR = 3
1380 PRINT
1390 HOME
1400 GOSUB 1420
1410 GOTO 1670
1420 REM ----------------
1430 REM SAVE FORMAT DATA
1440 REM ----------------
1450 EF = 2: ONERR GOTO 2460
1460 PRINT D$"OPEN NAVIGATOR.TXT,D"D1
1470 PRINT D$"WRITE NAVIGATOR.TXT"
1480 PRINT NAME$
1490 PRINT AUTH$
1500 PRINT DT$
1510 PRINT SELECT
1520 PRINT COMMENTS
1530 PRINT LMARGIN
1540 PRINT RMARGIN
1550 PRINT LPAGE
1560 PRINT BMARGIN
1570 PRINT D1
1580 PRINT D2
1590 PRINT SLOT
1600 PRINT D$"CLOSE": PRINT D$"OPEN EXX": PRINT D$"CLOSE EXX": PRINT D$"DELETE EXX"
1610 POKE 216,0
1620 RETURN
1630 EF = 3: ONERR GOTO 2460
1640 PRINT D$"VERIFY"NAME$",D"D2
1650 POKE 216,0
1660 RETURN
1670 IF D1 = D2 GOTO 2290
1680 REM --------------
1690 REM FORM TEXT FILE
1700 REM --------------
1710 HOME
1720 VTAB 10: POKE -16368,0
1730 PRINT "PLACE NAVIGATOR DISK IN DRIVE #"D1
1740 PRINT
1750 PRINT "PLACE THE DISK CONTAINING"
1760 PRINT "'"NAME$"'"
1770 PRINT "IN DRIVE #"D2","
1780 PRINT : PRINT "BE SURE PRINTER IS ON LINE,": PRINT : PRINT "AND PRESS ANY KEY";
1790 CALL -756
1800 HOME
1810 VTAB 12: HTAB 13
1820 PRINT "THE NAVIGATOR"
1830 D$ = CHR$(4)
1840 Q$ = CHR$(34)
1850 GOSUB 1630
1860 PRINT D$"OPEN EXE,D"D1
1870 PRINT D$"WRITE EXE"
1880 PRINT "NEW"
1890 PRINT "LOAD "NAME$",D"D2
1900 F$ = "RUN NAVIGATOR." + STR$(NR) +",D" + STR$(D1)
1910 PRINT "0 D$=CHR$(4):?D$"Q$"OPENEXX,D"(D1)Q$":?D$"Q$"WRITEEXX"Q$":LIST1-:?D$"Q$"CLOSE"Q$":?D$"Q$F$Q$
1920 PRINT "RUN"
1930 PRINT D$"CLOSE"
1940 PRINT D$"EXEC EXE,D"D1
1950 END
1960 REM ===========
1970 REM SUBROUTINES
1980 REM ===========
1990 REM
2000 REM -----------
2010 REM MENU HEADER
2020 REM -----------
2030 HOME
2040 PRINT
2050 PRINT TAB( 12)"THE NAVIGATOR"
2060 PRINT
2070 PRINT TAB( 9)"BASIC LISTING UTILITY"
2080 PRINT TAB( 8)"AND FLOW CHART FORMATTER"
2090 PRINT
2100 INVERSE
2110 PRINT BLANK$
2120 VTAB 7
2130 PRINT " "HEADER$
2140 NORMAL
2150 VTAB 10
2160 RETURN
2170 REM -----------
2180 REM MENU FOOTER
2190 REM -----------
2200 VTAB 21
2210 INVERSE
2220 PRINT BLANK$
2230 VTAB 21
2240 PRINT " "FOOTER$" "
2250 NORMAL
2260 VTAB 23
2270 PRINT TAB( 4)"COPYRIGHT 1985 MICROSPARC, INC."
2280 RETURN
2290 REM ---------
2300 REM ONE-DRIVE
2310 REM ---------
2320 HOME
2330 VTAB 12: POKE -16368,0
2340 PRINT "BE SURE PRINTER IS ON LINE,": PRINT : PRINT "AND PRESS ANY KEY";
2350 GET A$: PRINT
2360 GOSUB 1630: REM VERIFY EXISTENCE OF PROGRAM
2370 PRINT D$"OPEN EX1,D"D1
2380 PRINT D$"WRITE EX1"
2390 PRINT "LOAD"NAME$
2400 F$ = "RUN NAVIGATOR." + STR$(NR) +",D" + STR$(D1)
2410 PRINT "0HOME:D$=CHR$(4):?D$"Q$"OPENEXX,D"(D1)Q$":?D$"Q$"WRITEEXX"Q$":LIST1-:?D$"Q$"CLOSE"Q$":?D$"Q$F$Q$
2420 PRINT "RUN"
2430 PRINT D$"CLOSE"
2440 PRINT D$"EXEC EX1,D"D1
2450 END
2460 E = PEEK(222):EL = PEEK(218) +256 * PEEK(219): POKE 216,0
2470 IF EF = 1 AND E = 5 THEN PRINT D$"CLOSE": PRINT D$"DELETE NAVIGATOR.TXT": GOTO 220
2480 IF EF = 3 AND E = 10 THEN ON (D1 = D2) +1 GOTO 2320,1710
2490 IF EF = 3 THEN EF = 3 +2 *(D1 = D2)
2500 IF E = 4 THEN HOME : VTAB 12: PRINT "DISK WRITE PROTECTED": GOTO 2530
2510 IF E = 6 THEN HOME : VTAB 12: PRINT "FILE NOT FOUND":EF = EF +(EF = 3): ON (D1 = D2) +1 GOTO 2530,2540
2520 HOME : VTAB 12: PRINT "ERROR #";E" IN LINE "EL"."
2530 PRINT : PRINT "PRESS ANY KEY TO CONTINUE";: GET Z$: PRINT : ON EF GOTO 160,1400,1850,300,2360
2540 PRINT : PRINT "YOUR PROGRAM AND NAVIGATOR MUST BE": PRINT " ON THE SAME DISK!": END