|
@@ -43,6 +43,30 @@ var
|
|
Low level Routines
|
|
Low level Routines
|
|
****************************************************************************}
|
|
****************************************************************************}
|
|
|
|
|
|
|
|
+procedure dosmemfillword(segm, ofs: Word; count: Word; w: Word); assembler;
|
|
|
|
+asm
|
|
|
|
+ mov ax, segm
|
|
|
|
+ mov es, ax
|
|
|
|
+ mov di, ofs
|
|
|
|
+ mov ax, w
|
|
|
|
+ mov cx, count
|
|
|
|
+ rep stosw
|
|
|
|
+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 cx, count
|
|
|
|
+ mov ax, sseg
|
|
|
|
+ push ds
|
|
|
|
+ mov ds, ax
|
|
|
|
+ rep movsb
|
|
|
|
+ pop ds
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure setscreenmode(mode : byte);
|
|
procedure setscreenmode(mode : byte);
|
|
var
|
|
var
|
|
regs : registers;
|
|
regs : registers;
|
|
@@ -256,14 +280,13 @@ var
|
|
fil : word;
|
|
fil : word;
|
|
y : longint;
|
|
y : longint;
|
|
begin
|
|
begin
|
|
- { TODO: fix }
|
|
|
|
fil:=32 or (textattr shl 8);
|
|
fil:=32 or (textattr shl 8);
|
|
if FullWin then
|
|
if FullWin then
|
|
-// DosmemFillWord(VidSeg,0,ScreenHeight*ScreenWidth,fil)
|
|
|
|
|
|
+ DosmemFillWord(VidSeg,0,ScreenHeight*ScreenWidth,fil)
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
for y:=WinMinY to WinMaxY do
|
|
for y:=WinMinY to WinMaxY do
|
|
-// DosmemFillWord(VidSeg,((y-1)*ScreenWidth+(WinMinX-1))*2,WinMaxX-WinMinX+1,fil);
|
|
|
|
|
|
+ DosmemFillWord(VidSeg,((y-1)*ScreenWidth+(WinMinX-1))*2,WinMaxX-WinMinX+1,fil);
|
|
end;
|
|
end;
|
|
Gotoxy(1,1);
|
|
Gotoxy(1,1);
|
|
end;
|
|
end;
|
|
@@ -277,11 +300,10 @@ var
|
|
x,y : longint;
|
|
x,y : longint;
|
|
fil : word;
|
|
fil : word;
|
|
Begin
|
|
Begin
|
|
- // TODO: fix
|
|
|
|
GetScreenCursor(x,y);
|
|
GetScreenCursor(x,y);
|
|
fil:=32 or (textattr shl 8);
|
|
fil:=32 or (textattr shl 8);
|
|
if x<=WinMaxX then
|
|
if x<=WinMaxX then
|
|
-// DosmemFillword(VidSeg,((y-1)*ScreenWidth+(x-1))*2,WinMaxX-x+1,fil);
|
|
|
|
|
|
+ DosmemFillword(VidSeg,((y-1)*ScreenWidth+(x-1))*2,WinMaxX-x+1,fil);
|
|
End;
|
|
End;
|
|
|
|
|
|
|
|
|
|
@@ -481,16 +503,15 @@ procedure removeline(y : longint);
|
|
var
|
|
var
|
|
fil : word;
|
|
fil : word;
|
|
begin
|
|
begin
|
|
- { TODO: implement }
|
|
|
|
fil:=32 or (textattr shl 8);
|
|
fil:=32 or (textattr shl 8);
|
|
y:=WinMinY+y-1;
|
|
y:=WinMinY+y-1;
|
|
While (y<WinMaxY) do
|
|
While (y<WinMaxY) do
|
|
begin
|
|
begin
|
|
-{ dosmemmove(VidSeg,(y*ScreenWidth+(WinMinX-1))*2,
|
|
|
|
- VidSeg,((y-1)*ScreenWidth+(WinMinX-1))*2,(WinMaxX-WinMinX+1)*2);}
|
|
|
|
|
|
+ dosmemmove(VidSeg,(y*ScreenWidth+(WinMinX-1))*2,
|
|
|
|
+ VidSeg,((y-1)*ScreenWidth+(WinMinX-1))*2,(WinMaxX-WinMinX+1)*2);
|
|
inc(y);
|
|
inc(y);
|
|
end;
|
|
end;
|
|
-{ dosmemfillword(VidSeg,((WinMaxY-1)*ScreenWidth+(WinMinX-1))*2,(WinMaxX-WinMinX+1),fil);}
|
|
|
|
|
|
+ dosmemfillword(VidSeg,((WinMaxY-1)*ScreenWidth+(WinMinX-1))*2,(WinMaxX-WinMinX+1),fil);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
@@ -511,11 +532,11 @@ begin
|
|
my:=WinMaxY-WinMinY;
|
|
my:=WinMaxY-WinMinY;
|
|
while (my>=y) do
|
|
while (my>=y) do
|
|
begin
|
|
begin
|
|
-{ dosmemmove(VidSeg,(((WinMinY+my-1)-1)*ScreenWidth+(WinMinX-1))*2,
|
|
|
|
- VidSeg,(((WinMinY+my)-1)*ScreenWidth+(WinMinX-1))*2,(WinMaxX-WinMinX+1)*2);}
|
|
|
|
|
|
+ dosmemmove(VidSeg,(((WinMinY+my-1)-1)*ScreenWidth+(WinMinX-1))*2,
|
|
|
|
+ VidSeg,(((WinMinY+my)-1)*ScreenWidth+(WinMinX-1))*2,(WinMaxX-WinMinX+1)*2);
|
|
dec(my);
|
|
dec(my);
|
|
end;
|
|
end;
|
|
-{ dosmemfillword(VidSeg,(((WinMinY+y-1)-1)*ScreenWidth+(WinMinX-1))*2,(WinMaxX-WinMinX+1),fil);}
|
|
|
|
|
|
+ dosmemfillword(VidSeg,(((WinMinY+y-1)-1)*ScreenWidth+(WinMinX-1))*2,(WinMaxX-WinMinX+1),fil);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|