ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΎΠΊΠ½Π΅ DOS Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΈΠ½ΠΎΠΉ, ΡΠ΅ΠΌ 18.2, ΡΡΠ½ΠΊΡΠΈΡ time() Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ±Π΅Π³Π°ΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΠΊΠ½ΠΎΠΌ.
Π‘ ΡΠ°ΡΡΠΎΡΠΎΠΉ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠ΅ΠΉΡΡ ΠΎΡ 18.2, ΡΡΠ½ΠΊΡΠΈΡ time() ΠΏΠΎΠ΄ DOS Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 1/100 ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΠ΄ Windows ΠΈ FreeBSD ΡΡΠ½ΠΊΡΠΈΡ time() Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ.
ΠΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ex.exe ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π½Ρ. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΎΡΠΊΠ°Π· ex.exe (Ρ.Π΅. Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ "CauseWay..."), ΠΊΠΎΠ³Π΄Π° ΡΠ°ΡΡΠΎΡΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π²ΡΡΠΎΠΊΠ°Ρ, Π²Π°ΠΌ (ΠΈΠ»ΠΈ Π²Π°ΡΠ΅ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ) ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΠΌΠ°ΡΠΈΠ½Ρ, ΡΡΠΎΠ±Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΡΡΠΎΡΡ. ΠΡΠ»ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎΠ³ΠΎ, ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ΄Π΅Ρ Π±ΡΡΡΡΠΎ ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅. ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΡΠ²ΠΎΠΉΡΡΠ²Π΅Π½Π½Π° Windows 95/98/NT ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ DOS ΠΈΠ»ΠΈ Windows 3.1. ΠΠΎ Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡ Π±Π°ΡΠ°ΡΠ΅ΠΉΠ½ΡΠΌΠΈ ΡΠ°ΡΠ°ΠΌΠΈ Π²Π°ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΠ² ΠΌΠ°ΡΠΈΠ½Ρ.
ΠΡΠΈΠΌΠ΅Ρ:
tick_rate(100)
-- time() ΠΈΠ΄ΡΡ Ρ ΡΠ°Π³ΠΎΠΌ .01 ΡΠ΅ΠΊΡΠ½Π΄Ρ
-- Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΡ .055 ΡΠ΅ΠΊΡΠ½Π΄Ρ
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
time, time profiling
time
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
a = time()
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ΄Π°ΡΡ ΡΠΈΡΠ»ΠΎ ΡΠ΅ΠΊΡΠ½Π΄, ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ»ΠΎ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΡΠ°ΡΡΠΊΠ° ΠΊΠΎΠ΄Π° Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ°Π·Π½ΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΎΡΡΡΠ΅ΡΠ°ΠΌΠΈ time(), Π²Π·ΡΡΡΠΌΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΠΊΠΎΠ΄Π°.
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ DOS32 ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 0.05 ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠΎΠ΄ WIN32 ΠΈ Linux/FreeBSD ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 0.01 ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΠΎΠ΄ DOS32 Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ·Π²Π°Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ tick_rate() Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ.
ΠΠΎΠ΄ DOS32 ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ 24 ΡΠ°ΡΠ°ΠΌΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Π°, Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΠ°Ρ time() Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΈ Π½Π°ΡΠ½ΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΡΡΡ. ΠΡΠ»ΠΈ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ Π²ΡΠ·ΡΠ²Π°Π»ΠΈ tick_rate(), ΠΈ ΡΠ°ΡΡΠΎΡΠ° ΡΠ°ΡΠΎΠ² Π±ΡΠ»Π° Π²ΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎΠΉ 18.2/ΡΠ΅ΠΊ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ time() Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΡΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Euphoria ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΡΠ°ΡΠΎΠ² ΠΏΡΡΠΌΠΎ ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ ΠΎΡΡΡΡΡΡ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠΌΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, 32-Π±ΠΈΡΠ½ΠΎΠΉ.
ΠΠΌΡΠ»ΡΡΠΈΡ DOS ΠΏΠΎΠ΄ Windows XP Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½Π°. ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (with profile_time), ΡΡΠ½ΠΊΡΠΈΡ time() ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ². ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠ° ΠΏΠΎΠ΄ Windows ME/98/95.
ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ time() ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΠΎΡΡΡ ΠΎΡΡΡΡΡΠΎΠ² ΠΎΡ time(), ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ ΠΈΡΡΠ΅ΠΊΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ.
ΠΡΠΈΠΌΠ΅Ρ:
constant ITERATIONS = 1000000
integer p
atom t0, loop_overhead
t0 = time()
for i = 1 to ITERATIONS do
-- Π²ΡΠ΅ΠΌΡ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°
end for
loop_overhead = time() - t0
t0 = time()
for i = 1 to ITERATIONS do
p = power(2, 20)
end for
? (time() - t0 - loop_overhead)/ITERATIONS
-- Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ) ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
date, tick_rate
trace
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
with trace
trace(i)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ»ΠΈ i ΡΠ°Π²Π½ΠΎ 1 ΠΈΠ»ΠΈ 2, Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡΠ°Π½Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ°/ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ. ΠΡΠ»ΠΈ i ΡΠ°Π²Π½ΠΎ 3, Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ctrace.out. ΠΡΠ»ΠΈ i ΡΠ°Π²Π½ΠΎ 0, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ. ΠΠΎΠ³Π΄Π° i ΡΠ°Π²Π½ΠΎ 1, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ²Π΅ΡΠ½ΠΎΠ΅. ΠΠΎΠ³Π΄Π° i ΡΠ°Π²Π½ΠΎ 2, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΠΌΠΎΠ½ΠΎΡ ΡΠΎΠΌΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π’ΡΠ°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Ρ Ρ ΠΌΠ΅ΡΠ°ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ "with trace". ΠΡΠΎΡΠ΅Π΄ΡΡΠ° trace() Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄Π°Π²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠ°, Π΅ΡΠ»ΠΈ Π²ΡΠ·Π²Π°Π½Π° Π²Π½Π΅ ΡΡΠ°ΡΡΠΊΠ° Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° "with trace".
Π‘ΠΌ. Π§Π°ΡΡΡ I - 3.1 ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΡΡΠ½ΠΈΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΠΏΠΎ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ trace(2), Π΅ΡΠ»ΠΈ ΡΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΎ.
ΠΡΠ΅ ΡΠΎΡΠΌΡ trace() ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ.
Π’ΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠΌ Ρ Euphoria Π½Π° Π‘ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ trace(3).
ΠΡΠΈΠΌΠ΅Ρ:
if x then
-- Π΄Π°, ΡΡΠΎΡ ΡΡΠ°ΡΡΠΎΠΊ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ...
trace(1)
-- ΠΈ Ρ.Π΄.
...
end if
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
profile, debugging and profiling
...
ΠΎΡ U Π΄ΠΎ Z
unlock_file
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
include file.e
unlock_file(fn, s)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠΏΠΈΡΠ°Π΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΡΠ°ΠΉΠ» fn ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠΎΠΊ ΡΠ°ΠΉΠ»Π° fn. ΠΠ°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ Π·Π°ΠΏΠ΅ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ lock_file(). ΠΠΎΠ΄ DOS32 ΠΈ WIN32 Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΏΠ΅ΡΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°ΡΡΠΎΠΊ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΉΠ»Π°, Π·Π°Π΄Π°Π²Π°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ s Π² Π²ΠΈΠ΄Π΅ {ΠΏΠ΅ΡΠ²ΡΠΉ_Π±Π°ΠΉΡ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ_Π±Π°ΠΉΡ}. ΠΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΡΡΠ°ΡΡΠΎΠΊ Π² ΡΠ°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ Π·Π°ΠΏΠ΅ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ lock_file(). ΠΠΎΠ΄ Linux/FreeBSD Π² Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΎΡΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ ΡΠ°ΠΉΠ» ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. ΠΡΠ³ΡΠΌΠ΅Π½Ρ s Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ ΡΡΠ΄ΠΎΠΌ {}, Π΅ΡΠ»ΠΈ ΠΎΡΠΏΠΈΡΠ°Π΅ΡΡΡ Π²Π΅ΡΡ ΡΠ°ΠΉΠ». ΠΠΎΠ΄ Linux/FreeBSD Π°ΡΠ³ΡΠΌΠ΅Π½Ρ s Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ ΡΡΠ΄ΠΎΠΌ {}.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠΏΠ΅ΡΠ΅ΡΡ Π·Π°ΠΏΠ΅ΡΡΡΠΉ Π²Π°ΠΌΠΈ ΡΠ°ΠΉΠ» ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ (ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ).
ΠΡΠ±ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π·Π°ΠΏΠΈΡΠ°Π΅ΡΠ΅ ΠΈΠ· ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π±ΡΠ΄ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠΏΠ΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π‘ΠΌ. lock_file() Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
lock_file
unregister_block
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
include machine.e (or safe.e)
unregister_block(a)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
Π£Π΄Π°Π»ΡΠ΅Ρ Π±Π»ΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ safe.e (ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ machine.e). Π£ΡΠ°ΡΡΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΡΡΡΠΉ ΡΡΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ a.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠ΅Π»ΡΡ . ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π΅Ρ Π΄Π»Ρ Π²ΡΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠ°Π½Π΅Π΅ Π²Π½Π΅ΡΠ»ΠΈ Π² ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ register_block(). ΠΡΡΠ΅ΡΠΊΠΈΠ²Π°Ρ (ΡΠ΄Π°Π»ΡΡ) Π±Π»ΠΎΠΊ, Π²Ρ ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ Π΅Π³ΠΎ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ safe.e. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡ Π»ΡΠ±ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΠ°ΠΌ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ°.
Π‘ΠΌ. register_block() Π΄Π»Ρ ΡΡΡΠ½Π΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
register_block, safe.e
upper
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
include wildcard.e
x2 = upper(x1)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π°ΡΠΎΠΌ ΠΈΠ»ΠΈ ΡΡΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π° Π»Π°ΡΠΈΠ½ΡΠΊΠΎΠΌ Π°Π»ΡΠ°Π²ΠΈΡΠ΅ ΠΊ Π²Π΅ΡΡ Π½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ:
s = upper("Euphoria")
-- s ΡΠ°Π²Π½ΠΎ "EUPHORIA"
a = upper('g')
-- a ΡΠ°Π²Π½ΠΎ 'G'
s = upper({"Euphoria", "Programming"})
-- s ΡΠ°Π²Π½ΠΎ {"EUPHORIA", "PROGRAMMING"}
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
lower
use_vesa
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°:
DOS32
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
include machine.e
use_vesa(i)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
use_vesa(1) ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Ρ Euphoria Π² ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° VESA. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Euphoria Π² ΡΠ΅ΠΆΠΈΠΌΠ°Ρ SVGA Π³ΡΠ°ΡΠΈΠΊΠΈ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π°ΡΠ°ΠΌΠΈ. use_vesa(0) Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Euphoria ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π°ΡΠ°ΠΌΠΈ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Euphoria ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π½Π° ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΡ SVGA, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ use_vesa(1) Π² Π½Π°ΡΠ°Π»Π΅ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ Π»ΡΠ±ΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ graphics_mode().
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² use_vesa(), ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ ΠΎΡ 0 ΠΈΠ»ΠΈ 1, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ:
use_vesa(1)
fail = graphics_mode(261)
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
graphics_mode
value
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
include get.e
s = value(st)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
Π§ΠΈΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Euphoria ΠΈ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ. ΠΡΠ΄Π°ΡΡ 2-Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΡΡΠ΄ Π²ΠΈΠ΄Π° {error_status, Π²Π΅Π»ΠΈΡΠΈΠ½Π°}, Π³Π΄Π΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ error_status ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·:
GET_SUCCESS -- Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π·Π°ΠΊΠΎΠ½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
GET_EOF -- ΠΊΠΎΠ½Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΡΡΡΡΠΎ
GET_FAIL -- Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ get(), Π½ΠΎ ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΏΠΎΠ΄Π°ΡΡΠ΅, Π° Π½Π΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΈ Π½Π΅ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Euphoria value() ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ Π»ΡΠ±ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΡΡΡΠΎΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "36" ΠΈ "36P" - ΠΎΠ±Π° ΡΠ»ΡΡΠ°Ρ Π΄Π°Π΄ΡΡ Π²Π°ΠΌ {GET_SUCCESS, 36}.
ΠΡΠΈΠΌΠ΅Ρ 1:
s = value("12345"}
-- s ΡΠ°Π²Π½ΠΎ {GET_SUCCESS, 12345}
ΠΡΠΈΠΌΠ΅Ρ 2:
s = value("{0, 1, -99.9}")
-- s ΡΠ°Π²Π½ΠΎ {GET_SUCCESS, {0, 1, -99.9}}
ΠΡΠΈΠΌΠ΅Ρ 3:
s = value("+++")
-- s ΡΠ°Π²Π½ΠΎ {GET_FAIL, 0}
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
get, sprintf, print
video_config
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
include graphics.e
s = video_config()
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ΄Π°ΡΡ ΡΡΠ΄ Π²Π΅Π»ΠΈΡΠΈΠ½, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²Π°ΡΠ΅ΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ:
{ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡ?, Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ, ΡΠΈΡΠ»ΠΎ ΡΡΡΠΎΠΊ ΡΠ΅ΠΊΡΡΠ°, ΡΠΈΡΠ»ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΡΠ΅ΠΊΡΡΠ°, ΡΠΈΡΠ»ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ, ΡΠΈΡΠ»ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ, ΡΠΈΡΠ»ΠΎ ΡΠ²Π΅ΡΠΎΠ², ΡΠΈΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΈΡ}.
Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ graphics.e ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ:
global constant
VC_COLOR = 1,
VC_MODE = 2,
VC_LINES = 3,
VC_COLUMNS = 4,
VC_XPIXELS = 5,
VC_YPIXELS = 6,