> BMPtoBBC v1.04 Z;ctrl% 31,name% 79,zp% 5,palette% 15:X%=ctrl%:Y%=X%256 d!mem%=0:->&5400:mem% &4FFF x9:Close_All:" at line "+Þ,<>17<128):exit() XA$=OS_GetEnv+" ":quit$=cl(" -q",1):d$=".":s$="/":os%=32:Win_TextIO:d$="\":s$="." Tvb%=cl("-v",0):inf%=cl("-i",0):mode$=cl("-m",1):cl("-?",0):syntax:exit(0) :in$=cl("",0):out$=cl("",0):mode$="":mode$=cl("",0) \in$="":"Input bitmap file: "in$:"Output BBC file: "out$:"BBC Screen mode: "mode$ &in$=""out$="":syntax:exit(220) %mode%=mode$7:mode$="":mode%=-1 ,os%=32:inf%=:out$,s$)=0:out$=out$+s$ :in%=(in$):in%=0:"File '"in$"' not found":exit(214) QBM%=rd16(in%):BM%<>"B"+"M"*256:"Not a bitmap file":Close_All:exit(255) FileSize%=rd32(in%) A%=rd32(in%) DataOffset%=rd32(in%) 6A% =rd32(in%) @Width% =rd32(in%) JHeight% =rd32(in%) TA% =rd16(in%) ^BitCount% =rd16(in%) hA% =rd32(in%) rA% =rd32(in%) |A% =rd32(in%) A% =rd32(in%) ColoursUsed%=rd32(in%) A% =rd32(in%) NumColours% =2^BitCount% CWidth%>640Height%>512:"Bitmap too big":Close_All:exit(255) JBitCount%>4ColoursUsed%>16:"Too many colours":Close_All:exit(255) colour%=0NumColours%-1 rgb24%=rd32(in%) +rgb3% = (((rgb24%&C00000)<>0)1) (rgb3% =rgb3%(((rgb24%&C000)<>0)2) &rgb3% =rgb3%(((rgb24%&C0)<>0)4) palette%?colour%=rgb3% & N%mode%<0:ColoursUsed%=16:mode%=2 X8mode%<0:ColoursUsed%=4:mode%=1:Width%=320:mode%=5 b8mode%<0:ColoursUsed%=2:mode%=0:Width%=320:mode%=4 v)ptr%=col%*8+(row%7)+(row%8)*cols%*8 HColoursUsed%=2:B%=mode0 RColoursUsed%=4:B%=mode1 \ColoursUsed%=16:B%=mode2 f,mem%:mem%?ptr%=B%#out%=ptr%:#out%,B% p:::vb%:13;" ";13; zKmem%:mode%=2:A%=03:mem%?A%=palette%?(A%*2+8)+16*palette%?(A%*2+9): =mem%:"Save "+out$+" "+~mem%+"+"+~fsize%#out%:out%=0 A%=file(out$,5) @col%=0:ColoursUsed%=16:A%=74-1:col%=col%*8+palette%?A%: mode%<3:col%=col%&3000 mode%=3:col%=4000 mode%=4mode%=5:col%=&5800 mode%=6:col%=&6000 X%!2=col%:X%!4=-1 7col%=mode%:A%=30-1:col%=col%*8+(palette%?A%7): &X%!6=col%:X%!8=-1:A%=file(out$,1) ?inf%:out$=out$,out$+(out$,1)=".")):$name%=out$+10," ") Cinf%:$(name%+12)=h0(X%!2,8)+" "+h0(X%!6,8)+" "+h0(fsize%,8) dinf%:"Save """+out$+s$+"inf"" "+~name%+"+27 FFFF0000 FFFFFF00":os%=6:"Stamp "+out$+s$+"inf" BClose_All:exit(0): Vݤmode0:B%=#in%:xs%=1:=B% ` C%=#in% j2B%=(B%&80)((B%&20)*2)((B%8)*4)((B%2)*8) t3C%=((C%&80)16)((C%&20)8)((C%8)4)(C%1) ~ =B%C%  ݤmode1 A%=#in%:xs%=2:A%=#in% B%=#in%:xs%=2:B%=#in% C%=#in%:xs%=2:C%=#in% D%=#in%:xs%=2:D%=#in% A%=((A%2)*64)((A%1)*8) B%=((B%2)*32)((B%1)*4) C%=((C%2)*16)((C%1)*2) D%=((D%2)*8)(D%1) =A%B%C%D%  ݤmode2  A%=#in%:A%=#in% B%=#in%:B%=#in% 3A%=((A%8)*16)((A%4)*8)((A%2)*4)((A%1)*2) (.B%=((B%8)*8)((B%4)*4)((B%2)*2)(B%1) 2 =A%B% FPsyntax:"Syntax: BMPtoBBC -mode -inf -verbose": P*ݤrd32(I%):A%=03:zp%?A%=#I%::=!zp% Zݤrd16(I%):=#I%+256*#I% x#ݤh0(A%,N%)="0000000"+~A%,N%) Close_All:*EXEC "in%=in%:in%:A%=in%:in%=0:#A% 'out%=out%:out%:A%=out%:out%=0:#A%  :ݤOS_GetEnv:A$,A%,X%,Y%:X%=1:os%=((&FFF4)&FF00)256 Los%=32:>&FFFF:X%256:ș"GetModuleFileName",0,X%,255:run$=$$X%:=@cmd$ os%=32:A$=$&100 gA$=0:>&FFFF:run$=$&8100:ș16A$,,A%:ș72,"",A%:A$=A$,1+A$+" "," ",1+A$," "))):A$=0:A$=run$ 0A$=0:?(P-3):A$=$&600A$=0:A$=$(-&300) *Y%=-10:A$=" "+A$:A$=A$,2):A$<>32 4Y%:A$=34:A%=A$,"""",2)+1Y%:A%=A$+" "," ") -Y%:run$=A$,A%-1):run$<>"":A$=A$,A%+1) " :=A$ ,$os(A$):A$=42:A$A$<>"":A$ 6 @Fexit(A%):"FX1,"+(A%255):quit$=quit$:A$=quit$:quit$="":os(A$) Jos%=32:ȘA% Tos%<6:*Quit ^ |cݤcl(l$,n%):l$="":A$=s(A$):A$=34:A%=A$+" "" ",""" ",2):l$=A$,2,A%-2):A$=s(A$,A%+1)):=l$ "":A%=A$,l$):A%:A$=s(A$,A%-1)+A$,A$," ",A%)+1))+" ":= n%=0:l$<>"":= %A%=" ",l$=32)+A$,l$):A%=0:="" 'A$=A$,A%-1)+s(A$,A$," ",A%)+1)) Cl$=32:l$=A$,A%):A$=A$,A%-1):=l$,1-(l$=34),l$+2*(l$=34)) PA$,A%,1)<>34:l$=A$,A%,A$+" "," ",A%)-A%):A$=A$,A%-1)+A$,A%+l$+1):=l$ Jl$=A$,A%+1,A$+""" ",""" ",A%+1)-A%-1):A$=A$,A%-1)+A$,A%+l$+3):=l$ /ݤs(A$):A$,1)=" ":A$=A$,2):A$,1)<>" " +A$,1)=" ":A$=A$,A$-1):A$,1)<>" " =A$ Win_TextIO -ș"GetStdHandle",-10@hfile%(1):*INPUT 13 .ș"GetStdHandle",-11@hfile%(2):*OUTPUT 14 &%ș"SetConsoleMode",@hfile%(1),0: DJݤfile(A$,A%):os%<32:$name%=A$:?X%=name%:X%?1=name%256:=(&FFDD)&FF NA$,".")=0:A$=A$+"." XCA%=255A%=5:X%!14=(A$):X%!14:X%!10=#X%!14:#X%!14:X%!14=&33 b1A%=255:X%?6=0:"LOAD """+A$+""" "+~X%!2:=1 lA%=5:X%!14:=1A%=5:=0 vFA%=0:"SAVE """+A$+""" "+~X%!10+" "+~X%!14:X%!10=X%!14-X%!10:=1 BA%=7:"SAVE """+A$+""" "+~+"+"+~X%!10:X%!10=X%!14-X%!10:=1  A%=8  ::=2 "mkdir "+A$:=2  =0