/programs/develop/fp/examples/_build.bat |
---|
0,0 → 1,20 |
@echo off |
set NAME=%1 |
set NAMEEXE=%NAME%.exe |
set NAMEKOS=%NAME% |
set BUILD=-FUbuild |
set UNTS=-Fu..\units |
fpc %NAME%.pp -n -Twin32 -Se5 -XXs -Sg -O3pPENTIUM3 -CfSSE -WB0 %BUILD% %UNTS% |
if errorlevel 1 goto error |
..\exe2kos\exe2kos.exe %NAMEEXE% %NAMEKOS%.kex |
del %NAMEEXE% |
goto end |
:error |
echo An error occured while building %NAME% |
:end |
/programs/develop/fp/examples/example.bat |
---|
0,0 → 1,0 |
@_build example |
/programs/develop/fp/examples/example.pp |
---|
0,0 → 1,99 |
{$codepage cp866} |
{$mode objfpc} |
{$smartlink on} |
{$apptype console} |
{ ¤ ë© ¬®¬¥â à áᬠâਢ ¥âáï ¢ë¯®«¥¨¥ ¯à¨«®¤¥¨ï ⮫쪮 ª ª ª®á®«ì®¥, |
â.¥. ¤¨à¥ªâ¨¢ concole ®¡ï§ ⥫ì , ¯®¢¥¤¥¨¥ ¯à®£à ¬¬ë ¯à¨ ®âáãâá⢨¨ í⮩ |
¤¨à¥ªâ¨¢ë ¯à¥¤®¯à¥¤¥«¨âì ¥«ì§ï. à â¨à®¢ ® ¥«ì§ï ¨á¯®«ì§®¢ âì äãªæ¨¨ |
Write, WriteLn, Read, ReadLn ®â®á¨â¥«ì® áâ ¤ à⮩ ª®á®«¨ ¢¢®¤ /¢ë¢®¤ . |
} |
program Example; |
{ ᥠäãªæ¨¨ ¨¬¥î騥 ¢ ᢮¥¬ ¨¬¥¨ ¯à¥ä¨ªá 'kos_' ïîâáï ¯« âä®à¬®§ ¢¨á¨¬ë¬¨ |
¨ ॠ«¨§®¢ ë ⮫쪮 ¯®¤ KolibriOS. å ¨á¯®«ì§®¢ ¨¥ ¢ «î¡ëå ¯à®£à ¬¬ëå |
¯à¨«®¦¥¨ïå ª ⥣®à¨ç¥áª¨ ¥ ४®¬¥¤®¢ ®, ¢ë®á¨â¥ ¢á¥ ¬¥â®¤ë, ¨á¯®«ì§ãî騥 |
í⨠äãªæ¨¨, ¢ ®â¤¥«ìë¥ ¬®¤ã«¨ (¨ ¨á¯®«ì§ã©â¥ ¥®¡å®¤¨¬ë¥ ¡áâà ªæ¨¨). |
} |
procedure DoPaint; |
{ 뢮¤ ᮤ¥à¦¨¬®£® ®ª ¯à¨«®¦¥¨ï } |
begin |
kos_begindraw(); |
{®¯à¥¤¥«¥¨¥ ¯ à ¬¥â஢ ®ª (0)} |
kos_definewindow(200, 200, 200, 50, $23AABBCC); |
{kos_definewindow ¥ ¨¬¥¥â ¯ à ¬¥âà ¤«ï ¢ë¢®¤ § £®«®¢ª , |
¤¥« ¥¬ íâ® ®â¤¥«ì®© äãªæ¨¥©} |
{kos_setcaption, ®â®¡à ¦¥¨¥ § £®«®¢ª ®ª (71.1)} |
kos_setcaption(' '); |
{¢ë¢®¤ á®®¡é¥¨ï (4)} |
kos_drawtext(3, 8, ' ¦¬¨â¥ «î¡ãî ª« ¢¨èã...'); |
kos_enddraw(); |
end; |
procedure DoKey; |
{ ¡à ¡®âª ᮡëâ¨ï ¦ â¨ï ª« ¢¨è¨ } |
var |
Key: DWord; |
Notes: array[0..3] of Byte; |
begin |
Key := kos_getkey(); |
{ áâà ¨¢ ¥¬ ¡ãä¥à ¤«ï ®â} |
Notes[0] := $90; |
Notes[1] := Key shr 8; |
Notes[2] := $00; |
{¢®á¯à®¨§¢®¤¨¬} |
kos_speak(@Notes); |
end; |
function DoButton: Boolean; |
{ ¡à ¡®âª ᮡëâ¨ï ¦ â¨ï ª®¯ª¨ GUI } |
var |
Button: DWord; |
begin |
{¯®«ãç¨âì ª®¤ ¦ ⮩ ª«¨ë¨è¨} |
Button := kos_getbutton(); |
{¥á«¨ X, â® § ¢¥à襨¥ ¯à¨«®¦¥¨ï} |
Result := Button = 1; |
end; |
function ProcessMessage: Boolean; |
{ @return: ®§¢à é ¥â False, ¥á«¨ ¡ë«® ᮡë⨥ ª § ¢¥àè¥¨î ¯à¨«®¦¥¨ï. |
@rtype: True ¨«¨ False } |
var |
Event: DWord; |
begin |
Result := False; |
{®¦¨¤ ¥¬ ᮡëâ¨ï ®â á¨á⥬ë} |
Event := kos_getevent(); |
case Event of |
SE_PAINT : DoPaint; {¯¥à¥à¨á®¢ª ®ª } |
SE_KEYBOARD: DoKey; {ᮡë⨥ ®â ª« ¢¨ âãàë} |
SE_BUTTON : Result := DoButton; {ᮡ먥 ®â ª®¯ª¨, ¬®¦¥â ®¯à¥¤¥«¨âì |
§ ¢¥à襨¥ ¯à¨«®¦¥¨ï, ¥á«¨ ¢¥à¥â True} |
end; |
end; |
procedure MainLoop; |
{ « ¢ë© 横« ¯à¨«®¦¥¨ï } |
var |
ThreadSlot: TThreadSlot; |
begin |
{ᤥ« âì íâ® ®ª® ªâ¨¢ë¬} |
ThreadSlot := kos_getthreadslot(ThreadID); |
kos_setactivewindow(ThreadSlot); |
{ áâà ¨¢ ¥¬ ᮡëâ¨ï, ª®â®àë¥ ¬ë £®â®¢ë ®¡à ¡ âë¢ âì} |
kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON); |
{£« ¢ë© 横«} |
while not ProcessMessage do; |
end; |
begin |
WriteLn('Look for a new window, I''m just a konsole, hi mike ;-)'); |
MainLoop; |
end. |
/programs/develop/fp/examples/readme-ru.txt |
---|
0,0 → 1,3 |
Codepage: cp866 |
«ï ç « ¥®¡å®¦¨¬® ᮡà âì RTL ¨ ã⨫¨âã exe2kos. |
/programs/develop/fp/readme-ru.txt |
---|
1,18 → 1,18 |
Codepage: koi8-r |
Codepage: cp866 |
ôÅËÕÝÉÊ ËÏÄ ÁÄÁÐÔÉÒÏ×ÁÎ É ÐÒÏ×ÅÒÑÌÓÑ ÔÏÌØËÏ ÎÁ FreePascal 2.3.1 (SVN 8373) ÐÒÉ |
ËÏÍÐÉÌÑÃÉÉ ÉÚ Windows. |
¥ªã騩 ª®¤ ¤ ¯â¨à®¢ ¨ ¯à®¢¥àï«áï ⮫쪮 FreePascal 2.3.1 (SVN 8373) ¯à¨ |
ª®¬¯¨«ï樨 ¨§ Windows. |
äÌÑ ËÏÍÐÉÌÉÒÏ×ÁÎÉÑ ×ÅÒÓÉÉ RTL ÄÌÑ KolibriOS ×ÁÍ ÎÅÏÂÈÏÄÉÍÏ ÉÍÅÔØ ÕÓÔÁÎÏ×ÌÅÎÎÙÊ |
Õ ÓÅÂÑ FreePascal Ó ÉÓÈÏÄÎÙÍÉ ËÏÄÁÍÉ RTL ÕËÁÚÁÎÎÏÊ ×ÙÛÅ ×ÅÒÓÉÉ. ïÔËÒÏÊÔÅ ÆÁÊÌ |
rtl/build.bat É ÕËÁÖÉÔÅ × ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ FPRTL ÔÏÞÎÙÊ ÐÕÔØ Ë ÉÓÈÏÄÎÏÍÕ |
ËÏÄÕ ÏÒÉÇÉÎÁÌØÎÏÊ RTL. îÁÐÒÉÍÅÒ, ÅÓÌÉ FreePascal ÕÓÔÁÎÏ×ÌÅÎ × c:\fp, ÔÏ |
×ÅÒÏÑÔÎÅÅ ×ÓÅÇÏ ÉÓÈÏÄÎÙÊ ËÏÄ ÎÁÈÏÄÉÔÓÑ × c:\fp\src\rtl. üÔÏÔ ÐÕÔØ É ÎÕÖÎÏ |
ÕËÁÚÁÔØ. ðÒÅÄÐÏÌÏÇÁÅÔÓÑ ÞÔÏ ÉÅÒÁÒÈÉÑ ÄÉÒÅËÔÏÒÉÊ ÉÓÈÏÄÎÉËÏ× FreePascal ÓÏÈÒÁÎÅÎÁ |
ÔÏÞÎÏ ÔÁËÏÊ ÖÅ ËÁË × ÒÅÐÏÚÉÔÁÒÉÉ FreePascal'Ñ. |
«ï ª®¬¯¨«¨à®¢ ¨ï ¢¥àᨨ RTL ¤«ï KolibriOS ¢ ¬ ¥®¡å®¤¨¬® ¨¬¥âì ãáâ ®¢«¥ë© |
ã ᥡï FreePascal á ¨á室묨 ª®¤ ¬¨ RTL 㪠§ ®© ¢ëè¥ ¢¥àᨨ. âªà®©â¥ ä ©« |
rtl/build.bat ¨ 㪠¦¨â¥ ¢ ¯¥à¥¬¥®© ®ªà㦥¨ï FPRTL â®çë© ¯ãâì ª ¨á室®¬ã |
ª®¤ã ®à¨£¨ «ì®© RTL. ¯à¨¬¥à, ¥á«¨ FreePascal ãáâ ®¢«¥ ¢ c:\fp, â® |
¢¥à®ï⥥ ¢á¥£® ¨áå®¤ë© ª®¤ 室¨âáï ¢ c:\fp\src\rtl. â®â ¯ãâì ¨ 㦮 |
㪠§ âì. ।¯®«®£ ¥âáï çâ® ¨¥à àå¨ï ¤¨à¥ªâ®à¨© ¨á室¨ª®¢ FreePascal á®åà ¥ |
â®ç® â ª®© ¦¥ ª ª ¢ ९®§¨â ਨ FreePascal'ï. |
ðÏÓÌÅ ÉÚÍÅÎÅÎÉÑ rtl/build.bat ÚÁÐÕÓÔÉÔÅ ÜÔÏÔ ËÏÍÁÎÄÎÙÊ ÆÁÊÌ ÎÁ ×ÙÐÏÌÎÅÎÉÅ. ðÏÓÌÅ |
ÚÁ×ÅÒÛÅÎÉÑ ÒÁÂÏÔÙ ÜÔÏÇÏ ÆÁÊÌÁ × ÐÁÐËÅ ./units ÄÏÌÖÎÙ ÐÏÑ×ÉÔØ ÍÏÄÕÌÉ É ÏÂßÅËÔÎÙÅ |
ÆÁÊÌÙ RTL. |
®á«¥ ¨§¬¥¥¨ï rtl/build.bat § ¯ãáâ¨â¥ íâ®â ª®¬ ¤ë© ä ©« ¢ë¯®«¥¨¥. ®á«¥ |
§ ¢¥à襨ï à ¡®âë í⮣® ä ©« ¢ ¯ ¯ª¥ ./units ¤®«¦ë ¯®ï¢¨âì ¬®¤ã«¨ ¨ ®¡ê¥ªâë¥ |
ä ©«ë RTL. |
ëÁË ÔÅÐÅÒØ ÓÏÂÉÒÁÔØ ÐÒÏÇÒÁÍÍÙ Ñ ÏÐÉÛÕ ÐÏÚÖÅ. |
ª ⥯¥àì ᮡ¨à âì ¯à®£à ¬¬ë ï ®¯¨èã ¯®§¦¥. |
/programs/develop/fp/rtl/kos.inc |
---|
20,6 → 20,7 |
movl style, %edx |
decl %ebx {㬥ìè¨âì è¨à¨ã 1} |
decl %ecx {㬥ìè¨âì ¢ëá®âã 1} |
andl $0xEFFFFFFF, %edx |
int $0x40 |
popl %edi |
popl %esi |
591,6 → 592,24 |
end; |
{ Sound } |
function kos_speak(notes: Pointer): Boolean; assembler; register; |
asm |
pushl %esi |
pushl %ebx |
movl $55, %esi |
movl %esi, %ebx |
xchgl %eax, %esi |
int $0x40 |
{eax = 55 - ®è¨¡ª } |
andl $1, %eax |
popl %ebx |
popl %esi |
xorb $1, %al |
end; |
{ Work with hardware } |
function kos_readport(index: DWord): DWord; assembler; register; |
/programs/develop/fp/rtl/kosh.inc |
---|
140,6 → 140,10 |
function kos_writefile(kosfile: PKosFile; var writed: Longint): DWord; |
function kos_fileinfo(kosfile: PKosFile): DWord; |
{ Sound } |
function kos_speak(notes: Pointer): Boolean; |
{ Work with hardware } |
function kos_readport(index: DWord): DWord; |
procedure kos_writeport(index, value: DWord); |