home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-11-09 | 13.3 KB | 305 lines |
- 1000 ' PC-XREF3.BAS Program Ver 3.1 Rev 15 Jan 1984
- 1010 ' WARNING!!! DO NOT ALTER, BYPASS OR REMOVE LINES 1000-1220
- 1020 CLS: CLEAR ,,512: KEY OFF: WIDTH 80: LOCATE ,,0: COLOR 7,0: SCREEN 0,0,0
- 1030 DEFSTR C,S: DEFINT A-B,E-Q,U-Z: DEFSNG R,T: DEFDBL D
- 1040 DIM SR(4000),C(4),CX(127),CF(37),CE(36),CD(6),F(8),VC(8),UC(8)
- 1050 DIM CA(6),CC(8),SM(8): DATA 011584
- 1060 IM=4000: I=VARPTR(C(1))-VARPTR(C(0)): IF I=4 THEN IC=-1 ELSE IC=0
- 1070 PRINT TAB(16) STRING$(15,45)" U S E R W A R E "STRING$(15,45)
- 1080 PRINT: PRINT TAB(28)"User Supported Software": PRINT: R=SCREEN(3,29)*97
- 1090 RESTORE 1100: FOR I=1 TO 15: READ S: PRINT SPC(8)S: NEXT I
- 1100 DATA" PC-XREF3
- 1110 DATA" Version 3.1 15 Jan 1983",""
- 1120 DATA" If you are using PC-XREF3 and finding it of value,"
- 1130 DATA" your contribution ($3 suggested) will be appreciated.",""
- 1140 DATA" Copyright (c) 1984 by James T. Demberger
- 1150 DATA" 7280 60th Avenue North,
- 1160 DATA" St. Petersburg, FL 33709
- 1170 DATA" 813-546-1182
- 1180 DATA" CompuServe 74425,1642",""
- 1190 DATA"You are encouraged to copy and share this program with other users,
- 1200 DATA"so long as the program is not distributed in modified form, that
- 1210 DATA"no fee is charged, and that this notice is not bypassed or removed.
- 1220 SE=" Press any key to ": ON ERROR GOTO 1240: GOSUB 1420: GOTO 3260
- 1230 ' subroutines
- 1240 IF ERR<28 AND ERR>23 AND ERL=1410 THEN 1250 ELSE 1260
- 1250 PRINT: PRINT SPC(30)"FIX THE PRINTER": GOSUB 1420: RESUME 1410
- 1260 CLOSE: IF ERR=14 THEN 1280 ELSE I=ERR: J=ERL: RESUME 1270
- 1270 PRINT: PRINT SPC(25)"ERROR ";I;" AT ";J: GOSUB 1420: GOTO 1570
- 1280 FOR J=1 TO 4: C(J)="": NEXT J: PRINT: RESUME 2710
- 1290 IF PR=0 THEN RETURN ELSE PRINT #1,CHR$(12);
- 1300 IF PR=0 THEN RETURN ELSE PRINT #1,SF;" ";SH;
- 1310 S=" ": IF IW>80 THEN S=SPACE$(50)
- 1320 PRINT #1,S;TIME$;" ";DATE$;" Page ";PG: PRINT #1,"": LP=0: PG=PG+1: RETURN
- 1330 PRINT: PRINT SPC(20)"Output to Display or Printer - D/p ";: GOSUB 1430
- 1340 CLOSE #1: IF K=80 THEN SX="LPT1:": PR=1 ELSE PR=0: SX="SCRN:"
- 1350 LP=0: IW=80: WIDTH 80: OPEN "O",#1,SX: IF K<>80 THEN RETURN
- 1360 PRINT: PRINT SPC(20)"Compressed or Normal width - c/N ";: GOSUB 1430
- 1370 IF K<>67 THEN SA=CHR$(18)+CHR$(27)+CHR$(81)+CHR$(80): GOTO 1390
- 1380 SA=CHR$(15)+CHR$(27)+CHR$(81)+CHR$(132): IW=132: WIDTH #1,132
- 1390 PRINT: PRINT SPC(20)"Set paper to top of page and press Enter or"
- 1400 PRINT SPC(25)"Press S key to Skip to top of page ";: GOSUB 1430
- 1410 IF K=83 THEN PRINT #1,SA+CHR$(12);: RETURN ELSE PRINT #1,SA;: RETURN
- 1420 PRINT: PRINT SPC(24)SE;"continue ";: GOSUB 1430: RETURN
- 1430 LR=CSRLIN: LC=POS(0): LOCATE 25,4: COLOR 0,7: PRINT" Press letter key or";
- 1440 PRINT" Enter key for upper case default or Escape key to END ";
- 1450 LOCATE LR,LC: COLOR 23,0: PRINT"_";: COLOR 7,0: LOCATE LR,LC: BEEP
- 1460 DEF SEG=&H40: POKE &H1A,PEEK(&H1C): S=INPUT$(1): K=ASC(S)
- 1470 IF K=27 THEN 1570 ELSE IF K=6 THEN 1560
- 1480 IF K>96 AND K<123 THEN K=K-32 ELSE IF K<33 THEN K=32
- 1490 IF K>31 THEN PRINT CHR$(K) ELSE PRINT" "
- 1500 LR=CSRLIN: LC=POS(0): LOCATE 25,1: PRINT SPACE$(79);: LOCATE LR,LC
- 1510 RETURN
- 1520 LR=CSRLIN: LC=POS(0): LOCATE 25,4: COLOR 0,7: PRINT SE;
- 1530 PRINT"stop/start scrolling/printing or press Escape key to Exit ";
- 1540 LOCATE LR,LC: COLOR 7,0: RETURN
- 1550 SOUND 32767,50: SOUND 32767,1: RETURN
- 1560 PRINT"FREe=";FRE(S);: GOSUB 1550: LOCATE LR,LC: PRINT SPC(12): GOTO 1450
- 1570 CLS: WIDTH 80: LOCATE 10,35: PRINT"End Program? Y/n ";: GOSUB 1430
- 1580 IF K=78 THEN 3490 ELSE CLS: PRINT SPC(36)"END PC-XREF3": GOSUB 1550: END
- 1590 CLS: LOCATE 4,25: PRINT"Display/print cancelled by Escape"
- 1600 PRINT: PRINT SPC(20)"Do you want to continue, rerun or end? c/r/e ";
- 1610 GOSUB 1430: IF K=69 THEN 1570 ELSE IF K=82 THEN 3490
- 1620 IF K=67 THEN RETURN
- 1630 PRINT: PRINT SPC(33)"Not C D or E": GOSUB 1550: GOTO 1590
- 1640 S=TIME$: TC=VAL(LEFT$(S,2))*3600+VAL(MID$(S,4,2))*60+VAL(RIGHT$(S,2))
- 1650 RETURN
- 1660 S=INKEY$: IF S="" THEN 1680 ELSE IF ASC(S)=27 THEN IE=-1: RETURN
- 1670 S=INKEY$: IF S="" THEN 1670 ELSE IF ASC(S)=27 THEN IE=-1
- 1680 RETURN
- 1690 ' print program
- 1700 CLS: PG=1: NL=0: NR=0: ST="": SL="": GOSUB 1640: T1=TC
- 1710 RB=FRE(S): GOSUB 1520: LSET SH=S1: IF PR THEN GOSUB 1300
- 1720 GOSUB 2660: GOSUB 2660: GOSUB 2630: ST=STR$(RT)+" ": RH=RT: GOSUB 2590
- 1730 ' identify tokens
- 1740 GOSUB 2670: IF NR>=IM THEN 2720
- 1750 IF A<128 THEN 1940 ELSE IF A=132 THEN 1900
- 1760 IF A=177 THEN M=M+1 'drop + after while
- 1770 IF A=143 OR A=217 THEN 1870 ELSE IF A<253 THEN J=252 ELSE J=A: GOSUB 2670
- 1780 ON J-251 GOTO 1790,1820,1830,1840
- 1790 ST=CX(A-128): IF A=161 AND RIGHT$(SL,1)=":" THEN SL=LEFT$(SL,LEN(SL)-1)
- 1800 GOSUB 2600: IF (A>229 AND A<238) OR A=244 THEN 1740
- 1810 GOTO 1850
- 1820 ST=CD(A-128): GOSUB 2600: GOTO 1850 'FD
- 1830 ST=CE(A-128): GOSUB 2600: GOTO 1850 'FE
- 1840 ST=CF(A-128): GOSUB 2600 'FF
- 1850 ST=CC(8)+ST: GOTO 2550 'reserved word
- 1860 ' remark
- 1870 IF RIGHT$(SL,1)=":" THEN SL=LEFT$(SL,LEN(SL)-1) ELSE ST="REM": GOTO 1910
- 1880 GOSUB 2670: ST="'": GOTO 1910
- 1890 ' data
- 1900 ST="DATA"
- 1910 IF F(8) THEN IF (RH>=RS AND RH<=RE) THEN NR=NR+1: SR(NR)=CC(8)+ST+SN
- 1920 GOSUB 2670: IF A=0 THEN SL=SL+ST: GOTO 2410 ELSE ST=ST+SC: GOTO 1920
- 1930 ' name
- 1940 IF A<65 OR A>90 THEN 2060
- 1950 ST=SC
- 1960 GOSUB 2670: IF A=46 OR A=33 OR A=35 OR A=36 OR A=37 THEN 1980
- 1970 IF (A>64 AND A<91) OR (A>47 AND A<58) THEN 1980 ELSE 1990
- 1980 ST=ST+SC: GOTO 1960
- 1990 SL=SL+ST: IF A=40 THEN ST=ST+CHR$(A): GOTO 2030
- 2000 IF A<>32 THEN 2030 ELSE SL=SL+SC
- 2010 GOSUB 2670: IF A=40 OR A=32 THEN SL=SL+SC: GOTO 2020 ELSE 2030
- 2020 IF A=40 THEN ST=ST+CHR$(A): M=M+1 ELSE IF A=32 THEN 2010
- 2030 IF M=1 THEN SB=SP: M=255: GOTO 2040 ELSE M=M-1
- 2040 ST=CC(1)+ST: GOTO 2550
- 2050 ' line number
- 2060 IF A<>14 THEN 2090 ELSE GOSUB 2660: IF RT<0 THEN RT=RT+65535
- 2070 ST=STR$(RT): GOSUB 2590: GOSUB 2580: ST=CC(2)+ST: GOTO 2550
- 2080 ' literal constant
- 2090 IF A<>34 THEN 2140 ELSE ST=SC
- 2100 GOSUB 2670: ST=ST+SC: IF A=0 THEN SL=SL+ST: ST=CC(7)+ST: GOTO 2410
- 2110 IF A=34 THEN 2120 ELSE 2100
- 2120 GOSUB 2600: ST=CC(7)+ST: GOTO 2550
- 2130 ' 1 decimal digit constant
- 2140 IF A<17 OR A>26 THEN 2170
- 2150 ST=STR$(A-17): GOSUB 2590: GOSUB 2580: ST=CC(3)+ST: GOTO 2550
- 2160 ' 1 byte integer constant
- 2170 IF A<>15 THEN 2200
- 2180 GOSUB 2670: ST=STR$(A): GOSUB 2590: GOSUB 2580: ST=CC(3)+ST: GOTO 2550
- 2190 ' 2 byte signed integer constant
- 2200 IF A<>28 THEN 2230 ELSE GOSUB 2660
- 2210 ST=STR$(RT): GOSUB 2590: GOSUB 2580: ST=CC(3)+ST: GOTO 2550
- 2220 ' 4 byte single prec constant
- 2230 IF A<>29 THEN 2270 ELSE DEF SEG
- 2240 ST="": T=0: J=VARPTR(T): FOR I=0 TO 3: GOSUB 2670: POKE J+I,A: NEXT I
- 2250 SW="!": ST=STR$(T): GOSUB 2590: ST=CC(4)+ST: GOTO 2550
- 2260 ' 8 byte double prec constant
- 2270 IF A<>31 THEN 2310 ELSE DEF SEG
- 2280 ST="": D=0: J=VARPTR(D): FOR I=0 TO 7: GOSUB 2670: POKE J+I,A: NEXT I
- 2290 SW="#": ST=STR$(D): GOSUB 2590: ST=CC(5)+ST: GOTO 2550
- 2300 ' 2 byte hex/oct constant
- 2310 IF A<>11 AND A<>12 THEN 2350 ELSE I=A
- 2320 GOSUB 2660: IF I=12 THEN ST="&H"+HEX$(RT) ELSE ST="&O"+OCT$(RT)
- 2330 GOSUB 2600: ST=CC(6)+ST: GOTO 2550
- 2340 ' special characters
- 2350 IF A=32 OR A=35 OR A=36 OR A=40 OR A=41 OR A=44 THEN 2380
- 2360 IF A=45 OR A=58 OR A=59 OR A=91 OR A=93 THEN 2380
- 2370 GOTO 2400
- 2380 ST=CHR$(A): GOSUB 2600: GOTO 1740
- 2390 ' end of line
- 2400 IF A<>0 THEN 2500
- 2410 GOSUB 2660: GOSUB 2630: IF RT THEN 2440
- 2420 IF RH<RS OR RH>RE THEN 2430 ELSE NL=NL+1: PRINT #1,SL
- 2430 IF PR THEN RETURN ELSE GOSUB 1420: RETURN
- 2440 GOSUB 2660: GOSUB 2630: IF RH>RE THEN 2430
- 2450 IF RH<RS THEN 2480 ELSE NL=NL+1: PRINT #1,SL: GOSUB 1660
- 2460 IF IE THEN IE=0: GOSUB 1590: GOTO 3760
- 2470 IF PR THEN LP=LP+(LEN(SL)\IW+1): IF LP>=57 THEN GOSUB 1290
- 2480 SL="": ST=STR$(RT)+" ": RH=RT: GOSUB 2590: GOTO 1740
- 2490 ' other
- 2500 IF RIGHT$(SL,5)="BASE " THEN SL=SL+CHR$(A): GOTO 1740
- 2510 ' get to here must be an invalid code with A
- 2520 ' (>47 AND <58),(>96 AND <122),<11,=13,=15,=16,=30
- 2530 ST=CHR$(1)+" ->ASCII="+STR$(A)+"<- ": GOSUB 2600: GOTO 2560
- 2540 ' store token
- 2550 IF NOT F(ASC(ST)) OR RH<RS OR RH>RE THEN 1740
- 2560 NR=NR+1: SR(NR)=ST+SN: GOTO 1740
- 2570 ' add/strip leading blank
- 2580 RSET S6=ST: ST=S6: RETURN
- 2590 IF LEFT$(ST,1)=" " THEN ST=RIGHT$(ST,LEN(ST)-1): GOTO 2590
- 2600 SL=SL+ST: IF SW<>"" THEN SL=SL+SW: SW=""
- 2610 RETURN
- 2620 ' convert line no to string
- 2630 R=RT: IF R>32767 THEN R=R-(65535)
- 2640 J=R: SN=MKI$(J): SN=" "+RIGHT$(SN,1)+LEFT$(SN,1): RETURN
- 2650 ' get character, advance pointer
- 2660 GOSUB 2670: R=A: GOSUB 2670: RT=A: RT=R+256*RT: RETURN
- 2670 IF M<=LEN(SB) THEN 2690 'char in buffer?
- 2680 SP=SB: GET #2,RN: RN=RN+1: SB=SD: M=1
- 2690 SC=MID$(SB,M,1): A=ASC(SC): M=M+1: RETURN
- 2700 ' out of string space or array dim
- 2710 PRINT SPC(20);"Out of string space at line ";RH: GOTO 2730
- 2720 PRINT: PRINT SPC(20)"Number references exceeds maximum of";IM
- 2730 GOSUB 1600: GOTO 3760
- 2740 ' sort
- 2750 CLS: LOCATE 9,37: PRINT"SORTING": GOSUB 1640: T2=TC: K=NR: L=K
- 2760 K=INT(K/2): IF K>0 THEN K=(K OR 1) ELSE GOSUB 1640: T3=TC: RETURN
- 2770 FOR I=1 TO L-K: J=I
- 2780 IF SR(J)>SR(J+K) THEN 2790 ELSE 2800
- 2790 SWAP SR(J),SR(J+K): J=J-K: IF J>0 GOTO 2780
- 2800 NEXT I: GOTO 2760
- 2810 ' print cross reference
- 2820 CLS: CLOSE: PG=1: S="Cross Reference List"
- 2830 LSET SH=S: PRINT SPC(30)S: GOSUB 1330: CLS: GOSUB 1520: GOSUB 1300
- 2840 FOR I=0 TO 8: VC(I)=0: UC(I)=0: NEXT I: IF IW=80 THEN IW=72 ELSE IW=120
- 2850 LT=ASC(SR(1)): PRINT #1,SPC(30)SM(LT);: LP=2
- 2860 IF LT>2 AND LT<8 THEN PRINT #1,SM(0) ELSE PRINT #1,""
- 2870 FOR I=1 TO NR: GOSUB 1660: IF IE=0 THEN 2890
- 2880 IE=0: GOSUB 1590: K=127: PRINT #1,"": GOTO 3060
- 2890 J=ASC(SR(I)): VC(J)=VC(J)+1: IF J=LT THEN 2920 ELSE LT=J
- 2900 PRINT #1,"": PRINT #1,"": PRINT #1,SPC(30)SM(LT);: LP=LP+3
- 2910 IF LT>2 AND LT<8 THEN PRINT #1,SM(0) ELSE PRINT #1,""
- 2920 IF SR(I)=SR(I-1) THEN 3040 ELSE ST=MID$(SR(I),2): L=LEN(ST)
- 2930 IF L-3<=IW THEN NP=(L-3)\6 ELSE NP=IW\6
- 2940 CW=SPACE$((NP+1)*6): IF LEN(CW)>IW THEN CW=LEFT$(CW,IW)
- 2950 L=LEN(CW): SN=RIGHT$(ST,2): SN=RIGHT$(SN,1)+LEFT$(SN,1): R=CVI(SN)
- 2960 IF R<0 THEN R=R+65535
- 2970 SN=STR$(R): RSET S6=SN: ST=LEFT$(ST,LEN(ST)-3): IF SP=ST THEN 3000
- 2980 PRINT #1,"": IF LP=>57 THEN GOSUB 1290
- 2990 LSET CW=ST: PRINT #1,CW;: K=L: LP=LP+1: SP=ST: UC(LT)=UC(LT)+1: GOTO 3010
- 3000 IF S6=SS THEN 3040
- 3010 IF K>IW THEN 3020 ELSE PRINT #1,S6;: K=K+6: SS=S6: GOTO 3040
- 3020 PRINT #1,"": IF LP=>57 THEN GOSUB 1290
- 3030 PRINT #1,SPACE$(6);: LP=LP+1: K=6: GOTO 3010
- 3040 NEXT I: PRINT #1,""
- 3050 ' end
- 3060 GOSUB 1500: IF PR AND LP>44 THEN GOSUB 1290
- 3070 IF PR=0 AND K<>127 THEN GOSUB 1420
- 3080 PRINT #1,"": GOSUB 1640: T4=TC: PRINT #1," Program lines printed";NL;
- 3090 PRINT #1," Time Run";T4-T1;"seconds Sort";T3-T2;"seconds"
- 3100 IF IC=0 THEN PRINT SPC(25)"Delay - checking FREe memory"
- 3110 RA=FRE(S): PRINT #1,SPC(19)"Memory start";RB;" end";RA;" ";
- 3120 PRINT #1,USING"##% used";ABS((RA/RB)*100-100)
- 3130 PRINT #1,SPC(41)"Number Referenced"
- 3140 SF="####": FOR I=1 TO 8: IF F(I)=0 THEN 3180 ELSE PRINT #1,TAB(20);
- 3150 PRINT #1,SM(I);: IF I>2 AND I<8 THEN PRINT #1,SM(0); ELSE PRINT #1,"";
- 3160 PRINT #1,TAB(42);: PRINT #1,USING SF;UC(I);: PRINT #1,TAB(50);
- 3170 PRINT #1,USING SF;VC(I): UC(0)=UC(0)+UC(I): VC(0)=VC(0)+VC(I)
- 3180 NEXT I: PRINT #1,TAB(20);" Total";TAB(42);: PRINT #1,USING SF;UC(0);
- 3190 PRINT #1,TAB(50);: PRINT #1,USING SF;VC(0);
- 3200 PRINT #1,TAB(58);: PRINT #1,USING"##.## byte/ref";(RB-RA)/VC(0)
- 3210 GOSUB 1420: CLS: LOCATE 6,28: PRINT"End of Cross Reference Run"
- 3220 PRINT: IF PR=0 THEN 3230 ELSE GOSUB 1400
- 3230 CLOSE: PRINT: PRINT SPC(25)"Another Cross Reference Run? y/N ";
- 3240 GOSUB 1430: IF K=89 THEN 3490 ELSE 1570
- 3250 ' initialization
- 3260 CLS: PRINT SPC(22)"PC-XREF3 CROSS REFERENCE UTILITY PROGRAM": PRINT
- 3270 RESTORE: READ T: IF T+R=22739 THEN 3290
- 3280 PRINT SPC(22)"USERWARE NOTICE DELETED OR BYPASSED": GOSUB 1550: END
- 3290 PRINT TAB(13): COLOR 0,7
- 3300 PRINT" Input to PC-XREF3 must be a program file in SYSTEM format. "
- 3310 PRINT: J=9: COLOR 7,0: IF IC THEN 3450
- 3320 DATA"This program is using interpreted BASIC. Do to frequent lengthy
- 3330 DATA"delays while system cleans up string space, use the interpreted
- 3340 DATA"version only for testing program modifications with small programs.
- 3350 DATA" The compiled version has no string cleanup delay.",""
- 3360 RESTORE 3320: FOR I=1 TO 5: READ S: PRINT SPC(J)S: NEXT I
- 3370 DATA"Depending on available memory and length of variable names and
- 3380 DATA"strings, up to 4000 names, strings, line numbers and/or numeric
- 3390 DATA"constants may be processed in one run. If out of string space error
- 3400 DATA"occurs, run the program with a lesser number of options selected.
- 3410 DATA"","Program description and run instructions are on diskette with a
- 3420 DATA"filename of PC-XREF3.DOC. Send a diskette in stamped self-addressed
- 3430 DATA"mailer to author for the BASIC program PC-XREF3.BAS, the compiled
- 3440 DATA"program PC-XREF3.EXE and documentation file PC-XREF3.DOC.",""
- 3450 RESTORE 3370: FOR I=1 TO 10: READ S: PRINT SPC(J)S
- 3460 IF I<5 THEN C(I)=SPACE$(75)
- 3470 NEXT I: PRINT SPC(22)"Reading Reserved Words, Please Wait"
- 3480 S6=" ": SH=SPACE$(25): S1="Program List": GOSUB 3770: GOSUB 1420
- 3490 FOR I=1 TO NR: SR(I)="": NEXT I
- 3500 CLS: PRINT SPC(33)S1: PRINT
- 3510 PRINT SPC(20)"Enter dr:name.BAS of program file ";
- 3520 LINE INPUT"",SF: IF INSTR(SF,".") THEN 3530 ELSE SF=SF+".BAS"
- 3530 ON ERROR GOTO 3640: CLOSE #2: OPEN "I",#2,SF: CLOSE #2: ON ERROR GOTO 1240
- 3540 CLOSE #2: OPEN SF AS #2 LEN=128: FIELD #2,128 AS SD: RN=1: M=1: SB=""
- 3550 GOSUB 2670: IF A=255 THEN 3580 ELSE PRINT
- 3560 IF A=254 THEN ST="IN PROTECTED" ELSE ST="NOT IN SYSTEM"
- 3570 PRINT SPC(25)"PROGRAM ";ST;" FORMAT": PRINT: PRINT SPC(20);: GOTO 3650
- 3580 RS=0: PRINT: PRINT SPC(20)"Enter starting line number ";RS;
- 3590 INPUT"",S: IF S="" THEN RS=0 ELSE RS=VAL(S): IF RS<0 THEN RS=0
- 3600 RE=65529: PRINT: PRINT SPC(20)"Enter ending line number ";RE;: INPUT"",S
- 3610 IF S="" THEN RE=65529 ELSE RE=VAL(S): IF RE>65529 THEN RE=65529
- 3620 IF RE<RS THEN PRINT: PRINT SPC(30)"END LESS THAN START": GOTO 3580
- 3630 GOSUB 1330: GOTO 3660
- 3640 PRINT: PRINT SPC(25)"File not found - ";SF: PRINT: RESUME 3650
- 3650 PRINT SPC(25)"Press Esc or Enter to continue";: GOSUB 1430: GOTO 3500
- 3660 CLS: LOCATE 3,15: SG="ABCDEFGH"
- 3670 PRINT"The following cross reference options may be selected:": PRINT
- 3680 FOR I=1 TO 8: F(I)=0: PRINT SPC(30);CHR$(I+64);" ";SM(I);
- 3690 IF I>2 AND I<8 THEN PRINT SM(0) ELSE PRINT
- 3700 NEXT I: PRINT: PRINT SPC(20)"Enter letters for options, for example, ABCG"
- 3710 PRINT SPC(21)"or press Enter key for all options ";: LINE INPUT SO
- 3720 IF SO="" THEN SO=SG
- 3730 FOR I=1 TO LEN(SO): J=ASC(MID$(SO,I,1))
- 3740 IF J>96 AND J<123 THEN MID$(SO,I,1)=CHR$(J-32)
- 3750 F(INSTR(SG,MID$(SO,I,1)))=-1: NEXT I: GOSUB 1700
- 3760 GOSUB 2750: GOTO 2820
- 3770 RESTORE 3790: FOR I=1 TO 8: READ SM(I): IF I<7 THEN CA(I)=CHR$(I+64)
- 3780 CC(I)=CHR$(I): NEXT I: SM(0)=" Constants"
- 3790 DATA Variables,Line Numbers,Integer,Sgle Prec,Dble Prec,"Hex & Oct"
- 3800 DATA String,Reserved Words
- 3810 RESTORE 3820: FOR I=1 TO 127: READ CX(I): NEXT I
- 3820 DATA END,FOR,NEXT,DATA,INPUT,DIM,READ,LET,GOTO,RUN,IF,RESTORE,GOSUB,RETURN
- 3830 DATA REM,STOP,PRINT,CLEAR,LIST,NEW,ON,WAIT,DEF,POKE,CONT,9A,9B,OUT
- 3840 DATA LPRINT,LLIST,9F,WIDTH,ELSE,TRON,TROFF,SWAP,ERASE,EDIT,ERROR,RESUME
- 3850 DATA DELETE,AUTO,RENUM,DEFSTR,DEFINT,DEFSNG,DEFDBL,LINE,WHILE,WEND,CALL
- 3860 DATA B4,B5,B6,WRITE,OPTION,RANDOMIZE,OPEN,CLOSE,LOAD,MERGE,SAVE,COLOR
- 3870 DATA CLS,MOTOR,BSAVE,BLOAD,SOUND,BEEP,PSET,PRESET,SCREEN,KEY,LOCATE,CB
- 3880 DATA TO,THEN,TAB(,STEP,USR,FN,SPC(,NOT,ERL,ERR,STRING$,USING,INSTR,"'"
- 3890 DATA VARPTR,CSRLIN,POINT,OFF,INKEY$,DF,E0,E1,E2,E3,E4,E5,">","="
- 3900 DATA "<","+","-","*","/","^",AND,OR,XOR,EQV,IMP,MOD,"\"
- 3910 DATA F5,F6,F7,F8,F9,FA,FB,FC,FD,FE,FF
- 3920 RESTORE 3930: FOR I=1 TO 37: READ CF(I): NEXT I
- 3930 DATA LEFT$,RIGHT$,MID$,SGN,INT,ABS,SQR,RND,SIN,LOG,EXP,COS,TAN,ATN,FRE,INP
- 3940 DATA POS,LEN,STR$,VAL,ASC,CHR$,PEEK,SPACE$,OCT$,HEX$,LPOS,CINT,CSNG,CDBL
- 3950 DATA FIX,PEN,STICK,STRIG,EOF,LOC,LOF
- 3960 RESTORE 3970: FOR I=1 TO 36: READ CE(I): NEXT I
- 3970 DATA FILES,FIELD,SYSTEM,NAME,LSET,RSET,KILL,PUT,GET,RESET,COMMON,CHAIN
- 3980 DATA DATE$,TIME$,PAINT,COM,CIRCLE,DRAW,PLAY,TIMER,IOCTL,MKDIR,SHELL,VIEW
- 3990 DATA PMAP,ERDEV,CHDIR,RMDIR,ENVIRON,WINDOW,9F,A0,A1,A2,A3,NOISE
- 4000 RESTORE 4010: FOR I=1 TO 6: READ CD(I): NEXT I
- 4010 DATA CVI,CVS,CVD,MKI$,MKS$,MKD$
- 4020 RETURN
- 4030 ' last line PC-XREF3
-