10 REM MEMORY ANALYSIS UTILITY›20 REM by W. A. Bell May 1981 ›30 REM * Englewood, Colorado *›35 REM ÔÈÉÓ ÐÒÏÇÒÁÍ ÉÓ ×ÒÉÔÔÅΠÆÏÒ ÃÁÓÓÅÔÔÅ ÓÙÓÔÅÍÓº ÓÅÅ ÌÉÎÅ ´²°›40 DIM A$(100),B$(1),HEX$(16)›50 HEX$="0123456789ABCDEF"›60 TESTVAR1=999:TESTVAR2=123456:TESTVAR3=98765432›70 PRINT CHR$(125)›90 PRINT " ÍÅÍÏÒÙ ÁÎÁÌÙÓÉÓ ÕÔÉÌÉÔÙ"›100 PRINT "ENTER S FOR DATA SEARCH"›110 PRINT " D FOR MEMORY DUMP"›120 PRINT " A FOR ADDRESS POINTER SEARCH"›130 PRINT " E TO END"›140 INPUT B$›150 IF B$="S" THEN 210›160 IF B$="D" THEN 770›170 IF B$="A" THEN 630›180 IF B$="E" THEN END ›190 GOSUB 1270:GOTO 100›210 PRINT "ENTER C FOR CHARACTER DATA"›220 PRINT " D FOR DECIMAL DATA "›230 INPUT B$›240 IF B$="C" THEN 360›250 IF B$="D" THEN 270›256 REM A DUMMY LINE›260 GOSUB 1270:GOTO 210›270 PRINT "ENTER DECIMAL DATA TO SEARCH FOR"›280 PRINT "IN THE FORM D1,D2,...,Dn"›290 PRINT "END WITH A VALUE OF 999"›300 ALENGTH=O›310 INPUT I›320 IF I>255 THEN 390›330 ALENGTH=ALENGTH+1›340 A$(ALENGTH,ALENGTH)=CHR$(I)›350 GOTO 310›360 PRINT "ENTER CHAR STRING TO SEARCH FOR"›370 INPUT A$›380 ALENGTH=LEN(A$)›390 GOSUB 1200›400 GOSUB 1170›410 POKE 1408,0›420 FOR I=0 TO 4000›430 IF PEEK(I)<>ASC(A$(1,1)) THEN 590›440 IF ALENGTH<2 THEN 490›450 FOR K=2 TO ALENGTH›460 IF PEEK(I+K-1)<>ASC(A$(K,K)) THEN 590›470 NEXT K›490 PRINT CHR$(125);"MATCH AT ADDRESS = ";I›500 POSITION 28,0:PRINT CHR$(138);CHR$(136)›510 PRINT "DUMP STARTS AT ";I-7›520 FOR K=I-7 TO I+83 STEP 10›530 GOSUB 920›540 NEXT K›550 PRINT "ENTER C TO CONTINUE SEARCH"›560 PRINT " ÒÅÔÕÒÎ TO QUIT";›570 INPUT B$›580 IF B$<>"C" THEN 90›590 NEXT I›600 PRINT "   DATA NOT FOUND   "›610 GOTO 90›630 PRINT "ENTER ADDRESS POINTER TO SEARCH FOR"›640 INPUT ADDRESS›650 K=0:BYTE1=INT(ADDRESS/256)›660 BYTEO=ADDRESS-256*BYTE1›670 GOSUB 1170›680 FOR I=0 TO 4000›690 IF PEEK(I)<>BYTE0 THEN 730›700 IF PEEK(I+1)<>BYTE1 THEN 730›710 PRINT "POINTER MATCH AT ";I;",";I+1›720 PRINT "LOOKING FOR OTHERS"›730 NEXT I›740 PRINT "NONE FOUND"›750 GOTO 90›770 PRINT "ENTER STARTING ADDRESS FOR DUMP"›780 INPUT ADDRESS›790 GOSUB 1200›800 PRINT CHR$(125);"DUMP STARTS AT ";ADDRESS›810 FOR K=ADDRESS TO ADDRESS+90 STEP 10›820 GOSUB 920›830 NEXT K›840 PRINT "ENTER C TO CONTINUE DUMP"›850 PRINT " ÒÅÔÕÒÎ TO QUIT";›860 INPUT B$›870 IF B$<>"C" THEN 90›880 ADDRESS=ADDRESS+91›890 GOTO 800›900 END ›920 IF DUMP=0 THEN PRINT "DEC ";:GOTO 940›930 PRINT "HEX ";›940 FOR J=0 TO 9›950 DEC=PEEK(K+J)›960 IF DUMP=O THEN 1020›980 HEX1=INT(DEC/16):HEX0=DEC-16*HEX1›990 PRINT HEX$(HEX1+1,HEX1+1);HEX$(HEX0+1,HEX0+1);" ";›1000 GOTO 1050›1020 IF DEC<10 THEN PRINT DEC;" ";:GOTO 1050›1030 IF DEC<100 THEN PRINT DEC;" ";:GOTO 1050›1040 PRINT DEC;›1050 NEXT J›1060 PRINT :PRINT "CHAR ";›1070 FOR J=0 TO 9›1080 DEC=PEEK(K+J)›1100 IF (DEC>26 AND DEC<32) OR (DEC>124 AND DEC<128) THEN PRINT "  ";:GOTO 1130›1110 IF (DEC>154 AND DEC<160) OR DEC>252 THEN PRINT "  ";:GOTO 1130›1120 PRINT CHR$(DEC);" ";›1130 NEXT J›1140 PRINT ›1150 RETURN ›1170 PRINT "ðáôéåîãå - this may take a while"›1180 RETURN ›1200 PRINT "ENTER H FOR HEX DUMP"›1210 PRINT " D FOR DECIMAL DUMP"›1220 INPUT B$›1230 IF B$="H" THEN DUMP=1:RETURN ›1240 IF B$="D" THEN DUMP=0:RETURN ›1250 GOSUB 1270:GOTO 1200›1270 PRINT " ªªª ÉÎÐÕÔ ÅÒÒÏÒ ªªª "›1280 RETURN ›