10 REM > TapeCat/src 1.00
   20 REM Catalog tape files
   30 :
   40 DIM mcode% &100
   50 TapeBuffer=&5BEF
   60 FOR P=0 TO 1
   70   P%=23300
   80   O%=mcode%
   90   [OPT P*3+4
  100   .TapeCat
  110   LD BC,3
  120   .TapeCatLp
  130   LD IX,TapeBuffer
  140   LD DE,17:PUSH BC
  150   XOR A:SCF:CALL &0556  :\ LD_BYTES
  160   POP BC                :\ BC=column number
  170   BIT 5,(IY+1):RET NZ   :\ Key pressed
  180   JR NC,TapeCatLp       :\ Loop for another header
  190   LD HL,TapeBuffer+1
  200   LD B,10
  210   .TapeName
  220   LD A,(HL):RST &10     :\ Print filename
  230   INC HL:DJNZ TapeName
  240   DEC C:JR Z,TapeCat
  250   LD A,32:RST &10       :\ Pad between columns
  260   JR TapeCatLp
  270 ]NEXT
  280 END
  290 
  300 REM Create the machine code:
  310 FOR a=23300 TO 23341:READ b:POKE a,b:NEXT a
  320 DATA 1,3,0,221,33,239,91,17,17,0,197,175,55,205,86,5,193
  330 DATA 6,10,253,203,1,110,192,48,233,33,240,91,126,215,35
  340 DATA 16,251,13,40,219,62,32,215,24,217
  350 :
  360 REM Display tape catalog
  370 IF USR 23300<3 THEN PRINT
  380 IF INKEY$<>"" THEN GOTO 380
  390 PAUSE 1:PRINT#0;"Press SPACE to continue":PAUSE 0:INPUT;:RETURN