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}
|
||||
{$smartlink on}
|
||||
{$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>.<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>㭪樨
|
||||
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> }
|
||||
begin
|
||||
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 <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>}
|
||||
{kos_setcaption, <EFBFBD>⮡ࠦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (71.1)}
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>⤥<EFBFBD>쭮<EFBFBD> <20>㭪樥<E3ADAA> kos_setcaption}
|
||||
{<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>');
|
||||
{<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_enddraw();
|
||||
end;
|
||||
@@ -44,7 +47,7 @@ begin
|
||||
Notes[1] := Key shr 8;
|
||||
Notes[2] := $00;
|
||||
{<7B><><EFBFBD><EFBFBD>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
||||
kos_speak(@Notes);
|
||||
kos_speaker(@Notes);
|
||||
end;
|
||||
|
||||
|
||||
@@ -53,27 +56,29 @@ function DoButton: Boolean;
|
||||
var
|
||||
Button: DWord;
|
||||
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();
|
||||
{<7B> X, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
||||
Result := Button = 1;
|
||||
{<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;
|
||||
end;
|
||||
|
||||
|
||||
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 }
|
||||
var
|
||||
Event: DWord;
|
||||
begin
|
||||
Result := False;
|
||||
Result := True;
|
||||
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>⥬<EFBFBD>}
|
||||
Event := kos_getevent();
|
||||
case Event of
|
||||
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_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;
|
||||
|
||||
@@ -83,17 +88,14 @@ procedure MainLoop;
|
||||
var
|
||||
ThreadSlot: TThreadSlot;
|
||||
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>}
|
||||
kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON);
|
||||
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 横<>}
|
||||
while not ProcessMessage do;
|
||||
{<7B><>ࠡ<EFBFBD>⪠ ᮡ<>⨩}
|
||||
while ProcessMessage do;
|
||||
end;
|
||||
|
||||
|
||||
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;
|
||||
end.
|
||||
|
@@ -1,7 +1,7 @@
|
||||
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><EFBFBD><EFBFBD><EFBFBD>樨 <EFBFBD><EFBFBD> Windows.
|
||||
<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> 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> ᥡ<> 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 linux}
|
||||
|
||||
{$define EMULATOR}
|
||||
{$undef DISABLE_NO_THREAD_MANAGER}
|
||||
{$undef debug_mt}
|
||||
|
||||
{$define EMULATOR}
|
||||
|
@@ -594,7 +594,7 @@ end;
|
||||
|
||||
{ Sound }
|
||||
|
||||
function kos_speak(notes: Pointer): Boolean; assembler; register;
|
||||
function kos_speaker(notes: Pointer): Boolean; assembler; register;
|
||||
asm
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
|
@@ -151,6 +151,7 @@ begin
|
||||
FThreadID := BeginThread(TThreadFunc(@KonsoleThreadMain), @Self);
|
||||
if FThreadID <> 0 then
|
||||
{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;
|
||||
end;
|
||||
|
||||
|
@@ -142,7 +142,7 @@ function kos_fileinfo(kosfile: PKosFile): DWord;
|
||||
|
||||
{ Sound }
|
||||
|
||||
function kos_speak(notes: Pointer): Boolean;
|
||||
function kos_speaker(notes: Pointer): Boolean;
|
||||
|
||||
{ Work with hardware }
|
||||
function kos_readport(index: DWord): DWord;
|
||||
|
@@ -185,7 +185,7 @@ begin
|
||||
if not IsMultiThread then
|
||||
begin
|
||||
TLSKey := TLSAlloc();
|
||||
InitThreadVars(@SysRelocateThreadVar); {XXX: must be @SysRelocateThreadvar}
|
||||
InitThreadVars(@SysRelocateThreadVar);
|
||||
IsMultiThread := True;
|
||||
end;
|
||||
|
||||
@@ -287,6 +287,51 @@ begin
|
||||
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
|
||||
KosThreadManager: TThreadManager;
|
||||
|
||||
@@ -336,5 +381,8 @@ begin
|
||||
SemaphorePost := @NoSemaphorePost;
|
||||
end;
|
||||
SetThreadManager(KosThreadManager);
|
||||
{$ifndef HAS_MT_MEMORYMANAGER}
|
||||
InitHeapMutexes;
|
||||
{$endif HAS_MT_MEMORYMANAGER}
|
||||
ThreadID := GetCurrentThreadID;
|
||||
end;
|
||||
|
@@ -161,7 +161,7 @@ begin
|
||||
ReleaseFileRecord(Handle);
|
||||
end;
|
||||
|
||||
function FileTruncate(Handle: THandle; Size: Int64): Boolean;
|
||||
function FileTruncate(Handle: THandle; Size: Longint): Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
end;
|
||||
|
Reference in New Issue
Block a user