[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
> I'm trying to find out a way to do GET and PUT of sections of the screen
> into a variable... but the method I'm using is too slow and I cannot truly
> store it in a variable (it does a .INC program that you link with your
> files...).
Well, the most simple attempt would probably be something like....
}
PROGRAM bitmap_images;
USES
CRT,
some_mode13h_routs;
VAR
screen : ARRAY [0..199,0..319] OF BYTE ABSOLUTE $a000:0000;
imgptr : POINTER;
ch : CHAR;
PROCEDURE get_image(p:POINTER;xp,yp:WORD;xs,ys:BYTE);
VAR
s,o : WORD;
BEGIN
s:=SEG(p^);
o:=OFS(p^);
FOR yp:=yp TO PRED(yp+ys)
DO BEGIN
MOVE(screen[yp,xp],MEM[s:o],xs);
INC(o,xs);
END;
END;
PROCEDURE put_image(p:POINTER;xp,yp:WORD;xs,ys:BYTE);
VAR
s,o : WORD;
BEGIN
s:=SEG(p^);
o:=OFS(p^);
FOR yp:=yp TO PRED(yp+ys)
DO BEGIN
MOVE(MEM[s:o],screen[yp,xp],xs);
INC(o,xs);
END;
END;
BEGIN
init_mode($13); { init mode 13h }
load_piccy('some.gfx'); { load some picture }
GETMEM(imgptr,160*100); { allocate memory for bitmap }
get_image(p,0,0,160,100); { get left part of screen }
put_image(p,160,0,160,100); { copy to right part of screen }
FREEMEM(imgptr,160*100); { release memory }
ch:=READKEY; { wait for a key }
init_mode($03); { back to textmode }
END.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]