Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Euphoria. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 30

Автор W Cat

-- Ρ†Π²Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ 0 (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΉ) ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π½Π° ΠΎΡ‚Ρ‚Π΅Π½ΠΎΠΊ

-- Π·Π΅Π»Π΅Π½ΠΎΠ²Π°Ρ‚ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°.


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

all_palette


peek


Бинтаксис:

i = peek(a)

ΠΈΠ»ΠΈ ...

s = peek({a, i})

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π±Π°ΠΉΡ‚Π° (Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 0 Π΄ΠΎ 255), считанного ΠΈΠ· памяти ΠΏΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ адрСсу a, ΠΈΠ»ΠΈ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ряд, содСрТащий i ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² памяти с адрСса a.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π’Π°ΠΊ ΠΊΠ°ΠΊ значСния адрСсов Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ числами, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ большС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, прСдставимой Ρ‚ΠΈΠΏΠΎΠΌ integer (31 Π±ΠΈΡ‚). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат адрСса, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ atom.

Π‘ΠΎΠ»Π΅Π΅ быстрым, Ρ‡Π΅ΠΌ ΠΏΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠ΅ считываниС Π² Ρ†ΠΈΠΊΠ»Π΅, являСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ΠΎΠ² сразу с использованиСм Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ peek().

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ peek() подаётся СдинствСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ являСтся двухэлСмСнтным рядом.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹:


-- ΠΌΠ΅Ρ‚ΠΎΠ΄ 1

s = {peek(100), peek(101), peek(102), peek(103)}


-- ΠΌΠ΅Ρ‚ΠΎΠ΄ 2

s = peek({100, 4})


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

poke, peek4s, peek4u, allocate, free, allocate_low, free_low, call


peek4s


Бинтаксис:

a2 = peek4s(a1)

ΠΈΠ»ΠΈ ...

s = peek4s({a1, i})

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ 4-Ρ… Π±Π°ΠΉΡ‚Π½ΡƒΡŽ (32 Π±ΠΈΡ‚Π°) Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ со Π·Π½Π°ΠΊΠΎΠΌ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ -2147483648 Π΄ΠΎ +2147483647, ΡΡ‡ΠΈΡ‚Π°Π½Π½ΡƒΡŽ с машинного адрСса a1, ΠΈΠ»ΠΈ ряд, содСрТащий i ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… 4-Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ со Π·Π½Π°ΠΊΠΎΠΌ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ с адрСса a1 Π² памяти.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

32-Ρ… Π±ΠΈΡ‚Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ peek4s(), ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ допустимыС для Ρ‚ΠΈΠΏΠ° integer Π² Euphoria (31-Π±ΠΈΡ‚), поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° atom.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ адрСса ΡΠ²Π»ΡΡŽΡ‚ΡΡ 32-Ρ… Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ числами, ΠΈΡ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ для Ρ‚ΠΈΠΏΠ° integer Euphoria. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ адрСса, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ atom.

Π‘ΠΎΠ»Π΅Π΅ быстрым, Ρ‡Π΅ΠΌ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ 4-Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ Π² Ρ†ΠΈΠΊΠ»Π΅, являСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… 4-Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ сразу с использованиСм Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ peek4s().

НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ peek4s() Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ СдинствСнного Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ являСтся 2-Ρ… элСмСнтным рядом.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹:


-- ΠΌΠ΅Ρ‚ΠΎΠ΄ 1

s = {peek4s(100), peek4s(104), peek4s(108), peek4s(112)}


-- ΠΌΠ΅Ρ‚ΠΎΠ΄ 2

s = peek4s({100, 4})


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

peek4u, peek, poke4, allocate, free, allocate_low, free_low, call


peek4u


Бинтаксис:

a2 = peek4u(a1)

ΠΈΠ»ΠΈ ...

s = peek4u({a1, i})

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ 4-Ρ… Π±Π°ΠΉΡ‚Π½ΡƒΡŽ (32 Π±ΠΈΡ‚Π°) Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 4294967295, Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ адрСсу a1, ΠΈΠ»ΠΈ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ряд ΠΈΠ· i Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с адрСса a1 Π² памяти.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

