Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.
Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.
asm
fxs FX_MEMS #$80
end;
asm
fxs FX_MEMS #$00
end;
vram.position:=VBXE_BCBADR;
vram.SetBank;
VBXE_XDLADR = $0000; // XDLIST
VBXE_BCBTMP = $00E0; // BLITTER TEMP
VBXE_BCBADR = $0100; // BLITTER LIST ADDRESS
VBXE_MAPADR = $1000; // COLOR MAP ADDRESS (row = 256b default)
VBXE_CHBASE = $1000; // CHARSET BASE ADDRESS
VBXE_OVRADR = $5000; // OVERLAY ADDRESS
VBXE_WINDOW = $B000; // 4K WINDOW $B000..$BFFF
procedure blitZERO(src: cardinal; w : word; h: byte); register;
{
dst = vram
}
begin
asm
fxs FX_MEMS #$80
end;
blt_zero.src_adr.byte2:=src shr 16;
blt_zero.src_adr.byte1:=src shr 8;
blt_zero.src_adr.byte0:=src;
blt_zero.dst_adr.byte1:=hlp shr 8;
blt_zero.dst_adr.byte0:=hlp;
blt_zero.src_step_y:=w;
blt_zero.blt_height:=h-1;
blt_zero.blt_width:=w-1;
asm
fxs FX_MEMS #$00
end;
RunBCB(blt_zero);
while BlitterBusy do;
end;
BCB : TBCB absolute VBXE_BCBADR+VBXE_WINDOW;
program Blit;
uses
crt, vbxe;
const
ScreenWidth = 320;
ScreenHeight = 192;
var
BCB : TBCB absolute VBXE_BCBADR+VBXE_WINDOW;
src, dst: cardinal;
procedure DrawTestPattern;
var x, y: integer;
begin
vbxe.setcolor(Red);
for y := 0 to 63 do
for x := 0 to 63 do
vbxe.PutPixel(x, y);
end;
procedure BlitBlock;
begin
asm
fxs FX_MEMS #$80
end;
src := VBXE_OVRADR;
BCB.src_adr.byte0 := src;
BCB.src_adr.byte1 := src shr 8;
BCB.src_adr.byte2 := src shr 16;
dst := VBXE_OVRADR + (120 * ScreenWidth) + 120;
BCB.dst_adr.byte0 := dst;
BCB.dst_adr.byte1 := dst shr 8;
BCB.dst_adr.byte2 := dst shr 16;
BCB.src_step_x := 1;
BCB.dst_step_x := 1;
BCB.src_step_y := ScreenWidth;
BCB.dst_step_y := ScreenWidth;
BCB.blt_width := 63;
BCB.blt_height := 63;
BCB.blt_and_mask := $FF;
BCB.blt_xor_mask := 0;
BCB.blt_collision_mask := 0;
BCB.blt_zoom := 0;
BCB.pattern_feature := 0;
BCB.blt_control := 0;
asm
fxs FX_MEMS #$00
end;
RunBCB(BCB);
while BlitterBusy do;
end;
procedure InitBlit;
begin
asm
fxs FX_MEMS #$80
end;
FillByte(BCB, SizeOf(BCB), 0);
asm
fxs FX_MEMS #$00
end;
end;
begin
VBXEMode(VBXE.VGAmed, 0);
InitBlit;
DrawTestPattern;
BlitBlock;
ReadKey;
end.
blt0 : TBCB absolute VBXE_BCBADR+VBXE_WINDOW;
blt1 : TBCB absolute VBXE_BCBADR+VBXE_WINDOW+sizeof(TBCB);
blt2 : TBCB absolute VBXE_BCBADR+VBXE_WINDOW+sizeof(TBCB)*2;
blt3 : TBCB absolute VBXE_BCBADR+VBXE_WINDOW+sizeof(TBCB)*3;
Od 1 do 7 z 7

