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!
Entry name:
BASIC Cross-Reference Utility
|
Publisher/Developer:
BELLCOM - Public Domain Library, Seattle Puget Sound *Atari* Computer Enthusia |
|
|
-
Entry name:BASIC Cross-Reference Utility
-
Category:Programming utilities
-
Publisher/Developer:BELLCOM - Public Domain Library, Seattle Puget Sound *Atari* Computer Enthusia
Listing 1
0REM|BASICCROSSREFERENCEUTILITY||WRITTENBYJerryHackett| 1REM|SeattlePuget-SoundATARI| 2REM|ComputerEnthusiasts.| 3REM|PUBLICDOMAIN| 4TRUE=1:FALSE=0 5GRAPHICS18:POSITION7,2:PRINT#6;"BASIC" 6POSITION5,3:PRINT#6;"VARIABLE" 7POSITION1,4:PRINT#6;"CROSSREFERENCING" 9FORI=1TO1000:NEXTI 10DIMA$(1),START(128,2),F$(15),T$(13),VAR$(40),LINE$(80) 20GOSUB12000 30REFRENCES=0 90REMNISTHENEXTAVAILABLEMEMORYLOCATIONFORLINKEDLIST 100N=256*(PEEK(15)+1) 105REMMEMTOPISTHELASTAVAILABLEMEMORYLOCATIONFORTHELINKEDLIST 106MEMTOP=PEEK(741)+PEEK(742)*256 110INC=4:REMINCREMENTFORLINKEDLIST 120FORI=1TO128:START(I,1)=0:START(I,2)=-1:NEXTI 125GOSUB4190:REM**ZEROFIRSTLINK** 130REMGETTHEFILENAME 132GOTO136 135PRINT"COULDN'TFINDTHATFILE":FORWAIT=1TO500:NEXTWAIT 136GRAPHICS0:?:?:?:?:? 140PRINT"FILETOCROSSREFERENCE"; 145CLOSE#4 150INPUTT$ 160F$(1,2)="D:":F$(3)=T$ 165TRAP135 167PRINT:PRINT"OPENING";T$ 170OPEN#4,4,0,F$ 198REM**READFIRST2BYTES** 199REM*CHECKFOR0* 200GET#4,X1 201GET#4,X2 210IFX1<>0ORX2<>0THEN?"FILENOTIN'BASICLOADFORMAT'":CLOSE#4:GOTO136 220REM**READTHERESTOFPOINTERS** 230FORI=1TO12:GET#4,X:NEXTI 297REM 298REMREADOFFTHEVARIABLES 299REM 300EOT=FALSE 301REMREMEMBERLOCATIONOFVARIABLESINTHEFILEFORLATER 302NOTE#4,VARSECTOR,VARBYTE 303PRINTCHR$(28);"READINGVARIABLES" 305NVAR=0 310GOSUB1000 320IFEOT=TRUETHEN350 330NVAR=NVAR+1 340GOTO310 350IFNVAR=0THEN?"[]NOVARIABLESORCONSTANTSINTHISPROGRAM[]":END 360FORI=1TONVAR 370FORJ=1TO8 380GET#4,X 390NEXTJ 395NEXTI 396GRAPHICS18:POSITION0,3:PRINT#6;"CROSSREFERENCING" 397POSITION0,4:PRINT#6;"LINENUMBER" 399TRAP10090:RESTART=396:GOSUB13000:REM**HEADERPAGE*** 400REMREADALLLINENUMBERS 410LINENUM=0 420GET#4,X1 430GET#4,X2 435IFX2>=128THEN900:REMIMMED.MODELINEWASFOUND 437CBYTE=3 440REMX1,X2ARELOWANDHIGHBYTESOFLINENUMBER 450LINENUM=256*X2+X1 455POSITION12,4:PRINT#6;LINENUM 460REMCBYTEISCURRENTPOSITIONOFTHEREADCURSORINTHELINE 470GET#4,LINEEND 472CBYTE=CBYTE+1 475IFCBYTE>LINEENDTHENCBYTE=0:GOTO420 480GET#4,STMTEND 490GET#4,CMD 500CBYTE=CBYTE+2 510REMIFCOMMANDISREMREADTOEOL 520IFCMD=0ORCMD=55THENGOSUB2000:CBYTE=0:GOTO420 530GET#4,X 535CBYTE=CBYTE+1 540IFX=14THENGOSUB3000:GOTO580 550IFX=15THENGOSUB6000:GOTO580 560IFX>=61ANDX<=84THENGOSUB5000:GOTO580 570IFX>=128THENGOSUB4000 580IFCBYTE>STMTENDTHEN475 590GOTO530 900REM**PRINTRESULTS** 901PRINT#6;"ENDOFFILEREACHED" 910GOSUB7000 920LPRINT:LPRINT 930LPRINT:LPRINT 940LPRINTREFRENCES;"REFRENCESMADETO";VARNUM;"VARIABLES" 950LPRINTCHR$(12) 999END 1000REM 1010REM*READUNTILBYTEIS>128* 1020REM 1025TEMP2=0 1030TRAP1090 1035VAR$="" 1040GET#4,X 1043TEMP2=TEMP2+1 1045IFX=0THENEOT=TRUE:RETURN 1050IFX<128THENVAR$(TEMP2,TEMP2)=CHR$(X):GOTO1040 1055VAR$(TEMP2,TEMP2)=CHR$(X-128) 1056IFCHR$(X)=""THENVAR$(TEMP2+1,TEMP2+2)=")" 1060RETURN 1090?"HITENDOFFILEWHILELOOKINGFORVARIABLES[]" 1099STOP 2000REM**READUNTILENDOFLINE** 2010FORTEMP=CBYTETOLINEEND 2020GET#4,X 2030NEXTTEMP 2040RETURN 2050REMCBYTECHANGEDUPONRETURN 3000REMREAD6BYTESOFNUMERICCONST 3010FORTEMP=1TO6 3020GET#4,X 3030NEXTTEMP 3040CBYTE=CBYTE+6 3050RETURN 4000REM**ADDLINENUMTOLIST** 4005REFRENCES=REFRENCES+1 4010VARNUM=X-128+1 4020IFSTART(VARNUM,2)=LINENUMTHENRETURN 4030START(VARNUM,2)=LINENUM 4040IFSTART(VARNUM,1)=0THENSTART(VARNUM,1)=N:GOTO4140 4050CHAIN=START(VARNUM,1) 4060NCHAIN=PEEK(CHAIN+2)+256*PEEK(CHAIN+3) 4070IFNCHAIN<>0THENCHAIN=NCHAIN:GOTO4060 4100REMFOUNDENDOFLINKEDLIST,INSERTNEWLINK 4120POKECHAIN+2,N-INT(N/256)*256 4130POKECHAIN+3,INT(N/256) 4140POKEN+1,INT(LINENUM/256) 4145POKEN,LINENUM-INT(LINENUM/256)*256 4150POKEN+2,0:POKEN+3,0 4160REMINCREMENT'NEXT'POINTER 4170N=N+INC 4180REMCHECKTOSEEIFSTILLINSIDEAVAILABLEWORKSPACE 4190IFN<MEMTOPTHENPOKEN,0:POKEN+1,0:POKEN+2,0:POKEN+3,0:RETURN 4200PRINT"OUTOFAVAILABLEMEMORY" 4210END 5000REM**READLEFTPARENOFFUNCTION** 5010GET#4,X 5020CBYTE=CBYTE+1 5030IFX<>58THENPRINT"LEFTPARENTHESISNOTFOUNDAFTERFUNCTION":STOP 5040RETURN 6000REM**BYPASSSTRINGCONSTANT** 6010GET#4,NCHARS 6020CBYTE=CBYTE+1 6030FORTEMP=1TONCHARS 6040GET#4,X 6050CBYTE=CBYTE+1 6060NEXTTEMP 6070RETURN 7000REM**PRINTRESULTSOFXREF** 7010REMGOBACKTOVARIABLES 7020POINT#4,VARSECTOR,VARBYTE 7025RESTART=7020:TRAP10090 7030PAGE=0 7031LPRINTCHR$(18) 7032LPRINT"D";CHR$(8);CHR$(16);CHR$(24);CHR$(32);CHR$(40);CHR$(48);CHR$(56);CHR$(0) 7036VARNUM=0 7040REM**STARTMAINLOOPHERE** 7045TEMP3=0 7050GOSUB17050 7060VARNUM=VARNUM+1 7065IFVARNUM>NVARTHENRETURN 7070GOSUB1000:REMGETVARIABLENAME 7072TRAP10090 7075IFLINE>56THENGOSUB17050 7080LPRINT:LPRINTCHR$(27);CHR$(69);VAR$;CHR$(27);CHR$(70) 7090LINE=LINE+2 7095EOL=FALSE 7100CHAIN=START(VARNUM,1) 7105IFSTART(VARNUM,2)<0THENLPRINT"NOREFRENCES":LINE=LINE+1:GOTO7060 7110LINENUM=PEEK(CHAIN)+256*PEEK(CHAIN+1) 7120IFLINENUM=START(VARNUM,2)THENEOL=TRUE 7130GOSUB11000 7135IFLINE>60THENGOSUB17050 7140CHAIN=PEEK(CHAIN+2)+256*PEEK(CHAIN+3) 7150IFEOL<>TRUETHEN7110 7160GOTO7060 10000REM**HEADER** 10020LPRINT 10030LPRINTCHR$(12);CHR$(14);T$,,"PAGE";PAGE 10040LPRINT:LPRINT 10050LINE=LINE+4 10060RETURN 10090REM**PRINTERERRORTRAP** 10091GRAPHICS2+16 10093POSITION0,4 10094PRINT#6;"PRINTERUNAVAILABLE" 10095FORTEMP2=1TO10 10100SOUND0,70,10,10 10110REMELONGATESOUNDWITHREM 10120FORTEMP3=1TO10:NEXTTEMP3 10130SOUND0,0,0,0 10140NEXTTEMP2 10150GRAPHICS18 10170GOTORESTART 11000REM**PRINTALINENUMBER** 11010TEMP3=TEMP3+1 11020IFTEMP3>7THENLPRINTLINE$:TEMP3=0:LINE=LINE+1:GOSUB12000 11030LINE$(TEMP3*8+1)=STR$(LINENUM) 11050IFEOL=TRUETHENLPRINTLINE$:TEMP3=0:LINE=LINE+1:GOSUB12000 11060RETURN 12000FORTEMP4=1TO80 12010LINE$(TEMP4,TEMP4)="" 12020NEXTTEMP4 12030RETURN 13000REMPRINTTHEHEADER 13005FORWAIT=1TO20:LPRINT:NEXTWAIT 13010LPRINTCHR$(14);"VARIABLE" 13020LPRINT 13030LPRINTCHR$(14);"CROSSREFRENCE" 13040LPRINT:LPRINT 13050LPRINTCHR$(14);"FILE:";T$ 13055TRAP14000 13060RETURN 14000REMOTHERERRORSHERE 14010GRAPHICS0 14020PRINT"ERROR#";PEEK(195) 14030PRINT"ATLINE";PEEK(186)+256*PEEK(187) 14040STOP 17050PAGE=PAGE+1 17055LINE=0 17060GOSUB10000 17070RETURN
References
Listing downloads
Copyright holder
