1,10 → 1,9 |
{$codepage utf8} |
unit LRLRoutines; |
|
{$mode objfpc} |
{$asmmode intel} |
|
unit LRLRoutines; |
|
|
interface |
|
|
87,7 → 86,6 |
KEY_LBRACKET = $1A00; |
KEY_RBRACKET = $1B00; |
KEY_ENTER = $1C00; |
KEY_CTRL = $1D00; |
|
KEY_A = $1E00; |
KEY_S = $1F00; |
202,7 → 200,7 |
LastKeyEvent: Word = $FFFF; |
LastKeyUp : Boolean = True; |
LastKeyDown: Boolean = False; |
CtrlDown : Boolean = False; |
AltDown : Boolean = False; |
ShiftDown : Boolean = False; |
LShiftDown : Boolean = False; |
RShiftDown : Boolean = False; |
274,7 → 272,7 |
begin |
if (ScreenWidth = BUFFER_WIDTH) and (ScreenHeight = BUFFER_HEIGHT) then |
begin |
{перенос один в один} |
{¯¥à¥®á ®¤¨ ¢ ®¤¨} |
B := @ScreenPalBuffer; |
C := ScreenRGBBuffer; |
for I := 0 to BUFFER_HEIGHT - 1 do |
286,7 → 284,7 |
end; |
end else |
begin |
{масштабирование} |
{¬ áèâ ¡¨à®¢ ¨¥} |
XStep := (BUFFER_WIDTH shl 16) div ScreenWidth; |
YStep := (BUFFER_HEIGHT shl 16) div ScreenHeight; |
Horizontal; |
392,7 → 390,7 |
Height := PWord(@FontData + 2)^; |
Table := PWord(@FontData + 4); |
|
{ расчет длины строки } |
{ à áç¥â ¤«¨ë áâப¨ } |
Width := 0; |
for I := 1 to Length(Source) do |
begin |
403,7 → 401,7 |
PWord(@Buffer)^ := Width; |
PWord(@Buffer + 2)^ := Height; |
|
{ вывод строки } |
{ ¢ë¢®¤ áâப¨ } |
X := 0; |
for I := 1 to Length(Source) do |
begin |
536,9 → 534,9 |
LastKeyUp := not LastKeyDown; |
if LastKeyUp then Dec(Result, KEY_UP_BASE); |
|
if Result = KEY_CTRL then |
if Result = KEY_ALT then |
begin |
CtrlDown := LastKeyDown; |
AltDown := LastKeyDown; |
Result := $FFFF; |
end else |
|
556,7 → 554,7 |
Result := $FFFF; |
end else |
|
if CtrlDown then |
if AltDown then |
case Result of |
KEY_1: begin Result := $FFFF; if LastKeyDown then ScreenMode(1); end; |
KEY_2: begin Result := $FFFF; if LastKeyDown then ScreenMode(2); end; |