> TAPDump 1.15  v1.11 - Added TZX support ' v1.15 - Spectrum filename cleaned (: 2! :Close_All::exit(): 31:Win_TextIO P A$="":"Input TAP file: "A$ Z2A%=A$+" "," "):A%:in$=A$,A%-1):A$=A$,A%+1) d6in$="-?":"Syntax: TAPDump ":exit(0): n?in%=f_openin(in$):in%=0:"'"in$"' not found":exit(214): xin$="":exit(0): : Mtype$(0)="Program":type$(2)="Number":type$(3)="Character":type$(3)="Code" &gbpb(rd%,in%,mem%,10,0):mem%?7=13 8tap%=(($mem%="ZXTape!"4))(((!mem%&FFFFFF)=&11)1) (tap%4)=0:#in%=0 :  ((tap%4):#in%=&10:A%=#in%+#in% !len%=#in%+256*#in%+(tap%1) @len%>max% :gbpb(rd%,in%,mem%,max%,0):#in%=#in%+len%-max% 0len%<=max%:len%:gbpb(rd%,in%,mem%,len%,0) ?mem%=0 :header ?mem%=&FF:data  #in% #in%:in%=0:exit(0): : "close:in%:A%=in%:#A% , 6: @ header J"~":A$=A$,A%-1)+"_"+A$,A%+1)  :=A$ : &#ݤh0(A%,N%)="0000000"+~A%,N%) 0: :Close_All:*EXEC D"in%=in%:in%:A%=in%:in%=0:#A% N X: b!ݤf_openin(A$)=(f_name(A$)) lVݤf_name(A$):os%>31:A%,B%:B%=A%:A%=A$,"\",A%+1):A%=0:A$,".",B%)=0:A$=A$+"." v=A$ : #gbpb(A%,chn%,addr%,num%,ptr%) ??X%=chn%:X%!1=addr%:X%!5=num%:X%!9=ptr%:<&FFFFF: &FFD1: A%=1A%=3:#?X%=X%!9 5:A%=1A%=2:#?X%,?X%!1 A%=3A%=4:?X%!1=#?X% 5X%!1=X%!1+1:X%!5=X%!5-1:(#?X% A%>2) X%!5<1: : BݤOS_GetEnv:A%,X%,Y%,P%,A$:X%=1:os%=((&FFF4)&FF00)256:X% d!=&D7C1C7C5:run$=ARGV$(0):ARGC:A%=1ARGC:A$=A$+ARGV$(A%)+" "::=A$,A$-1)!=&D7C1C7C5:="" _>&FFFFF:X%256:A$=@cmd$:ș"GetModuleFileName",0,X%,255:run$=$$X%:Y%=@lib$,@tmp$)=0:P%= P%=0:>&FFFF:run$=$&8100:ș"OS_GetEnv"A$,,A%:ș"OS_WriteEnv","",A%:A$=A$,1+A$+" "," ",1+A$," "))):P%=:Y%=:A$," ")=0:A$=run$+" " P%=0:P%=X%:[OPT 0:NOP:]:P%=?X%:Y%=:P%=&EAP%=18:A$=$&600 P%=0:A$=$(-&300)P%=&A0:A$=$(^@%-256):Y%=?(-2)64P%=&90:A$=$&100:Y%=!&200 KA$=" "+A$:A$=A$,2):A$<>32:A$=34:A%=A$,"""",2)+1A%=A$+" "," ") (Y%:run$=A$,A%-1):A$=A$,A%+1):Y%=0  A$<>32:=A$ :  &os(A$):A$=42:A$ A$<>"":A$ * 4: >Fexit(A%):"FX1,"+(A%255):quit$=quit$:A$=quit$:quit$="":os(A$) H>&FFFFF:Ș A% R \: fWin_TextIO p0ș "GetStdHandle",-10 @hfile%(1):*INPUT 13 z1ș "GetStdHandle",-11 @hfile%(2):*OUTPUT 14 &ș "SetConsoleMode",@hfile%(1),0: :