Browse Source

* use movedata() in the msdos crt unit

git-svn-id: trunk@37742 -
nickysn 7 years ago
parent
commit
81b56c9d4b
1 changed files with 4 additions and 26 deletions
  1. 4 26
      packages/rtl-console/src/msdos/crt.pp

+ 4 - 26
packages/rtl-console/src/msdos/crt.pp

@@ -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);