RTL for FP 2.2.0
git-svn-id: svn://kolibrios.org@643 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1,10 +1,13 @@
|
|||||||
{$codepage cp866}
|
|
||||||
|
{ <20> FreePascal 2.2.0 <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2> cp866 <20><> ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. }
|
||||||
|
{-$codepage cp866}
|
||||||
|
|
||||||
{$mode objfpc}
|
{$mode objfpc}
|
||||||
{$smartlink on}
|
{$smartlink on}
|
||||||
{$apptype console}
|
{$apptype console}
|
||||||
|
|
||||||
{ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᬠ<EFBFBD>ਢ<EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><><EFBFBD> <20><><EFBFBD>᮫쭮<E1AEAB>,
|
{ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᬠ<EFBFBD>ਢ<EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><><EFBFBD> <20><><EFBFBD>᮫쭮<E1AEAB>,
|
||||||
<20>.<2E>. <20><>४⨢<E0A5AA> concole <20><>易⥫쭠, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢨<EFBFBD> <20>⮩
|
<20>.<2E>. <20><>४⨢<E0A5AA> console <20><>易⥫쭠, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢨<EFBFBD> <20>⮩
|
||||||
<20><>४⨢<E0A5AA> <20>।<EFBFBD><E0A5A4>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><>࠭<EFBFBD><E0A0AD><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD> <20>㭪樨
|
<20><>४⨢<E0A5AA> <20>।<EFBFBD><E0A5A4>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><>࠭<EFBFBD><E0A0AD><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD> <20>㭪樨
|
||||||
Write, WriteLn, Read, ReadLn <20>⭮<EFBFBD><E2ADAE>⥫쭮 <20>⠭<EFBFBD><E2A0AD><EFBFBD>⭮<EFBFBD> <20><><EFBFBD>᮫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F>뢮<EFBFBD><EBA2AE>.
|
Write, WriteLn, Read, ReadLn <20>⭮<EFBFBD><E2ADAE>⥫쭮 <20>⠭<EFBFBD><E2A0AD><EFBFBD>⭮<EFBFBD> <20><><EFBFBD>᮫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F>뢮<EFBFBD><EBA2AE>.
|
||||||
}
|
}
|
||||||
@@ -21,13 +24,13 @@ procedure DoPaint;
|
|||||||
{ <20>뢮<EFBFBD> ᮤ<>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> }
|
{ <20>뢮<EFBFBD> ᮤ<>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> }
|
||||||
begin
|
begin
|
||||||
kos_begindraw();
|
kos_begindraw();
|
||||||
{<7B><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC> <20><><EFBFBD><EFBFBD> (0)}
|
{<7B><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC> <20><><EFBFBD><EFBFBD>}
|
||||||
kos_definewindow(200, 200, 200, 50, $23AABBCC);
|
kos_definewindow(200, 200, 200, 50, $23AABBCC);
|
||||||
{kos_definewindow <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD> <20>뢮<EFBFBD><EBA2AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
{kos_definewindow <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD> <20>뢮<EFBFBD><EBA2AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>⤥<EFBFBD>쭮<EFBFBD> <20>㭪樥<E3ADAA>}
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>⤥<EFBFBD>쭮<EFBFBD> <20>㭪樥<E3ADAA> kos_setcaption}
|
||||||
{kos_setcaption, <EFBFBD>⮡ࠦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (71.1)}
|
{<7B>⮡ࠦ<E2AEA1><E0A0A6><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>}
|
||||||
kos_setcaption('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
kos_setcaption('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||||||
{<7B>뢮<EFBFBD> ᮮ<>饭<EFBFBD><E9A5AD> (4)}
|
{<7B>뢮<EFBFBD> ᮮ<>饭<EFBFBD><E9A5AD>}
|
||||||
kos_drawtext(3, 8, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...');
|
kos_drawtext(3, 8, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...');
|
||||||
kos_enddraw();
|
kos_enddraw();
|
||||||
end;
|
end;
|
||||||
@@ -44,7 +47,7 @@ begin
|
|||||||
Notes[1] := Key shr 8;
|
Notes[1] := Key shr 8;
|
||||||
Notes[2] := $00;
|
Notes[2] := $00;
|
||||||
{<7B><><EFBFBD><EFBFBD>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
{<7B><><EFBFBD><EFBFBD>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
||||||
kos_speak(@Notes);
|
kos_speaker(@Notes);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@@ -53,27 +56,29 @@ function DoButton: Boolean;
|
|||||||
var
|
var
|
||||||
Button: DWord;
|
Button: DWord;
|
||||||
begin
|
begin
|
||||||
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⮩ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⮩ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
||||||
Button := kos_getbutton();
|
Button := kos_getbutton();
|
||||||
{<7B> X, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
{<7B> [x], <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0AEA2><EFBFBD><EFBFBD><E0AEA2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>⨥ <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
||||||
Result := Button = 1;
|
Result := Button <> 1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function ProcessMessage: Boolean;
|
function ProcessMessage: Boolean;
|
||||||
{ @return: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD> False, <20> <20>뫮 ᮡ<>⨥ <20> <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> <20>ਫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
{ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>ࠡ<EFBFBD>⪠ ᮡ<>⨩.
|
||||||
|
|
||||||
|
@return: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD> False, <20> <20>뫮 ᮡ<>⨥ <20> <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
@rtype: True <20><><EFBFBD> False }
|
@rtype: True <20><><EFBFBD> False }
|
||||||
var
|
var
|
||||||
Event: DWord;
|
Event: DWord;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := True;
|
||||||
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>⥬<EFBFBD>}
|
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>⥬<EFBFBD>}
|
||||||
Event := kos_getevent();
|
Event := kos_getevent();
|
||||||
case Event of
|
case Event of
|
||||||
SE_PAINT : DoPaint; {<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>}
|
SE_PAINT : DoPaint; {<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>}
|
||||||
SE_KEYBOARD: DoKey; {ᮡ<>⨥ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
SE_KEYBOARD: DoKey; {ᮡ<>⨥ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
||||||
SE_BUTTON : Result := DoButton; {ᮡ먥 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD>
|
SE_BUTTON : Result := DoButton; {ᮡ먥 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> True}
|
<20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> False}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -83,17 +88,14 @@ procedure MainLoop;
|
|||||||
var
|
var
|
||||||
ThreadSlot: TThreadSlot;
|
ThreadSlot: TThreadSlot;
|
||||||
begin
|
begin
|
||||||
{ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>⨢<EFBFBD><E2A8A2><EFBFBD>}
|
|
||||||
ThreadSlot := kos_getthreadslot(ThreadID);
|
|
||||||
kos_setactivewindow(ThreadSlot);
|
|
||||||
{<7B><><EFBFBD><EFBFBD>ࠨ<EFBFBD><E0A0A8><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>⮢<EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1>뢠<EFBFBD><EBA2A0>}
|
{<7B><><EFBFBD><EFBFBD>ࠨ<EFBFBD><E0A0A8><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>⮢<EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1>뢠<EFBFBD><EBA2A0>}
|
||||||
kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON);
|
kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON);
|
||||||
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 横<>}
|
{<7B><>ࠡ<EFBFBD>⪠ ᮡ<>⨩}
|
||||||
while not ProcessMessage do;
|
while ProcessMessage do;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
WriteLn('Look for a new window, I''m just a konsole, hi mike ;-)');
|
WriteLn('Look for a new window, I''m just a konsole ;-)');
|
||||||
MainLoop;
|
MainLoop;
|
||||||
end.
|
end.
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
Codepage: cp866
|
Codepage: cp866
|
||||||
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>騩 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><> FreePascal 2.3.1 (SVN 8373) <20><><EFBFBD>
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>騩 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><> FreePascal 2.2.0 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 <EFBFBD><EFBFBD> Windows.
|
<EFBFBD><EFBFBD> Windows.
|
||||||
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD>ᨨ RTL <20><><EFBFBD> KolibriOS <20><><EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD>ᨨ RTL <20><><EFBFBD> KolibriOS <20><><EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
<EFBFBD> ᥡ<> FreePascal <20> <20><>室<EFBFBD>묨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RTL 㪠<><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ᨨ. <20><><EFBFBD>ன<EFBFBD><E0AEA9> 䠩<>
|
<EFBFBD> ᥡ<> FreePascal <20> <20><>室<EFBFBD>묨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RTL 㪠<><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ᨨ. <20><><EFBFBD>ன<EFBFBD><E0AEA9> 䠩<>
|
||||||
|
@@ -5,5 +5,7 @@
|
|||||||
{$undef os2}
|
{$undef os2}
|
||||||
{$undef linux}
|
{$undef linux}
|
||||||
|
|
||||||
{$define EMULATOR}
|
{$undef DISABLE_NO_THREAD_MANAGER}
|
||||||
{$undef debug_mt}
|
{$undef debug_mt}
|
||||||
|
|
||||||
|
{$define EMULATOR}
|
||||||
|
@@ -594,7 +594,7 @@ end;
|
|||||||
|
|
||||||
{ Sound }
|
{ Sound }
|
||||||
|
|
||||||
function kos_speak(notes: Pointer): Boolean; assembler; register;
|
function kos_speaker(notes: Pointer): Boolean; assembler; register;
|
||||||
asm
|
asm
|
||||||
pushl %esi
|
pushl %esi
|
||||||
pushl %ebx
|
pushl %ebx
|
||||||
|
@@ -151,6 +151,7 @@ begin
|
|||||||
FThreadID := BeginThread(TThreadFunc(@KonsoleThreadMain), @Self);
|
FThreadID := BeginThread(TThreadFunc(@KonsoleThreadMain), @Self);
|
||||||
if FThreadID <> 0 then
|
if FThreadID <> 0 then
|
||||||
{XXX: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
{XXX: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
||||||
|
{<EFBFBD><EFBFBD>, ⠪ <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> 2.2.0.}
|
||||||
while not FOpened do ThreadSwitch;
|
while not FOpened do ThreadSwitch;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@@ -142,7 +142,7 @@ function kos_fileinfo(kosfile: PKosFile): DWord;
|
|||||||
|
|
||||||
{ Sound }
|
{ Sound }
|
||||||
|
|
||||||
function kos_speak(notes: Pointer): Boolean;
|
function kos_speaker(notes: Pointer): Boolean;
|
||||||
|
|
||||||
{ Work with hardware }
|
{ Work with hardware }
|
||||||
function kos_readport(index: DWord): DWord;
|
function kos_readport(index: DWord): DWord;
|
||||||
|
@@ -185,7 +185,7 @@ begin
|
|||||||
if not IsMultiThread then
|
if not IsMultiThread then
|
||||||
begin
|
begin
|
||||||
TLSKey := TLSAlloc();
|
TLSKey := TLSAlloc();
|
||||||
InitThreadVars(@SysRelocateThreadVar); {XXX: must be @SysRelocateThreadvar}
|
InitThreadVars(@SysRelocateThreadVar);
|
||||||
IsMultiThread := True;
|
IsMultiThread := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -287,6 +287,51 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{*****************************************************************************
|
||||||
|
Heap Mutex Protection
|
||||||
|
*****************************************************************************}
|
||||||
|
|
||||||
|
{$ifndef HAS_MT_MEMORYMANAGER}
|
||||||
|
var
|
||||||
|
HeapMutex: TRTLCriticalSection;
|
||||||
|
|
||||||
|
procedure KosHeapMutexInit;
|
||||||
|
begin
|
||||||
|
InitCriticalSection(HeapMutex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure KosHeapMutexDone;
|
||||||
|
begin
|
||||||
|
DoneCriticalSection(HeapMutex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure KosHeapMutexLock;
|
||||||
|
begin
|
||||||
|
EnterCriticalSection(HeapMutex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure KosHeapMutexUnlock;
|
||||||
|
begin
|
||||||
|
LeaveCriticalSection(HeapMutex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
KosMemoryMutexManager: TMemoryMutexManager = (
|
||||||
|
MutexInit : @KosHeapMutexInit;
|
||||||
|
MutexDone : @KosHeapMutexDone;
|
||||||
|
MutexLock : @KosHeapMutexLock;
|
||||||
|
MutexUnlock: @KosHeapMutexUnlock);
|
||||||
|
|
||||||
|
|
||||||
|
procedure InitHeapMutexes;
|
||||||
|
begin
|
||||||
|
SetMemoryMutexManager(KosMemoryMutexManager);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$endif HAS_MT_MEMORYMANAGER}
|
||||||
|
|
||||||
|
|
||||||
var
|
var
|
||||||
KosThreadManager: TThreadManager;
|
KosThreadManager: TThreadManager;
|
||||||
|
|
||||||
@@ -336,5 +381,8 @@ begin
|
|||||||
SemaphorePost := @NoSemaphorePost;
|
SemaphorePost := @NoSemaphorePost;
|
||||||
end;
|
end;
|
||||||
SetThreadManager(KosThreadManager);
|
SetThreadManager(KosThreadManager);
|
||||||
|
{$ifndef HAS_MT_MEMORYMANAGER}
|
||||||
|
InitHeapMutexes;
|
||||||
|
{$endif HAS_MT_MEMORYMANAGER}
|
||||||
ThreadID := GetCurrentThreadID;
|
ThreadID := GetCurrentThreadID;
|
||||||
end;
|
end;
|
||||||
|
@@ -161,7 +161,7 @@ begin
|
|||||||
ReleaseFileRecord(Handle);
|
ReleaseFileRecord(Handle);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function FileTruncate(Handle: THandle; Size: Int64): Boolean;
|
function FileTruncate(Handle: THandle; Size: Longint): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user