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 из каталога euphoria\include\в каталог, содержащий вашу программу, и переименуете safe.eкак machine.eв этом вашем рабочем каталоге, ваша программа будет исполняться с использованием более безопасного, но и более медленного, варианта обычных подпрограмм низкого уровня. Этот safe.eможет отловить многие ошибки, в том числе и такие, как запись в память по негодным адресам. Просмотрите комментарии в начале файла safe.e, чтобы получить полную инструкцию по его применению и оптимальному его конфигурированию под вашу программу. Подпрограммы интерфейса уровня машины очень важны для продвинутого программирования, так как они позволяют Euphoria-программистам получить доступ ко всем ресурсам, заложенным на низком уровне в ваше оборудование и вашу операционную систему. В некоторых особо ответственных случаях данная возможность может иметь решающее значение.
Подпрограммы в машинных кодах могут быть написаны вручную или же получены путем дизассемблирования выходных файлов компиляторов Си или некоторых других языков. Пит Эберлейн написал "мини-ассемблер" для использования с Euphoria. Просмотрите Архив файлов. Не забывайте, что ваш машинный код будет исполняться в 32-разрядном защищённом режиме. Просмотрите файл demo\dos32\callmach.ex, чтобы получить более конкретное представление о деталях этого дела.
peek (читать_из_памяти)
- выдаёт один или более байтов из памяти с заданного адреса
peek4s (читать_из_памяти_4_байта_и_знак)
- выдаёт 4-х байтовую величину со знаком из памяти с заданного адреса
peek4u (читать_из_памяти_4_байта_без_знака)
- выдаёт 4-х байтовую величину без знака из памяти с заданного адреса
poke (записать_в_память)
- записывает один или более байтов в память, начиная с заданного адреса
poke4 (записать_в_память_4_байта)
- записывает 4-х байтовую величину в память по заданному адресу
mem_copy (копировать_память)
- копирует в памяти последовательность байтов с одного заданного адреса по другому
Читать дальше