[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]
{
WS>Hello! I've thought about writing my own 3D games or just any high graphics
WS>program and am in the process of writing a unit that handles virtual screens
WS>have 6 virtual screens (0..5, where 0 will be MOVEd to $A000:0000) that are
WS>type pointer with 64000 bytes each. They are designed for Mode 13h, of cours
WS>I have a procedure called CopyScreen. Basically,
Just FYI: You might want to consider using Mode-X. Matt Pritchard has
written a great freeware library for such (MODEX10?.ZIP) with a Pascal
example. With Mode-X, you can use the VGA's memory instead of precious
conventional (if in real mode) memory, and the page switching is a lot
faster than copying 64k from memory.
}
procedure copyscreen(source,dest : pointer; mask : byte); assembler;
asm
push ds
lds si,source
les di,dest
mov cx,64000
cld
@loop:
lodsb
cmp mask,al
je @nodraw
mov es:[di],al
@nodraw:
inc di
loop @loop
pop ds
end;
You need to call it like this (note the '@'):
copyscreen(@virtualscreen[first],@virtualscreen[second],mask);
[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]