Random game
Random demo
Random demo
Entry name:
 BASIC Cross-Reference Utility 
Publisher/Developer:

BELLCOM - Public Domain Library,
Seattle Puget Sound *Atari* Computer Enthusia
  • Category:

    Programming utilities
  • Code:

    Jerry Hackett
  • Media format:

    Diskette
  • Programming language:

    Atari BASIC
BASIC Cross-Reference Utility BASIC Cross-Reference Utility BASIC Cross-Reference Utility BASIC Cross-Reference Utility
Listing 1
0REM|BASICCROSSREFERENCEUTILITY||WRITTENBYJerryHackett|
1REM|SeattlePuget-SoundATARI|
2REM|ComputerEnthusiasts.|
3REM|PUBLICDOMAIN|
4TRUE=1:FALSE=0
5GRAPHICS18:POSITION7,2:PRINT#6;"BASIC"
6POSITION5,3:PRINT#6;"VARIABLE"
7POSITION1,4:PRINT#6;"CROSSREFERENCING"
9FORI=1TO1000:NEXTI
10DIMA$(1),START(128,2),F$(15),T$(13),VAR$(40),LINE$(80)
20GOSUB12000
30REFRENCES=0
90REMNISTHENEXTAVAILABLEMEMORYLOCATIONFORLINKEDLIST
100N=256*(PEEK(15)+1)
105REMMEMTOPISTHELASTAVAILABLEMEMORYLOCATIONFORTHELINKEDLIST
106MEMTOP=PEEK(741)+PEEK(742)*256
110INC=4:REMINCREMENTFORLINKEDLIST
120FORI=1TO128:START(I,1)=0:START(I,2)=-1:NEXTI
125GOSUB4190:REM**ZEROFIRSTLINK**
130REMGETTHEFILENAME
132GOTO136
135PRINT"COULDN'TFINDTHATFILE":FORWAIT=1TO500:NEXTWAIT
136GRAPHICS0:?:?:?:?:?
140PRINT"FILETOCROSSREFERENCE";
145CLOSE#4
150INPUTT$
160F$(1,2)="D:":F$(3)=T$
165TRAP135
167PRINT:PRINT"OPENING";T$
170OPEN#4,4,0,F$
198REM**READFIRST2BYTES**
199REM*CHECKFOR0*
200GET#4,X1
201GET#4,X2
210IFX1<>0ORX2<>0THEN?"FILENOTIN'BASICLOADFORMAT'":CLOSE#4:GOTO136
220REM**READTHERESTOFPOINTERS**
230FORI=1TO12:GET#4,X:NEXTI
297REM
298REMREADOFFTHEVARIABLES
299REM
300EOT=FALSE
301REMREMEMBERLOCATIONOFVARIABLESINTHEFILEFORLATER
302NOTE#4,VARSECTOR,VARBYTE
303PRINTCHR$(28);"READINGVARIABLES"
305NVAR=0
310GOSUB1000
320IFEOT=TRUETHEN350
330NVAR=NVAR+1
340GOTO310
350IFNVAR=0THEN?"[]NOVARIABLESORCONSTANTSINTHISPROGRAM[]":END
360FORI=1TONVAR
370FORJ=1TO8
380GET#4,X
390NEXTJ
395NEXTI
396GRAPHICS18:POSITION0,3:PRINT#6;"CROSSREFERENCING"
397POSITION0,4:PRINT#6;"LINENUMBER"
399TRAP10090:RESTART=396:GOSUB13000:REM**HEADERPAGE***
400REMREADALLLINENUMBERS
410LINENUM=0
420GET#4,X1
430GET#4,X2
435IFX2>=128THEN900:REMIMMED.MODELINEWASFOUND
437CBYTE=3
440REMX1,X2ARELOWANDHIGHBYTESOFLINENUMBER
450LINENUM=256*X2+X1
455POSITION12,4:PRINT#6;LINENUM
460REMCBYTEISCURRENTPOSITIONOFTHEREADCURSORINTHELINE
470GET#4,LINEEND
472CBYTE=CBYTE+1
475IFCBYTE>LINEENDTHENCBYTE=0:GOTO420
480GET#4,STMTEND
490GET#4,CMD
500CBYTE=CBYTE+2
510REMIFCOMMANDISREMREADTOEOL
520IFCMD=0ORCMD=55THENGOSUB2000:CBYTE=0:GOTO420
530GET#4,X
535CBYTE=CBYTE+1
540IFX=14THENGOSUB3000:GOTO580
550IFX=15THENGOSUB6000:GOTO580
560IFX>=61ANDX<=84THENGOSUB5000:GOTO580
570IFX>=128THENGOSUB4000
580IFCBYTE>STMTENDTHEN475
590GOTO530
900REM**PRINTRESULTS**
901PRINT#6;"ENDOFFILEREACHED"
910GOSUB7000
920LPRINT:LPRINT
930LPRINT:LPRINT
940LPRINTREFRENCES;"REFRENCESMADETO";VARNUM;"VARIABLES"
950LPRINTCHR$(12)
999END
1000REM
1010REM*READUNTILBYTEIS>128*
1020REM
1025TEMP2=0
1030TRAP1090
1035VAR$=""
1040GET#4,X
1043TEMP2=TEMP2+1
1045IFX=0THENEOT=TRUE:RETURN
1050IFX<128THENVAR$(TEMP2,TEMP2)=CHR$(X):GOTO1040
1055VAR$(TEMP2,TEMP2)=CHR$(X-128)
1056IFCHR$(X)=""THENVAR$(TEMP2+1,TEMP2+2)=")"
1060RETURN
1090?"HITENDOFFILEWHILELOOKINGFORVARIABLES[]"
1099STOP
2000REM**READUNTILENDOFLINE**
2010FORTEMP=CBYTETOLINEEND
2020GET#4,X
2030NEXTTEMP
2040RETURN
2050REMCBYTECHANGEDUPONRETURN
3000REMREAD6BYTESOFNUMERICCONST
3010FORTEMP=1TO6
3020GET#4,X
3030NEXTTEMP
3040CBYTE=CBYTE+6
3050RETURN
4000REM**ADDLINENUMTOLIST**
4005REFRENCES=REFRENCES+1
4010VARNUM=X-128+1
4020IFSTART(VARNUM,2)=LINENUMTHENRETURN
4030START(VARNUM,2)=LINENUM
4040IFSTART(VARNUM,1)=0THENSTART(VARNUM,1)=N:GOTO4140
4050CHAIN=START(VARNUM,1)
4060NCHAIN=PEEK(CHAIN+2)+256*PEEK(CHAIN+3)
4070IFNCHAIN<>0THENCHAIN=NCHAIN:GOTO4060
4100REMFOUNDENDOFLINKEDLIST,INSERTNEWLINK
4120POKECHAIN+2,N-INT(N/256)*256
4130POKECHAIN+3,INT(N/256)
4140POKEN+1,INT(LINENUM/256)
4145POKEN,LINENUM-INT(LINENUM/256)*256
4150POKEN+2,0:POKEN+3,0
4160REMINCREMENT'NEXT'POINTER
4170N=N+INC
4180REMCHECKTOSEEIFSTILLINSIDEAVAILABLEWORKSPACE
4190IFN<MEMTOPTHENPOKEN,0:POKEN+1,0:POKEN+2,0:POKEN+3,0:RETURN
4200PRINT"OUTOFAVAILABLEMEMORY"
4210END
5000REM**READLEFTPARENOFFUNCTION**
5010GET#4,X
5020CBYTE=CBYTE+1
5030IFX<>58THENPRINT"LEFTPARENTHESISNOTFOUNDAFTERFUNCTION":STOP
5040RETURN
6000REM**BYPASSSTRINGCONSTANT**
6010GET#4,NCHARS
6020CBYTE=CBYTE+1
6030FORTEMP=1TONCHARS
6040GET#4,X
6050CBYTE=CBYTE+1
6060NEXTTEMP
6070RETURN
7000REM**PRINTRESULTSOFXREF**
7010REMGOBACKTOVARIABLES
7020POINT#4,VARSECTOR,VARBYTE
7025RESTART=7020:TRAP10090
7030PAGE=0
7031LPRINTCHR$(18)
7032LPRINT"D";CHR$(8);CHR$(16);CHR$(24);CHR$(32);CHR$(40);CHR$(48);CHR$(56);CHR$(0)
7036VARNUM=0
7040REM**STARTMAINLOOPHERE**
7045TEMP3=0
7050GOSUB17050
7060VARNUM=VARNUM+1
7065IFVARNUM>NVARTHENRETURN
7070GOSUB1000:REMGETVARIABLENAME
7072TRAP10090
7075IFLINE>56THENGOSUB17050
7080LPRINT:LPRINTCHR$(27);CHR$(69);VAR$;CHR$(27);CHR$(70)
7090LINE=LINE+2
7095EOL=FALSE
7100CHAIN=START(VARNUM,1)
7105IFSTART(VARNUM,2)<0THENLPRINT"NOREFRENCES":LINE=LINE+1:GOTO7060
7110LINENUM=PEEK(CHAIN)+256*PEEK(CHAIN+1)
7120IFLINENUM=START(VARNUM,2)THENEOL=TRUE
7130GOSUB11000
7135IFLINE>60THENGOSUB17050
7140CHAIN=PEEK(CHAIN+2)+256*PEEK(CHAIN+3)
7150IFEOL<>TRUETHEN7110
7160GOTO7060
10000REM**HEADER**
10020LPRINT
10030LPRINTCHR$(12);CHR$(14);T$,,"PAGE";PAGE
10040LPRINT:LPRINT
10050LINE=LINE+4
10060RETURN
10090REM**PRINTERERRORTRAP**
10091GRAPHICS2+16
10093POSITION0,4
10094PRINT#6;"PRINTERUNAVAILABLE"
10095FORTEMP2=1TO10
10100SOUND0,70,10,10
10110REMELONGATESOUNDWITHREM
10120FORTEMP3=1TO10:NEXTTEMP3
10130SOUND0,0,0,0
10140NEXTTEMP2
10150GRAPHICS18
10170GOTORESTART
11000REM**PRINTALINENUMBER**
11010TEMP3=TEMP3+1
11020IFTEMP3>7THENLPRINTLINE$:TEMP3=0:LINE=LINE+1:GOSUB12000
11030LINE$(TEMP3*8+1)=STR$(LINENUM)
11050IFEOL=TRUETHENLPRINTLINE$:TEMP3=0:LINE=LINE+1:GOSUB12000
11060RETURN
12000FORTEMP4=1TO80
12010LINE$(TEMP4,TEMP4)=""
12020NEXTTEMP4
12030RETURN
13000REMPRINTTHEHEADER
13005FORWAIT=1TO20:LPRINT:NEXTWAIT
13010LPRINTCHR$(14);"VARIABLE"
13020LPRINT
13030LPRINTCHR$(14);"CROSSREFRENCE"
13040LPRINT:LPRINT
13050LPRINTCHR$(14);"FILE:";T$
13055TRAP14000
13060RETURN
14000REMOTHERERRORSHERE
14010GRAPHICS0
14020PRINT"ERROR#";PEEK(195)
14030PRINT"ATLINE";PEEK(186)+256*PEEK(187)
14040STOP
17050PAGE=PAGE+1
17055LINE=0
17060GOSUB10000
17070RETURN	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!