' '2 and 16 Colour BMP Handler 'Richard Wheeldon 1996 ' Global COUNT,XOFS,YOFS,X,Y,A,B,SLACK F$=Fsel$("**") _LOADBMP[F$,0] Procedure _LOADBMP[FILENAME$,SCR] SIZE=File Length(FILENAME$) Reserve As Work 10,SIZE S=Start(10) Bload FILENAME$,S Open In 1,FILENAME$ X=Peek(S+18)+(Peek(S+19)*256) Y=Peek(S+22)+(Peek(S+23)*256) BITS=Peek(S+28) SLACK=((SIZE-118)/Y)-(X/2) XOFS=0 YOFS=0 'Print X,Y 'Wait Key 'Direct If X>=640 Then Add RES,Hires If Y>=400 Then Add RES,Laced ' OFSBITS=Peek(S+10) ' If BITS=1 Screen Open SCR,X,Y,2,RES Gosub PALREAD Curs Off : Flash Off For C=Y-1 To 0 Step -1 Mem Copy S+OFSBITS+C*X/8,S+OFSBITS+(C+1)*X/8-1 To Phybase(0)+(Y-1-C)*X/8 Next Else If BITS=4 Screen Open SCR,X,Y,16,RES Gosub PALREAD Curs Off : Flash Off ' ' Read Data ' Pof(1)=OFSBITS For A=Y To 1 Step -1 For B=1 To X/2 DT=Asc(Input$(1,1)) Plot XOFS+(B*2)-3,YOFS+A-1,DT/16 Plot XOFS+(B*2)-2,YOFS+A-1,DT mod 16 Next Next If(X mod 2)=1 DT=Asc(Input$(1,1)) Plot XOFS+X-1,YOFS+A,DT/16 Pof(1)=Pof(1)-1 End If Pof(1)=Pof(1)+SLACK Close 1 End If Pop Proc ' PALREAD: For C=0 To 2^BITS-1 B=Peek(S+54+C*4)/16 G=Peek(S+55+C*4)/16 R=Peek(S+56+C*4)/16 Colour C,R*256+G*16+B Next Return End Proc