gfxmenu
Создание gfxmenu для syslinux / isolinux, LILO и GRUB.
Содержание
Обзор
Утилиты
Справка
Инициализация
Вызовы
Основные выражения
Обзор
Чтобы создать графический экран загрузки вам придется написать небольшой скрипт. При желании вы можете изменить шрифты, графические файлы и звуковые файлы.
Шрифт файлы специального формата.. Создавайте их, используя mkblfont. Максимальным размер файла шрифта 512kB.
Если вы написали скрипт, конвертируйте его в байт-код, используя mkbootmsg.
Отладка этих скриптов довольно утомительно дело. Для этого,mkbootmsg -l даст вам отладочную информацию, которая будет полезна вместе с dtrace командами.
Утилиты
Средства, необходимые для создания загрузочного графического файла.
- mkbootmsg
Компилирует скрипты в байт-код.. Для GRUB требуется упаковка в cpio архив. Если вы используете isolinux или syslinux это не требуется, так как они могут читать файлы прямо из файловой системы. Скомпилированный байт-код, однако, всегда должен быть в cpio архиве.
Пример 1.
# Компиляция 'foo.ps' в' Foo ', отчет foo.log
# Примечание: '-O '- оптимизатор. Лучше всегда использовать.
mkbootmsg -O -v -l foo.log -c foo.ps foo
# Поместить в cpio архив
# Предполагается, что используется картинка 'foo.jpg' и шрифт' foo.fnt '
echo -e "foo\nfoo.jpg\nfoo.fnt" | cpio -o >bootlogo
# 'Bootlogo' готов к использованию,
# Как "gfxboot bootlogo" в isolinux.cfg
mkblfont
Создает файл шрифта с помощью FreeType рендеринга.
help2txt
Преобразует HTML файлы в файлы помощи.
Справка
Комментарии начинаются с '%' и до конца строки.
Чтобы включить некоторые другие исходный
файлы, выполните : %% include file
Числа всегда целые 32 бит. Численное и строковые константы используются как в C (не как в Postscript).
Пример 2.
123, -456
0x4567
"Hi there\n"
'\033', '\x1b', '\u20ac'
Но: символы имеют значения в диапазоне 0 .. 0x1fffff.
Последовательности интерпретируются как utf8 . Или вы можете использовать '\ uXXXX' или "\UXXXXXXXX ", чтобы включить Unicode символы.
Пример 3.
"1 Euro = 1 €\n"
"1 Euro = 1 \u20ac\n"
"1 Euro = 1 \xe2\x82\xac\n"
Логические операции по возвращению значений типа 'bool'. Они не совпадают с целыми числами. Есть заранее определенные константы 'true' и 'false'. Но вы должны определить сами, если нужно , например:
/true 0 0 eq def
Последовательности и множества эффективные указатели. Так дублирования их на стек дублирует указатель, а не объекта.
Кроме того, есть неопределенный тип данных указателя.Можно использовать , чтобы построить произвольные ссылки памяти.
Variable/constants/function имена могут включать все, кроме пробела.
Инициализация
Во время инициализации файл конфигурации выполнен. Он должен либо оставить пустым стек или логического 'true' в занчение TOS (вершина стека) для указания загрузчику, что все работает. Иначе не продолжется загрузка в графическом режиме.
Если хотите обработать ввод , то должны определить по крайней мере функцию возвратного вызова. KeyEvent.
Возвратные вызовы
Связи с загрузчика осуществляется с помощью вызова функции. См. примеры конфигурационных файлов :
KeyEvent
Вызывается, если клавиша нажата.
MenuInit
Показывает меню .
InfoBoxInit
Показывает окно с сообщением ( сообщений об ошибке).
InfoBoxDone
Скрывает окно с сообщением.
ProgressInit
Инициализация ядра загрузки (только syslinux / isolinux ).
ProgressDone
Скрывает прогресс бар.
ProgressUpdate
Обновление прогресс бара.
PasswordInit
Показывает диалог пароля.
PasswordDone
Скрывает диалог пароля .
Timeout
Таймер; каждая 18.3-ой секундой, пока время ожидания не проходит.
Timer
каждая 18.3-ой секундой независимо от времени ожидания.
Основные выражения
{ – Начало функций
( — code1 )
code1 : определяем функцию
После { код выполняется до тех пор пока не найден соответствующиий знак } .
См. также : def, }
Пример 4.
/++ { 1 add } def % определяется функция прибавления'++'
} – завершение функций
( — )
См. также: def, {
Пример 5.
/dec { 1 sub } def % определение функций 'dec'
64bit – проверяет, если работаете на 64-битовой машине
( — int1 )
int1 = 1 : 64-битная архитектура
См. также: _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
[ –Начало массива
( —mark1 )
mark1 : массив
См. также : ]
Пример 6.
[ 1 2 3 ] % массив с 3 элементами
] – конец массива
( mark1 obj1 ... objN — array1 )
mark1 : массив
obj1 ... objN: какие то объекты
array1 : N- размерный массив с ... objN
Примечание: массив использует динамически распределенную память, которая должна быть освобождена, используя free
См. также: [, array, chdir, dumpmem, filesize, findfile, free, getcwd, length, malloc, memcpy, memsize, snprintf
Пример 7.
/foo [ "какой то" "текст" ] def % массив с 2 элементами
foo free % освобождаем память
_readsector – считывает сектор
( int1 — ptr1 )
int1 : номер сектора
ptr1 : данные сектора
Примечание: внутренняя функция .Возвращает указатель на статический буфер.Не возвращается в случае ошибки.Возвращает .undef , если функция не реализована.
См. также: 64bit, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
abs – абсолютная величина
( int1 — int2 )
int2 : | int1|
См. также: add, and, div, max, min, mod, mul, neg, not, or, shl, shr, sub, xor
Пример 8. -6 abs% 6
add – добавляет
( int1 int2 — int3 )
( string1 int4 — string2)
( ptr1 int5 — ptr2 )
int3 : int1< + int2
string2 : подстрока string1 по смещению int4
Примечание: строки рассматриваются как последовательность байтов, а не Unicode символы. Размеры string1 и ptr1 не проверяется.
См. также: abs, and, div, max, min, mod, mul, neg, not, or, shl, shr, sub, xor
Пример 9.
1 2 add % 3
"abc" 1 add % "bc"
and –логическое или арифметическое "и"
( int1 int2 — int3 )
( bool1 bool2 — bool3 )
int3 : int1 & int2
bool3 : bool1 && bool2
Примечание : Перемешивание логического и целочисленного аргумента типов возможно,в этом случае целые числа преобразуйте к логической переменной сначала.
См. также: abs, add, div, max, min, mod, mul, neg, not, or, shl, shr, sub, xor
Пример 10.
true false and % ложное
3 6 and % 2
10 true and % дает true, но лучше избегать этого
array – берет из стека одно целое число как размер массива и создает пустой массив такого размера
( int1 — array1 )
int1: размер массива
array1: новый масив
Примечание : Используйте free для освобождения array1.
См. также : ], chdir, dumpmem, filesize, findfile, free, getcwd, length, malloc, memcpy, memsize, snprintf
Пример 11.
/foo 10 array def % создаем массив с 10 элементами
foo 4 123 put % foo[4] = 123
foo free % освобождаем foo
blend – совмещает изображения с альфа-каналом
( obj1 obj2 ptr3 — )
obj1: указатель на исходный цвет изображения или значение
obj2: указатель на альфа-канал или значение прозрачности
ptr3: назначение
Изображение obj1 копируется в ptr3 используя obj2 как альфа канал obj1 может быть цветным или значение загруженного изображения (unpackimage, savescreen). obj2 значение прозрачности может быть(0..255) или загруженного изображение, используемое как альфа канал.
Примечание : только в режимах 16/32-bit. .
См. также: currentimage, image, image.colors, image.size, loadpalette, restorescreen, savescreen, setimage, settransparentcolor, unpackimage
chdir – установливает текущий рабочий каталог
( str1 — )
str1 : имя файла
См. также: ], array, dumpmem, filesize, findfile, free, getcwd, length, malloc, memcpy, memsize, snprintf
Пример 12.
"/foo/bar" chdir % установливаем рабочий каталог
colorbits – текущий размер пикселя
( — int1 )
int1: размер пикселя в битах
См. также: currentmode, monitorsize, screen.size, setmode, sysinfo, videomodeinfo, videomodes, vscreen.size
currentcolor – текущая палитра рисунка
( — int1)
int1: индекс палитры (8-битный режим) или 24-битный RGB - значение (16/32-битных режимах).
См. также: currentpoint, currenttransparency, fillrect, getpalette, getpixel, lineto, moveto, putpixel, rmoveto, setcolor, setpalette, settransparency, show
Пример 13.
currentcolor not setcolor % Инвертировать цвет
currenteotchar – текущая альтернатива eot
( — int1 )
int1 : символ eot
См. также: currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
currentfont – помещает в стек шрифт , который был установлен последней командой setfont.
( — ptr1 )
ptr1: шрифт
См. также: fontheight, lineheight, setfont
Пример 14.
currentfont % сохранить шрифт
"16x16_bold.fnt" findfile setfont % установить полужирный шрифт
"bold text" show % написать что-то жирным шрифтом
setfont % вернутся к нормальному шрифту
currentimage – используемое изображение
( — ptr1 )
См. также: blend, image, image.colors, image.size, loadpalette, restorescreen, savescreen, setimage, settransparentcolor, unpackimage
currentlink – выбранная ссылка
( — int1 )
int1: выбранная ссылка
См. также: currenteotchar, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
currentmaxrows – текущее максимальное число строк текста
( — int1)
int1: максимальное число строк текста чтобы отобразить в отдельной show команде.
См. также: currenteotchar, currentlink, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
currentmode – текущий видеорежим
( — int1 )
int1: текущее число видеорежима
См. также: colorbits, monitorsize, screen.size, setmode, sysinfo, videomodeinfo, videomodes, vscreen.size
currentpoint – текущая позиция указателя
( — int1 int2 )
int1, int2: x, y (вверху слева: 0,0)
См. также: currentcolor, currenttransparency, fillrect, getpalette, getpixel, lineto, moveto, putpixel, rmoveto, setcolor, setpalette, settransparency, show
currenttextcolors –текущие цвета текста
( — int1 int2 int3 int4 )
int1: нормальный цвет
int2: выделить цветом
int3: цвет ссылки
int4: выбранная ссылка цветом
См. также: currenteotchar, currentlink, currentmaxrows, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
currenttextwrap – текстовый столбец обертки
( — int1 )
int1: текстовый столбец обертки
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
currenttitle – текущее название
( — str1 )
str1: текст
Примечание: доступно после выполнения formattext
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
currenttransparency – текущая прозрачность
( — int1 )
См. также: currentcolor, currentpoint, fillrect, getpalette, getpixel, lineto, moveto, putpixel, rmoveto, setcolor, setpalette, settransparency, show
date – получает текущую дату
( — int1 )
int1: Дата (бит 0-7: день, бит 8-15: месяц, бит 16-31: год)
См. также: 64bit, _readsector, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
def – определяет новые выражения
( dict1 obj1 — )
dict1: определяется как obj1
См. также: {, }
Пример 15.
/x 100 def % определяет константу x как 100
/neg { -1 mul } def % определяет 'neg' функцию
div –разделяет
( int1 int2 — int3 )
int3 : int1/int2
См. также: abs, add, and, max, min, mod, mul, neg, not, or, shl, shr, sub, xor
Пример 16.
17 3 div % 5
dtrace – отдельный шаг с окном отладки
( — )
Включяет trace способ и показывает отлаживающюю информацию в верхнем левом углу экрана.
См. также: trace
dumpmem –выводит дамп памяти на консоль
( — )
Примечание: полезно только для отладки
См. также: ], array, chdir, filesize, findfile, free, getcwd, length, malloc, memcpy, memsize, snprintf
dup – помещает в стек копию обьекта
( obj1 — obj1 obj1 )
См. также: exch, index, over, pop, roll, rot
Пример 17.
key % клавиша : какая то величина
dup 'a' eq { do_a } if % если клавиша = 'a'
dup 'b' eq { do_b } if % если клавиша= 'b'
dup 'c' eq { do_c } if % если клавиша= 'c'
pop
edit.done – восстанавливает фон области
( array1 — )
array1: см. edit.init
Примечание: не освобождает память, связанных с array1.
См. также: edit.hidecursor, edit.init, edit.input, edit.redraw, edit.showcursor
Пример 18.
ed edit.done % удалить поле ввода
edit.hidecursor – скрывает курсор в поле ввода
( array1 — )
array1: см. edit.init
См. также: edit.done, edit.init, edit.input, edit.redraw, edit.showcursor
edit.init – установливает и показывает редактируемое поле ввода
( array1 str1 — )
str1: первые строки ввода
array1: 6-мерный массив [ x y bg buf buf_size .undef ]. x, y: позиции поля ввода ; bg: фон pixmap (созданные с помощью savescreen) - так же определяет размеры поле ввода; buf:буфер строки, достаточно большой для строки длиной buf_size. Последний элемент используется внутрене.
См. также: edit.done, edit.hidecursor, edit.input, edit.redraw, edit.showcursor
Пример 19.
50 100 moveto 200 20 savescreen /bg exch def
/buf 100 string def
/ed [ 50 100 bg buf 100 .undef ] def
ed "foo" edit.init
edit.input – обработка измененого поле ввода
( array1 int1 — )
array1: см. edit.init
int1: клавиша (биты 0-23 символов Unicode, биты 24-31 сканирование кода)
См. также: edit.done, edit.hidecursor, edit.init, edit.redraw, edit.showcursor
Пример 20.
/keyLeft 0x4b000000 def % поместить курсор слева
ed 'a' edit.input
ed keyLeft edit.input
edit.redraw – изменяет поле ввода
( array1 — )
array1: см. edit.init
См. также: edit.done, edit.hidecursor, edit.init, edit.input, edit.showcursor
Пример 21.
ed edit.redraw % redraw input field
edit.showcursor – показывает курсор в поле ввода
( array1 — )
array1: см. edit.init
См. также: edit.done, edit.hidecursor, edit.init, edit.input, edit.redraw
eject – извлекаает CD-ROM
( int1 — int2 )
int1: BIOS ID привода
int2: BIOS код ошибки
Примечание: не работает со всеми BIOS
См. также : 64bit, _readsector, date, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
eq – равенство
( int1 int2 — bool1 )
( str1 str2 — bool2 )
( obj1 obj2 — bool3 )
bool1: верно, если int1 == int2
bool2: верно, если str1 == str2
bool3: верно, если obj1 и obj2 идентичны
См. ткже: ge, gt, le, lt, ne
Пример 22.
1 3 eq % ложно
"abc" "abc" eq % верно
/a [ 1 2 ] def
/b a def
a [ 1 2 ] eq % ложно (не тот же самый массив)
a b eq % верно
exch – меняет местами значения
( obj1 obj2 — obj2 obj1 )
См. также: dup, index, over, pop, roll, rot
Пример 23.
8
/a exch def % a = 8
exec – оценивает объект
( dict1 — )
( obj1 — obj1 )
Если obj1 является словом,ищется и оценивается. Если нет, то в стеке остается неизменной.
Примечание: В отличие от Postscript, cvx не является необходимым.
См. также : exit, for, forall, if, ifelse, loop, repeat, return
Пример 24.
/foo [ /bar 100 "abc" ] def
foo 0 get
exec
foo 2 get
exec
exit – эта команда прерывает цикл .
( — )
См. также : exec, for, forall, if, ifelse, loop, repeat, return
Пример 25.
0 1 100 { 56 eq { exit } if } for % оставить если счетчик == 56
filesize – получает размер файла
(str1 — int1 )
str1: имя файла
int1: размер файла (или .undef если не найден)
Примечание: В отличие от findfile, он не загружает файл.
См. также : ], array, chdir, dumpmem, findfile, free, getcwd, length, malloc, memcpy, memsize, snprintf
Пример 26.
"xxx.jpg" filesize % размер файла "xxx.jpg"
fillrect – прямоугольная область
( int1 int2 — )
int1, int2: ширина, высота
См. также: currentcolor, currentpoint, currenttransparency, getpalette, getpixel, lineto, moveto, putpixel, rmoveto, setcolor, setpalette, settransparency, show
Пример 27.
0 0 moveto
blue setcolor
300 200 fillrect % синий прямоугольник 300x200
findfile – загружает файл
( str1 — ptr1 )
str1: имя файла
ptr1: буфер файл с данными
Примечание: ptr1 может быть не освобожден используйте free, в зависимости от того, как он загружается из файловой системы или входит в состав bootlogo архива. На всякий случай, он всегда должен быть освобожден.
Чтобы получить размер файла, используите length в ptr1.
См.также: ], array, chdir, dumpmem, filesize, free, getcwd, length, malloc, memcpy, memsize, snprintf
Пример 28.
"xxx.jpg" findfile length % размер файла "xxx.jpg"
fontheight – высота шрифта
( — int1 )
int1: высота шрифта
См.также : currentfont, lineheight, setfont
Пример 29.
currentpoint
"Hello" show % напечатать "Hello"
moveto 0 fontheight rmoveto
"world!" % напечатать "world!" ниже "Hello"
for – берет из стека четыре объекта ( начальное значение , шаг , конечное значение ,процедуру ) и выполняет цикл
( int1 int2 int3 code1 — )
int1: начальное значение
int2: размер шага
int3: конечное значение (включительно)
Запускает code1 и ставит текущее значение на шага больше для каждой итерации.
См. также : exec, exit, forall, if, ifelse, loop, repeat, return
Пример 30.
0 1 4 { } for % выход 0 1 2 3 4
forall – выполняет цикл со сложными обьектами
( array1 code 1 — )
( str1 code 1 — )
( ptr1 code 1 — )
Запускает code1 для каждого элемента array1, str1 и ptr1 помещеая каждый элемент в стеке в свою очередь.
Примечание: str1 рассматривается как последовательность байтов, а не utf8 символов.
См. также : exec, exit, for, if, ifelse, loop, repeat, return
Пример 31.
[ 1 2 3 ] { } forall % выход 1 2 3
formattext – формат текста
( str1 — )
str1: текст
Предпроцесс текста, чтобы найти (или запомнить) строки, ссылки и прочее.
См. также currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
free – освобождает память
( obj1 — )
obj1: освобождаемый объект (массив, строка или указатель )
Примечание: Нет никакого самостоятельного сборщика мусора. Вы должны следить за использованием памяти самостоятельно.
См. также: ], array, chdir, dumpmem, filesize, findfile, getcwd, length, malloc, memcpy, memsize, snprintf
Пример 32.
2 array % создать массив с 2 элементами ...
free % освобождено
100 malloc % выделить 100 байт ...
free % освобождено
"Some Text" free % не освобождено
ge – больше или равно
( int1 int2 — bool1 )
( str1 str2 — bool2 )
( ptr1 ptr2 — bool3 )
bool1: верно, если int1 >= int2
bool2: верно, если str1 >= str2
bool3: верно, если ptr1 >= ptr2
См. также : eq, gt, le, lt, ne
Пример 33.
7 4 ge % верно
"abc" "abc" ge % верно
/a 10 malloc def
/b a + 2 def
b a ge % верно
get – получает массив, строку или элемент памяти
( array1 int1 — obj1 )
( string1 int2 — int3 )
( ptr1 int4 — int5 )
obj1: int1-й элемент array1
int3: int2-й байт string1
int5: int4-й байт ptr1
Примечание: Возвращает
n-й байт string1, а не n-й символ utf8. Размеры
string1 или ptr1 не проверяется.
См. также: put
Пример 34.
"abc" 1 get % 'b'
[ 10 20 30 ] 2 get % 30
getbyte – получает байт из памяти
( ptr1 — int1 )
int1: байт в ptr1
См. также: 64bit, _readsector, date, eject, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
getcwd – получает текущий рабочий каталог
( — str1 )
str1: имя файла
См. также: ], array, chdir, dumpmem, filesize, findfile, free, length, malloc, memcpy, memsize, snprintf
Пример 35.
getcwd show % напечатать рабочий каталог
getdword – получает dword из памяти
( ptr1 — int1 )
int1: dword в ptr1
См. также: 64bit, _readsector, date, eject, getbyte, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
getkey – получает введеное с клавиатуры
( — int1 )
int1: клавиша (бит 0-7: ASCII, бит 8-15: скэн-код, бит 16-31: биты состояния kbd)
Примечание: функция не блокирует. Если нет ключа нажата, 0-15 бит будет 0.
См. также : 64bit, _readsector, date, eject, getbyte, getdword, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
getlink – получает информацию о ссылке
( int1 — str1 str2 int2 int3 )
int1: номер ссылки
str1: метка ссылки
str2: текст ссылки
int1: связывает текстовое x-смещение
int2: связывает текстовую строку
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
getlinks – количество ссылок в тексте
( — int1 )
int1: число ссылок в тексте.
Примечание:доступно после выполнения formattext
См. также : currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
getpalette – получает палитру
( int1 — int2 )
int1:индекс палитры
int2: RGB значение
См. также: currentcolor, currentpoint, currenttransparency, fillrect, getpixel, lineto, moveto, putpixel, rmoveto, setcolor, setpalette, settransparency, show
Пример 36.
11 dup getpalette not setpalette % инвертировать цвет 11
getpixel – считывает пиксель из графической памяти
( — int1 )
int1: цвет, либо индекс 8-битной палитры или 24-битные RGB-значения, в зависимости от графического режима.
См. также: currentcolor, currentpoint, currenttransparency, fillrect, getpalette, lineto, moveto, putpixel, rmoveto, setcolor, setpalette, settransparency, show
Пример 37.
getpixel not setcolor putpixel % инвертировать цвет пикселя
gettextrows – количество строк текста
( — int1 )
int1: общее число текстовых строк.
Примечание: доступный после выполнения formattext
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
gettype – получает типа объекта
( obj1 — int1 )
Возвращает тип объекта
См. также: settype
Пример 38.
"abc" gettype % 4 (= строка)
gt – больше, чем
( int1 int2 — bool1 )
( str1 str2 — bool2 )
( ptr1 ptr2 — bool3 )
bool1: верно, если int1 > int2
bool2: верно, если str1 > str2
bool3: верно, если ptr1 > ptr2
См. также : eq, ge, le, lt, ne
Пример 39.
7 4 gt % верно
"abc" "abd" gt % ложно
/a 10 malloc def
/b a + 2 def
b a gt % верно
idle – запускает при простое
( ptr1 int1 — )
ptr1: 'kroete' данные
int1: значение (0 или 1)
Запускает 'kroete' анимацию, когда ожидает ввода с клавиатуры.
См. также : 64bit, _readsector, date, eject, getbyte, getdword, getkey, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
if – берет из стека процедуру, затем логическую переменную, которая получается в результате проверки условия и если логическая переменная равна true, то выполняет процедуру
( bool1 code1 — )
( int1 code1 — )
( undef1 code1 — )
( obj1 code1 — )
bool1: contition
code1: начало функций (см. {)
int1: целое число, автоматически преобразуется в логическое
undef1: неопределенное значение трактуется как 'false'
obj1: строки, массивы, указатели считаются 'true'
См. также : exec, exit, for, forall, ifelse, loop, repeat, return
Пример 40.
10 4 gt { "10 > 4" show } if
"" { "is always true" show } if % строки всегда 'true'
ifelse – берет из стека вторую процедуру, затем первую процедуру и затем логическую переменную как результат выполнения условия.
( bool1 code1 code2 — )
( int1 code1 code2 — )
( undef1 code1 code2 — )
( obj1 code1 code2 — )
bool1: contition
code1: начало функций (см. {) для 'true' перехода
code2: начало функций (см. {) для 'false' перехода
int1:целое число, автоматически преобразуется в логическое
undef1: неопределенное значение трактуется как 'false'
obj1: строки, массивы, указатели считаются 'true'
См. также: exec, exit, for, forall, if, loop, repeat, return
Пимер 41.
x1 x2 gt { "x1 > x2" } { "x1 <= x2" } ifelse show
image – показывает область изображения
( int1 int2 int3 int4 — )
int1, int2: x, y позиция в изображении
int3, int4: ширина, высота области изображения
См. также : blend, currentimage, image.colors, image.size, loadpalette, restorescreen, savescreen, setimage, settransparentcolor, unpackimage
Пример 42.
"xxx.jpg" findfile setimage % загрузить и активизировать "xxx.jpg"
0 0 image.size image % использовать все изображение
image.colors – ввод палитры изображения
( — int1 )
int1: число цветов в 8-битные PCX изображение.
8-битные режимы использования цветовой палитры. Этот образ используется в первую image.colors записи. Если вы хотите задать собственные цвета, image.colors получение первого свободного ввода палитры. Для 16/32-bit режимах, возвращается 0.
См. также: blend, currentimage, image, image.size, loadpalette, restorescreen, savescreen, setimage, settransparentcolor, unpackimage
image.size – размер графического изображения
( — int1 int2 )
int1, int2: ширина и высота изображения . Определяется с помощью setimage
См. также : blend, currentimage, image, image.colors, loadpalette, restorescreen, savescreen, setimage, settransparentcolor, unpackimage
Пример 43.
image.size screen.size
exch 4 -1 roll sub 2 div 3 1 roll exch sub 2 div % центр изображения
moveto 0 0 image.size image % показать его
inbyte – получает байт из i/o портов
( int1 — int2 )
int2: байт из порта int1
См. акже : 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
index – берет из стека число n (это его аргумент), затем отсчитывает n-й элемент от вершины вглубь, считая от 0 и помещает его наверх
( objN ... obj1 int1 — objN ... obj1 objM )
objM : M = int1 + 1
См. также: dup, exch, over, pop, roll, rot
Пример 44.
/dup { 0 index } def
/over { 1 index } def
keepmode – сохраняет видео режим
( int1 — )
int1 = 1:сохраняет видео режим при запуске ядра.
См. также : 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
le – меньше или равно
( int1 int2 — bool1 )
( str1 str2 — bool2 )
( ptr1 ptr2 — bool3 )
bool1: верно, если int1 <= int2
bool2: верно, если str1 <= str2
bool3: верно, если ptr1 <= ptr2
См. также: eq, ge, gt, lt, ne
Пример 45.
7 7 le % верно
"abc" "abd" le % верно
/a 10 malloc def
/b a + 2 def
b a le % ложно
length – Возвращает длину массива, строки или памяти
( array1 — int1 )
( string1 — int1 )
( ptr1 — int1 )
int1: размер array1 или string1 или ptr1
Возвращает длину string1 в байтах, а не число символов Unicode. Если ptr1 не указывает на начало области памяти, длина возвращает количество оставшихся байтах.
См. также: ], array, chdir, dumpmem, filesize, findfile, free, getcwd, malloc, memcpy, memsize, snprintf
Пример 46.
"abc" length % 3
[ 0 1 ] length % 2
/foo 10 malloc def
foo length % 10
foo 3 add length % 7
lineheight – высота линий
( — int1 )
int1: высота линий
См. также : currentfont, fontheight, setfont
lineto – проводит линию
( int1 int2 — )
int1, int2: концы линий
См. также : currentcolor, currentpoint, currenttransparency, fillrect, getpalette, getpixel, moveto, putpixel, rmoveto, setcolor, setpalette, settransparency, show
Пример 47.
0 0 moveto screen.size lineto % диоганаль через весь экран
loadpalette – загружает текущюю палитру
( — )
Активирует текущюю палитру в 8-битном режиме.
См. также : blend, currentimage, image, image.colors, image.size, restorescreen, savescreen, setimage, settransparentcolor, unpackimage
loop – берет из стека процедуру и выполняет ее сколько угодно раз, пока не встретится вторая команда
( code1 — )
См. также : exec, exit, for, forall, if, ifelse, repeat, return
Пример 48.
/x 0 def { /x x 1 add def x 56 eq { exit } if } loop % цикл до x == 56
lt – меньше
( int1 int2 — bool1 )
( str1 str2 — bool2 )
( ptr1 ptr2 — bool3 )
bool1: верно, если int1 < int2
bool2: верно, если str1 < str2
bool3: верно, если ptr1 < ptr2
См. также: eq, ge, gt, le, ne
Пример 49.
7 4 lt % ложно
"abc" "abd" lt % верно
/a 10 malloc def
/b a + 2 def
b a lt % ложно
malloc – выделяет память
( int1 — ptr1 )
int1: размер памяти
ptr1: указывает на область памяти
Примечание : Используйте free для освобождения ptr1.
См. также: ], array, chdir, dumpmem, filesize, findfile, free, getcwd, length, memcpy, memsize, snprintf
Пример 50.
/foo 256 malloc def % выделяем 256 байт...
foo free % и освобождаем ее
max – возвращает максимальное значение
( int1 int2 — int3 )
int3: больше чем (int1, int2)
См также: abs, add, and, div, min, mod, mul, neg, not, or, shl, shr, sub, xor
Пример 51.
4 11 max % 11
memcpy – копирует память
( ptr1 ptr2 int1 — )
ptr1: назначение
ptr2: источник
int1: размер
См. также: ], array, chdir, dumpmem, filesize, findfile, free, getcwd, length, malloc, memsize, snprintf
Пример 52.
/a 10 malloc def
/b 10 malloc def
a 1 100 put % a[1] = 100
b a 10 memcpy % копируем a в b
memsize – Сообщает о доступной свободной памяти
( int1 — int2 int3 )
int1: область памяти (0 ... 3)
int2: общий объем свободной памяти
int3: размер найбольшего свободного блока
Область 0 является памятью в низком диапазоне 640 КБ. Область > = 1 является, как правило, 1 Мб расширенной памяти в каждом области.
Примечание:свободная память зависит от загрузчика
См. также : ], array, chdir, dumpmem, filesize, findfile, free, getcwd, length, malloc, memcpy, snprintf
Пример 53.
0 memsize pop 1024 lt { "less than 1kB left" show } if
min –вовращает минимальное значение
( int1 int2 — int3 )
int3: меньше чем (int1, int2)
См. также : abs, add, and, div, max, mod, mul, neg, not, or, shl, shr, sub, xor
Пример 54.
4 11 min % 4
mod –вовращает остаток от деления
( int1 int2 — int3 )
int3: int1 % int2
См. также: abs, add, and, div, max, min, mul, neg, not, or, shl, shr, sub, xor
Пример 55.
17 3 mod % 2
mod.load – назначает mod файл проигрывателю
( int1 ptr1 — )
int1: проигрыватель
ptr1: mod файл
См. также: mod.play, mod.playsample, sound.done, sound.getsamplerate, sound.getvolume, sound.play, sound.setsamplerate, sound.setvolume
mod.play – проигрывает mod файл
( int1 int2 — )
int1: проигрыватель
int2: начало песни
Примечание: звуки воспроизводятся с помощью PC Speaker
См. таже: mod.load, mod.playsample, sound.done, sound.getsamplerate, sound.getvolume, sound.play, sound.setsamplerate, sound.setvolume
mod.playsample – играет пример mod файла
( int1 int2 int3 int4 — )
int1: проигрыватель
int2: канал
int3: моd файл в качестве примера
int4: шаг
См. также: mod.load, mod.play, sound.done, sound.getsamplerate, sound.getvolume, sound.play, sound.setsamplerate, sound.setvolume
monitorsize – следит за размером
( — int1 int2 )
int1, int2: ширина и высота
См. также: colorbits, currentmode, screen.size, setmode, sysinfo, videomodeinfo, videomodes, vscreen.size
moveto – устанавливает кооординаты для обьекта
( int1 int2 — )
int1, int2: x, y (сверху слева: 0, 0).
См. также : currentcolor, currentpoint, currenttransparency, fillrect, getpalette, getpixel, lineto, putpixel, rmoveto, setcolor, setpalette, settransparency, show
Пример 56.
200 100 moveto "Hello" show % показывает "Hello" в координатах (200, 100)
mul – умножение
( int1 int2 — int3 )
int3: int1 * int2
См. также: abs, add, and, div, max, min, mod, neg, not, or, shl, shr, sub, xor
Пример 57.
2 3 mul % 6
ne – не равенство
( int1 int2 — bool1 )
( str1 str2 — bool2 )
( obj1 obj2 — bool3 )
bool1: ложно, если int1 == int2
bool2: ложно, если str1 == str2
bool3: ложно, если obj1 и obj2 одинаковые
См. также : eq, ge, gt, le, lt
Пример 58.
1 3 ne % верно
"abc" "abc" ne % ложно
/a [ 1 2 ] def
/b a def
a [ 1 2 ] ne % верно
a b ne % ложно
neg –изменяет знака числа
( int1 — int2 )
int2 : -int1
См. также: abs, add, and, div, max, min, mod, mul, not, or, shl, shr, sub, xor
Пример 59.
5 neg % -5
not – логическое или арифметическое "нет"
( int1 — int2 )
( bool1 — bool2 )
int2 : -int1 - 1
bool2 : !bool1
См. также : abs, add, and, div, max, min, mod, mul, neg, or, shl, shr, sub, xor
Пример 60.
true not % ложно
0 not % -1
notimeout – выключает начальный таймаут загрузчика
( — )
Отключает любые автоматические загрузки. .
См. таже : 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
or – логическое или арифметическое "или"
( int1 int2 — int3 )
( bool1 bool2 — bool3 )
int3 : int1 | int2
bool3: логическое ||bool2
Примечание: Перемешивание логических и целочисленных аргументов возможно, в данном случае целые преобразуются в логические.
См. также: abs, add, and, div, max, min, mod, mul, neg, not, shl, shr, sub, xor
Пример 61.
true false or % верно
3 6 or % 7
10 true or % дает верно, но лучше избегать этого
outbyte – передает байт i/o порту
( int1 int2 — )
передает байт int2 в порт int1.
См. также : 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, poweroff, putbyte, putdword, reboot, sysconfig, test1, time, usleep
over – копирует обьект
( obj1 obj2 — obj1 obj2 obj1 )
См. также: dup, exch, index, pop, roll, rot
pop – вынимает из стека обьект , но ничего с ним не делает
( obj1 — )
См. также: dup, exch, index, over, roll, rot
Пример 62.
% статус: верно или ложно
"bad" status { pop "ok" } if % "bad" или "ok"
poweroff – выключает компьютер
( — )
Примечание: использует APM, или ACPI.
См. также: 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, putbyte, putdword, reboot, sysconfig, test1, time, usleep
put – установливает значение в массив, строку или элемент памяти
( array1 int1 obj1 — )
( string1 int2 int3 — )
( ptr1 int4 int5 — )
int1-й элемент array1 = obj1
int2-й байт string1 = int3
int4-й байт ptr1 = int5
Примечание: Устанавливает n-й байт в string1, а не n-й символ utf8 . Размеры string1 и ptr1 не проверяются.
См. также: get
Пример 63.
/foo [ 10 20 30 ] def
foo 2 77 put % foo = [ 10 20 77 ]
/foo 10 string def
foo 0 'a' put
foo 1 'b' put % foo = "ab"
"abc" 1 'X' put % изменяем строковую константу "abc" к "aXc"!
putbyte – пишет байт в память
( ptr1 int1 — )
Пишет байт int1 в ptr1.
См. также : 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putdword, reboot, sysconfig, test1, time, usleep
putdword – пишет dword в память
( ptr1 int1 — )
Пишет dword int1 в ptr1.
См. также: 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, reboot, sysconfig, test1, time, usleep
putpixel – показывает отдельный пиксель
( — )
показывает пиксель текущего цвета в текущей позиций курсора. .
См. также: currentcolor, currentpoint, currenttransparency, fillrect, getpalette, getpixel, lineto, moveto, rmoveto, setcolor, setpalette, settransparency, show
Пример 64.
blue setcolor
0 0 moveto putpixel % синяя точка в верхнем левом углу
reboot – перезагружает компьютер
( — )
См. также: 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, sysconfig, test1, time, usleep
repeat – берет из стека два объекта: число повторений и процедуру, после этого он выполняет цикл .
( int1 code1 — )
повторяет code1 int1 время.
См. также: exec, exit, for, forall, if, ifelse, loop, return
Пример 65.
3 { "X" show } repeat % показать "XXX"
restorescreen – восстанавливает область экрана
( ptr1 — )
ptr1: буфер изображения с данными; использовать free для освобождения буфера
Примечание: ширина и высота берется из буфера.
См. также: blend, currentimage, image, image.colors, image.size, loadpalette, savescreen, setimage, settransparentcolor, unpackimage
Пример 66.
0 0 moveto 100 100 savescreen % сохраняем верхнюю левую 100x100 область...
300 200 moveto dup restorescreen % и копирует ее в 300x200
free % освобождаем память
return – возвращает преждней функций
( — )
См. также: exec, exit, for, forall, if, ifelse, loop, repeat
Пример 67.
/x { % ожидаем клавишу
dup 'a' eq { pop do_a return } if
dup 'b' eq { pop do_b return } if
dup 'c' eq { pop do_c return } if
pop
} def
rmoveto – то же, что и moveto, только в стеке не абсолютные координаты X,Y, а смещения DX,DY из текущей точки в новую точку
( int1 int2 — )
int1, int2: x-ось, y-ось.
См. также: currentcolor, currentpoint, currenttransparency, fillrect, getpalette, getpixel, lineto, moveto, putpixel, setcolor, setpalette, settransparency, show
Пример 68.
200 100 moveto
"Hello" show
30 0 rmoveto "world!" % "Hello world!" (приблизительно)
roll – берет из стека число j, затем число n, после чего берет n объектов и крутит их j раз
( obj1 ... objN int1 int2 — objX ... bjY )
int1: ряд элементов,
int2: количество
objX : X = (1 - int2) mod int1
objY : Y = (N - int2) mod int1
См. также: dup, exch, index, over, pop, rot
Пример 69.
/rot { 3 -1 roll } def
1 2 3 4 5 5 2 roll % выход 4 5 1 2 3
rot – сменяет значения
( obj1 obj2 obj3 — obj2 obj3 obj1 )
См. также: dup, exch, index, over, pop, roll
Пример 70.
/a 4 array def
8
a 1 rot put % a[1] = 8
savescreen – сохраняет область экрана
( int1 int2 — ptr1)
int1, int2: ширина, высота области экрана
ptr1: буфер изображения с данными ; используйте free для освобождения буфера
Примечание: ширина и высота, сохраняются в буфере.
См. также: blend, currentimage, image, image.colors, image.size, loadpalette, restorescreen, setimage, settransparentcolor, unpackimage
Пример 71.
0 0 moveto screen.size savescreen % сохраняет весь экран
screen.size – размер экрана в пикселях
( — int1 int2 )
int1, int2: ширина, высота
См. также: colorbits, currentmode, monitorsize, setmode, sysinfo, videomodeinfo, videomodes, vscreen.size
Пример 72.
blue setcolor
0 0 moveto screen.size fillrect % показывает синий экран
setcolor – выбрает активный цвет
( int1 — )
int1: индекс палитры (8-битный режим) или 24-битные RGB-значение (16/32-bit режимов).
См. также: currentcolor, currentpoint, currenttransparency, fillrect, getpalette, getpixel, lineto, moveto, putpixel, rmoveto, setpalette, settransparency, show
Пример 73.
0xff0000 setcolor % выбираем красный..
0xff00 setcolor % или зеленый...
0xff setcolor % или синий
seteotchar – устанавливает альтернативный eot символ
( int1 — )
int1: eot символ
Обычно строка заканчивается 0 . seteotchar позволяет определять дополнительные функции
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
setfont – устанавливает шрифт
( ptr1 — )
ptr1: файл шрифта
Примечание: Если в 31 бите ptr1 установить шрифт в 'password-mode' то печатается только '*'
См. также: currentfont, fontheight, lineheight
Пример 74.
"16x16.fnt" findfile setfont % установливаем 16x16 шрифт
/pwmode { 1 settype 0x80000000 or 12 settype } def
currentfont pwmode setfont % теперь в способе пароля
"abc" show % печатаем "***"
setimage – устанавливает активное изображение
( ptr1 — )
ptr1: файл изображения.
Примечание: JPG поддерживается только в 16/32-bit режимах
См. также: blend, currentimage, image, image.colors, image.size, loadpalette, restorescreen, savescreen, settransparentcolor, unpackimage
Пример 75.
"foo.jpg" findfile setimage % загрузка и использование "foo.jpg"
setlink – выбирает ссылку
( int1 — )
int1: номер ссылки
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setmaxrows, setstartrow, settextcolors, settextwrap, show, strsize
setmaxrows – максимальное число текстовых строк,
( int1 — )
int1: максимальное число текстовых строк, чтобы отобразить в отдельном show команд.
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setstartrow, settextcolors, settextwrap, show, strsize
setmode – устанавливает видео режим
( int1 — bool1 )
int1: номер режима VESA или VGA
bool1: верно = режим установлен, ложь = ошибка
Примечание: если видео установка режима терпит неудачу, старый режим будет восстановлен, но содержание экрана неопределено.
См. также: colorbits, currentmode, monitorsize, screen.size, sysinfo, videomodeinfo, videomodes, vscreen.size
setpalette – установливает цвет палитры
( int1 int2 — )
int1: индекс палитры
int2: RGB значение
См. также: currentcolor, currentpoint, currenttransparency, fillrect, getpalette, getpixel, lineto, moveto, putpixel, rmoveto, setcolor, settransparency, show
Пример 76.
/red 11 0xff0000 def % цвет 11 = красный
/yellow 12 0xffff00 def % цвет 12 = желтый
setstartrow – установливает начало строки
( int1 — )
int1: начало строки для следующегоshow команд.
Примечание: если в начале строки установлено > 0 , то аргумент show не имеет никакого значения. Вместо этого используются внутренние данные построены во время последнего formattext .
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, settextcolors, settextwrap, show, strsize
settextcolors – - устанавливает цвета текста
( int1 int2 int3 int4 — )
int1: нормальный цвет
int2: выделить цветом
int3: цвет ссылки
int4: цвет выбранной ссылки
Примечание: int1 может быть изменено с помощью setcolor.
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextwrap, show, strsize
settextmodecolor – устанавливает цвет, который будет использоваться в текстовом режиме
( int1 — )
int1: цвет в текстовом режиме
Примечание: нуждается только в этом случае вы работаете в текстовом режиме (практически никогда).
settextwrap – устанавливает текст обертки столбца
( int1 — )
int1: текст обертки столбца; установленный на 0, выключает текстовое обертывание.
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, show, strsize
settransparency – установливает прозрачность
( int1 — )
int1: прозрачность для fillrect операций; допустимые значения 0 - 256.
См. также: currentcolor, currentpoint, currenttransparency, fillrect, getpalette, getpixel, lineto, moveto, putpixel, rmoveto, setcolor, setpalette, show
settransparentcolor – выбрает цвет используемый для прозрачности
( int1 — )
Делая image операцию, пиксели с этим цветом не копируются.Как альфа канал, фактически. Работает только с изображениями PCX . Не связанна с settransparency
См. также: blend, currentimage, image, image.colors, image.size, loadpalette, restorescreen, savescreen, setimage, unpackimage
settype – установливает тип объекта
( obj1 int1 — obj2 )
obj2: obj1 с типом, измененным на int1.
См. также: gettype
Пример 77.
% подобная Postscript 'string' функция
/string { 1 add malloc 4 settype } def % 4 =строка вида
10 string % новая пустая строка длины 10
shl – сдвиг влево
( int1 int2 — int3 )
int3 : int1 << int2
См. также: abs, add, and, div, max, min, mod, mul, neg, not, or, shr, sub, xor
Пример 78.
5 2 shl % 20
show – эта команда берет из стека объект и показывает его.
( str1 — )
Показывает str1 в текущем цвете, используя текущий шрифт.
См. также: currentcolor, currenteotchar, currentlink, currentmaxrows, currentpoint, currenttextcolors, currenttextwrap, currenttitle, currenttransparency, fillrect, formattext, getlink, getlinks, getpalette, getpixel, gettextrows, lineto, moveto, putpixel, rmoveto, setcolor, seteotchar, setlink, setmaxrows, setpalette, setstartrow, settextcolors, settextwrap, settransparency, strsize
Пример 79.
"Hello world!" show % показываем "Hello world!"
shr – сдвиг вправо
( int1 int2 — int3 )
int3 : int1 >> int2
См. также: abs, add, and, div, max, min, mod, mul, neg, not, or, shl, sub, xor
Пример 80.
15 2 shr % 3
snprintf – как в C snprintf
( obj1 ... objN str1 int1 ptr1 — )
ptr1: буфер
int1: размер буфера
str1: формат строки
obj1 ... objN: аргументы printf
Примечание: полностью измененняет порядок аргумента!
См. также: ], array, chdir, dumpmem, filesize, findfile, free, getcwd, length, malloc, memcpy, memsize
Пример 81.
/sprintf {
dup 12 settype length exch snprintf % 12 = тип указателя
} def
/buf 100 string def
"bar" "foo" 3 "%d %s %s" buf sprintf
buf show % показать "3 foo bar"
sound.done – выключает звук
( — )
См. также: mod.load, mod.play, mod.playsample, sound.getsamplerate, sound.getvolume, sound.play, sound.setsamplerate, sound.setvolume
sound.getsamplerate – текущий пример
( — int1 )
int1: пример
См. также: mod.load, mod.play, mod.playsample, sound.done, sound.getvolume, sound.play, sound.setsamplerate, sound.setvolume
sound.getvolume – устанавливает текущюю громкость звука
( — int1 )
int1: громкость (0 .. 100)
См. также: mod.load, mod.play, mod.playsample, sound.done, sound.getsamplerate, sound.play, sound.setsamplerate, sound.setvolume
sound.play – воспроизводит звук
( — )
Примечание: Устарело. Звуки воспроизводятся с помощью PC Speaker.
См. также: mod.load, mod.play, mod.playsample, sound.done, sound.getsamplerate, sound.getvolume, sound.setsamplerate, sound.setvolume
sound.setsamplerate – устонавливает пример
( — int1 )
int1: пример
См. также: mod.load, mod.play, mod.playsample, sound.done, sound.getsamplerate, sound.getvolume, sound.play, sound.setvolume
sound.setvolume – установливает громкость звука
( int1 — )
int1: громкость (0 .. 100)
См. также: mod.load, mod.play, mod.playsample, sound.done, sound.getsamplerate, sound.getvolume, sound.play, sound.setsamplerate
strsize – размер текста
( str1 — int1 int2 )
int1, int2: ширина, высота str1.
См. также: currenteotchar, currentlink, currentmaxrows, currenttextcolors, currenttextwrap, currenttitle, formattext, getlink, getlinks, gettextrows, seteotchar, setlink, setmaxrows, setstartrow, settextcolors, settextwrap, show
Пример 82.
"Hi there!"
dup strsize pop neg 0 rmoveto show % печатает "Hi there!" выровненный по правому краю
strstr – ищет строку в строке
( str1 str2 — int1 )
Поиск str2 в str1.
int1: если найдено смещениеstr2 в str1 + 1 ; то 0.
Примечание: немного странно, я знаю.
Пример 83.
"abcd" "c" strstr % 3 (а не 2)
sub – вычитание
( int1 int2 — int3 )
( string1 int4 — string2 )
( ptr1 int5 — ptr2 )
( string3 string4 — int6 )
( ptr2 ptr3 — int7 )
int3 : int1 - int2
string2: подстрока string1 в смещении -int4
int6 : string3 - string4
int7 : ptr2 - ptr3
Примечание: строки рассматриваются как последовательность байтов, а не Unicode символы.. Границы string1 и ptr1 не проверяется.
См. также: abs, add, and, div, max, min, mod, mul, neg, not, or, shl, shr, xor
Пример 84.
3 1 sub % 2
"abcd" 3 add % "d"
2 sub % "bcd"
sysconfig – получает указатель на загрузчик конфигурационных данных
( — ptr1 )
ptr1: данные конфигурации загрузчика (32 байт)
См. также: 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, test1, time, usleep
sysinfo – возвращает системную информацию
( int1 — obj1 )
int1: тип информации
obj1: информация (или .undef)
См. также: colorbits, currentmode, monitorsize, screen.size, setmode, videomodeinfo, videomodes, vscreen.size
Пример 85.
0 sysinfo % видео память размер в kb
1 sysinfo % видео карта gfx oem строка
2 sysinfo % строка поставщика видео карты gfx
3 sysinfo % строка продукта видео карты gfx
4 sysinfo % строка редакции видео карты gfx
test1 – для внутреннего тестирования
( ptr1 — )
ptr1: некоторые значения с неясным смыслом
См. также: 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, time, usleep
Пример 86.
0x123 test1
time – получает текущее время
( — int1 )
int1: время в секундах, после полуночи.
См. также: 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, usleep
trace – отдельный шаг
( — )
Включает пошаговый режим. Оставить этот режим, нажав кнопку Esc
См. также: dtrace
unpackimage – распаковает область изображения в буфер
( int1 int2 int3 int4 — ptr1 )
int1, int2: x, y позиции на изображении
int3, int4: ширина и высота области изображения
ptr1: буфер изображения с данными ; используйте free для освобождения буфера
См. также: blend, currentimage, image, image.colors, image.size, loadpalette, restorescreen, savescreen, setimage, settransparentcolor
Пример 87.
"xxx.jpg" findfile setimage % загружаем и активизируем "xxx.jpg"
0 0 10 10 unpackimage % распаковаем вверхнюю левую 10x10 область
/img exch def % изображение = буфер
0 10 100 {
0 exch moveto
img restorescreen
} for % повторяет раздел изображения горизонтально 10 раз
img free % освобождаем
usleep – бездействие микро секунды
( int1 — )
int1: микро секунды,чтобы бездействовать.
Примечание: фактическая степень детализации 18Hz, так что не составляйте слишком сложный .
См. также: 64bit, _readsector, date, eject, getbyte, getdword, getkey, idle, inbyte, keepmode, notimeout, outbyte, poweroff, putbyte, putdword, reboot, sysconfig, test1, time
videomodeinfo – возвращает информацию видеорежима
( int1 — int2 int3 int4 int5 )
int1: индекс видеорежима
int2, int3: ширина, высота
int4: биты цветов
int5: число режима (бит 14: фрейм буфер режим) или .undef
См. также: colorbits, currentmode, monitorsize, screen.size, setmode, sysinfo, videomodes, vscreen.size
Пример 88.
2 videomodeinfo
videomodes – видео режим длина списка
( — int1 )
int1: видео режим списка длиной (всегда >= 1)
См. также: colorbits, currentmode, monitorsize, screen.size, setmode, sysinfo, videomodeinfo, vscreen.size
vscreen.size – виртуальный размер экрана
( — int1 int2 )
int1 , int2: Виртуальная ширина и высота ,как правило, можно рассчитывать на виртуальную высота будет больше, чем видимая высота возвращаетсяscreen.size этой области, например в скрытых рисунках. Некоторые виды прокрутки не реализованы, однако.
См. также: colorbits, currentmode, monitorsize, screen.size, setmode, sysinfo, videomodeinfo, videomodes
xor – логичный или арифметический исключающий 'или'
( int1 int2 — int3 )
( bool1 bool2 — bool3 )
int3 : int1 ^ int2
bool3: логическое 'или'bool2
Примечание: Перемешивание логического и целочисленного аргумента типов возможно, в данном случае целые преобразуются в логисческие
См. также: abs, add, and, div, max, min, mod, mul, neg, not, or, shl, shr, sub
Пример 89.
true false xor % верно
3 6 xor % 5
10 true xor % дает ложно, но лучше избегать этого