32-Ρ… битная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, выдаваСмая peek4u(), ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ для Ρ‚ΠΈΠΏΠ° integer Π² Euphoria (31 Π±ΠΈΡ‚), поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° atom.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ адрСса ΡΠ²Π»ΡΡŽΡ‚ΡΡ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ числами, ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° integer Euphoria. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТатся адрСса, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ atom.

Π‘ΠΎΠ»Π΅Π΅ быстрым являСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… 4-Ρ… Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ сразу с использованиСм Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ peek4u(), Ρ‡Π΅ΠΌ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ Π² Ρ†ΠΈΠΊΠ»Π΅.

НС упускайтС ΠΈΠ· Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ peek4u() Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ СдинствСнного Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ для Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ являСтся 2-Ρ… элСмСнтным рядом.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹:


-- ΠΌΠ΅Ρ‚ΠΎΠ΄ 1

s = {peek4u(100), peek4u(104), peek4u(108), peek4u(112)}


-- ΠΌΠ΅Ρ‚ΠΎΠ΄ 2

s = peek4u({100, 4})


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

peek4s, peek, poke4, allocate, free, allocate_low, free_low, call


PI


Бинтаксис:

include misc.e

PI

ОписаниС:

PI (3.14159...) число Пи ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ глобальная константа.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎΠ΅ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ число Π·Π½Π°ΠΊΠΎΠ² Пи обСспСчиваСт ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ вычислСний, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ для Ρ‚ΠΈΠΏΠ° atom Π² Euphoria.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


x = PI -- x Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 3.14159...


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

sin, cos, tan


pixel


ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°:

DOS32

Бинтаксис:

pixel(x1, s)

ОписаниС:

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько пиксСлов Π½Π° пиксСльно-графичСском экранС, начиная с Ρ‚ΠΎΡ‡ΠΊΠΈ s, Π³Π΄Π΅ s являСтся 2-Ρ… элСмСнтным рядом экранных ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ {x, y}. Если x1 являСтся Π°Ρ‚ΠΎΠΌΠΎΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ пиксСл с Ρ†Π²Π΅Ρ‚ΠΎΠΌ x1. Если x1 являСтся рядом, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ряд пиксСлов, начиная с Ρ‚ΠΎΡ‡ΠΊΠΈ s ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ (возрастаСт x, y постоянноС).

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Когда x1 являСтся рядом, примСняСтся вСсьма быстрый Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ пиксСлов Π½Π° экранС. Он Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… пиксСлов Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ²Ρ‹ pixel() Π² Ρ†ΠΈΠΊΠ»Π΅. Задавая сразу ряд Ρ†Π²Π΅Ρ‚ΠΎΠ² пиксСлов, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ быстрСС нарисуСтС ΠΈΡ… Π½Π° экранС.

Π’ графичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ 19 ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° pixel() особСнно быстрая.

Π’Π΅ пиксСлы, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… уходят Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ экрана, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:


pixel(BLUE, {50, 60})

-- Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ {50,60} Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ пиксСл с Ρ†Π²Π΅Ρ‚ΠΎΠΌ BLUE(синий)


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:


pixel({BLUE, GREEN, WHITE, RED}, {50,60})

-- {50,60} Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ BLUE (синий)

-- {51,60} Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ GREEN (Π·Π΅Π»Ρ‘Π½Ρ‹ΠΉ)

-- {52,60} Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ WHITE (Π±Π΅Π»Ρ‹ΠΉ)

-- {53,60} Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ RED (красный)


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

get_pixel, graphics_mode


platform


Бинтаксис:

i = platform()

ОписаниС:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ platform(), встроСно Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, с ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ для DOS32, WIN32, Linux ΠΈΠ»ΠΈ FreeBSD.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Когда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ex.exe, считаСтся, Ρ‡Ρ‚ΠΎ опСрационная систСма DOS32. Когда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ exw.exe, опСрационная систСма WIN32. Когда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ exu, опСрационная систСма Linux (ΠΈΠ»ΠΈ FreeBSD).

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ misc.e ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ константы:


global constant DOS32 = 1,

WIN32 = 2,

LINUX = 3,

