/programs/develop/fp/examples/_build.bat |
---|
File deleted |
/programs/develop/fp/examples/ray.bat |
---|
File deleted |
/programs/develop/fp/examples/example.pp |
---|
File deleted |
/programs/develop/fp/examples/build |
---|
Property changes: |
Deleted: svn:ignore |
-*.exe |
-*.kex |
-*.a |
-*.o |
-*.ppu |
-*.log |
/programs/develop/fp/examples/example.bat |
---|
File deleted |
/programs/develop/fp/examples/ray.pp |
---|
File deleted |
/programs/develop/fp/examples/Makefile.fpc |
---|
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)/$^ |
/programs/develop/fp/examples/readme-ru.txt |
---|
1,0 → 0,0 |
«ï ç « ¥®¡å®¦¨¬® ᮡà âì RTL ¨ ã⨫¨âã exe2kos. |
«ï ç « ¥®¡å®¦¨¬® ᮡà âì RTL (../rtl/build.sh ¨«¨ ..\rtl\build.bat) ¨ |
ã⨫¨âã exe2kos (../utils/exe2kos/build.sh ¨«¨ ..\utils\exe2kos\exe2kos.bat). |
¡¥¤¨â¥áì çâ®, ®â®á¨â¥«ì® ¤ ®© ¯ ¯ª¨, áãé¥áâ¢ãîâ ä ©« ../bin/exe2kos ¤«ï |
Linux ¨«¨ ..\bin\exe2kos.exe ¤«ï Windows. ª ¦¥ ã¡¥¤¨â¥áì çâ® áãé¥áâ¢ã¥â ¥ |
¯ãáâ ï ¤¨à¥ªâ®à¨ï ../units/rtl ¤«ï Linux ¨«¨ ..\units\rtl ¤«ï Windows. |
¥à¥¬¥ ï ®ªà㦥¨ï FPCDIR ¤®«¦ 㪠§ë¢ âì ¯ ¯ªã á FreePascal (¯ãâì |
㪠§ë¢ ¥âáï ¡¥§ § ¢¥àè î饣® á«íè ¨«¨ ®¡à ⮣® á«íè ). |
¥à¥¬¥ ï ®ªà㦥¨ï KFPCDIR ¤®«¦ 㪠§ë¢ âì ¯ ¯ªã á ¯à®¥ªâ®¬ KolibriOS |
FreePascal (¯ãâì 㪠§ë¢ ¥âáï ¡¥§ § ¢¥àè î饣® á«íè ¨«¨ ®¡à ⮣® á«íè ). í⮩ |
¯ ¯ª¥ ¤®«¦ë 室¨âìáï â ª¨¥ ¤¨à¥ªâ®à¨¨: bin, examples, rtl, units, utils. |
®á«¥ í⮣® ¢ë¯®«¨â¥ á«¥¤ãî騥 ª®¬ ¤ë ¢ ¤ ®© ¯ ¯ª¥ (¡¥§ § ª $ ¨ ¯à®¡¥« |
¯®á«¥ ¥£®): |
$ fpcmake -Twin32 |
$ make |
᫨ ¢ë ¢á¥ ᤥ« ¨ ¯à ¢¨«ì®, â® ¢ ¯ ¯ª¥ bin ¯®ï¢ïâáï ¨á¯®«ï¥¬ë¥ ä ©«ë á |
à áè¨à¥¨¥¬ kex. |
build - ¢à¥¬¥ ï ¯ ¯ª , ¨á¯®«ì§ã¥¬ ï ¯à¨ á¡®àª¥, ¬®¦¥â¥ 㤠«¨âì ¥ñ. |
/programs/develop/fp/examples/src/example.pp |
---|
0,0 → 1,98 |
{ FreePascal 2.2.0 ª®¤¨à®¢ª cp866 ¥ ॠ«¨§®¢ . } |
{-$codepage cp866} |
{$mode objfpc} |
{$smartlink on} |
{$apptype gui} |
program Example; |
{ ᥠäãªæ¨¨ ¨¬¥î騥 ¢ ᢮¥¬ ¨¬¥¨ ¯à¥ä¨ªá 'kos_' ïîâáï ¯« âä®à¬®§ ¢¨á¨¬ë¬¨ |
¨ ॠ«¨§®¢ ë ⮫쪮 ¤«ï KolibriOS. å ¨á¯®«ì§®¢ ¨¥ ¢ «î¡ëå ¯à®£à ¬¬ëå |
¯à¨«®¦¥¨ïå ª ⥣®à¨ç¥áª¨ ¥ ४®¬¥¤®¢ ®, ¢ë®á¨â¥ ¢á¥ ¬¥â®¤ë, ¨á¯®«ì§ãî騥 |
í⨠äãªæ¨¨, ¢ ®â¤¥«ìë¥ ¬®¤ã«¨ (¨ ¨á¯®«ì§ã©â¥ ¥®¡å®¤¨¬ë¥ ¡áâà ªæ¨¨). } |
procedure DoPaint; |
{ 뢮¤ ᮤ¥à¦¨¬®£® ®ª ¯à¨«®¦¥¨ï } |
begin |
kos_begindraw(); |
{ ®¯à¥¤¥«¥¨¥ ¯ à ¬¥â஢ ®ª } |
kos_definewindow(200, 200, 200, 50, $23AABBCC); |
{ kos_definewindow ¥ ¨¬¥¥â ¯ à ¬¥âà ¤«ï ¢ë¢®¤ § £®«®¢ª , |
¤¥« ¥¬ íâ® ®â¤¥«ì®© äãªæ¨¥© kos_setcaption } |
{ ®â®¡à ¦¥¨¥ § £®«®¢ª ®ª } |
kos_setcaption(' '); |
{ ¢ë¢®¤ á®®¡é¥¨ï } |
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_speaker(@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 := True; |
{ ®¦¨¤ ¥¬ ᮡëâ¨ï ®â á¨á⥬ë } |
Event := kos_getevent(); |
case Event of |
SE_PAINT : DoPaint; { ¯¥à¥à¨á®¢ª ®ª } |
SE_KEYBOARD: DoKey; { ᮡë⨥ ®â ª« ¢¨ âãàë } |
SE_BUTTON : Result := DoButton; { ᮡë⨥ ®â ª®¯ª¨, ¬®¦¥â ®¯à¥¤¥«¨âì |
§ ¢¥à襨¥ ¯à¨«®¦¥¨ï, ¥á«¨ ¢¥à¥â False } |
end; |
end; |
{ « ¢ë© 横« ¯à¨«®¦¥¨ï } |
var |
ThreadSlot: TThreadSlot; |
begin |
{ áâà ¨¢ ¥¬ ᮡëâ¨ï, ª®â®àë¥ ¬ë £®â®¢ë ®¡à ¡ âë¢ âì } |
kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON); |
{ ®¡à ¡®âª ᮡë⨩ } |
while ProcessMessage do; |
end. |
/programs/develop/fp/examples/src/ray.pp |
---|
0,0 → 1,256 |
{ FreePascal 2.2.0 ª®¤¨à®¢ª cp866 ¥ ॠ«¨§®¢ . } |
{-$codepage cp866} |
{$mode objfpc} |
{$apptype gui} |
{$r-} |
program Ray; |
const |
MSG_PRESSKEY = ' ¦¬¨ ª®¯ªã...'; |
MSG_USAGE = '«ï ¯¥à¥¬¥è¥¨ï ¨ ¢à è¥¨ï ¨á¯®«ì§ã© áâ५ª¨'; |
WIDTH = 320; |
HEIGHT = 200; |
COLORS = 128; |
FlatPalette: array[1..COLORS * 3] of Byte = ( |
0,10,20,48,48,48,1,0,43,1,3,43,2,5,44,2,7,44,3,9,45,4,11,46,5,13,47,6,15,48, |
7,17,49,8,19,50,9,21,51,10,22,52,11,24,52,12,26,54,13,28,54,14,30,56,15,32, |
56,16,34,58,17,34,58,17,36,58,18,38,60,19,40,60,20,42,62,21,44,62,10,31,0, |
11,31,0,11,31,1,11,32,1,12,32,1,12,32,2,12,33,2,13,33,2,14,33,3,15,33,3,15, |
34,3,15,34,4,15,35,4,16,35,4,16,35,5,16,36,5,17,36,5,17,36,6,18,37,6,18,38, |
7,19,38,8,20,39,8,20,40,9,21,40,10,22,41,10,22,42,11,23,42,12,24,43,12,24, |
44,13,25,44,14,25,45,14,26,46,15,27,46,16,27,47,17,28,47,18,28,48,19,29,49, |
19,30,49,20,30,50,21,31,51,21,32,51,22,32,52,23,33,53,23,34,53,24,34,54,25, |
35,55,25,36,55,26,36,56,27,37,57,27,38,57,27,39,57,27,41,57,27,42,57,27,43, |
57,27,44,57,27,45,57,27,46,57,27,47,57,27,49,57,27,50,57,27,51,57,27,52,57, |
27,53,57,27,55,57,27,56,57,27,57,57,27,58,57,27,58,57,26,58,57,25,58,57,24, |
58,56,23,58,55,22,58,54,20,58,53,19,58,51,18,58,50,17,58,50,16,58,49,15,58, |
48,14,58,47,13,58,46,12,58,45,11,58,44,11,58,44,10,58,43,10,58,42,9,57,41, |
8,57,40,8,56,39,7,56,38,6,55,37,5,55,35,4,54,33,4,54,31,2,32,32,32,63,63,63, |
63,63,63,63,63,63,63,63,63,48,48,48,63,63,63,63,63,63); |
type |
TRGBColor = packed record |
R, G, B: Byte; |
end; |
PRGBPalette = ^TRGBPalette; |
TRGBPalette = array[0..COLORS - 1] of TRGBColor; |
PRGBBuffer = ^TRGBBuffer; |
TRGBBuffer = array[0..HEIGHT - 1, 0..WIDTH - 1] of TRGBColor; |
lrgarr = array[Word] of Byte; |
sq = array[0..254, 0..255] of Byte; |
var |
mp: ^lrgarr; |
rng: array[0..320] of Byte; |
fcos, fsin: array[0..359] of Integer; |
RGBBuffer : PRGBBuffer; |
RGBPalette: TRGBPalette absolute FlatPalette; |
Message: String = ''; |
function NCol(mc, n, dvd: Longint): Byte; |
var |
loc: Byte; |
begin |
loc := Byte((mc + n - Random(2 * n)) div dvd); |
if loc > 100 then Result := 100 else |
if loc < 5 then Result := 5 else |
Result := loc; |
end; |
procedure Plasma(x1, y1, x2, y2: Word); |
var |
xn, yn, dxy : Word; |
p1, p2, p3, p4: Word; |
begin |
if (x2 - x1 > 1) or (y2 - y1 > 1) then |
begin |
p1 := mp^[Word(y1 shl 8 + x1)]; |
p2 := mp^[Word(y2 shl 8 + x1)]; |
p3 := mp^[Word(y1 shl 8 + x2)]; |
p4 := mp^[Word(y2 shl 8 + x2)]; |
xn := (x2 + x1) shr 1; |
yn := (y2 + y1) shr 1; |
dxy:= 5 * (x2 - x1 + y2 - y1) div 3; |
if mp^[y1 shl 8 + xn] = 0 then mp^[Word(y1 shl 8 + xn)] := NCol(p1 + p3, dxy, 2); |
if mp^[yn shl 8 + x1] = 0 then mp^[Word(yn shl 8 + x1)] := NCol(p1 + p2, dxy, 2); |
if mp^[yn shl 8 + x2] = 0 then mp^[Word(yn shl 8 + x2)] := NCol(p3 + p4, dxy, 2); |
if mp^[y2 shl 8 + xn] = 0 then mp^[Word(y2 shl 8 + xn)] := NCol(p2 + p4, dxy, 2); |
mp^[Word(yn shl 8 + xn)] := NCol(p1 + p2 + p3 + p4, dxy, 4); |
Plasma(x1, y1, xn, yn); |
Plasma(xn, y1, x2, yn); |
Plasma(x1, yn, xn, y2); |
Plasma(xn, yn, x2, y2); |
end; |
end; |
procedure Draw(xp, yp, dir: Integer); |
var |
z, zobs : Integer; |
ix, iy, iy1, iyp, ixp : Integer; |
x, y : Integer; |
s, csf, snf, mpc, i, j: Integer; |
begin |
while dir < 0 do Inc(dir, SizeOf(fcos)); |
while dir >= SizeOf(fcos) do Dec(dir, SizeOf(fcos)); |
FillChar(rng, SizeOf(rng), 200); |
FillChar(RGBBuffer^, SizeOf(RGBBuffer^), 0); |
zobs := 300 + mp^[Word(yp shl 8 + xp)]; |
csf := fcos[dir]; |
snf := fsin[dir]; |
for iy := yp to yp+150 do |
begin |
iy1 := 1 + 2 * (iy - yp); |
s := 4 + 300 div iy1; |
for ix := xp + yp - iy to xp - yp + iy do |
begin |
ixp := xp + ((ix - xp) * csf + (iy - yp) * snf) shr 8; |
iyp := yp + ((iy - yp) * csf - (ix - xp) * snf) shr 8; |
x := 160 + 360 * (ix - xp) div iy1; |
if (x >= 0) and (x + s < 319) then |
begin |
z := mp^[Word(iyp shl 8 + ixp)]; |
mpc := z shr 1; |
if z < 40 then z := 40; |
y := 100 + (zobs - z) * 30 div iy1; |
if (y < 200) and (y >= 0) then |
for j := x to x + s do |
if y < rng[j] then |
begin |
for i := y to rng[j] do |
RGBBuffer^[i - 1, j] := RGBPalette[mpc]; |
rng[j] := y; |
end; |
end; |
end; |
end; |
end; |
procedure Paint; |
begin |
kos_begindraw(); |
kos_definewindow(100, 100, WIDTH - 1, HEIGHT - 1, $01000000); |
kos_drawimage24(0, 0, WIDTH, HEIGHT, RGBBuffer); |
if Message <> '' then |
kos_drawtext(12, HEIGHT - 12 - 9, Message, $00FF00, $FF000000); |
kos_enddraw(); |
end; |
function ReadKey: Char; |
var |
Event: Word; |
begin |
kos_maskevents(ME_PAINT or ME_KEYBOARD); |
repeat |
Event := kos_getevent(); |
if Event = SE_PAINT then Paint; |
until Event = SE_KEYBOARD; |
Result := Chr(kos_getkey() shr 8); |
end; |
procedure Pause; |
begin |
kos_maskevents(ME_PAINT or ME_KEYBOARD); |
Message := MSG_PRESSKEY; |
Paint; |
ReadKey; |
end; |
var |
dir, i, j, x, y: Longint; |
C: Char; |
B: Byte; |
Terminate: Boolean; |
begin |
{ â ¡«¨æë § 票© á¨ãá ¨ ª®á¨ãá } |
for i := 0 to 359 do |
begin |
fcos[i] := Trunc(256 * Cos(i / 180 * Pi)); |
fsin[i] := Trunc(256 * Sin(i / 180 * Pi)); |
end; |
{ ᮧ¤ ¥¬ ¡ãä¥à á íä䥪⮬ "¯« §¬ " } |
New(mp); |
FillChar(mp^, SizeOf(mp^), 0); |
mp^[$0000] := 128; |
Plasma(0, 0, 256, 256); |
{ ᮧ¤ ¥¬ "¯ãá⮩" ¡ãä¥à ª ¤à } |
New(RGBBuffer); |
FillChar(RGBBuffer^, SizeOf(RGBBuffer^), 0); |
{ ¯à¥®¡à §®¢ ¨¥ ¯ «¨âàë ¨§ 63 ¢ 255 } |
for i := 0 to COLORS - 1 do |
begin |
B := Round(RGBPalette[i].R / 63 * 255); |
RGBPalette[i].R := Round(RGBPalette[i].B / 63 * 255); |
RGBPalette[i].G := Round(RGBPalette[i].G / 63 * 255); |
RGBPalette[i].B := B; |
end; |
for j := 0 to 199 do |
for i := 0 to 255 do |
RGBBuffer^[j, i + (WIDTH - 256) shr 1] := RGBPalette[sq(Pointer(mp)^)[j, i]]; |
Pause; |
x := 0; |
y := 0; |
dir := 0; |
Message := MSG_USAGE; |
Terminate := False; |
while not Terminate do |
begin |
dir := dir mod 360; |
if dir < 0 then dir := 360 + dir; |
Draw(x, y, dir); |
Paint; |
C := ReadKey; |
if C = #$B0 then Dec(dir, 13) else |
if C = #$B3 then Inc(dir, 13) else |
if C = #$B2 then |
begin |
y := y + fcos[dir] shr 6; |
x := x + fsin[dir] shr 6; |
end else |
if C = #$B1 then |
begin |
y := y - fcos[dir] shr 6; |
x := x - fsin[dir] shr 6; |
end; |
if C = #27 then Terminate := True; |
end; |
end. |
/programs/develop/fp/rtl/Makefile.fpc |
---|
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 |
/programs/develop/fp/rtl/build.bat |
---|
1,21 → 1,3 |
@echo off |
set FPRTL={FreePascal RTL source code, example c:\fp\src\rtl} |
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 |
fpcmake -Twin32 |
make |
/programs/develop/fp/rtl/build.sh |
---|
0,0 → 1,3 |
#!/bin/sh |
fpcmake -Twin32 |
make |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/programs/develop/fp/rtl/sysfile.inc |
---|
152,5 → 152,8 |
end; |
if InOutRes <> 0 then |
begin |
FreeMem(KosFile); |
FileRec(f).Handle := DWord(-1); |
end; |
end; |
/programs/develop/fp/rtl/system.pp |
---|
1,4 → 1,4 |
{cp866} |
{utf8} |
unit System; |
{$i _defines.inc} |
56,16 → 56,16 |
begin |
while Args^ <> #0 do |
begin |
{யãáâ¨âì «¨¤¨àãî騥 ¯à®¡¥«ë} |
{Пропустить лидирующие пробелы} |
while Args^ in [#1..#32] do Inc(Args); |
if Args^ = #0 then Break; |
{ ¯®¬¨âì 㪠§ â¥«ì ¯ à ¬¥âà} |
{Запомнить указатель на параметр} |
SetLength(Ptrs, Argc); |
Ptrs[Argc - 1] := Args; |
Inc(Argc); |
{யãáâ¨âì ⥪ã騩 ¯ à ¬¥âà} |
{Пропустить текущий параметр} |
InQuotes := False; |
while (Args^ <> #0) and (not (Args^ in [#1..#32]) or InQuotes) do |
begin |
73,7 → 73,7 |
Inc(Args); |
end; |
{áâ ®¢¨âì ®ª®ç ¨¥ ¯ à ¬¥âà } |
{Установить окончание параметра} |
if Args^ in [#1..#32] then |
begin |
Args^ := #0; |
81,12 → 81,12 |
end; |
end; |
end; |
Argv := GetMem(Argc * SizeOf(PChar)); {XXX: ¯ ¬ïâì ¥ ®á¢®¡®¦¤ ¥âáï} |
Argv := GetMem(Argc * SizeOf(PChar)); {XXX: память не освобождается} |
Argv[0] := PKosHeader(0)^.path; |
for I := 1 to Argc - 1 do |
begin |
Argv[I] := Ptrs[I - 1]; |
{᪫îç¨âì ª ¢ë窨 ¨§ áâப¨} |
{Исключить кавычки из строки} |
Args := Argv[I]; |
L := 0; |
while Args^ <> #0 do begin Inc(Args); Inc(L); end; |
118,7 → 118,7 |
procedure Randomize; |
begin |
randseed := 0; {GetTickCount()} |
randseed := kos_timecounter(); |
end; |
const |
136,7 → 136,6 |
end; |
{$i kos_stdio.inc} |
{-$i kos_term.inc} |
procedure SysInitStdIO; |
begin |
158,15 → 157,15 |
begin |
if ExitCode <> 0 then |
begin |
{XXX: ®¡ï§ ⥫쮥 ãá«®¢¨¥ ®¤®¯®â®çë© Konsole} |
{XXX: обязательное условие на однопоточный Konsole} |
Write(StdErr, '[Error #', ExitCode,', press any key]'); |
{®¦¨¤ âì ¦ â¨ï ª« ¢¨è¨} |
{ожидать нажатия клавиши} |
Konsole.KeyPressed; |
while Konsole.KeyPressed = 0 do kos_delay(2); |
{TODO: ¨á¯à ¢¨âì ª®áïª ¯à¨ ¯¥à¥à¨á®¢ª¥ Konsole} |
{íâ® ¥¢®§¬®¦®, â ª ª ª ªãç ®á¢®¡®¦¤ ¥âáï ¥é¥ ¤® ¢ë§®¢ í⮩ ¯à®æ¥¤ãàë} |
{¬®¦® ¯¨á âì ᢮© ¤¨á¯¥âç¥à ¯ ¬ïâ¨, ® íâ® á«®¦®} |
{ ¥á«¨ ¢ Konsole ¨á¯®«ì§®¢ âì ¢ë¤¥«¥¨¥ ¯ ¬ï⨠¯àï¬ãî ç¥à¥§ KosAPI?!} |
{TODO: исправить косяк при перерисовке Konsole} |
{это невозможно, так как куча освобождается еще до вызова этой процедуры} |
{можно написать свой диспетчер памяти, но это сложно} |
{а если в Konsole использовать выделение памяти напрямую через KosAPI?!} |
end; |
Close(StdErr); |
Close(StdOut); |
/programs/develop/fp/rtl/sysutils.pp |
---|
1,12 → 1,13 |
{utf8} |
unit sysutils; |
{$i _defines.inc} |
{$mode objfpc} |
{$h+} |
interface |
{$mode objfpc} |
{ force ansistrings } |
{$h+} |
{$DEFINE HAS_SLEEP} |
{-$DEFINE HAS_OSERROR} |
150,7 → 151,7 |
fsFromCurrent: Position := FilePos(FileRecordByHandle(Handle)^.F) + FOffset; |
fsFromEnd: Position := FileSize(FileRecordByHandle(Handle)^.F) + FOffset; |
end; |
{TODO: ¯à®¢¥àª ᮮ⢥âá⢨ï [0..filesize]} |
{TODO: проверка соответствия [0..filesize]} |
Seek(FileRecordByHandle(Handle)^.F, Position); |
Result := Position; |
end; |
175,16 → 176,17 |
var |
F: File; |
begin |
{$i-} |
Assign(F, FileName); |
try |
Reset(F); |
FileSize(F); |
if IOResult = 0 then |
begin |
Result := True; |
except |
Close(F); |
end else |
Result := False; |
{$i+} |
end; |
Close(F); |
end; |
function DirectoryExists(const Directory: String): Boolean; |
begin |
/programs/develop/fp/utils/exe2kos/build.bat |
---|
0,0 → 1,5 |
@echo off |
fpc -Twin32 exe2kos.pp |
del *.o |
del *.ppu |
move exe2kos.exe ..\..\bin |
/programs/develop/fp/utils/exe2kos/build.sh |
---|
0,0 → 1,5 |
#!/bin/sh |
fpc -Tlinux exe2kos.pp && |
rm *.o && |
rm *.ppu && |
mv exe2kos ../../bin |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |