[fp] changes in rtl & examples
git-svn-id: svn://kolibrios.org@790 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
42
programs/develop/fp/examples/Makefile.fpc
Normal file
42
programs/develop/fp/examples/Makefile.fpc
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[target]
|
||||||
|
programs=example ray
|
||||||
|
|
||||||
|
[default]
|
||||||
|
target=win32
|
||||||
|
cpu=i386
|
||||||
|
|
||||||
|
[compiler]
|
||||||
|
options=-dKOLIBRI
|
||||||
|
unittargetdir=build
|
||||||
|
targetdir=bin
|
||||||
|
sourcedir=src
|
||||||
|
|
||||||
|
[prerules]
|
||||||
|
ifdef KFPCDIR
|
||||||
|
override KFPCDIR:=$(subst \,/,$(KFPCDIR))
|
||||||
|
ifeq ($(wildcard $(KFPCDIR)/bin),)
|
||||||
|
override KFPCDIR=wrong
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
override KFPCDIR=wrong
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(KFPCDIR),wrong)
|
||||||
|
$(error The KFPCDIR environment is wrong)
|
||||||
|
endif
|
||||||
|
|
||||||
|
#UNITSDIR:=$(wildcard $(FPCDIR)/units/$(CPU_TARGET)-kolibri)
|
||||||
|
UNITSDIR:=$(wildcard $(KFPCDIR)/units)
|
||||||
|
KOSEXT=.kex
|
||||||
|
EXE2KEX=$(KFPCDIR)/bin/exe2kos
|
||||||
|
|
||||||
|
[rules]
|
||||||
|
ifneq ($(TARGET_PROGRAMS),)
|
||||||
|
KOSFILES=$(addsuffix $(KOSEXT),$(TARGET_PROGRAMS))
|
||||||
|
endif
|
||||||
|
|
||||||
|
fpc_all: $(KOSFILES)
|
||||||
|
|
||||||
|
%$(KOSEXT): %$(EXEEXT)
|
||||||
|
@$(EXE2KEX) $(COMPILER_TARGETDIR)/$^ $(COMPILER_TARGETDIR)/$@
|
||||||
|
@$(DEL) $(COMPILER_TARGETDIR)/$^
|
@@ -1,21 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
set NAME=%1
|
|
||||||
set NAMEEXE=%NAME%.exe
|
|
||||||
set NAMEKEX=%NAME%.kex
|
|
||||||
|
|
||||||
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% %NAMEKEX%
|
|
||||||
del %NAMEEXE%
|
|
||||||
move %NAMEKEX% bin
|
|
||||||
goto end
|
|
||||||
|
|
||||||
:error
|
|
||||||
echo An error occured while building %NAME%
|
|
||||||
|
|
||||||
:end
|
|
@@ -1 +0,0 @@
|
|||||||
@_build example
|
|
@@ -1 +0,0 @@
|
|||||||
@call _build.bat ray
|
|
@@ -1 +1,21 @@
|
|||||||
<EFBFBD><EFBFBD><EFBFBD> <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD>宦<EFBFBD><E5AEA6><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD> RTL <EFBFBD> <20>⨫<EFBFBD><E2A8AB><EFBFBD> exe2kos.
|
<EFBFBD><EFBFBD><EFBFBD> <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD>宦<EFBFBD><E5AEA6><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD> RTL (../rtl/build.sh <20><><EFBFBD> ..\rtl\build.bat) <20>
|
||||||
|
<EFBFBD>⨫<EFBFBD><EFBFBD><EFBFBD> exe2kos (../utils/exe2kos/build.sh <20><><EFBFBD> ..\utils\exe2kos\exe2kos.bat).
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20>⭮<EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<> ../bin/exe2kos <20><><EFBFBD>
|
||||||
|
Linux <20><><EFBFBD> ..\bin\exe2kos.exe <20><><EFBFBD> Windows. <20><><EFBFBD> <20><> 㡥<><E3A1A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>४<EFBFBD><E0A5AA><EFBFBD><EFBFBD><EFBFBD> ../units/rtl <20><><EFBFBD> Linux <20><><EFBFBD> ..\units\rtl <20><><EFBFBD> Windows.
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㦥<EFBFBD><E3A6A5><EFBFBD> FPCDIR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㪠<>뢠<EFBFBD><EBA2A0> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> FreePascal (<28><><EFBFBD><EFBFBD>
|
||||||
|
㪠<EFBFBD>뢠<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>饣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⭮<EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD>).
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㦥<EFBFBD><E3A6A5><EFBFBD> KFPCDIR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㪠<>뢠<EFBFBD><EBA2A0> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD>⮬ KolibriOS
|
||||||
|
FreePascal (<28><><EFBFBD><EFBFBD> 㪠<>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>饣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⭮<EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD>). <20> <20>⮩
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD><EFBFBD> ⠪<><E2A0AA> <20><>४<EFBFBD><E0A5AA>ਨ: bin, examples, rtl, units, utils.
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD> <20>⮣<EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5><EFBFBD>騥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> $ <20> <20><EFBFBD><E0AEA1><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>):
|
||||||
|
$ fpcmake -Twin32
|
||||||
|
$ make
|
||||||
|
|
||||||
|
<EFBFBD> <20><> <20><><EFBFBD> ᤥ<><E1A4A5><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2>쭮, <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD> bin <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE>塞<EFBFBD><EFA5AC> 䠩<><E4A0A9> <20>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>७<EFBFBD><EFBFBD><EFBFBD> kex.
|
||||||
|
build - <20>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20>ᯮ<EFBFBD><E1AFAE><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD> ᡮથ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㤠<><E3A4A0><EFBFBD><EFBFBD> <20><>.
|
@@ -4,37 +4,36 @@
|
|||||||
|
|
||||||
{$mode objfpc}
|
{$mode objfpc}
|
||||||
{$smartlink on}
|
{$smartlink on}
|
||||||
{$apptype console}
|
{$apptype gui}
|
||||||
|
|
||||||
{ <EFBFBD> ¤ ë© ¬®¬¥â à áᬠâਢ ¥âáï ¢ë¯®«¥¨¥ ¯à¨«®¤¥¨ï ⮫쪮 ª ª ª®á®«ì®¥,
|
|
||||||
â.¥. ¤¨à¥ªâ¨¢ console ®¡ï§ ⥫ì , ¯®¢¥¤¥¨¥ ¯à®£à ¬¬ë ¯à¨ ®âáãâá⢨¨ í⮩
|
|
||||||
¤¨à¥ªâ¨¢ë ¯à¥¤®¯à¥¤¥«¨âì ¥«ì§ï. ƒ à â¨à®¢ ® ¥«ì§ï ¨á¯®«ì§®¢ âì äãªæ¨¨
|
|
||||||
Write, WriteLn, Read, ReadLn ®â®á¨â¥«ì® áâ ¤ à⮩ ª®á®«¨ ¢¢®¤ /¢ë¢®¤ .
|
|
||||||
}
|
|
||||||
|
|
||||||
program Example;
|
program Example;
|
||||||
|
|
||||||
{ ‚ᥠäãªæ¨¨ ¨¬¥î騥 ¢ ᢮¥¬ ¨¬¥¨ ¯à¥ä¨ªá 'kos_' ïîâáï ¯« âä®à¬®§ ¢¨á¨¬ë¬¨
|
{ ‚ᥠäãªæ¨¨ ¨¬¥î騥 ¢ ᢮¥¬ ¨¬¥¨ ¯à¥ä¨ªá 'kos_' ïîâáï ¯« âä®à¬®§ ¢¨á¨¬ë¬¨
|
||||||
¨ ॠ«¨§®¢ ë ⮫쪮 ¯®¤ KolibriOS. ˆå ¨á¯®«ì§®¢ ¨¥ ¢ «î¡ëå ¯à®£à ¬¬ëå
|
¨ ॠ«¨§®¢ ë ⮫쪮 ¤«ï KolibriOS. ˆå ¨á¯®«ì§®¢ ¨¥ ¢ «î¡ëå ¯à®£à ¬¬ëå
|
||||||
¯à¨«®¦¥¨ïå ª ⥣®à¨ç¥áª¨ ¥ ४®¬¥¤®¢ ®, ¢ë®á¨â¥ ¢á¥ ¬¥â®¤ë, ¨á¯®«ì§ãî騥
|
¯à¨«®¦¥¨ïå ª ⥣®à¨ç¥áª¨ ¥ ४®¬¥¤®¢ ®, ¢ë®á¨â¥ ¢á¥ ¬¥â®¤ë, ¨á¯®«ì§ãî騥
|
||||||
í⨠äãªæ¨¨, ¢ ®â¤¥«ìë¥ ¬®¤ã«¨ (¨ ¨á¯®«ì§ã©â¥ ¥®¡å®¤¨¬ë¥ ¡áâà ªæ¨¨).
|
í⨠äãªæ¨¨, ¢ ®â¤¥«ìë¥ ¬®¤ã«¨ (¨ ¨á¯®«ì§ã©â¥ ¥®¡å®¤¨¬ë¥ ¡áâà ªæ¨¨). }
|
||||||
}
|
|
||||||
|
|
||||||
procedure DoPaint;
|
procedure DoPaint;
|
||||||
{ ‚뢮¤ ᮤ¥à¦¨¬®£® ®ª ¯à¨«®¦¥¨ï }
|
{ ‚뢮¤ ᮤ¥à¦¨¬®£® ®ª ¯à¨«®¦¥¨ï }
|
||||||
begin
|
begin
|
||||||
kos_begindraw();
|
kos_begindraw();
|
||||||
|
|
||||||
{ ®¯à¥¤¥«¥¨¥ ¯ à ¬¥â஢ ®ª }
|
{ ®¯à¥¤¥«¥¨¥ ¯ à ¬¥â஢ ®ª }
|
||||||
kos_definewindow(200, 200, 200, 50, $23AABBCC);
|
kos_definewindow(200, 200, 200, 50, $23AABBCC);
|
||||||
|
|
||||||
{ kos_definewindow ¥ ¨¬¥¥â ¯ à ¬¥âà ¤«ï ¢ë¢®¤ § £®«®¢ª ,
|
{ kos_definewindow ¥ ¨¬¥¥â ¯ à ¬¥âà ¤«ï ¢ë¢®¤ § £®«®¢ª ,
|
||||||
¤¥« ¥¬ íâ® ®â¤¥«ì®© äãªæ¨¥© kos_setcaption }
|
¤¥« ¥¬ íâ® ®â¤¥«ì®© äãªæ¨¥© kos_setcaption }
|
||||||
|
|
||||||
{ ®â®¡à ¦¥¨¥ § £®«®¢ª ®ª }
|
{ ®â®¡à ¦¥¨¥ § £®«®¢ª ®ª }
|
||||||
kos_setcaption('<27><>ˆŒ…<C592> <20><>Žƒ<C5BD>€ŒŒ›');
|
kos_setcaption('<27><>ˆŒ…<C592> <20><>Žƒ<C5BD>€ŒŒ›');
|
||||||
|
|
||||||
{ ¢ë¢®¤ á®®¡é¥¨ï }
|
{ ¢ë¢®¤ á®®¡é¥¨ï }
|
||||||
kos_drawtext(3, 8, '<27> ¦¬¨â¥ «î¡ãî ª« ¢¨èã...');
|
kos_drawtext(3, 8, '<27> ¦¬¨â¥ «î¡ãî ª« ¢¨èã...');
|
||||||
kos_enddraw();
|
kos_enddraw();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure DoKey;
|
procedure DoKey;
|
||||||
{ Ž¡à ¡®âª ᮡëâ¨ï ¦ â¨ï ª« ¢¨è¨ }
|
{ Ž¡à ¡®âª ᮡëâ¨ï ¦ â¨ï ª« ¢¨è¨ }
|
||||||
var
|
var
|
||||||
@@ -42,10 +41,12 @@ var
|
|||||||
Notes: array[0..3] of Byte;
|
Notes: array[0..3] of Byte;
|
||||||
begin
|
begin
|
||||||
Key := kos_getkey();
|
Key := kos_getkey();
|
||||||
|
|
||||||
{ áâà ¨¢ ¥¬ ¡ãä¥à ¤«ï ®â }
|
{ áâà ¨¢ ¥¬ ¡ãä¥à ¤«ï ®â }
|
||||||
Notes[0] := $90;
|
Notes[0] := $90;
|
||||||
Notes[1] := Key shr 8;
|
Notes[1] := Key shr 8;
|
||||||
Notes[2] := $00;
|
Notes[2] := $00;
|
||||||
|
|
||||||
{ ¢®á¯à®¨§¢®¤¨¬ }
|
{ ¢®á¯à®¨§¢®¤¨¬ }
|
||||||
kos_speaker(@Notes);
|
kos_speaker(@Notes);
|
||||||
end;
|
end;
|
||||||
@@ -58,6 +59,7 @@ var
|
|||||||
begin
|
begin
|
||||||
{ ¯®«ãç¨âì ª®¤ ¦ ⮩ ª«¨¢¨è¨ }
|
{ ¯®«ãç¨âì ª®¤ ¦ ⮩ ª«¨¢¨è¨ }
|
||||||
Button := kos_getbutton();
|
Button := kos_getbutton();
|
||||||
|
|
||||||
{ ¥á«¨ [x], â® ¢¥àãâì «®¦ì, § ç¨â á¯à®¢®æ¨à®¢ âì § ªàë⨥ ¯à¨«®¦¥¨ï }
|
{ ¥á«¨ [x], â® ¢¥àãâì «®¦ì, § ç¨â á¯à®¢®æ¨à®¢ âì § ªàë⨥ ¯à¨«®¦¥¨ï }
|
||||||
Result := Button <> 1;
|
Result := Button <> 1;
|
||||||
end;
|
end;
|
||||||
@@ -72,30 +74,25 @@ var
|
|||||||
Event: DWord;
|
Event: DWord;
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
|
|
||||||
{ ®¦¨¤ ¥¬ ᮡëâ¨ï ®â á¨á⥬ë }
|
{ ®¦¨¤ ¥¬ ᮡëâ¨ï ®â á¨á⥬ë }
|
||||||
Event := kos_getevent();
|
Event := kos_getevent();
|
||||||
case Event of
|
case Event of
|
||||||
SE_PAINT : DoPaint; { ¯¥à¥à¨á®¢ª ®ª }
|
SE_PAINT : DoPaint; { ¯¥à¥à¨á®¢ª ®ª }
|
||||||
SE_KEYBOARD: DoKey; { ᮡë⨥ ®â ª« ¢¨ âãàë }
|
SE_KEYBOARD: DoKey; { ᮡë⨥ ®â ª« ¢¨ âãàë }
|
||||||
SE_BUTTON : Result := DoButton; {ᮡ먥 ®â ª®¯ª¨, ¬®¦¥â ®¯à¥¤¥«¨âì
|
SE_BUTTON : Result := DoButton; { ᮡë⨥ ®â ª®¯ª¨, ¬®¦¥â ®¯à¥¤¥«¨âì
|
||||||
§ ¢¥à襨¥ ¯à¨«®¦¥¨ï, ¥á«¨ ¢¥à¥â False }
|
§ ¢¥à襨¥ ¯à¨«®¦¥¨ï, ¥á«¨ ¢¥à¥â False }
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure MainLoop;
|
|
||||||
{ ƒ« ¢ë© 横« ¯à¨«®¦¥¨ï }
|
{ ƒ« ¢ë© 横« ¯à¨«®¦¥¨ï }
|
||||||
var
|
var
|
||||||
ThreadSlot: TThreadSlot;
|
ThreadSlot: TThreadSlot;
|
||||||
begin
|
begin
|
||||||
{ áâà ¨¢ ¥¬ ᮡëâ¨ï, ª®â®àë¥ ¬ë £®â®¢ë ®¡à ¡ âë¢ âì }
|
{ áâà ¨¢ ¥¬ ᮡëâ¨ï, ª®â®àë¥ ¬ë £®â®¢ë ®¡à ¡ âë¢ âì }
|
||||||
kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON);
|
kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON);
|
||||||
|
|
||||||
{ ®¡à ¡®âª ᮡë⨩ }
|
{ ®¡à ¡®âª ᮡë⨩ }
|
||||||
while ProcessMessage do;
|
while ProcessMessage do;
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
begin
|
|
||||||
WriteLn('Look for a new window, I''m just a konsole ;-)');
|
|
||||||
MainLoop;
|
|
||||||
end.
|
end.
|
67
programs/develop/fp/rtl/Makefile.fpc
Normal file
67
programs/develop/fp/rtl/Makefile.fpc
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#
|
||||||
|
# Makefile.fpc for Free Pascal KolibriOS RTL
|
||||||
|
#
|
||||||
|
|
||||||
|
[package]
|
||||||
|
main=rtl
|
||||||
|
|
||||||
|
[target]
|
||||||
|
loaders=$(LOADERS)
|
||||||
|
units=system objpas buildrtl
|
||||||
|
#implicitunits=sysinitpas sysinitcyg sysinitgprof \
|
||||||
|
# ctypes strings \
|
||||||
|
# lineinfo lnfodwrf heaptrc matrix \
|
||||||
|
# windows winsock winsock2 initc cmem dynlibs signals \
|
||||||
|
# dos crt objects messages \
|
||||||
|
# rtlconsts sysconst sysutils math types \
|
||||||
|
# strutils dateutils varutils variants typinfo fgl classes \
|
||||||
|
# convutils stdconvs cpu mmx charset ucomplex getopts \
|
||||||
|
# winevent sockets printer \
|
||||||
|
# video mouse keyboard fmtbcd \
|
||||||
|
# winsysut sharemem
|
||||||
|
|
||||||
|
#rsts=math varutils typinfo variants classes dateutils sysconst
|
||||||
|
|
||||||
|
[require]
|
||||||
|
nortl=y
|
||||||
|
|
||||||
|
[install]
|
||||||
|
fpcpackage=y
|
||||||
|
|
||||||
|
[default]
|
||||||
|
target=win32
|
||||||
|
cpu=i386
|
||||||
|
|
||||||
|
[compiler]
|
||||||
|
unittargetdir=../units/rtl
|
||||||
|
includedir=$(INC) $(PROCINC)
|
||||||
|
sourcedir=$(INC) $(PROCINC)
|
||||||
|
|
||||||
|
[prerules]
|
||||||
|
RTL=$(FPCDIR)/rtl
|
||||||
|
INC=$(RTL)/inc
|
||||||
|
PROCINC=$(RTL)/$(CPU_TARGET)
|
||||||
|
OBJPASDIR=$(RTL)/objpas
|
||||||
|
|
||||||
|
[rules]
|
||||||
|
.NOTPARALLEL:
|
||||||
|
SYSTEMPPU=$(addsuffix $(PPUEXT),system)
|
||||||
|
|
||||||
|
include $(INC)/makefile.inc
|
||||||
|
SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
|
||||||
|
|
||||||
|
include $(PROCINC)/makefile.cpu
|
||||||
|
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
|
||||||
|
|
||||||
|
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
|
||||||
|
|
||||||
|
# Unit specific rules
|
||||||
|
|
||||||
|
system$(PPUEXT): system.pp $(SYSDEPS)
|
||||||
|
$(COMPILER) -Us -Sg system.pp
|
||||||
|
|
||||||
|
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
|
||||||
|
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
|
||||||
|
|
||||||
|
buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT)
|
||||||
|
$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
|
@@ -1,21 +1,3 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
fpcmake -Twin32
|
||||||
set FPRTL={FreePascal RTL source code, example c:\fp\src\rtl}
|
make
|
||||||
set INCS=-Fi%FPRTL%\inc;%FPRTL%\i386;%FPRTL%\objpas;%FPRTL%\objpas\sysutils;%FPRTL%\objpas\classes
|
|
||||||
set UNTS=-Fu%FPRTL%\inc;%FPRTL%\i386;%FPRTL%\objpas
|
|
||||||
set BUILDPATH=..\units
|
|
||||||
set FPCARGS=-n -Twin32 -Sge5 -O3pPENTIUM3 -CfSSE -di386 -FU%BUILDPATH% %INCS% %UNTS%
|
|
||||||
|
|
||||||
fpc system.pp -Us %FPCARGS%
|
|
||||||
if errorlevel 1 goto error
|
|
||||||
|
|
||||||
fpc %FPRTL%\objpas\objpas.pp %FPCARGS%
|
|
||||||
if errorlevel 1 goto error
|
|
||||||
|
|
||||||
fpc buildrtl.pp %FPCARGS%
|
|
||||||
if errorlevel 0 goto end
|
|
||||||
|
|
||||||
:error
|
|
||||||
echo An error occured while building RTL
|
|
||||||
|
|
||||||
:end
|
|
3
programs/develop/fp/rtl/build.sh
Executable file
3
programs/develop/fp/rtl/build.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
fpcmake -Twin32
|
||||||
|
make
|
@@ -152,5 +152,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if InOutRes <> 0 then
|
if InOutRes <> 0 then
|
||||||
|
begin
|
||||||
FreeMem(KosFile);
|
FreeMem(KosFile);
|
||||||
|
FileRec(f).Handle := DWord(-1);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
{cp866}
|
{utf8}
|
||||||
unit System;
|
unit System;
|
||||||
|
|
||||||
{$i _defines.inc}
|
{$i _defines.inc}
|
||||||
@@ -56,16 +56,16 @@ begin
|
|||||||
begin
|
begin
|
||||||
while Args^ <> #0 do
|
while Args^ <> #0 do
|
||||||
begin
|
begin
|
||||||
{<EFBFBD>ய<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 <20><EFBFBD><E0AEA1><EFBFBD>}
|
{Пропустить лидирующие пробелы}
|
||||||
while Args^ in [#1..#32] do Inc(Args);
|
while Args^ in [#1..#32] do Inc(Args);
|
||||||
if Args^ = #0 then Break;
|
if Args^ = #0 then Break;
|
||||||
|
|
||||||
{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD>}
|
{Запомнить указатель на параметр}
|
||||||
SetLength(Ptrs, Argc);
|
SetLength(Ptrs, Argc);
|
||||||
Ptrs[Argc - 1] := Args;
|
Ptrs[Argc - 1] := Args;
|
||||||
Inc(Argc);
|
Inc(Argc);
|
||||||
|
|
||||||
{<EFBFBD>ய<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⥪<>騩 <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD>}
|
{Пропустить текущий параметр}
|
||||||
InQuotes := False;
|
InQuotes := False;
|
||||||
while (Args^ <> #0) and (not (Args^ in [#1..#32]) or InQuotes) do
|
while (Args^ <> #0) and (not (Args^ in [#1..#32]) or InQuotes) do
|
||||||
begin
|
begin
|
||||||
@@ -73,7 +73,7 @@ begin
|
|||||||
Inc(Args);
|
Inc(Args);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{<EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>砭<EFBFBD><E7A0AD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD>}
|
{Установить окончание параметра}
|
||||||
if Args^ in [#1..#32] then
|
if Args^ in [#1..#32] then
|
||||||
begin
|
begin
|
||||||
Args^ := #0;
|
Args^ := #0;
|
||||||
@@ -81,12 +81,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Argv := GetMem(Argc * SizeOf(PChar)); {XXX: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
Argv := GetMem(Argc * SizeOf(PChar)); {XXX: память не освобождается}
|
||||||
Argv[0] := PKosHeader(0)^.path;
|
Argv[0] := PKosHeader(0)^.path;
|
||||||
for I := 1 to Argc - 1 do
|
for I := 1 to Argc - 1 do
|
||||||
begin
|
begin
|
||||||
Argv[I] := Ptrs[I - 1];
|
Argv[I] := Ptrs[I - 1];
|
||||||
{<EFBFBD>᪫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>窨 <20><> <20><>ப<EFBFBD>}
|
{Исключить кавычки из строки}
|
||||||
Args := Argv[I];
|
Args := Argv[I];
|
||||||
L := 0;
|
L := 0;
|
||||||
while Args^ <> #0 do begin Inc(Args); Inc(L); end;
|
while Args^ <> #0 do begin Inc(Args); Inc(L); end;
|
||||||
@@ -118,7 +118,7 @@ end;
|
|||||||
|
|
||||||
procedure Randomize;
|
procedure Randomize;
|
||||||
begin
|
begin
|
||||||
randseed := 0; {GetTickCount()}
|
randseed := kos_timecounter();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
@@ -136,7 +136,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{$i kos_stdio.inc}
|
{$i kos_stdio.inc}
|
||||||
{-$i kos_term.inc}
|
|
||||||
|
|
||||||
procedure SysInitStdIO;
|
procedure SysInitStdIO;
|
||||||
begin
|
begin
|
||||||
@@ -158,15 +157,15 @@ begin
|
|||||||
begin
|
begin
|
||||||
if ExitCode <> 0 then
|
if ExitCode <> 0 then
|
||||||
begin
|
begin
|
||||||
{XXX: <EFBFBD><EFBFBD>易⥫쭮<EFBFBD> <20><EFBFBD><E1ABAE><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Konsole}
|
{XXX: обязательное условие на однопоточный Konsole}
|
||||||
Write(StdErr, '[Error #', ExitCode,', press any key]');
|
Write(StdErr, '[Error #', ExitCode,', press any key]');
|
||||||
{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
{ожидать нажатия клавиши}
|
||||||
Konsole.KeyPressed;
|
Konsole.KeyPressed;
|
||||||
while Konsole.KeyPressed = 0 do kos_delay(2);
|
while Konsole.KeyPressed = 0 do kos_delay(2);
|
||||||
{TODO: <EFBFBD><EFBFBD><EFBFBD>ࠢ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> Konsole}
|
{TODO: исправить косяк при перерисовке Konsole}
|
||||||
{<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ⠪ <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20>맮<EFBFBD><EBA7AE> <20>⮩ <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>}
|
{это невозможно, так как куча освобождается еще до вызова этой процедуры}
|
||||||
{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <> <20><>ᯥ<EFBFBD><E1AFA5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <><E1ABAE><EFBFBD>}
|
{можно написать свой диспетчер памяти, но это сложно}
|
||||||
{<EFBFBD> <20> <20> Konsole <EFBFBD>ᯮ<EFBFBD>짮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>१ KosAPI?!}
|
{а если в Konsole использовать выделение памяти напрямую через KosAPI?!}
|
||||||
end;
|
end;
|
||||||
Close(StdErr);
|
Close(StdErr);
|
||||||
Close(StdOut);
|
Close(StdOut);
|
||||||
|
@@ -1,12 +1,13 @@
|
|||||||
|
{utf8}
|
||||||
unit sysutils;
|
unit sysutils;
|
||||||
|
|
||||||
{$i _defines.inc}
|
{$i _defines.inc}
|
||||||
|
{$mode objfpc}
|
||||||
|
{$h+}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
{$mode objfpc}
|
|
||||||
{ force ansistrings }
|
{ force ansistrings }
|
||||||
{$h+}
|
|
||||||
|
|
||||||
{$DEFINE HAS_SLEEP}
|
{$DEFINE HAS_SLEEP}
|
||||||
{-$DEFINE HAS_OSERROR}
|
{-$DEFINE HAS_OSERROR}
|
||||||
@@ -150,7 +151,7 @@ begin
|
|||||||
fsFromCurrent: Position := FilePos(FileRecordByHandle(Handle)^.F) + FOffset;
|
fsFromCurrent: Position := FilePos(FileRecordByHandle(Handle)^.F) + FOffset;
|
||||||
fsFromEnd: Position := FileSize(FileRecordByHandle(Handle)^.F) + FOffset;
|
fsFromEnd: Position := FileSize(FileRecordByHandle(Handle)^.F) + FOffset;
|
||||||
end;
|
end;
|
||||||
{TODO: <EFBFBD><EFBFBD>ઠ ᮮ⢥<E1AEAE><E2A2A5>⢨<EFBFBD> [0..filesize]}
|
{TODO: проверка соответствия [0..filesize]}
|
||||||
Seek(FileRecordByHandle(Handle)^.F, Position);
|
Seek(FileRecordByHandle(Handle)^.F, Position);
|
||||||
Result := Position;
|
Result := Position;
|
||||||
end;
|
end;
|
||||||
@@ -175,15 +176,16 @@ function FileExists(const FileName: String): Boolean;
|
|||||||
var
|
var
|
||||||
F: File;
|
F: File;
|
||||||
begin
|
begin
|
||||||
|
{$i-}
|
||||||
Assign(F, FileName);
|
Assign(F, FileName);
|
||||||
try
|
|
||||||
Reset(F);
|
Reset(F);
|
||||||
FileSize(F);
|
if IOResult = 0 then
|
||||||
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
except
|
|
||||||
Result := False;
|
|
||||||
end;
|
|
||||||
Close(F);
|
Close(F);
|
||||||
|
end else
|
||||||
|
Result := False;
|
||||||
|
{$i+}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function DirectoryExists(const Directory: String): Boolean;
|
function DirectoryExists(const Directory: String): Boolean;
|
||||||
|
5
programs/develop/fp/utils/exe2kos/build.bat
Normal file
5
programs/develop/fp/utils/exe2kos/build.bat
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
@echo off
|
||||||
|
fpc -Twin32 exe2kos.pp
|
||||||
|
del *.o
|
||||||
|
del *.ppu
|
||||||
|
move exe2kos.exe ..\..\bin
|
5
programs/develop/fp/utils/exe2kos/build.sh
Executable file
5
programs/develop/fp/utils/exe2kos/build.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
fpc -Tlinux exe2kos.pp &&
|
||||||
|
rm *.o &&
|
||||||
|
rm *.ppu &&
|
||||||
|
mv exe2kos ../../bin
|
Reference in New Issue
Block a user