|
@@ -47,28 +47,6 @@ asm
|
|
rep stosw
|
|
rep stosw
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure dosmemmove(sseg, sofs, dseg, dofs: Word; count: Word); assembler;
|
|
|
|
-asm
|
|
|
|
- mov ax, dseg
|
|
|
|
- mov es, ax
|
|
|
|
- mov di, dofs
|
|
|
|
- mov si, sofs
|
|
|
|
- mov dx, count
|
|
|
|
- mov cx, dx
|
|
|
|
- mov ax, sseg
|
|
|
|
- push ds
|
|
|
|
- mov ds, ax
|
|
|
|
- shr cx, 1
|
|
|
|
- jz @@1
|
|
|
|
- rep movsw
|
|
|
|
-@@1:
|
|
|
|
- and dl, 1
|
|
|
|
- jz @@2
|
|
|
|
- rep movsb
|
|
|
|
-@@2:
|
|
|
|
- pop ds
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
procedure setscreenmode(mode : byte);
|
|
procedure setscreenmode(mode : byte);
|
|
var
|
|
var
|
|
regs : registers;
|
|
regs : registers;
|
|
@@ -562,8 +540,8 @@ begin
|
|
y:=WinMin.Y+y;
|
|
y:=WinMin.Y+y;
|
|
While (y<=WinMax.Y) do
|
|
While (y<=WinMax.Y) do
|
|
begin
|
|
begin
|
|
- dosmemmove(VidSeg,(y*ScreenWidth+word(WinMin.X))*2,
|
|
|
|
- VidSeg,((y-1)*ScreenWidth+word(WinMin.X))*2,(WinMax.X-WinMin.X+1)*2);
|
|
|
|
|
|
+ movedata(VidSeg,(y*ScreenWidth+word(WinMin.X))*2,
|
|
|
|
+ VidSeg,((y-1)*ScreenWidth+word(WinMin.X))*2,(WinMax.X-WinMin.X+1)*2);
|
|
inc(y);
|
|
inc(y);
|
|
end;
|
|
end;
|
|
dosmemfillword(VidSeg,(word(WinMax.Y)*ScreenWidth+word(WinMin.X))*2,(WinMax.X-WinMin.X+1),fil);
|
|
dosmemfillword(VidSeg,(word(WinMax.Y)*ScreenWidth+word(WinMin.X))*2,(WinMax.X-WinMin.X+1),fil);
|
|
@@ -586,8 +564,8 @@ begin
|
|
my:=WinMax.Y-WinMin.Y;
|
|
my:=WinMax.Y-WinMin.Y;
|
|
while (my>=y) do
|
|
while (my>=y) do
|
|
begin
|
|
begin
|
|
- dosmemmove(VidSeg,(word(WinMin.Y+my-1)*ScreenWidth+word(WinMin.X))*2,
|
|
|
|
- VidSeg,(word(WinMin.Y+my)*ScreenWidth+word(WinMin.X))*2,(WinMax.X-WinMin.X+1)*2);
|
|
|
|
|
|
+ movedata(VidSeg,(word(WinMin.Y+my-1)*ScreenWidth+word(WinMin.X))*2,
|
|
|
|
+ VidSeg,(word(WinMin.Y+my)*ScreenWidth+word(WinMin.X))*2,(WinMax.X-WinMin.X+1)*2);
|
|
dec(my);
|
|
dec(my);
|
|
end;
|
|
end;
|
|
dosmemfillword(VidSeg,(word(WinMin.Y+y-1)*ScreenWidth+word(WinMin.X))*2,(WinMax.X-WinMin.X+1),fil);
|
|
dosmemfillword(VidSeg,(word(WinMin.Y+y-1)*ScreenWidth+word(WinMin.X))*2,(WinMax.X-WinMin.X+1),fil);
|