RTL for FP 2.2.0

git-svn-id: svn://kolibrios.org@643 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
bw
2007-09-28 12:26:28 +00:00
parent 3e571197e0
commit ec5962d52e
8 changed files with 79 additions and 26 deletions

View File

@@ -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.

View File

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

View File

@@ -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}

View File

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

View File

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

View File

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

View File

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

View File

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