Для DOS32 имеется подпрограмма, которая может генерировать звуки на встроенном громкоговорителе вашего компьютера. Чтобы извлекать из машины практически любые необходимые вам звуки, получите библиотеку Sound Blaster, разработанную Жаком Дешеном. Она доступна на Web-узле RDS.
Нижеследующие подпрограммы работают во всех текстовых и пиксельных режимах:
clear_screen (очистить_экран)
- очищает экран
position (знакоместо)
- устанавливает курсор на заданной строке в заданный столбец
get_position (выдать_позицию)
- выдаёт текущие строку и столбец, где находится курсор
graphics_mode (режим_экрана)
- включает новый экранный пиксельный или текстовый режим (DOS32)
video_config (видео_конфигурация)
- выдаёт параметры текущего экранного режима видеосистемы
scroll (прокрутка)
- прокручивает текст на экране вверх или вниз
wrap (перенос)
- задаёт поведение строки при достижении ею правой границы экрана
text_color (цвет_текста)
- задаёт цвет символов текста
bk_color (цвет_фона)
- задаёт цвет фона под текстом
palette (палитра)
- изменяет на экране цвет одного заданного номера на другой заданный цвет (DOS32)
all_palette (вся_палитра)
- изменяет на экране цвета всех номеров на другие заданные цвета (DOS32)
get_all_palette (получить_всю_палитру)
- выдаёт величины составляющих цветов для всех цветов текущей палитры (DOS32)
read_bitmap (читать_биткарту)
- читает биткарту (.bmp-файл) и выдаёт её палитру и двухмерный ряд пикселов
save_bitmap (сохранить_ряд_как_биткарту)
- создаёт биткарту (.bmp-файл), заданную палитрой и двухмерным рядом пикселов
get_active_page (получить_активную_страницу)
- выдаёт номер текущей активной страницы экрана (той, на которую ведётся запись) (DOS32)
set_active_page (установить_активную_страницу)
- переключает заданную по номеру страницу экрана в активное состояние (на запись) (DOS32)
get_display_page (получить_отображаемую_страницу)
- выдаёт номер текущей отображаемой страницы экрана (той, которая видна на экране) (DOS32)
set_display_page (установить_отображаемую_страницу)
- переключает заданную по номеру страницу экрана на отображение (DOS32)
sound (звук)
- генерирует заданный звук на встроенном излучателе компьютера (DOS32)
Нижеследующие подпрограммы работают только в текстовых режимах:
cursor (курсор)
- задаёт форму курсора клавиатуры (каретки)
text_rows (число_строк)
- задаёт число строк на текстовом экране
get_screen_char (получить_символ_с_экрана)
- выдаёт код и атрибут символа, расположенного на экране в заданной позиции
put_screen_char (поместить_символ_на_экран)
- выводит один или более символов на экран в заданной позиции с заданными атрибутами
save_text_image (сохранить_образ_текста_в_ряде)
- выдаёт ряд, содержащий образ заданного прямоугольного участка текстового экрана
display_text_image (вывести_образ_текста)
- выводит текст, содержащийся в заданном образе, на текстовый экран
Нижеследующие подпрограммы работают только в пиксельных режимах (DOS32):
pixel (точки)
- включает заданный пиксел или ряд пикселов в заданном цвете или цветах
get_pixel (цвет_точек)
- выдаёт текущий цвет заданного пиксела или ряда пикселов
draw_line (линия)
- соединяет заданные точки на экране линией
polygon (многоугольник)
- вычерчивает заданную n-стороннюю фигуру
ellipse (эллипс)
- вычерчивает заданный эллипс или круг
save_screen (сохранить_экран_в_файле)
- записывает содержимое экрана в файл биткарты (.bmp-файл)
save_image (сохранить_изображение_в_ряде)
- выдаёт ряд, содержащий образ заданного прямоугольного участка пиксельного экрана
display_image (вывести_изображение)
- выводит изображение, образ которого содержится в заданном ряде, на пиксельный экран
2.13 Интерфейс уровня машины
Здесь сгруппированы подпрограммы, которые пригодятся вам, если вы решите поработать со своей машиной на уровне машинных кодов. Предлагаемый интерфейс низкого уровня позволяет вам читать и записывать данные и код непосредственно в оперативной памяти. Это значит, что вы можете разрабатывать свои собственные подпрограммы в кодах машин 386+ и вызывать их на исполнение.
Некоторые из подпрограмм, перечисленных ниже, не являются безопасными в том смысле, что Euphoria не сможет подстраховать вас при некорректном их использовании. Вы рискуете "подвесить" свою программу, операционную систему или даже машину, если сделаете что-то не так, как следовало бы. Если под DOS32 вы обратитесь к негодным адресам в памяти, то в дело вступит расширитель DOS CauseWay, и вы получите от него на экране сообщение об ошибке плюс распечатку информации на машинной тарабарщине в файле cw.err. Под WIN32 операционная система выдаст вам обычную свою табличку о прерывании прогона вашей программы со скупым диагностическим сообщением плюс информацию из регистров процессора. Под Linux в типовом случае вы получите аварийную остановку программы и сообщение о нарушении сегментации.
Примечание: Чтобы помочь программистам в этих рискованных занятиях, мы поставляем библиотечный файл safe.e, как отладочную замену файла machine.e. Если вы скопируете safe.e из каталога euphoriainclude в каталог, содержащий вашу программу, и переименуете safe.e как machine.e в этом вашем рабочем каталоге, ваша программа будет исполняться с использованием более безопасного, но и более медленного, варианта обычных подпрограмм низкого уровня. Этот safe.e может отловить многие ошибки, в том числе и такие, как запись в память по негодным адресам. Просмотрите комментарии в начале файла safe.e, чтобы получить полную инструкцию по его применению и оптимальному его конфигурированию под вашу программу. Подпрограммы интерфейса уровня машины очень важны для продвинутого программирования, так как они позволяют Euphoria-программистам получить доступ ко всем ресурсам, заложенным на низком уровне в ваше оборудование и вашу операционную систему. В некоторых особо ответственных случаях данная возможность может иметь решающее значение.
Подпрограммы в машинных кодах могут быть написаны вручную или же получены путем дизассемблирования выходных файлов компиляторов Си или некоторых других языков. Пит Эберлейн написал "мини-ассемблер" для использования с Euphoria. Просмотрите Архив файлов. Не забывайте, что ваш машинный код будет исполняться в 32-разрядном защищённом режиме. Просмотрите файл demodos32callmach.ex, чтобы получить более конкретное представление о деталях этого дела.
peek (читать_из_памяти)
- выдаёт один или более байтов из памяти с заданного адреса
peek4s (читать_из_памяти_4_байта_и_знак)
- выдаёт 4-х байтовую величину со знаком из памяти с заданного адреса
peek4u (читать_из_памяти_4_байта_без_знака)
- выдаёт 4-х байтовую величину без знака из памяти с заданного адреса
poke (записать_в_память)
- записывает один или более байтов в память, начиная с заданного адреса
poke4 (записать_в_память_4_байта)
- записывает 4-х байтовую величину в память по заданному адресу
mem_copy (копировать_память)
- копирует в памяти последовательность байтов с одного заданного адреса по другому
mem_set (заполнить_память)
- устанавливает все байты заданного участка памяти в заданное значение
call (вызвать)
- вызывает на исполнение подпрограмму, написанную в машинных кодах
dos_interrupt (прерывание_dos)
- вызывает подпрограмму обработки прерывания DOS (DOS32)
allocate (выделить_память)
- выдаёт адрес свободного участка памяти заданного объёма
free (освободить_память)
- освобождает участок памяти, ранее выделенный по команде allocate
allocate_low (выделить_память_внизу)
- выдаёт адрес свободного участка нижней памяти (адреса менее 1Mb) (DOS32)
free_low (освободить_память_внизу)
- освобождает участок памяти, ранее выделенный по команде allocate_low (DOS32)
allocate_string (поместить_строку_в_память)
- размещает в памяти заданную строку с нуль-терминатором и выдаёт её адрес
register_block (учесть_блок)
- регистрирует в списке безопасных блоков участок памяти, ранее уже выделенный какой-либо подпрограммой