11 A$ = "BY ALAN BIRD - BEAGLE BROS, INC.": GOSUB 214: PRINT : FOR I = 2000 TO 2039: POKE I,32: FOR J = 1 TO 1:S = PEEK(C): NEXT : FOR J = 1 TO 1: NEXT : NEXT : GOSUB 246: PRINT : VTAB 24: HTAB 1: INVERSE : PRINT SPC( 39);: POKE 2039,32: VTAB 23: PRINT : POKE 35,23: FOR J = 1 TO 16: FOR I = 1 TO 5:S = PEEK(C): NEXT : FOR I = 1 TO 33: NEXT : PRINT : NEXT : TEXT :B$ = "-- M A I N F E A T U R E S --": GOSUB 240: GOTO 258
36 PRINT "ONE OF THE MOST FRUSTRATING THINGS ABOUTAPPLESOFT PROGRAMMING IS TRYING TO FIND THOSE GOOD-FOR-NOTHING PROGRAM BUGS.": PRINT : GOSUB 246: PRINT "D CODE'S "Q$"D.BUG"Q$" PROGRAM GIVES YOU THE POWER TO TRACK DOWN (AND STOMP ON) THOSEBUGS... ";: GOSUB 246: PRINT "F A S T !": GOSUB 246
37 VTAB 15: HTAB 1: FLASH : PRINT "BUGS";: HTAB 1: NORMAL : GOSUB 246: PRINT "BUGS": PRINT "BUGS": FOR J = 1 TO 99: NEXT : SPEED= A: VTAB 24: HTAB 1: INVERSE : PRINT SPC( 39): NORMAL : FOR I = 1 TO 99: NEXT : FOR I = 17 TO 21: VTAB I: HTAB 1: PRINT "BUGS": VTAB I -1: PRINT " | ": FOR J = 1 TO 150: NEXT : NEXT : GOSUB 246: FOR J = 1 TO 5: VTAB 21: HTAB 1: PRINT "BBUGG*";: FOR I = 1 TO 50: NEXT : HTAB 1: PRINT "BUGS ": FOR I = 1 TO 13: NEXT : NEXT : VTAB 21: HTAB 1: CALL -868: VTAB 23: HTAB 1: PRINT "BUG*": FOR J = 1 TO 5:S = PEEK(49200): NEXT
38 GOSUB 246: SPEED= A:A$(0) = " BUG* ":A$(1) = " BBBUGG*": FOR I = 1 TO 24: VTAB 23: HTAB I: PRINT A$(I - INT(I/2) *2): FOR J = 1 TO 55: NEXT : NEXT : FOR I = 15 TO 23: VTAB I: HTAB 26: PRINT "STOMP": VTAB I -1: HTAB 26: PRINT " ": NEXT : FOR I = 1 TO 20:S = PEEK(C): NEXT : SPEED= A: VTAB 22: HTAB 24: PRINT " CRASH ": CALL -868: FOR I = 1 TO 99: NEXT : VTAB 22: HTAB 5: CALL -868: PRINT : HTAB 24: PRINT " STOMP": FOR J = 1 TO 5:S = PEEK(C): NEXT : SPEED= A: VTAB 22: HTAB 24
39 PRINT "# *": HTAB 24: PRINT " \STOMP/ ": SPEED= B *.7: VTAB 22: HTAB 24: PRINT " ": HTAB 24: PRINT " STOMP ": SPEED= A:B$ = "-- P R O G R A M P R O O F E R --": GOSUB 226
40 PRINT "D CODE CONTAINS AN AUTOMATIC APPLESOFT ERROR CHECKER. IF YOU TYPE A PROGRAM LINE (OR ANYTHING) CONTAINING AN ERROR, YOU WILL IMMEDIATELY BE NOTIFIED.": GOSUB 246: PRINT : PRINT "SUPPOSE YOU ENTERED A PROGRAM LINE...": PRINT :A$ = "500 GOSUP100: PRNNT" +Q$ +"HOTDOG" +Q$
41 N = 2: HTAB 4: PRINT "]";: GOSUB 248: SPEED= A: PRINT : PRINT " 500 GOSUP";: INVERSE : PRINT "<?>"G$;: NORMAL : PRINT "100:PRNNT";: INVERSE : PRINT "<?>"G$;: NORMAL : PRINT " "Q$"HOTDOG"Q$: SPEED= B: GOSUB 246: SPEED= A: PRINT : PRINT " ERRORS ARE REPORTED IMMEDIATELY, BEFORE YOUR PROGRAM IS RUN. ------": FOR I = 1 TO 8: VTAB 18: HTAB 13: PRINT "^^^ ^^^";: FOR J = 1 TO 99
42 NEXT : HTAB 1: CALL -868: FOR J = 1 TO 99: NEXT : NEXT : GOSUB 246: VTAB 21: HTAB 1: CALL -868: PRINT : SPEED= B: PRINT "FIND HIDDEN BUGS THAT ARE READY TO BITE!";: GOSUB 226: PRINT "YOU MAY ALSO CHECK AN ENTIRE PROGRAM FORERRORS IN A COUPLE OF SECONDS. WATCH...": PRINT : HTAB 3: PRINT "]";:A$ = "CHECK":N = 4: GOSUB 248: PRINT : PRINT : PRINT " 10 GOSUB 12345";: INVERSE : PRINT "<#>"G$: NORMAL
44 PRINT "<?>": NORMAL : VTAB 20: HTAB 3: PRINT "1. A GOSUB TO A NON-EXISTENT LINE <#>": HTAB 3: PRINT "2. AN ILLEGAL STRING ASSIGNMENT <?>": HTAB 3: PRINT "3. AND A SYNTAX ERROR <?>": GOSUB 246: INVERSE : VTAB 14: HTAB 18: PRINT "<#>": HTAB 14: PRINT "<?>";: HTAB 28: PRINT "<?>":B$ = "-- H I S T O R Y T R A C E R --": GOSUB 226
45 PRINT "D CODE INVISIBLY MONITORS PROGRAMS AS THEY RUN AND AUTOMATICALLY KEEPS TRACK OF WHICH STATEMENTS HAVE BEEN EXECUTED.": PRINT : PRINT "FOR EXAMPLE, SUPPOSE YOU HAVE A PROGRAM THAT CRASHES WITH AN ERROR...": GOSUB 246: PRINT : SPEED= A
46 PRINT G$"?ILLEGAL QUANTITY ERROR IN 110 ]";:G = 4: GOSUB 256: HTAB 1: PRINT "]": PRINT : SPEED= 255: PRINT "(DON'T PANIC--WE'RE JUST PRETENDING.)": VTAB 17: HTAB 2:G = 6: GOSUB 256: VTAB 17: HTAB 1: PRINT SPC( 120): VTAB 18: SPEED= B: PRINT "WE CAN LOOK AT THE LAST 10 STATEMENTS THAT WERE EXECUTED BY TYPING...": PRINT : HTAB 4: PRINT "]";:A$ = "DUMP10"
47 N = 4: GOSUB 248: PRINT : POKE 34,7: POKE 35,23: SPEED= 222: PRINT " 90 TEXT : HOME : NORMAL : GOSUB 5000 5000 XX = 887: PRINT: RETURN 100 PRINT "Q$"DOGFOOD"Q$" 110 VTAB Y: HTAB XX": PRINT : PRINT : PRINT : PRINT : TEXT : GOSUB 246: FLASH : VTAB 20: PRINT "A-HA!";: NORMAL :K = PEEK(37): GOSUB 98: VTAB K +1: HTAB 1: SPEED= B
48 PRINT "A-HA! WE NOW HAVE A BRIEF HISTORY OF OURPROGRAM, AND WE CAN LOCATE THE PROBLEM--ANY NUMBER OF STATEMENTS MAY BE TRACED! --- ------": GOSUB 98: VTAB 18: HTAB 25: PRINT "<---CRASHED HERE": GOSUB 98: VTAB 23: HTAB 1: CALL -868: GOTO 100
98 SPEED= A: FOR I = 1 TO 9: VTAB 16: HTAB 1: PRINT "-->";: FOR J = 1 TO 99: NEXT : HTAB 1: PRINT SPC( 3);: FOR J = 1 TO 99: NEXT : NEXT : RETURN
100 B$ = "-- W I N D O W - T R A C E R --": GOSUB 226: PRINT "YOU MAY ALSO TRACE YOUR PROGRAM'S STATEMENTS "Q$"LIVE"Q$" DURING EXECUTION. ----": GOSUB 246: HTAB 3: PRINT "]";:A$ = "TRACE":G = 1: GOSUB 256: GOSUB 248: PRINT : SPEED= A:X = PEEK(37): VTAB 21: HTAB 1
124 Q = PEEK(37) +1:O = PEEK(36) +1: VTAB 22: POKE 34,21: VTAB M: HTAB H: PRINT "PRINT "Q$A$Q$";: ";: FOR J = 1 TO P: NEXT :M = PEEK(37) +1:H = PEEK(36) +1: VTAB Q: HTAB O: PRINT A$;: FOR J = 1 TO P: NEXT : RETURN
126 B$ = "-- V A R I A B L E T R A C E R --": GOSUB 226: PRINT "D CODE ALSO LETS YOU TRACE A PROGRAM'S VARIABLE VALUES.": SPEED= A: PRINT "-------- ------": SPEED= B
127 PRINT "WATCH WHAT HAPPENS TO THE VALUES OF VARIABLE X , EXPRESSION X*50, AND STRING ARRAY A$(X) AS THIS PROGRAM RUNS.": INVERSE : VTAB 13: HTAB 10: PRINT " X ";: HTAB 26: PRINT "X*50": HTAB 14: PRINT "A$(X)": NORMAL : PRINT :X = PEEK(37): SPEED= A: VTAB 21: HTAB 1: CALL -958: PRINT "*---------------------------------------": VTAB X +1: HTAB 3
128 PRINT "]";:G = 2: GOSUB 256:A$ = "RUN": GOSUB 248: FOR J = 1 TO 2: RESTORE : FOR X = 1 TO 26: READ A$: VTAB 22: HTAB 1: PRINT " X ="X" ";: HTAB 21: PRINT "A$(X)="A$;: CALL -868: PRINT : PRINT " X*50 ="X *50: FOR K = 1 TO 250/X *J: NEXT : NEXT : NEXT : FOR I = 9 TO 20: VTAB I: HTAB 1: CALL -868: NEXT : VTAB 12: HTAB 1: SPEED= B
129 PRINT " D CODE'S ADJUSTABLE-SIZE TRACE WINDOW WORKS IN 40 & 80-COLUMNS, AND MAY SIMULTANEOUSLY DISPLAY PROGRAM STATEMENTS AND VARIABLE VALUES": VTAB 21: HTAB 1: PRINT "-";: HTAB 22: PRINT "*": POKE 34,15: SPEED= 222
130 PRINT "200 X=20: VTAB 16: X =20 HTAB 1: SPEED= 255 X*50 =1000 210 PRINT "Q$"AND"Q$";: A$(X)=FREE CASH INVERSE : PRINT Y =191 "Q$"VARIABLE VALUES."Q$ SPC( 80): SPEED= 255: GOSUB 246: FOR J = 1 TO 2: VTAB 15: HTAB 1: INVERSE : PRINT "PROGRAM STATEMENTS": NORMAL
131 CALL -868: FOR I = 1 TO 100 *J: NEXT : VTAB 15: PRINT " ": INVERSE : PRINT "PROGRAM STATEMENTS": FOR I = 1 TO 100 *J: NEXT : NEXT : VTAB 15: HTAB 26: INVERSE : PRINT "VARIABLE VALUES": VTAB 15: HTAB 26: CALL -868: PRINT : HTAB 26: PRINT "VARIABLE VALUES": NORMAL : VTAB 16: HTAB 20: PRINT "/ \": TEXT :B$ = "-- F A S T F I N D E R --": GOSUB 226
132 PRINT "D CODE WILL FIND ANY WORD OR CHARACTER IN AN APPLESOFT PROGRAM...F-A-S-T !": PRINT : HTAB 3: PRINT "]";:A$ = "FIND": GOSUB 248: PRINT : SPEED= 255: PRINT " SEARCH FOR:";:A$ = "GOSUB50": GOSUB 248: PRINT : GOSUB 246: PRINT : SPEED= 210: PRINT " 10 50 65 590 2000 6010 5480 5490 12000 12150": PRINT
133 PRINT " OCCURRENCES: 10": GOSUB 246: PRINT : SPEED= B: PRINT "THIS SHOWS US ALL OF THE PROGRAM LINES THAT CONTAIN THE SEARCH-WORD "Q$"GOSUB 50"Q$".";: GOSUB 246: PRINT "SEARCH MOST PROGRAMS IN UNDER 2 SECONDS!": GOSUB 226: PRINT "FIND & LIST? (THOUGHT YOU'D NEVER ASK!)---- ----": GOSUB 246: PRINT : HTAB 3: PRINT "]";
168 PRINT X$;: INVERSE : PRINT A$;: NORMAL : RETURN
170 PRINT : PRINT " OCCURRENCES: 6": GOSUB 246: PRINT : SPEED= B: PRINT "ALL OCCURRENCES OF THE SEARCH WORD ARE LISTED AND HIGHLIGHTED IN INVERSE.": GOSUB 246:B$ = "-- P R O G R A M P A C K E R --": GOSUB 226
171 PRINT "D CODE LETS YOU COMPACT ANY APPLESOFT PROGRAM SO IT TAKES UP THE LEAST AMOUNT OF MEMORY AND DISK SPACE POSSIBLE.": PRINT : PRINT "A TYPICAL RESULT MIGHT BE...": GOSUB 246: SPEED= 255: PRINT : PRINT " OLD LENGTH : 4321": PRINT " NEW LENGTH : 3210": PRINT " -----------------"
172 PRINT " BYTES SAVED: 1111": GOSUB 246: VTAB 15: HTAB 27: PRINT "UNUSED CODE:": HTAB 28: PRINT "LINE 50": HTAB 28: PRINT "LINE 3000": HTAB 28: PRINT "LINE 5050": GOSUB 246: SPEED= B: VTAB 15: HTAB 27: INVERSE : PRINT "UNUSED CODE:": NORMAL : VTAB 20: PRINT Q$"UNUSED CODE"Q$" MEANS THAT THE PROGRAM LINES SHOWN CANNOT POSSIBLY BE EXECUTED."
173 B$ = "-- T H A T ' S A L L F O L K S --": GOSUB 226: INVERSE : PRINT " D CODE ";: NORMAL : PRINT " APPLESOFT COMPACTOR & DE-BUGGER": PRINT "COMPATIBLE WITH: APPLE II+, IIE AND IIC";:I = 33: GOSUB 186: PRINT " GPLE AND DOUBLE-TAKE";:I = 23: GOSUB 186: PRINT : PRINT " PLUS: DOS 3.3 AND PRODOS";
174 I = 26: GOSUB 186: PRINT : GOTO 188
186 INVERSE : HTAB I: PRINT "AND";: FOR J = 1 TO 200: NEXT : HTAB I: NORMAL : PRINT "AND": HTAB I: PRINT "---";: HTAB 1: RETURN
188 PRINT " PRICE: $39.95": PRINT : PRINT " POWERFUL: VERY!": GOSUB 246: SPEED= A: FOR I = 1 TO 31: VTAB 24: HTAB I: PRINT A$(I - INT(I/2) *2);: FOR J = 1 TO 55: NEXT : NEXT : CALL -868:A$(0) = " *BUG ":A$(1) = " *BBBUGG ": FOR I = 30 TO 6 STEP -1: VTAB 24: HTAB I: PRINT A$(I - INT(I/2) *2);: FOR J = 1 TO 55: NEXT : NEXT : FOR I = 18 TO 24: VTAB I: HTAB 8: PRINT "POW";: VTAB I -1: HTAB 8: PRINT " ": NEXT : FOR I = 1 TO 20
189 S = PEEK(C): NEXT : SPEED= A: VTAB 23: HTAB 7: PRINT "CRASH": CALL -868: FOR I = 1 TO 99: NEXT : VTAB 23: HTAB 1: CALL -868: PRINT : HTAB 8: PRINT "POW";: FOR J = 1 TO 5:S = PEEK(C): NEXT : SPEED= A: VTAB 23: HTAB 6: PRINT "# *": HTAB 7: PRINT "\POW/";: SPEED= B *.7: VTAB 23: HTAB 6: PRINT " ": HTAB 7: PRINT " POW ";: SPEED= A: GOSUB 246: GOSUB 246:A$ = "]": FOR I = 13 TO 24: VTAB I: HTAB 1: PRINT A$;: VTAB I -1: HTAB 1: PRINT " ": NEXT : FOR I = 1 TO 20:S = PEEK(C): NEXT : SPEED= A: VTAB 23: HTAB 1: PRINT A$: PRINT " ";
190 FOR I = 1 TO 99: NEXT : VTAB 23: HTAB 1: CALL -868: PRINT : HTAB 1: PRINT A$;: FOR J = 1 TO 5:S = PEEK(C): NEXT : SPEED= A: VTAB 23: HTAB 1: PRINT "!!": PRINT A$;: SPEED= B *.5: VTAB 23: HTAB 1: PRINT " ": PRINT "] ";: SPEED= A: VTAB 23: END
214 SPEED= A:L = LEN(A$):P = ( PEEK(33) -L *D -3 *(D = -1))/2 +(D <0):S = 1:E = L: IF D -1 THEN S = L:E = 1
218 FOR I = S TO E STEP D:Z = PEEK(C): POKE 36,P:P = P +D: PRINT MID$ (A$,I,1);: NEXT : NORMAL : PRINT :D = 0 -D: RETURN
226 GOSUB 246: SPEED= 255: VTAB 24: HTAB 1: INVERSE :A$ = " <RETURN> TO CONTINUE <Q> TO QUIT ": POKE 2039,32: VTAB 24: FOR I = 39 TO 1 STEP -1: HTAB I: PRINT MID$ (A$,I,1);: NEXT :F = 0: POKE -16368,0
230 VTAB 24: HTAB 4: PRINT " ";: FOR I = 1 TO 99: NEXT : HTAB 4: PRINT "RETURN";: FOR I = 1 TO 888: NEXT :F = F +1:K = PEEK(49152): IF K <128 AND F <15 THEN 230
232 POKE 49168,0: IF K = 141 OR F >14 THEN 240
236 IF K < >209 THEN 230
238 TEXT : SPEED= A: VTAB 24: HTAB 1: NORMAL : CALL -958: VTAB 23: END
240 SPEED= A: VTAB 7: HTAB 1: INVERSE : PRINT SPC( 40): VTAB 7: HTAB 21 - LEN(B$)/2: PRINT B$: NORMAL : IF NOT R THEN FOR I = 8 TO 23: VTAB I: HTAB 1: PRINT SPC( 40): NEXT : GOTO 244
242 FOR I = 8 TO 23: VTAB I: HTAB 1: PRINT SPC( 40 *(I < >16)): NEXT : INVERSE : VTAB 24: PRINT SPC( 39): POKE 2039,32: VTAB 8: PRINT : NORMAL : SPEED= B: RETURN
274 POKE 23909,118: POKE 23910,125: GOSUB 246: IF PEEK( -16384) <128 THEN POKE 230,64: HCOLOR= 3: FOR I = 115 TO 155: HPLOT I,145 TO I,151: NEXT : GOSUB 246
282 K = PEEK( -16384):F = F +1: IF K <128 AND F <5 THEN 272
284 POKE -16368,0: RETURN : DATA ARITHMETIC,BELL,COASTER,DING-DONG,ELEPHANT,FROG,GOLF BALL,HELICOPTER,INK,JUJUBES,KING KONG,LADDER,MOO-OOO,NITPICK,OSTRICH,PROWLER,QUAIL,ROOSTER,SAN DIEGO ZOO,TULSA,UNCLE LOUIE,VALENTINE,WAXY BUILD-UP,XEBEC,YOOHOO,ZULU