FREEBSD = 3


Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ platform(), ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² зависимости ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π² срСдС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния констант Π±ΡƒΠ΄ΡƒΡ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Euphoria ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ освоСния Π΄Ρ€ΡƒΠ³ΠΈΡ… машин ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ platform() Π½Π΅ Π²Π»Π΅Ρ‡Ρ‘Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… расходов. Π’ΠΎ врСмя компиляции просто вырабатываСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ цСлочислСнная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°: 1, 2 ΠΈΠ»ΠΈ 3.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


if platform() = WIN32 then

-- Π²Ρ‹Π·ΠΎΠ² систСмной ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Beep ΠΏΠΎΠ΄ Windows

err = c_func(Beep, {0,0})

elsif platform() = DOS32 then

-- запуск Π·Π²ΡƒΠΊΠ° Π½Π° встроСнном Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ΅ ΠΏΠΎΠ΄ DOS

sound(500)

t = time()

while time() do

end while

sound(0)

else

-- пропуск ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ΄ Linux/FreeBSD

end if


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

platformr.doc


poke


Бинтаксис:

poke(a, x)

ОписаниС:

Если x являСтся Π°Ρ‚ΠΎΠΌΠΎΠΌ, Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎ адрСсу a записываСтся ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚. Если ΠΆΠ΅ x являСтся рядом, Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, начиная с адрСса a, записываСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ², прСдставлСнная этим рядом.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π’ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ младшиС 8 Π±ΠΈΡ‚ΠΎΠ² Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ x, Ρ‚.Π΅. remainder(x, 256), Π° Π½Π΅ сама Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ….

Π—Π°ΠΏΠΈΡΡŒ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ряда Π±Π°ΠΉΡ‚ΠΎΠ² являСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ быстрой, Ρ‡Π΅ΠΌ поочСрёдная запись ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² Π² Ρ†ΠΈΠΊΠ»Π΅.

Π’Ρ‹Π²ΠΎΠ΄ Π² ΡΠΊΡ€Π°Π½Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ poke() ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ стандартная запись Π½Π° экран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ puts() ΠΈΠ»ΠΈ printf(), Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ слоТнСС. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв свСрхвысокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π½Π΅ трСбуСтся. НапримСр, Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ed.ex ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° Euphoria poke() Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


a = allocate(100) -- выдСляСтся 100 Π±Π°ΠΉΡ‚ΠΎΠ² Π² памяти


-- заносится Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ² poke():

poke(a, 97)

poke(a+1, 98)

poke(a+2, 99)


-- заносится 3 Π±Π°ΠΉΡ‚Π° сразу:

poke(a, {97, 98, 99})


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

demo\callmach.ex

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

peek, poke4, allocate, free, allocate_low, free_low, call, safe.e


poke4


Бинтаксис:

poke4(a, x)

ОписаниС:

Если x являСтся Π°Ρ‚ΠΎΠΌΠΎΠΌ, Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎ адрСсу a записываСтся 4 Π±Π°ΠΉΡ‚Π° (32 Π±ΠΈΡ‚Π°).

Если x являСтся рядом, Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, начиная с адрСса a, записываСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 4-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, прСдставлСнная этим рядом.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΠΈΠ»ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΊ записи, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ значСния.

Π‘ΠΎΠ»Π΅Π΅ быстрой являСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° записи сразу Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… 4-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, Ρ‡Π΅ΠΌ поочСрёдная запись этих Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ Π² Ρ†ΠΈΠΊΠ»Π΅.

ЗаписываСмыС 4-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π‘Ρ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ»ΠΈ peek4s(), ΠΈΠ»ΠΈ peek4u().

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


a = allocate(100) -- выдСляСтся 100 Π±Π°ΠΉΡ‚ΠΎΠ² Π² памяти


-- записываСтся ΠΎΠ΄Π½Π° 4-байтовая Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² poke4():

poke4(a, 9712345)

poke4(a+4, #FF00FF00)

poke4(a+8, -12345)


-- записываСтся Ρ‚Ρ€ΠΈ 4-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ сразу:

poke4(a, {9712345, #FF00FF00, -12345})


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

peek4u, peek4s, poke, allocate, allocate_low, call


polygon