For Spectrum mode but works for 2068 or Spectrum tapes.
Content
Source Code
1 REM 'tape analyser' for Spectrum mode but works for 2068 or Spectrum tapes
2 REM Bill Pierson
10 BORDER 0: PAPER 0: INK 7
11 CLEAR 29999
15 DEF FN p(x)=PEEK x+256*PEEK (x+1): LET p=30016
20 FOR i=1 TO 16: READ a: POKE 29999+i,a: NEXT i
30 DATA 221,33,64,117,17,17,0,175,55,205,86,5,216,195,48,117
40 PRINT INVERSE 1;" *Tape Analyser* "; INVERSE 0
50 PRINT " NAME";TAB 10;"Length Remarks"'': PLOT 0,156: DRAW 255,0
60 PRINT #1;" Start tape, then press any key": PAUSE 0
65 PRINT #1;AT 1,0,,
70 RANDOMIZE USR 30000
75 LET n$=""
80 LET type=PEEK p: LET l=FN p(p+11): FOR i=p+1 TO p+10: LET n$=n$+CHR$ PEEK i: NEXT i
90 LET l$=STR$ l: LET l$=" "(1 TO 6-LEN l$)+l$
100 PRINT n$;l$;" ";
110 IF type>3 THEN PRINT "Read Error": GO TO 70
130 IF type<3 THEN GO TO 170
140 LET s=FN p(p+13)
150 IF s=16384 AND l=6912 THEN PRINT "SCREEN$ ": GO TO 170
160 PRINT "CODE at: ";s: GO TO 70
170 IF type=0 THEN GO TO 200
180 LET s=PEEK (p+14): LET t=INT (s/32): LET l$=CHR$ (s-32*t+96): IF t=2 OR t=6 THEN LET l$=l$+n$
190 PRINT "Array: ";l$: GO TO 70
200 LET l=FN p(p+13): LET s=FN p(p+15)
210 PRINT "Basic";
220 IF l<10000 THEN PRINT " LINE ";l;
230 PRINT : GO TO 70