home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1983 April / Antic_April_1983_Vol_2_No_1.atr / trace.lst < prev    next >
File List  |  2021-01-21  |  4KB  |  1 lines

  1. 31000 TRAP 31046¢31002 REM ¢31004 REM BASIC TRACE UTILITY¢31006 REM ALAN FILIPSKI 1982¢31008 REM ¢31010 REM FIND START OF STMNT TABLE¢31012 DBGST=PEEK(136)+256*PEEK(137)¢31014 REM SET ERR IN EACH STMNT¢31016 GOSUB 31152¢31018 ? " ":? "BASIC TRACE UTILITY":? " "¢31020 ? "ENTER LINE NUMBER AT WHICH"¢31022 ? "EXECUTION IS TO START"¢31024 ? "(FIRST LINE IN PROG IS ";PEEK(DBGST)+256*PEEK(DBGST+1);")"¢31026 INPUT DBGSTART¢31028 REM CLR ARRAYS IF STARTING AT FIRST STATEMENT¢31030 IF DBGSTART<>PEEK(DBGST)+256*PEEK(DBGST+1) THEN 31038¢31032 CLR :DBGST=PEEK(136)+256*PEEK(137)¢31034 REM RESTORE DBGSTART¢31036 DBGSTART=PEEK(DBGST)+256*PEEK(DBGST+1)¢31038 ? "HOW MANY LINES TO TRACE ":INPUT DBGTC¢31040 IF DBGTC<=0 THEN 31064¢31042 GOTO DBGSTART¢31044 REM TRAP HERE AT EACH ERROR ENCOUNTERED¢31046 DBGST=PEEK(136)+256*PEEK(137)¢31048 IF PEEK(195)=17 THEN 31054¢31050 REM UNEXPECTED ERROR TYPE¢31052 ? "ERR TYPE ";PEEK(195);" AT LINE ";PEEK(186)+256*PEEK(187):GOTO 31064¢31054 IF DBGTC>0 THEN 31072¢31056 ? "HOW MANY MORE ";¢31058 INPUT DBGTC¢31060 IF DBGTC>0 THEN 31072¢31062 REM TIME TO QUIT. REMOVE ERRS¢31064 GOSUB 31212¢31066 ? "TRACE ABORTED"¢31068 STOP ¢31070 REM REINTRODUCE ERR INTO CLEARED "FOR" OR "GOSUB"¢31072 IF DBGSAV1=0 THEN 31086¢31074 DBGSAV1=DBGSAV1+DBGST:IF PEEK(DBGSAV1+4)=55 THEN 31086¢31076 DBGEOL=DBGSAV1+PEEK(DBGSAV1+2)-1¢31078 DBGCOM=DBGSAV1+4¢31080 POKE DBGEOL,PEEK(DBGEOL)+PEEK(DBGCOM)¢31082 POKE DBGCOM,55¢31084 REM REINTRODUCE ERR INTO LAST STATEMENT EXECUTED¢31086 DBGSAV2=DBGSAV2+DBGST:IF PEEK(DBGSAV2+4)=55 THEN 31098¢31088 DBGEOL=DBGSAV2+PEEK(DBGSAV2+2)-1¢31090 DBGCOM=DBGSAV2+4¢31092 POKE DBGEOL,PEEK(DBGEOL)+PEEK(DBGCOM)¢31094 POKE DBGCOM,55¢31096 REM CLEAR ERR FROM "FOR" OR "GOSUB" ON TOP OF RUNSTK¢31098 DBGSAV1=0¢31100 IF PEEK(142)=PEEK(144) AND PEEK(143)=PEEK(145) THEN 31114¢31102 DBGTOP=PEEK(144)+256*PEEK(145)¢31104 DBGLN1=PEEK(DBGTOP-3)¢31106 DBGLN2=PEEK(DBGTOP-2)¢31108 GOSUB 31176¢31110 DBGSAV1=DBGPTR-DBGST¢31112 REM FIND STATEMENT WHICH TRIGGERED TRAP AND CLEAR ERR¢31114 DBGLN1=PEEK(186)¢31116 DBGLN2=PEEK(187)¢31118 GOSUB 31176¢31120 DBGSAV2=DBGPTR-DBGST¢31122 REM ***************************¢31124 REM INSERT USER PRINT STATEMENTS HERE¢31126 REM ***************************¢31128 REM LIST TRAPPED STMNT¢31130 LIST PEEK(DBGPTR)+256*PEEK(DBGPTR+1)¢31132 TRAP 40000:TRAP 31046¢31134 DBGTC=DBGTC-1¢31136 REM IF STMNT IS END OR STOP, CLEAR ALL STATEMENTS¢31138 IF PEEK(DBGPTR+4)=21 OR PEEK(DBGPTR+4)=38 THEN GOSUB 31212¢31140 REM EXECUTE STATEMENT¢31142 GO TO PEEK(DBGPTR)+PEEK(DBGPTR+1)*256¢31144 REM ¢31146 REM SUB TO SET ERRS¢31148 REM SET COMMAND TOKEN IN ALL USER STATEMENTS (EXCEPT DATA STATEMENTS) TO 55 (=ERROR)¢31150 REM SAVE ORIGINAL USER COMMAND BY ADDING TO END-OF-LINE BYTE¢31152 DBGPTR=DBGST¢31154 IF PEEK(DBGPTR+4)=55 OR PEEK(DBGPTR+4)=1 THEN 31164¢31156 DBGEOL=DBGPTR+PEEK(DBGPTR+2)-1¢31158 DBGCOM=DBGPTR+4¢31160 POKE DBGEOL,PEEK(DBGEOL)+PEEK(DBGCOM)¢31162 POKE DBGCOM,55¢31164 DBGPTR=DBGPTR+PEEK(DBGPTR+2)¢31166 IF PEEK(DBGPTR)+256*PEEK(DBGPTR+1)<31000 THEN 31154¢31168 RETURN ¢31170 REM ¢31172 REM SUBROUTINE TO FIND STMNT AND REMOVE ERR.  2-BYTE LINE NO. EXPECTED IN DBGLN1 AND DBGLN2.¢31174 REM PTR TO LINE IS RETURNED IN DBGPTR.¢31176 DBGPTR=DBGST¢31178 IF DBGLN1=PEEK(DBGPTR) AND DBGLN2=PEEK(DBGPTR+1) THEN 31186¢31180 DBGPTR=DBGPTR+PEEK(DBGPTR+2)¢31182 GOTO 31178¢31184 REM REMOVE ERR¢31186 IF PEEK(DBGPTR+4)<>55 THEN RETURN ¢31188 DBGEOL=DBGPTR+PEEK(DBGPTR+2)-1¢31190 DBGCOM=DBGPTR+4¢31192 IF PEEK(DBGEOL)>100 THEN 31200¢31194 POKE DBGCOM,PEEK(DBGEOL)-22¢31196 POKE DBGEOL,22¢31198 RETURN ¢31200 POKE DBGCOM,PEEK(DBGEOL)-155¢31202 POKE DBGEOL,155¢31204 RETURN ¢31206 REM ¢31208 REM SUBROUTINE TO CLEAR ALL ERRORS¢31210 REM ¢31212 DBGSAVE=DBGPTR:DBGPTR=DBGST¢31214 IF PEEK(DBGPTR+4)<>55 THEN 31228¢31216 DBGEOL=DBGPTR+PEEK(DBGPTR+2)-1:DBGCOM=DBGPTR+4¢31218 IF PEEK(DBGEOL)>100 THEN 31226¢31220 REM NON-REM LINE HAS 22 FOR EOL¢31222 POKE DBGCOM,PEEK(DBGEOL)-22:POKE DBGEOL,22:GOTO 31228¢31224 REM REM LINE HAS 155 FOR EOL¢31226 POKE DBGCOM,PEEK(DBGEOL)-155:POKE DBGEOL,155¢31228 DBGPTR=DBGPTR+PEEK(DBGPTR+2)¢31230 IF PEEK(DBGPTR)+256*PEEK(DBGPTR+1)<31000 THEN 31214¢31232 DBGPTR=DBGSAVE¢31234 RETURN ¢