core/gfxboot/gfxboot.html

436 lines
242 KiB
HTML
Raw Blame History

<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>gfxboot reference</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"><meta name="description" content="Creating bootloader graphics with gfxboot for syslinux/isolinux, lilo, and grub."></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2620232"></a>gfxboot reference</h2></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>
Creating bootloader graphics with gfxboot for syslinux/isolinux, lilo, and grub.
</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#overview">Overview</a></span></dt><dt><span class="sect1"><a href="#utilities">Utilities</a></span></dt><dt><span class="sect1"><a href="#reference">Reference</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2672897">Initialisation</a></span></dt><dt><span class="sect2"><a href="#id2672926">Callbacks</a></span></dt><dt><span class="sect2"><a href="#id2676843">Primary words</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="overview"></a>Overview</h2></div></div></div><p>
To make a graphical boot screen you'll have to write a small script. Optionally you
might want font files, graphics files and sound files.
</p><p>
The script is written in a Postscript-like language.
You must program everything related to graphics output in it. That does
include e.g. drawing the background picture and in particular handling all kind
of user input.
</p><p>
Font files have a special format. Create them using
<a class="link" href="#gfxboot-font"><span class="command"><strong>gfxboot-font</strong></span></a>.
Maximum font file size is 512kB.
</p><p>
If you have written a script, convert it into byte code
using <a class="link" href="#gfxboot-compile"><span class="command"><strong>gfxboot-compile</strong></span></a>.
</p><p>
Debugging this script is rather tedious. For this, <span class="command"><strong>gfxboot-compile -l</strong></span>
will give you debug information that is useful together with the <code class="function">dtrace</code>
command.
</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="utilities"></a>Utilities</h2></div></div></div><p>
Tools needed to build a boot graphics file.
</p><div class="itemizedlist"><ul type="disc"><li><p><a name="gfxboot-compile"></a>gfxboot-compile</p><p>
Compile source into byte code. The result (together with any
other files you might need) has to be put into a cpio archive. If
you are using <span class="command"><strong>isolinux</strong></span> or
<span class="command"><strong>syslinux</strong></span>, this is not required, as you can
read files directly from the filesystem. The compiled byte code,
however, always has to be put into the cpio archive.
</p><div class="example"><a name="id2710454"></a><p class="title"><b>Example<EFBFBD>1.<2E></b></p><div class="example-contents"><pre class="programlisting">
# compile 'foo.ps' to 'foo', writing log to foo.log
# Note: '-O' turns on the optimizer. You'll always want to do this.
gfxboot-compile -O -v -l foo.log -c foo.ps foo
# put it into a cpio archive
# we'll assume you need a picture 'foo.jpg' and are using font 'foo.fnt'
echo -e "foo\nfoo.jpg\nfoo.fnt" | cpio -o &gt;bootlogo
# 'bootlogo' is ready to use, e.g.
# as 'gfxboot bootlogo' in isolinux.cfg
</pre></div></div><p><br class="example-break">
</p></li><li><p><a name="gfxboot-font"></a>gfxboot-font</p><p>
Build font file using the freetype rendering engine.
</p></li><li><p><a name="help2txt"></a>help2txt</p><p>
Convert html files into the internal online-help format.
</p></li></ul></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="reference"></a>Reference</h2></div></div></div><p>
Comments start with '%' and extend to the end of line.
</p><p>
To include some other source file, do:
</p><pre class="programlisting">%% include file</pre><p>
Numbers are always 32 bit signed integer. Numerical and string constants
are given in a C-like way (not as in Postscript).
</p><div class="example"><a name="id2672836"></a><p class="title"><b>Example<EFBFBD>2.<2E></b></p><div class="example-contents"><pre class="programlisting">
123, -456
0x4567
"Hi there\n"
'\033', '\x1b', '\u20ac'
</pre></div></div><br class="example-break"><p>
But: chars have values in the range 0 .. 0x1fffff.
</p><p>
Strings are interpreted as utf8-sequences. Alternatively you can use
'\uXXXX' or '\UXXXXXXXX' to include Unicode characters.
</p><div class="example"><a name="id2672856"></a><p class="title"><b>Example<EFBFBD>3.<2E></b></p><div class="example-contents"><pre class="programlisting">
"1 Euro = 1 &#8364;\n"
"1 Euro = 1 \u20ac\n"
"1 Euro = 1 \xe2\x82\xac\n"
</pre></div></div><br class="example-break"><p>
Logical operations return values of type 'bool'. They are not identical
with integers. There are no pre-defined constants 'true' and 'false'. But
you can define them yourself if you need them, e.g.: </p><pre class="programlisting">/true 0 0 eq def</pre><p>
</p><p>
Strings and arrays are effectively pointers. So duplicating them on the
stack does duplicate the pointer, not the object.
</p><p>
In addition, there is a unspecific pointer data type. You can use it to
construct arbitrary memory references.
</p><p>
Variable/constants/function names can consist of everything except
whitespace.
</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2672897"></a>Initialisation</h3></div></div></div><p>
During initialization the config file in run. It must leave either an
empty stack or a boolean 'true' value at the TOS (top of stack) to indicate
the boot loader that everything worked fine. Otherwise the boot loader will
assume that some error occured and not continue in graphics mode.
</p><p>
If you want to handle input (as you probably do) you must define at least
the callback function <a class="link" href="#cb_KeyEvent">KeyEvent</a>.
</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2672926"></a>Callbacks</h3></div></div></div><p>
Communication with the boot loader is done via callback functions. You are
responsible to assign useful actions to them.
See config file examples for more documentation.
</p><div class="itemizedlist"><ul type="disc"><li><p><code class="function"><a name="cb_KeyEvent"></a>KeyEvent</code></p><p>
Called if a key is pressed.
</p></li><li><p><code class="function">MenuInit</code></p><p>
Should draw boot menu.
</p></li><li><p><code class="function">InfoBoxInit</code></p><p>
Show message box (e.g. error messages).
</p></li><li><p><code class="function">InfoBoxDone</code></p><p>
Hide message box.
</p></li><li><p><code class="function">ProgressInit</code></p><p>
Initialize kernel load progress bar (syslinux/isolinux only).
</p></li><li><p><code class="function">ProgressDone</code></p><p>
Hide progress bar.
</p></li><li><p><code class="function">ProgressUpdate</code></p><p>
Advance progress bar.
</p></li><li><p><code class="function">PasswordInit</code></p><p>
Show password dialog.
</p></li><li><p><code class="function">PasswordDone</code></p><p>
Hide password dialog.
</p></li><li><p><code class="function">Timeout</code></p><p>
Timeout counter; called every 18.3th second until timeout occurs.
</p></li><li><p><code class="function">Timer</code></p><p>
Called every 18.3th second regardless of timeout.
</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2676843"></a>Primary words</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a name="f_0001"></a><code class="function">{</code> &#8211; start code definition</p><p>( &#8212; <em class="parameter"><code>code1</code></em> )</p><p><em class="parameter"><code>code1</code></em>: code start marker</p><p>After <code class="function">{</code>, no code is executed until a matching <code class="function"><a class="link" href="#f_0002">}</a></code> is found.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0029">def</a></code>, <code class="function"><a class="link" href="#f_0002">}</a></code></p><div class="example"><a name="id2676943"></a><p class="title"><b>Example<EFBFBD>4.<2E></b></p><div class="example-contents"><pre class="programlisting">
/++ { 1 add } def % define increment function '++'
</pre></div></div><br class="example-break"></li><li><p><a name="f_0002"></a><code class="function">}</code> &#8211; complete code definition</p><p>( &#8212; )</p><p><span class="emphasis"><em>Note:</em></span> <code class="function"><a class="link" href="#f_0001">{</a></code> and <code class="function">}</code> are taken care of already during conversion into bytecode. This means that redefining them does not work as you would expect.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0029">def</a></code>, <code class="function"><a class="link" href="#f_0001">{</a></code></p><div class="example"><a name="id2719973"></a><p class="title"><b>Example<EFBFBD>5.<2E></b></p><div class="example-contents"><pre class="programlisting">
/dec { 1 sub } def % define decrement function 'dec'
</pre></div></div><br class="example-break"></li><li><p><a name="f_0096"></a><code class="function">64bit</code> &#8211; test if we run on a 64-bit machine</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em> = 1: 64-bit architecture</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0003"></a><code class="function">[</code> &#8211; start array</p><p>( &#8212; <em class="parameter"><code>mark1</code></em> )</p><p><em class="parameter"><code>mark1</code></em>: array start marker</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code></p><div class="example"><a name="id2720230"></a><p class="title"><b>Example<EFBFBD>6.<2E></b></p><div class="example-contents"><pre class="programlisting">
[ 1 2 3 ] % array with 3 elements
</pre></div></div><br class="example-break"></li><li><p><a name="f_0004"></a><code class="function">]</code> &#8211; complete array definition</p><p>( <em class="parameter"><code>mark1</code></em> <em class="parameter"><code>obj1</code></em> ... <em class="parameter"><code>objN</code></em> &#8212; <em class="parameter"><code>array1</code></em> )</p><p><em class="parameter"><code>mark1</code></em>: array start marker</p><p><em class="parameter"><code>obj1</code></em> ... <em class="parameter"><code>objN</code></em>: some objects</p><p><em class="parameter"><code>array1</code></em>: N-dimensional array with <em class="parameter"><code>obj1</code></em> ... <em class="parameter"><code>objN</code></em></p><p><span class="emphasis"><em>Note:</em></span> The array uses dynamically allocated memory which must be released using <code class="function"><a class="link" href="#f_0084">free</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0003">[</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2720438"></a><p class="title"><b>Example<EFBFBD>7.<2E></b></p><div class="example-contents"><pre class="programlisting">
/foo [ "some" "text" ] def % array with 2 elements
foo free % free memory
</pre></div></div><br class="example-break"></li><li><p><a name="f_0109"></a><code class="function">_readsector</code> &#8211; read sector</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>ptr1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: sector number</p><p><em class="parameter"><code>ptr1</code></em>: sector data</p><p><span class="emphasis"><em>Note:</em></span> internal function. Returns pointer to static buffer. Does not return on error. Returns .undef if function is not implemented.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0020"></a><code class="function">abs</code> &#8211; absolute value</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int2</code></em>: |<em class="parameter"><code>int1</code></em>|</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2720833"></a><p class="title"><b>Example<EFBFBD>8.<2E></b></p><div class="example-contents"><pre class="programlisting">
-6 abs % 6
</pre></div></div><br class="example-break"></li><li><p><a name="f_0014"></a><code class="function">add</code> &#8211; addition</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p>( <em class="parameter"><code>string1</code></em> <em class="parameter"><code>int4</code></em> &#8212; <em class="parameter"><code>string2</code></em> )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>int5</code></em> &#8212; <em class="parameter"><code>ptr2</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> + <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>string2</code></em>: substring of <em class="parameter"><code>string1</code></em> at offset <em class="parameter"><code>int4</code></em></p><p><span class="emphasis"><em>Note:</em></span> Strings are treated as byte sequences, not Unicode chars. Sizes of <em class="parameter"><code>string1</code></em> and <em class="parameter"><code>ptr1</code></em> are not checked.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2721081"></a><p class="title"><b>Example<EFBFBD>9.<2E></b></p><div class="example-contents"><pre class="programlisting">
1 2 add % 3
"abc" 1 add % "bc"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0023"></a><code class="function">and</code> &#8211; logical or arithmetical 'and'</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p>( <em class="parameter"><code>bool1</code></em> <em class="parameter"><code>bool2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> &amp; <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool3</code></em>: <em class="parameter"><code>bool1</code></em> &amp;&amp; <em class="parameter"><code>bool2</code></em></p><p><span class="emphasis"><em>Note:</em></span> Mixing boolean and integer argument types is possible, in this case integers are converted to boolean first.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2721301"></a><p class="title"><b>Example<EFBFBD>10.<2E></b></p><div class="example-contents"><pre class="programlisting">
true false and % false
3 6 and % 2
10 true and % gives true, but please avoid this
</pre></div></div><br class="example-break"></li><li><p><a name="f_0008"></a><code class="function">array</code> &#8211; create an empty array</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>array1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: array dimension</p><p><em class="parameter"><code>array1</code></em>: new array</p><p><span class="emphasis"><em>Note:</em></span> Use <code class="function"><a class="link" href="#f_0084">free</a></code> to free <em class="parameter"><code>array1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2721475"></a><p class="title"><b>Example<EFBFBD>11.<2E></b></p><div class="example-contents"><pre class="programlisting">
/foo 10 array def % create array with 10 elements
foo 4 123 put % foo[4] = 123
foo free % free foo
</pre></div></div><br class="example-break"></li><li><p><a name="f_0154"></a><code class="function">blend</code> &#8211; - blend image with alpha channel</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>obj2</code></em> <em class="parameter"><code>ptr3</code></em> &#8212; )</p><p><em class="parameter"><code>obj1</code></em>: pointer to source image or color value</p><p><em class="parameter"><code>obj2</code></em>: pointer to alpha channel or transparency value</p><p><em class="parameter"><code>ptr3</code></em>: destination</p><p>An image section of <em class="parameter"><code>obj1</code></em> is copied to <em class="parameter"><code>ptr3</code></em> using <em class="parameter"><code>obj2</code></em> as alpha channel. <em class="parameter"><code>obj1</code></em> may be a color value or an unpacked image (<code class="function"><a class="link" href="#f_0077">unpackimage</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>). <em class="parameter"><code>obj2</code></em> may be a transparency value (0..255) or an unpacked image used as alpha channel. The current cursor position is used as offset into <em class="parameter"><code>obj1</code></em> and <em class="parameter"><code>obj2</code></em> if they are images. If both <em class="parameter"><code>obj1</code></em> and <em class="parameter"><code>obj2</code></em> are images, they must have the same dimensions.</p><p><span class="emphasis"><em>Note:</em></span> 16/32-bit modes only.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p></li><li><p><a name="f_0108"></a><code class="function">chdir</code> &#8211; set current working directory</p><p>( <em class="parameter"><code>str1</code></em> &#8212; )</p><p><em class="parameter"><code>str1</code></em>: file name</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2721835"></a><p class="title"><b>Example<EFBFBD>12.<2E></b></p><div class="example-contents"><pre class="programlisting">
"/foo/bar" chdir % set working directory
</pre></div></div><br class="example-break"></li><li><p><a name="f_0115"></a><code class="function">colorbits</code> &#8211; current pixel size</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: pixel size in bits</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0111">currentmode</a></code>, <code class="function"><a class="link" href="#f_0053">monitorsize</a></code>, <code class="function"><a class="link" href="#f_0051">screen.size</a></code>, <code class="function"><a class="link" href="#f_0110">setmode</a></code>, <code class="function"><a class="link" href="#f_0114">sysinfo</a></code>, <code class="function"><a class="link" href="#f_0113">videomodeinfo</a></code>, <code class="function"><a class="link" href="#f_0112">videomodes</a></code>, <code class="function"><a class="link" href="#f_0052">vscreen.size</a></code></p></li><li><p><a name="f_0057"></a><code class="function">currentcolor</code> &#8211; current drawing color</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: palette index (8-bit mode) or 24-bit RGB-value (16/32-bit modes).</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2722084"></a><p class="title"><b>Example<EFBFBD>13.<2E></b></p><div class="example-contents"><pre class="programlisting">
currentcolor not setcolor % inverse color
</pre></div></div><br class="example-break"></li><li><p><a name="f_0134"></a><code class="function">currenteotchar</code> &#8211; current alternative end-of-text char</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: eot char</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0066"></a><code class="function">currentfont</code> &#8211; get current font</p><p>( &#8212; <em class="parameter"><code>ptr1</code></em> )</p><p><em class="parameter"><code>ptr1</code></em>: current font</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0067">fontheight</a></code>, <code class="function"><a class="link" href="#f_0146">lineheight</a></code>, <code class="function"><a class="link" href="#f_0065">setfont</a></code></p><div class="example"><a name="id2722325"></a><p class="title"><b>Example<EFBFBD>14.<2E></b></p><div class="example-contents"><pre class="programlisting">
currentfont % save font
"16x16_bold.fnt" findfile setfont % set bold font
"bold text" show % write something in bold font
setfont % back to normal font
</pre></div></div><br class="example-break"></li><li><p><a name="f_0069"></a><code class="function">currentimage</code> &#8211; currently used image</p><p>( &#8212; <em class="parameter"><code>ptr1</code></em> )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p></li><li><p><a name="f_0144"></a><code class="function">currentlink</code> &#8211; currently selected link</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: selected link</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0136"></a><code class="function">currentmaxrows</code> &#8211; - current maxium number of text rows to display</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: maxium number of text rows to display in a single <code class="function"><a class="link" href="#f_0072">show</a></code> command.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0111"></a><code class="function">currentmode</code> &#8211; current video mode</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: current video mode number</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0115">colorbits</a></code>, <code class="function"><a class="link" href="#f_0053">monitorsize</a></code>, <code class="function"><a class="link" href="#f_0051">screen.size</a></code>, <code class="function"><a class="link" href="#f_0110">setmode</a></code>, <code class="function"><a class="link" href="#f_0114">sysinfo</a></code>, <code class="function"><a class="link" href="#f_0113">videomodeinfo</a></code>, <code class="function"><a class="link" href="#f_0112">videomodes</a></code>, <code class="function"><a class="link" href="#f_0052">vscreen.size</a></code></p></li><li><p><a name="f_0061"></a><code class="function">currentpoint</code> &#8211; current cursor position</p><p>( &#8212; <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: x, y (upper left: 0, 0)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p></li><li><p><a name="f_0142"></a><code class="function">currenttextcolors</code> &#8211; current text markup colors</p><p>( &#8212; <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> <em class="parameter"><code>int4</code></em> )</p><p><em class="parameter"><code>int1</code></em>: normal color</p><p><em class="parameter"><code>int2</code></em>: highlight color</p><p><em class="parameter"><code>int3</code></em>: link color</p><p><em class="parameter"><code>int4</code></em>: selected link color</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0132"></a><code class="function">currenttextwrap</code> &#8211; current text wrap column</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: text wrap column</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0147"></a><code class="function">currenttitle</code> &#8211; current page title</p><p>( &#8212; <em class="parameter"><code>str1</code></em> )</p><p><em class="parameter"><code>str1</code></em>: page title</p><p><span class="emphasis"><em>Note:</em></span> available after running <code class="function"><a class="link" href="#f_0137">formattext</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0071"></a><code class="function">currenttransparency</code> &#8211; current transparency</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p></li><li><p><a name="f_0151"></a><code class="function">date</code> &#8211; get current date</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: date (bit 0-7: day, bit 8-15: month, bit 16-31: year)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0029"></a><code class="function">def</code> &#8211; define new word</p><p>( <em class="parameter"><code>dict1</code></em> <em class="parameter"><code>obj1</code></em> &#8212; )</p><p><em class="parameter"><code>dict1</code></em>: is defined as <em class="parameter"><code>obj1</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0001">{</a></code>, <code class="function"><a class="link" href="#f_0002">}</a></code></p><div class="example"><a name="id2724019"></a><p class="title"><b>Example<EFBFBD>15.<2E></b></p><div class="example-contents"><pre class="programlisting">
/x 100 def % define constant x as 100
/neg { -1 mul } def % define 'neg' function
</pre></div></div><br class="example-break"></li><li><p><a name="f_0017"></a><code class="function">div</code> &#8211; division</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> / <em class="parameter"><code>int2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2724197"></a><p class="title"><b>Example<EFBFBD>16.<2E></b></p><div class="example-contents"><pre class="programlisting">
17 3 div % 5
</pre></div></div><br class="example-break"></li><li><p><a name="f_0041"></a><code class="function">dtrace</code> &#8211; single step with debug window</p><p>( &#8212; )</p><p>Turn on <code class="function"><a class="link" href="#f_0042">trace</a></code> mode and show debug info in upper left screen corner.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0042">trace</a></code></p></li><li><p><a name="f_0086"></a><code class="function">dumpmem</code> &#8211; dump memory usage to console</p><p>( &#8212; )</p><p><span class="emphasis"><em>Note:</em></span> useful only for debugging.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p></li><li><p><a name="f_0010"></a><code class="function">dup</code> &#8211; duplicate TOS</p><p>( <em class="parameter"><code>obj1</code></em> &#8212; <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>obj1</code></em> )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0038">exch</a></code>, <code class="function"><a class="link" href="#f_0012">index</a></code>, <code class="function"><a class="link" href="#f_0011">over</a></code>, <code class="function"><a class="link" href="#f_0009">pop</a></code>, <code class="function"><a class="link" href="#f_0040">roll</a></code>, <code class="function"><a class="link" href="#f_0039">rot</a></code></p><div class="example"><a name="id2724456"></a><p class="title"><b>Example<EFBFBD>17.<2E></b></p><div class="example-contents"><pre class="programlisting">
key % key: some input value
dup 'a' eq { do_a } if % if key = 'a'
dup 'b' eq { do_b } if % if key = 'b'
dup 'c' eq { do_c } if % if key = 'c'
pop
</pre></div></div><br class="example-break"></li><li><p><a name="f_0091"></a><code class="function">edit.done</code> &#8211; restore input field background</p><p>( <em class="parameter"><code>array1</code></em> &#8212; )</p><p><em class="parameter"><code>array1</code></em>: see <code class="function"><a class="link" href="#f_0089">edit.init</a></code></p><p><span class="emphasis"><em>Note:</em></span> does not free any data associated with <em class="parameter"><code>array1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0093">edit.hidecursor</a></code>, <code class="function"><a class="link" href="#f_0089">edit.init</a></code>, <code class="function"><a class="link" href="#f_0094">edit.input</a></code>, <code class="function"><a class="link" href="#f_0090">edit.redraw</a></code>, <code class="function"><a class="link" href="#f_0092">edit.showcursor</a></code></p><div class="example"><a name="id2724561"></a><p class="title"><b>Example<EFBFBD>18.<2E></b></p><div class="example-contents"><pre class="programlisting">
ed edit.done % delete input field
</pre></div></div><br class="example-break"></li><li><p><a name="f_0093"></a><code class="function">edit.hidecursor</code> &#8211; hide input field cursor</p><p>( <em class="parameter"><code>array1</code></em> &#8212; )</p><p><em class="parameter"><code>array1</code></em>: see <code class="function"><a class="link" href="#f_0089">edit.init</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0091">edit.done</a></code>, <code class="function"><a class="link" href="#f_0089">edit.init</a></code>, <code class="function"><a class="link" href="#f_0094">edit.input</a></code>, <code class="function"><a class="link" href="#f_0090">edit.redraw</a></code>, <code class="function"><a class="link" href="#f_0092">edit.showcursor</a></code></p></li><li><p><a name="f_0089"></a><code class="function">edit.init</code> &#8211; - setup and show an editable input field</p><p>( <em class="parameter"><code>array1</code></em> <em class="parameter"><code>str1</code></em> &#8212; )</p><p><em class="parameter"><code>str1</code></em>: initial input string value</p><p><em class="parameter"><code>array1</code></em>: (at least) 6-dimensional array: [ x y bg buf buf_size .undef ]. x, y: input field position; bg: background pixmap (created with <code class="function"><a class="link" href="#f_0081">savescreen</a></code>) - this determines the input field dimensions, too; buf: string buffer, large enough for a string of length buf_size. The last element is used internally.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0091">edit.done</a></code>, <code class="function"><a class="link" href="#f_0093">edit.hidecursor</a></code>, <code class="function"><a class="link" href="#f_0094">edit.input</a></code>, <code class="function"><a class="link" href="#f_0090">edit.redraw</a></code>, <code class="function"><a class="link" href="#f_0092">edit.showcursor</a></code></p><div class="example"><a name="id2724760"></a><p class="title"><b>Example<EFBFBD>19.<2E></b></p><div class="example-contents"><pre class="programlisting">
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
</pre></div></div><br class="example-break"></li><li><p><a name="f_0094"></a><code class="function">edit.input</code> &#8211; edit field input processing</p><p>( <em class="parameter"><code>array1</code></em> <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>array1</code></em>: see <code class="function"><a class="link" href="#f_0089">edit.init</a></code></p><p><em class="parameter"><code>int1</code></em>: key (bits 0-23 Unicode char, bits 24-31 scan code)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0091">edit.done</a></code>, <code class="function"><a class="link" href="#f_0093">edit.hidecursor</a></code>, <code class="function"><a class="link" href="#f_0089">edit.init</a></code>, <code class="function"><a class="link" href="#f_0090">edit.redraw</a></code>, <code class="function"><a class="link" href="#f_0092">edit.showcursor</a></code></p><div class="example"><a name="id2724881"></a><p class="title"><b>Example<EFBFBD>20.<2E></b></p><div class="example-contents"><pre class="programlisting">
/keyLeft 0x4b000000 def % move cursor left
ed 'a' edit.input
ed keyLeft edit.input
</pre></div></div><br class="example-break"></li><li><p><a name="f_0090"></a><code class="function">edit.redraw</code> &#8211; redraw input field</p><p>( <em class="parameter"><code>array1</code></em> &#8212; )</p><p><em class="parameter"><code>array1</code></em>: see <code class="function"><a class="link" href="#f_0089">edit.init</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0091">edit.done</a></code>, <code class="function"><a class="link" href="#f_0093">edit.hidecursor</a></code>, <code class="function"><a class="link" href="#f_0089">edit.init</a></code>, <code class="function"><a class="link" href="#f_0094">edit.input</a></code>, <code class="function"><a class="link" href="#f_0092">edit.showcursor</a></code></p><div class="example"><a name="id2724988"></a><p class="title"><b>Example<EFBFBD>21.<2E></b></p><div class="example-contents"><pre class="programlisting">
ed edit.redraw % redraw input field
</pre></div></div><br class="example-break"></li><li><p><a name="f_0092"></a><code class="function">edit.showcursor</code> &#8211; show input field cursor</p><p>( <em class="parameter"><code>array1</code></em> &#8212; )</p><p><em class="parameter"><code>array1</code></em>: see <code class="function"><a class="link" href="#f_0089">edit.init</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0091">edit.done</a></code>, <code class="function"><a class="link" href="#f_0093">edit.hidecursor</a></code>, <code class="function"><a class="link" href="#f_0089">edit.init</a></code>, <code class="function"><a class="link" href="#f_0094">edit.input</a></code>, <code class="function"><a class="link" href="#f_0090">edit.redraw</a></code></p></li><li><p><a name="f_0116"></a><code class="function">eject</code> &#8211; eject CD-ROM</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int1</code></em>: BIOS drive id</p><p><em class="parameter"><code>int2</code></em>: BIOS error code</p><p><span class="emphasis"><em>Note:</em></span> does not work with all BIOSes. (With very few, actually.)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0032"></a><code class="function">eq</code> &#8211; equal</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>bool1</code></em> )</p><p>( <em class="parameter"><code>str1</code></em> <em class="parameter"><code>str2</code></em> &#8212; <em class="parameter"><code>bool2</code></em> )</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>obj2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>bool1</code></em>: true if <em class="parameter"><code>int1</code></em> == <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool2</code></em>: true if <em class="parameter"><code>str1</code></em> == <em class="parameter"><code>str2</code></em></p><p><em class="parameter"><code>bool3</code></em>: true if <em class="parameter"><code>obj1</code></em> and <em class="parameter"><code>obj2</code></em> are identical</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0035">ge</a></code>, <code class="function"><a class="link" href="#f_0034">gt</a></code>, <code class="function"><a class="link" href="#f_0037">le</a></code>, <code class="function"><a class="link" href="#f_0036">lt</a></code>, <code class="function"><a class="link" href="#f_0033">ne</a></code></p><div class="example"><a name="id2725553"></a><p class="title"><b>Example<EFBFBD>22.<2E></b></p><div class="example-contents"><pre class="programlisting">
1 3 eq % false
"abc" "abc" eq % true
/a [ 1 2 ] def
/b a def
a [ 1 2 ] eq % false (not the same array)
a b eq % true
</pre></div></div><br class="example-break"></li><li><p><a name="f_0038"></a><code class="function">exch</code> &#8211; exchange TOS with TOS-1</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>obj2</code></em> &#8212; <em class="parameter"><code>obj2</code></em> <em class="parameter"><code>obj1</code></em> )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0010">dup</a></code>, <code class="function"><a class="link" href="#f_0012">index</a></code>, <code class="function"><a class="link" href="#f_0011">over</a></code>, <code class="function"><a class="link" href="#f_0009">pop</a></code>, <code class="function"><a class="link" href="#f_0040">roll</a></code>, <code class="function"><a class="link" href="#f_0039">rot</a></code></p><div class="example"><a name="id2725671"></a><p class="title"><b>Example<EFBFBD>23.<2E></b></p><div class="example-contents"><pre class="programlisting">
8
/a exch def % a = 8
</pre></div></div><br class="example-break"></li><li><p><a name="f_0013"></a><code class="function">exec</code> &#8211; evaluate object</p><p>( <em class="parameter"><code>dict1</code></em> &#8212; )</p><p>( <em class="parameter"><code>obj1</code></em> &#8212; <em class="parameter"><code>obj1</code></em> )</p><p>If <em class="parameter"><code>obj1</code></em> is a dictionary entry, it is looked up and evaluated. If not, the stack is left unchanged.</p><p><span class="emphasis"><em>Note:</em></span> Unlike Postscript, no cvx is necessary. And it works only with dictionary references.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0044">exit</a></code>, <code class="function"><a class="link" href="#f_0047">for</a></code>, <code class="function"><a class="link" href="#f_0048">forall</a></code>, <code class="function"><a class="link" href="#f_0030">if</a></code>, <code class="function"><a class="link" href="#f_0031">ifelse</a></code>, <code class="function"><a class="link" href="#f_0045">loop</a></code>, <code class="function"><a class="link" href="#f_0046">repeat</a></code>, <code class="function"><a class="link" href="#f_0043">return</a></code></p><div class="example"><a name="id2725829"></a><p class="title"><b>Example<EFBFBD>24.<2E></b></p><div class="example-contents"><pre class="programlisting">
/foo [ /bar 100 "abc" ] def
foo 0 get % /bar
exec % run bar
foo 2 get % "abc"
exec % still "abc"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0044"></a><code class="function">exit</code> &#8211; leave loop/repeat/for/forall loop.</p><p>( &#8212; )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0013">exec</a></code>, <code class="function"><a class="link" href="#f_0047">for</a></code>, <code class="function"><a class="link" href="#f_0048">forall</a></code>, <code class="function"><a class="link" href="#f_0030">if</a></code>, <code class="function"><a class="link" href="#f_0031">ifelse</a></code>, <code class="function"><a class="link" href="#f_0045">loop</a></code>, <code class="function"><a class="link" href="#f_0046">repeat</a></code>, <code class="function"><a class="link" href="#f_0043">return</a></code></p><div class="example"><a name="id2725945"></a><p class="title"><b>Example<EFBFBD>25.<2E></b></p><div class="example-contents"><pre class="programlisting">
0 1 100 { 56 eq { exit } if } for % leave if counter == 56
</pre></div></div><br class="example-break"></li><li><p><a name="f_0106"></a><code class="function">filesize</code> &#8211; get file size</p><p>( <em class="parameter"><code>str1</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>str1</code></em>: file name</p><p><em class="parameter"><code>int1</code></em>: file length (or .undef if not found)</p><p><span class="emphasis"><em>Note:</em></span> Unlike <code class="function"><a class="link" href="#f_0105">findfile</a></code>, it doesn't load the file.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2726142"></a><p class="title"><b>Example<EFBFBD>26.<2E></b></p><div class="example-contents"><pre class="programlisting">
"xxx.jpg" filesize % file size of "xxx.jpg"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0087"></a><code class="function">fillrect</code> &#8211; fill rectangular area</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: width, height</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2726330"></a><p class="title"><b>Example<EFBFBD>27.<2E></b></p><div class="example-contents"><pre class="programlisting">
0 0 moveto
blue setcolor
300 200 fillrect % 300x200 blue rectangle
</pre></div></div><br class="example-break"></li><li><p><a name="f_0105"></a><code class="function">findfile</code> &#8211; load file</p><p>( <em class="parameter"><code>str1</code></em> &#8212; <em class="parameter"><code>ptr1</code></em> )</p><p><em class="parameter"><code>str1</code></em>: file name</p><p><em class="parameter"><code>ptr1</code></em>: buffer with file data</p><p><span class="emphasis"><em>Note:</em></span> <em class="parameter"><code>ptr1</code></em> may or may not have to be free'd using <code class="function"><a class="link" href="#f_0084">free</a></code>, depending on whether it is actually loaded from file system or is part of the bootlogo archive. To be on the safe side, always free it.</p><p>To get the file length, use <code class="function"><a class="link" href="#f_0007">length</a></code> on <em class="parameter"><code>ptr1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2726556"></a><p class="title"><b>Example<EFBFBD>28.<2E></b></p><div class="example-contents"><pre class="programlisting">
"xxx.jpg" findfile length % file size of "xxx.jpg"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0067"></a><code class="function">fontheight</code> &#8211; font height</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: font height</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0066">currentfont</a></code>, <code class="function"><a class="link" href="#f_0146">lineheight</a></code>, <code class="function"><a class="link" href="#f_0065">setfont</a></code></p><div class="example"><a name="id2726633"></a><p class="title"><b>Example<EFBFBD>29.<2E></b></p><div class="example-contents"><pre class="programlisting">
currentpoint
"Hello" show % print "Hello"
moveto 0 fontheight rmoveto
"world!" % print "world!" below "Hello"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0047"></a><code class="function">for</code> &#8211; - typical 'for' loop</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> <em class="parameter"><code>code1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: start value</p><p><em class="parameter"><code>int2</code></em>: step size</p><p><em class="parameter"><code>int3</code></em>: final value (inclusive)</p><p>Run <em class="parameter"><code>code1</code></em> and put the current counter value onto the stack for every iteration.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0013">exec</a></code>, <code class="function"><a class="link" href="#f_0044">exit</a></code>, <code class="function"><a class="link" href="#f_0048">forall</a></code>, <code class="function"><a class="link" href="#f_0030">if</a></code>, <code class="function"><a class="link" href="#f_0031">ifelse</a></code>, <code class="function"><a class="link" href="#f_0045">loop</a></code>, <code class="function"><a class="link" href="#f_0046">repeat</a></code>, <code class="function"><a class="link" href="#f_0043">return</a></code></p><div class="example"><a name="id2726805"></a><p class="title"><b>Example<EFBFBD>30.<2E></b></p><div class="example-contents"><pre class="programlisting">
0 1 4 { } for % leave 0 1 2 3 4 on the stack
</pre></div></div><br class="example-break"></li><li><p><a name="f_0048"></a><code class="function">forall</code> &#8211; loop over all array elements</p><p>( <em class="parameter"><code>array1</code></em> <em class="parameter"><code>code</code></em> <em class="parameter"><code>1</code></em> &#8212; )</p><p>( <em class="parameter"><code>str1</code></em> <em class="parameter"><code>code</code></em> <em class="parameter"><code>1</code></em> &#8212; )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>code</code></em> <em class="parameter"><code>1</code></em> &#8212; )</p><p>Run code1 for every element of <em class="parameter"><code>array1</code></em>, <em class="parameter"><code>str1</code></em> or <em class="parameter"><code>ptr1</code></em> putting each element on the stack in turn.</p><p><span class="emphasis"><em>Note:</em></span> <em class="parameter"><code>str1</code></em> is treated as a sequence of bytes, not utf8 chars.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0013">exec</a></code>, <code class="function"><a class="link" href="#f_0044">exit</a></code>, <code class="function"><a class="link" href="#f_0047">for</a></code>, <code class="function"><a class="link" href="#f_0030">if</a></code>, <code class="function"><a class="link" href="#f_0031">ifelse</a></code>, <code class="function"><a class="link" href="#f_0045">loop</a></code>, <code class="function"><a class="link" href="#f_0046">repeat</a></code>, <code class="function"><a class="link" href="#f_0043">return</a></code></p><div class="example"><a name="id2727009"></a><p class="title"><b>Example<EFBFBD>31.<2E></b></p><div class="example-contents"><pre class="programlisting">
[ 1 2 3 ] { } forall % leave 1 2 3 on the stack
</pre></div></div><br class="example-break"></li><li><p><a name="f_0137"></a><code class="function">formattext</code> &#8211; - format text</p><p>( <em class="parameter"><code>str1</code></em> &#8212; )</p><p><em class="parameter"><code>str1</code></em>: text</p><p>Preprocess text to find (and remember) line breaks, links and stuff.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0084"></a><code class="function">free</code> &#8211; free memory</p><p>( <em class="parameter"><code>obj1</code></em> &#8212; )</p><p><em class="parameter"><code>obj1</code></em>: object to free, either array, string or pointer</p><p><span class="emphasis"><em>Note:</em></span> There is no garbage collector implemented. You have to keep track of memory usage yourself. If <em class="parameter"><code>obj1</code></em> does not refer to some dynamically allocated object, <code class="function">free</code> does nothing.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2727408"></a><p class="title"><b>Example<EFBFBD>32.<2E></b></p><div class="example-contents"><pre class="programlisting">
2 array % create array with 2 elements...
free % and free it
100 malloc % allocate 100 bytes...
free % and free it
"Some Text" free % free nothing
</pre></div></div><br class="example-break"></li><li><p><a name="f_0035"></a><code class="function">ge</code> &#8211; greater or equal</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>bool1</code></em> )</p><p>( <em class="parameter"><code>str1</code></em> <em class="parameter"><code>str2</code></em> &#8212; <em class="parameter"><code>bool2</code></em> )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>ptr2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>bool1</code></em>: true if <em class="parameter"><code>int1</code></em> &gt;= <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool2</code></em>: true if <em class="parameter"><code>str1</code></em> &gt;= <em class="parameter"><code>str2</code></em></p><p><em class="parameter"><code>bool3</code></em>: true if <em class="parameter"><code>ptr1</code></em> &gt;= <em class="parameter"><code>ptr2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0032">eq</a></code>, <code class="function"><a class="link" href="#f_0034">gt</a></code>, <code class="function"><a class="link" href="#f_0037">le</a></code>, <code class="function"><a class="link" href="#f_0036">lt</a></code>, <code class="function"><a class="link" href="#f_0033">ne</a></code></p><div class="example"><a name="id2727608"></a><p class="title"><b>Example<EFBFBD>33.<2E></b></p><div class="example-contents"><pre class="programlisting">
7 4 ge % true
"abc" "abc" ge % true
/a 10 malloc def
/b a + 2 def
b a ge % true
</pre></div></div><br class="example-break"></li><li><p><a name="f_0005"></a><code class="function">get</code> &#8211; get array, string or memory element</p><p>( <em class="parameter"><code>array1</code></em> <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>obj1</code></em> )</p><p>( <em class="parameter"><code>string1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>int4</code></em> &#8212; <em class="parameter"><code>int5</code></em> )</p><p><em class="parameter"><code>obj1</code></em>: <em class="parameter"><code>int1</code></em>-th element of <em class="parameter"><code>array1</code></em></p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int2</code></em>-th byte of <em class="parameter"><code>string1</code></em></p><p><em class="parameter"><code>int5</code></em>: <em class="parameter"><code>int4</code></em>-th byte of <em class="parameter"><code>ptr1</code></em></p><p><span class="emphasis"><em>Note:</em></span> Returns the n-th byte of <em class="parameter"><code>string1</code></em>, not the n-th utf8 char. Sizes of <em class="parameter"><code>string1</code></em> or <em class="parameter"><code>ptr1</code></em> are not checked.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0006">put</a></code></p><div class="example"><a name="id2727793"></a><p class="title"><b>Example<EFBFBD>34.<2E></b></p><div class="example-contents"><pre class="programlisting">
"abc" 1 get % 'b'
[ 10 20 30 ] 2 get % 30
</pre></div></div><br class="example-break"></li><li><p><a name="f_0099"></a><code class="function">getbyte</code> &#8211; get byte from memory</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: byte at <em class="parameter"><code>ptr1</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0107"></a><code class="function">getcwd</code> &#8211; get current working directory</p><p>( &#8212; <em class="parameter"><code>str1</code></em> )</p><p><em class="parameter"><code>str1</code></em>: file name</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2728216"></a><p class="title"><b>Example<EFBFBD>35.<2E></b></p><div class="example-contents"><pre class="programlisting">
getcwd show % print working directory
</pre></div></div><br class="example-break"></li><li><p><a name="f_0103"></a><code class="function">getdword</code> &#8211; get dword from memory</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: dword at <em class="parameter"><code>ptr1</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0155"></a><code class="function">getkey</code> &#8211; get keyboard input</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: key (bit 0-7: ASCII, bit 8-15: scan code, bit 16-31: kbd status bits)</p><p><span class="emphasis"><em>Note:</em></span> the function does not block. If there is no key pressed, bits 0-15 will be 0.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0145"></a><code class="function">getlink</code> &#8211; - get link information</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>str1</code></em> <em class="parameter"><code>str2</code></em> <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int1</code></em>: link number</p><p><em class="parameter"><code>str1</code></em>: link label</p><p><em class="parameter"><code>str2</code></em>: link text</p><p><em class="parameter"><code>int1</code></em>: link text x-offset</p><p><em class="parameter"><code>int2</code></em>: link text row</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0140"></a><code class="function">getlinks</code> &#8211; - number of links in text</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: number of links in text.</p><p><span class="emphasis"><em>Note:</em></span> available after running <code class="function"><a class="link" href="#f_0137">formattext</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0079"></a><code class="function">getpalette</code> &#8211; get palette entry</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int1</code></em>: palette index</p><p><em class="parameter"><code>int2</code></em>: RGB value</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2729405"></a><p class="title"><b>Example<EFBFBD>36.<2E></b></p><div class="example-contents"><pre class="programlisting">
11 dup getpalette not setpalette % invert color 11
</pre></div></div><br class="example-break"></li><li><p><a name="f_0064"></a><code class="function">getpixel</code> &#8211; read pixel from graphics memory</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: color; either 8-bit palette index or 24-bit RGB-value, depending on graphics mode.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2729584"></a><p class="title"><b>Example<EFBFBD>37.<2E></b></p><div class="example-contents"><pre class="programlisting">
getpixel not setcolor putpixel % invert pixel color
</pre></div></div><br class="example-break"></li><li><p><a name="f_0138"></a><code class="function">gettextrows</code> &#8211; number of text rows</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: total number of text rows.</p><p><span class="emphasis"><em>Note:</em></span> available after running <code class="function"><a class="link" href="#f_0137">formattext</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0049"></a><code class="function">gettype</code> &#8211; get object type</p><p>( <em class="parameter"><code>obj1</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p>Returns the object type.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0050">settype</a></code></p><div class="example"><a name="id2729866"></a><p class="title"><b>Example<EFBFBD>38.<2E></b></p><div class="example-contents"><pre class="programlisting">
"abc" gettype % 4 (= string)
</pre></div></div><br class="example-break"></li><li><p><a name="f_0101"></a><code class="function">getword</code> &#8211; get word from memory</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: word at <em class="parameter"><code>ptr1</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0034"></a><code class="function">gt</code> &#8211; greater than</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>bool1</code></em> )</p><p>( <em class="parameter"><code>str1</code></em> <em class="parameter"><code>str2</code></em> &#8212; <em class="parameter"><code>bool2</code></em> )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>ptr2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>bool1</code></em>: true if <em class="parameter"><code>int1</code></em> &gt; <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool2</code></em>: true if <em class="parameter"><code>str1</code></em> &gt; <em class="parameter"><code>str2</code></em></p><p><em class="parameter"><code>bool3</code></em>: true if <em class="parameter"><code>ptr1</code></em> &gt; <em class="parameter"><code>ptr2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0032">eq</a></code>, <code class="function"><a class="link" href="#f_0035">ge</a></code>, <code class="function"><a class="link" href="#f_0037">le</a></code>, <code class="function"><a class="link" href="#f_0036">lt</a></code>, <code class="function"><a class="link" href="#f_0033">ne</a></code></p><div class="example"><a name="id2730318"></a><p class="title"><b>Example<EFBFBD>39.<2E></b></p><div class="example-contents"><pre class="programlisting">
7 4 gt % true
"abc" "abd" gt % false
/a 10 malloc def
/b a + 2 def
b a gt % true
</pre></div></div><br class="example-break"></li><li><p><a name="f_0152"></a><code class="function">idle</code> &#8211; run stuff when idle</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: 'kroete' data</p><p><em class="parameter"><code>int1</code></em>: direction (0 or 1)</p><p>Run 'kroete' animation while we're waiting for keyboard input.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0030"></a><code class="function">if</code> &#8211; typical 'if'</p><p>( <em class="parameter"><code>bool1</code></em> <em class="parameter"><code>code1</code></em> &#8212; )</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>code1</code></em> &#8212; )</p><p>( <em class="parameter"><code>undef1</code></em> <em class="parameter"><code>code1</code></em> &#8212; )</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>code1</code></em> &#8212; )</p><p><em class="parameter"><code>bool1</code></em>: contition</p><p><em class="parameter"><code>code1</code></em>: code start marker (see <code class="function"><a class="link" href="#f_0001">{</a></code>)</p><p><em class="parameter"><code>int1</code></em>: integer are automatically converted to boolean</p><p><em class="parameter"><code>undef1</code></em>: the undefined value is treated as 'false'</p><p><em class="parameter"><code>obj1</code></em>: strings, arrays, pointer are considered 'true'</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0013">exec</a></code>, <code class="function"><a class="link" href="#f_0044">exit</a></code>, <code class="function"><a class="link" href="#f_0047">for</a></code>, <code class="function"><a class="link" href="#f_0048">forall</a></code>, <code class="function"><a class="link" href="#f_0031">ifelse</a></code>, <code class="function"><a class="link" href="#f_0045">loop</a></code>, <code class="function"><a class="link" href="#f_0046">repeat</a></code>, <code class="function"><a class="link" href="#f_0043">return</a></code></p><div class="example"><a name="id2730805"></a><p class="title"><b>Example<EFBFBD>40.<2E></b></p><div class="example-contents"><pre class="programlisting">
10 4 gt { "10 &gt; 4" show } if
"" { "is always true" show } if % strings are always 'true'
</pre></div></div><br class="example-break"></li><li><p><a name="f_0031"></a><code class="function">ifelse</code> &#8211; typical 'if' / 'else'</p><p>( <em class="parameter"><code>bool1</code></em> <em class="parameter"><code>code1</code></em> <em class="parameter"><code>code2</code></em> &#8212; )</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>code1</code></em> <em class="parameter"><code>code2</code></em> &#8212; )</p><p>( <em class="parameter"><code>undef1</code></em> <em class="parameter"><code>code1</code></em> <em class="parameter"><code>code2</code></em> &#8212; )</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>code1</code></em> <em class="parameter"><code>code2</code></em> &#8212; )</p><p><em class="parameter"><code>bool1</code></em>: contition</p><p><em class="parameter"><code>code1</code></em>: code start marker (see <code class="function"><a class="link" href="#f_0001">{</a></code>) for 'true' branch</p><p><em class="parameter"><code>code2</code></em>: code start marker (see <code class="function"><a class="link" href="#f_0001">{</a></code>) for 'false' branch</p><p><em class="parameter"><code>int1</code></em>: integer are automatically converted to boolean</p><p><em class="parameter"><code>undef1</code></em>: the undefined value is treated as 'false'</p><p><em class="parameter"><code>obj1</code></em>: strings, arrays, pointer are considered 'true'</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0013">exec</a></code>, <code class="function"><a class="link" href="#f_0044">exit</a></code>, <code class="function"><a class="link" href="#f_0047">for</a></code>, <code class="function"><a class="link" href="#f_0048">forall</a></code>, <code class="function"><a class="link" href="#f_0030">if</a></code>, <code class="function"><a class="link" href="#f_0045">loop</a></code>, <code class="function"><a class="link" href="#f_0046">repeat</a></code>, <code class="function"><a class="link" href="#f_0043">return</a></code></p><div class="example"><a name="id2731069"></a><p class="title"><b>Example<EFBFBD>41.<2E></b></p><div class="example-contents"><pre class="programlisting">
x1 x2 gt { "x1 &gt; x2" } { "x1 &lt;= x2" } ifelse show
</pre></div></div><br class="example-break"></li><li><p><a name="f_0075"></a><code class="function">image</code> &#8211; show image region</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> <em class="parameter"><code>int4</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: x, y position in image</p><p><em class="parameter"><code>int3</code></em>, <em class="parameter"><code>int4</code></em>: width, height of image region</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p><div class="example"><a name="id2731254"></a><p class="title"><b>Example<EFBFBD>42.<2E></b></p><div class="example-contents"><pre class="programlisting">
"xxx.jpg" findfile setimage % load and activate "xxx.jpg"
0 0 image.size image % draw whole image
</pre></div></div><br class="example-break"></li><li><p><a name="f_0055"></a><code class="function">image.colors</code> &#8211; image palette entries</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: number of colors in 8-bit PCX image.</p><p>8-bit modes use a color palette. An image uses the first <code class="function">image.colors</code> entries. If you want to define your own colors, use <code class="function">image.colors</code> to get the first free palette entry. For 16/32-bit modes, 0 is returned.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p></li><li><p><a name="f_0054"></a><code class="function">image.size</code> &#8211; graphics image size</p><p>( &#8212; <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: image width and height. The image is specified with <code class="function"><a class="link" href="#f_0068">setimage</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p><div class="example"><a name="id2731579"></a><p class="title"><b>Example<EFBFBD>43.<2E></b></p><div class="example-contents"><pre class="programlisting">
image.size screen.size
exch 4 -1 roll sub 2 div 3 1 roll exch sub 2 div % center image
moveto 0 0 image.size image % draw it
</pre></div></div><br class="example-break"></li><li><p><a name="f_0097"></a><code class="function">inbyte</code> &#8211; get byte from i/o port</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int2</code></em>: byte from port <em class="parameter"><code>int1</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0012"></a><code class="function">index</code> &#8211; copy stack element</p><p>( <em class="parameter"><code>objN</code></em> ... <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>objN</code></em> ... <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>objM</code></em> )</p><p><em class="parameter"><code>objM</code></em>: M = <em class="parameter"><code>int1</code></em> + 1</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0010">dup</a></code>, <code class="function"><a class="link" href="#f_0038">exch</a></code>, <code class="function"><a class="link" href="#f_0011">over</a></code>, <code class="function"><a class="link" href="#f_0009">pop</a></code>, <code class="function"><a class="link" href="#f_0040">roll</a></code>, <code class="function"><a class="link" href="#f_0039">rot</a></code></p><div class="example"><a name="id2731979"></a><p class="title"><b>Example<EFBFBD>44.<2E></b></p><div class="example-contents"><pre class="programlisting">
/dup { 0 index } def
/over { 1 index } def
</pre></div></div><br class="example-break"></li><li><p><a name="f_0153"></a><code class="function">keepmode</code> &#8211; keep video mode</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em> = 1: keep video mode when starting kernel.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0037"></a><code class="function">le</code> &#8211; less or equal</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>bool1</code></em> )</p><p>( <em class="parameter"><code>str1</code></em> <em class="parameter"><code>str2</code></em> &#8212; <em class="parameter"><code>bool2</code></em> )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>ptr2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>bool1</code></em>: true if <em class="parameter"><code>int1</code></em> &lt;= <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool2</code></em>: true if <em class="parameter"><code>str1</code></em> &lt;= <em class="parameter"><code>str2</code></em></p><p><em class="parameter"><code>bool3</code></em>: true if <em class="parameter"><code>ptr1</code></em> &lt;= <em class="parameter"><code>ptr2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0032">eq</a></code>, <code class="function"><a class="link" href="#f_0035">ge</a></code>, <code class="function"><a class="link" href="#f_0034">gt</a></code>, <code class="function"><a class="link" href="#f_0036">lt</a></code>, <code class="function"><a class="link" href="#f_0033">ne</a></code></p><div class="example"><a name="id2732422"></a><p class="title"><b>Example<EFBFBD>45.<2E></b></p><div class="example-contents"><pre class="programlisting">
7 7 le % true
"abc" "abd" le % true
/a 10 malloc def
/b a + 2 def
b a le % false
</pre></div></div><br class="example-break"></li><li><p><a name="f_0007"></a><code class="function">length</code> &#8211; array, string or memory size</p><p>( <em class="parameter"><code>array1</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p>( <em class="parameter"><code>string1</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: size of <em class="parameter"><code>array1</code></em> or <em class="parameter"><code>string1</code></em> or <em class="parameter"><code>ptr1</code></em></p><p>Returns the length of <em class="parameter"><code>string1</code></em> in bytes, not the number of Unicode chars. If <em class="parameter"><code>ptr1</code></em> doesn't point at the start of a memory area, <code class="function">length</code> returns the number of remaining bytes.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2732665"></a><p class="title"><b>Example<EFBFBD>46.<2E></b></p><div class="example-contents"><pre class="programlisting">
"abc" length % 3
[ 0 1 ] length % 2
/foo 10 malloc def
foo length % 10
foo 3 add length % 7
</pre></div></div><br class="example-break"></li><li><p><a name="f_0146"></a><code class="function">lineheight</code> &#8211; current line height</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: line height</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0066">currentfont</a></code>, <code class="function"><a class="link" href="#f_0067">fontheight</a></code>, <code class="function"><a class="link" href="#f_0065">setfont</a></code></p></li><li><p><a name="f_0062"></a><code class="function">lineto</code> &#8211; draw line</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: line end</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2732922"></a><p class="title"><b>Example<EFBFBD>47.<2E></b></p><div class="example-contents"><pre class="programlisting">
0 0 moveto screen.size lineto % draw diagonal
</pre></div></div><br class="example-break"></li><li><p><a name="f_0076"></a><code class="function">loadpalette</code> &#8211; load current palette</p><p>( &#8212; )</p><p>Activates current palette in 8-bit modes.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p></li><li><p><a name="f_0045"></a><code class="function">loop</code> &#8211; endless loop</p><p>( <em class="parameter"><code>code1</code></em> &#8212; )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0013">exec</a></code>, <code class="function"><a class="link" href="#f_0044">exit</a></code>, <code class="function"><a class="link" href="#f_0047">for</a></code>, <code class="function"><a class="link" href="#f_0048">forall</a></code>, <code class="function"><a class="link" href="#f_0030">if</a></code>, <code class="function"><a class="link" href="#f_0031">ifelse</a></code>, <code class="function"><a class="link" href="#f_0046">repeat</a></code>, <code class="function"><a class="link" href="#f_0043">return</a></code></p><div class="example"><a name="id2733167"></a><p class="title"><b>Example<EFBFBD>48.<2E></b></p><div class="example-contents"><pre class="programlisting">
/x 0 def { /x x 1 add def x 56 eq { exit } if } loop % loop until x == 56
</pre></div></div><br class="example-break"></li><li><p><a name="f_0036"></a><code class="function">lt</code> &#8211; less than</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>bool1</code></em> )</p><p>( <em class="parameter"><code>str1</code></em> <em class="parameter"><code>str2</code></em> &#8212; <em class="parameter"><code>bool2</code></em> )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>ptr2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>bool1</code></em>: true if <em class="parameter"><code>int1</code></em> &lt; <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool2</code></em>: true if <em class="parameter"><code>str1</code></em> &lt; <em class="parameter"><code>str2</code></em></p><p><em class="parameter"><code>bool3</code></em>: true if <em class="parameter"><code>ptr1</code></em> &lt; <em class="parameter"><code>ptr2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0032">eq</a></code>, <code class="function"><a class="link" href="#f_0035">ge</a></code>, <code class="function"><a class="link" href="#f_0034">gt</a></code>, <code class="function"><a class="link" href="#f_0037">le</a></code>, <code class="function"><a class="link" href="#f_0033">ne</a></code></p><div class="example"><a name="id2733363"></a><p class="title"><b>Example<EFBFBD>49.<2E></b></p><div class="example-contents"><pre class="programlisting">
7 4 lt % false
"abc" "abd" lt % true
/a 10 malloc def
/b a + 2 def
b a lt % false
</pre></div></div><br class="example-break"></li><li><p><a name="f_0083"></a><code class="function">malloc</code> &#8211; allocate memory</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>ptr1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: memory size</p><p><em class="parameter"><code>ptr1</code></em>: pointer to memory area</p><p><span class="emphasis"><em>Note:</em></span> Use <code class="function"><a class="link" href="#f_0084">free</a></code> to free <em class="parameter"><code>ptr1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2733567"></a><p class="title"><b>Example<EFBFBD>50.<2E></b></p><div class="example-contents"><pre class="programlisting">
/foo 256 malloc def % allocate 256 bytes...
foo free % and free it
</pre></div></div><br class="example-break"></li><li><p><a name="f_0022"></a><code class="function">max</code> &#8211; maximum</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: max(<em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2733773"></a><p class="title"><b>Example<EFBFBD>51.<2E></b></p><div class="example-contents"><pre class="programlisting">
4 11 max % 11
</pre></div></div><br class="example-break"></li><li><p><a name="f_0074"></a><code class="function">memcpy</code> &#8211; copy memory</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>ptr2</code></em> <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: destination</p><p><em class="parameter"><code>ptr2</code></em>: source</p><p><em class="parameter"><code>int1</code></em>: size</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2733967"></a><p class="title"><b>Example<EFBFBD>52.<2E></b></p><div class="example-contents"><pre class="programlisting">
/a 10 malloc def
/b 10 malloc def
a 1 100 put % a[1] = 100
b a 10 memcpy % copy a to b
</pre></div></div><br class="example-break"></li><li><p><a name="f_0085"></a><code class="function">memsize</code> &#8211; report available memory size</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int1</code></em>: memory region (0 ... 3)</p><p><em class="parameter"><code>int2</code></em>: total free memory</p><p><em class="parameter"><code>int3</code></em>: size of largest free block</p><p>Region 0 is memory in the low 640kB range. Region &gt;= 1 are typically 1 MB extended memory per region.</p><p><span class="emphasis"><em>Note:</em></span> available memory depends on the boot loader.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0088">snprintf</a></code></p><div class="example"><a name="id2734174"></a><p class="title"><b>Example<EFBFBD>53.<2E></b></p><div class="example-contents"><pre class="programlisting">
0 memsize pop 1024 lt { "less than 1kB left" show } if
</pre></div></div><br class="example-break"></li><li><p><a name="f_0021"></a><code class="function">min</code> &#8211; minimum</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: min(<em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2734380"></a><p class="title"><b>Example<EFBFBD>54.<2E></b></p><div class="example-contents"><pre class="programlisting">
4 11 min % 4
</pre></div></div><br class="example-break"></li><li><p><a name="f_0018"></a><code class="function">mod</code> &#8211; remainder</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> % <em class="parameter"><code>int2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2734583"></a><p class="title"><b>Example<EFBFBD>55.<2E></b></p><div class="example-contents"><pre class="programlisting">
17 3 mod % 2
</pre></div></div><br class="example-break"></li><li><p><a name="f_0126"></a><code class="function">mod.load</code> &#8211; assign mod file to player</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>ptr1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: player</p><p><em class="parameter"><code>ptr1</code></em>: mod file</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0127"></a><code class="function">mod.play</code> &#8211; play mod file</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: player</p><p><em class="parameter"><code>int2</code></em>: song start</p><p><span class="emphasis"><em>Note:</em></span> sounds are played using the PC speaker.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0128"></a><code class="function">mod.playsample</code> &#8211; play mod sample</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> <em class="parameter"><code>int4</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: player</p><p><em class="parameter"><code>int2</code></em>: channel</p><p><em class="parameter"><code>int3</code></em>: sample number</p><p><em class="parameter"><code>int4</code></em>: pitch</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0053"></a><code class="function">monitorsize</code> &#8211; monitor size</p><p>( &#8212; <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: width and height</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0115">colorbits</a></code>, <code class="function"><a class="link" href="#f_0111">currentmode</a></code>, <code class="function"><a class="link" href="#f_0051">screen.size</a></code>, <code class="function"><a class="link" href="#f_0110">setmode</a></code>, <code class="function"><a class="link" href="#f_0114">sysinfo</a></code>, <code class="function"><a class="link" href="#f_0113">videomodeinfo</a></code>, <code class="function"><a class="link" href="#f_0112">videomodes</a></code>, <code class="function"><a class="link" href="#f_0052">vscreen.size</a></code></p></li><li><p><a name="f_0059"></a><code class="function">moveto</code> &#8211; set cursor position</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: x, y (upper left: 0, 0).</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2735399"></a><p class="title"><b>Example<EFBFBD>56.<2E></b></p><div class="example-contents"><pre class="programlisting">
200 100 moveto "Hello" show % print "Hello" at (200, 100)
</pre></div></div><br class="example-break"></li><li><p><a name="f_0016"></a><code class="function">mul</code> &#8211; multiplication</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> * <em class="parameter"><code>int2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2735603"></a><p class="title"><b>Example<EFBFBD>57.<2E></b></p><div class="example-contents"><pre class="programlisting">
2 3 mul % 6
</pre></div></div><br class="example-break"></li><li><p><a name="f_0033"></a><code class="function">ne</code> &#8211; not equal</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>bool1</code></em> )</p><p>( <em class="parameter"><code>str1</code></em> <em class="parameter"><code>str2</code></em> &#8212; <em class="parameter"><code>bool2</code></em> )</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>obj2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>bool1</code></em>: false if <em class="parameter"><code>int1</code></em> == <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool2</code></em>: false if <em class="parameter"><code>str1</code></em> == <em class="parameter"><code>str2</code></em></p><p><em class="parameter"><code>bool3</code></em>: false if <em class="parameter"><code>obj1</code></em> and <em class="parameter"><code>obj2</code></em> are identical</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0032">eq</a></code>, <code class="function"><a class="link" href="#f_0035">ge</a></code>, <code class="function"><a class="link" href="#f_0034">gt</a></code>, <code class="function"><a class="link" href="#f_0037">le</a></code>, <code class="function"><a class="link" href="#f_0036">lt</a></code></p><div class="example"><a name="id2735800"></a><p class="title"><b>Example<EFBFBD>58.<2E></b></p><div class="example-contents"><pre class="programlisting">
1 3 ne % true
"abc" "abc" ne % false
/a [ 1 2 ] def
/b a def
a [ 1 2 ] ne % true (not the same array)
a b ne % false
</pre></div></div><br class="example-break"></li><li><p><a name="f_0019"></a><code class="function">neg</code> &#8211; negation</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int2</code></em>: -<em class="parameter"><code>int1</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2735995"></a><p class="title"><b>Example<EFBFBD>59.<2E></b></p><div class="example-contents"><pre class="programlisting">
5 neg % -5
</pre></div></div><br class="example-break"></li><li><p><a name="f_0026"></a><code class="function">not</code> &#8211; logical or arithmetical 'not'</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>int2</code></em> )</p><p>( <em class="parameter"><code>bool1</code></em> &#8212; <em class="parameter"><code>bool2</code></em> )</p><p><em class="parameter"><code>int2</code></em>: -<em class="parameter"><code>int1</code></em> - 1</p><p><em class="parameter"><code>bool2</code></em>: !<em class="parameter"><code>bool1</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2736216"></a><p class="title"><b>Example<EFBFBD>60.<2E></b></p><div class="example-contents"><pre class="programlisting">
true not % false
0 not % -1
</pre></div></div><br class="example-break"></li><li><p><a name="f_0149"></a><code class="function">notimeout</code> &#8211; turn off initial boot loader timeout</p><p>( &#8212; )</p><p>Turns off any automatic booting.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0024"></a><code class="function">or</code> &#8211; logical or arithmetical 'or'</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p>( <em class="parameter"><code>bool1</code></em> <em class="parameter"><code>bool2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> | <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool3</code></em>: bool || <em class="parameter"><code>bool2</code></em></p><p><span class="emphasis"><em>Note:</em></span> Mixing boolean and integer argument types is possible, in this case integers are converted to boolean first.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2736698"></a><p class="title"><b>Example<EFBFBD>61.<2E></b></p><div class="example-contents"><pre class="programlisting">
true false or % true
3 6 or % 7
10 true or % gives true, but please avoid this
</pre></div></div><br class="example-break"></li><li><p><a name="f_0098"></a><code class="function">outbyte</code> &#8211; write byte to i/o port</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; )</p><p>Write byte <em class="parameter"><code>int2</code></em> to port <em class="parameter"><code>int1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0011"></a><code class="function">over</code> &#8211; copy TOS-1</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>obj2</code></em> &#8212; <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>obj2</code></em> <em class="parameter"><code>obj1</code></em> )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0010">dup</a></code>, <code class="function"><a class="link" href="#f_0038">exch</a></code>, <code class="function"><a class="link" href="#f_0012">index</a></code>, <code class="function"><a class="link" href="#f_0009">pop</a></code>, <code class="function"><a class="link" href="#f_0040">roll</a></code>, <code class="function"><a class="link" href="#f_0039">rot</a></code></p></li><li><p><a name="f_0009"></a><code class="function">pop</code> &#8211; remove TOS</p><p>( <em class="parameter"><code>obj1</code></em> &#8212; )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0010">dup</a></code>, <code class="function"><a class="link" href="#f_0038">exch</a></code>, <code class="function"><a class="link" href="#f_0012">index</a></code>, <code class="function"><a class="link" href="#f_0011">over</a></code>, <code class="function"><a class="link" href="#f_0040">roll</a></code>, <code class="function"><a class="link" href="#f_0039">rot</a></code></p><div class="example"><a name="id2737166"></a><p class="title"><b>Example<EFBFBD>62.<2E></b></p><div class="example-contents"><pre class="programlisting">
% status: true or false
"bad" status { pop "ok" } if % "bad" or "ok"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0117"></a><code class="function">poweroff</code> &#8211; switch computer off</p><p>( &#8212; )</p><p><span class="emphasis"><em>Note:</em></span> uses APM, not ACPI.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0006"></a><code class="function">put</code> &#8211; set an array, string or memory element</p><p>( <em class="parameter"><code>array1</code></em> <em class="parameter"><code>int1</code></em> <em class="parameter"><code>obj1</code></em> &#8212; )</p><p>( <em class="parameter"><code>string1</code></em> <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> &#8212; )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>int4</code></em> <em class="parameter"><code>int5</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>-th element of <em class="parameter"><code>array1</code></em> = <em class="parameter"><code>obj1</code></em></p><p><em class="parameter"><code>int2</code></em>-th byte of <em class="parameter"><code>string1</code></em> = <em class="parameter"><code>int3</code></em></p><p><em class="parameter"><code>int4</code></em>-th byte of <em class="parameter"><code>ptr1</code></em> = <em class="parameter"><code>int5</code></em></p><p><span class="emphasis"><em>Note:</em></span> Sets the n-th byte of <em class="parameter"><code>string1</code></em>, not the n-th utf8 char. Sizes of <em class="parameter"><code>string1</code></em> or <em class="parameter"><code>ptr1</code></em> are not checked.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0005">get</a></code></p><div class="example"><a name="id2737589"></a><p class="title"><b>Example<EFBFBD>63.<2E></b></p><div class="example-contents"><pre class="programlisting">
/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"
But don't do this:
"abc" 1 'X' put % modifies string constant "abc" to "aXc"!
</pre></div></div><br class="example-break"></li><li><p><a name="f_0100"></a><code class="function">putbyte</code> &#8211; write byte to memory</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>int1</code></em> &#8212; )</p><p>Write byte <em class="parameter"><code>int1</code></em> at <em class="parameter"><code>ptr1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0104"></a><code class="function">putdword</code> &#8211; write dword to memory</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>int1</code></em> &#8212; )</p><p>Write dword <em class="parameter"><code>int1</code></em> at <em class="parameter"><code>ptr1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0063"></a><code class="function">putpixel</code> &#8211; draw single pixel</p><p>( &#8212; )</p><p>Draw pixel in current color at current cursor position.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2738278"></a><p class="title"><b>Example<EFBFBD>64.<2E></b></p><div class="example-contents"><pre class="programlisting">
blue setcolor
0 0 moveto putpixel % blue dot at upper left corner
</pre></div></div><br class="example-break"></li><li><p><a name="f_0102"></a><code class="function">putword</code> &#8211; write word to memory</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>int1</code></em> &#8212; )</p><p>Write word <em class="parameter"><code>int1</code></em> at <em class="parameter"><code>ptr1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0118"></a><code class="function">reboot</code> &#8211; reboot computer</p><p>( &#8212; )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0046"></a><code class="function">repeat</code> &#8211; repeat code</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>code1</code></em> &#8212; )</p><p>Repeat <em class="parameter"><code>code1</code></em> <em class="parameter"><code>int1</code></em> times.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0013">exec</a></code>, <code class="function"><a class="link" href="#f_0044">exit</a></code>, <code class="function"><a class="link" href="#f_0047">for</a></code>, <code class="function"><a class="link" href="#f_0048">forall</a></code>, <code class="function"><a class="link" href="#f_0030">if</a></code>, <code class="function"><a class="link" href="#f_0031">ifelse</a></code>, <code class="function"><a class="link" href="#f_0045">loop</a></code>, <code class="function"><a class="link" href="#f_0043">return</a></code></p><div class="example"><a name="id2738909"></a><p class="title"><b>Example<EFBFBD>65.<2E></b></p><div class="example-contents"><pre class="programlisting">
3 { "X" show } repeat % print "XXX"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0082"></a><code class="function">restorescreen</code> &#8211; restore screen area</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: buffer with image data; use <code class="function"><a class="link" href="#f_0084">free</a></code> to free the buffer</p><p><span class="emphasis"><em>Note:</em></span> width and height are taken from buffer. Does not actually free <em class="parameter"><code>ptr1</code></em> - use <code class="function"><a class="link" href="#f_0084">free</a></code> explicitly.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p><div class="example"><a name="id2739090"></a><p class="title"><b>Example<EFBFBD>66.<2E></b></p><div class="example-contents"><pre class="programlisting">
0 0 moveto 100 100 savescreen % save upper left 100x100 section...
300 200 moveto dup restorescreen % and copy it to 300x200
free % free memory
</pre></div></div><br class="example-break"></li><li><p><a name="f_0043"></a><code class="function">return</code> &#8211; leave current function</p><p>( &#8212; )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0013">exec</a></code>, <code class="function"><a class="link" href="#f_0044">exit</a></code>, <code class="function"><a class="link" href="#f_0047">for</a></code>, <code class="function"><a class="link" href="#f_0048">forall</a></code>, <code class="function"><a class="link" href="#f_0030">if</a></code>, <code class="function"><a class="link" href="#f_0031">ifelse</a></code>, <code class="function"><a class="link" href="#f_0045">loop</a></code>, <code class="function"><a class="link" href="#f_0046">repeat</a></code></p><div class="example"><a name="id2739205"></a><p class="title"><b>Example<EFBFBD>67.<2E></b></p><div class="example-contents"><pre class="programlisting">
/x { % expects key on TOS
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
</pre></div></div><br class="example-break"></li><li><p><a name="f_0060"></a><code class="function">rmoveto</code> &#8211; set relative cursor position</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: x-ofs, y-ofs.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2739396"></a><p class="title"><b>Example<EFBFBD>68.<2E></b></p><div class="example-contents"><pre class="programlisting">
200 100 moveto
"Hello" show
30 0 rmoveto "world!" % "Hello world!" (approx.)
</pre></div></div><br class="example-break"></li><li><p><a name="f_0040"></a><code class="function">roll</code> &#8211; rotate stack elements</p><p>( <em class="parameter"><code>obj1</code></em> ... <em class="parameter"><code>objN</code></em> <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>objX</code></em> ... <em class="parameter"><code>objY</code></em> )</p><p><em class="parameter"><code>int1</code></em>: number of elements to rotate</p><p><em class="parameter"><code>int2</code></em>: amount</p><p><em class="parameter"><code>objX</code></em>: X = (1 - <em class="parameter"><code>int2</code></em>) mod <em class="parameter"><code>int1</code></em></p><p><em class="parameter"><code>objY</code></em>: Y = (N - <em class="parameter"><code>int2</code></em>) mod <em class="parameter"><code>int1</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0010">dup</a></code>, <code class="function"><a class="link" href="#f_0038">exch</a></code>, <code class="function"><a class="link" href="#f_0012">index</a></code>, <code class="function"><a class="link" href="#f_0011">over</a></code>, <code class="function"><a class="link" href="#f_0009">pop</a></code>, <code class="function"><a class="link" href="#f_0039">rot</a></code></p><div class="example"><a name="id2739578"></a><p class="title"><b>Example<EFBFBD>69.<2E></b></p><div class="example-contents"><pre class="programlisting">
/rot { 3 -1 roll } def
1 2 3 4 5 5 2 roll % leaves: 4 5 1 2 3
</pre></div></div><br class="example-break"></li><li><p><a name="f_0039"></a><code class="function">rot</code> &#8211; rotate TOS, TOS-1, TOS-2</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>obj2</code></em> <em class="parameter"><code>obj3</code></em> &#8212; <em class="parameter"><code>obj2</code></em> <em class="parameter"><code>obj3</code></em> <em class="parameter"><code>obj1</code></em> )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0010">dup</a></code>, <code class="function"><a class="link" href="#f_0038">exch</a></code>, <code class="function"><a class="link" href="#f_0012">index</a></code>, <code class="function"><a class="link" href="#f_0011">over</a></code>, <code class="function"><a class="link" href="#f_0009">pop</a></code>, <code class="function"><a class="link" href="#f_0040">roll</a></code></p><div class="example"><a name="id2739705"></a><p class="title"><b>Example<EFBFBD>70.<2E></b></p><div class="example-contents"><pre class="programlisting">
/a 4 array def
8
a 1 rot put % a[1] = 8
</pre></div></div><br class="example-break"></li><li><p><a name="f_0081"></a><code class="function">savescreen</code> &#8211; save screen area</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>ptr1</code></em> )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: width, height of screen area</p><p><em class="parameter"><code>ptr1</code></em>: buffer with image data; use <code class="function"><a class="link" href="#f_0084">free</a></code> to free the buffer</p><p><span class="emphasis"><em>Note:</em></span> width and height are stored in buffer.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p><div class="example"><a name="id2739895"></a><p class="title"><b>Example<EFBFBD>71.<2E></b></p><div class="example-contents"><pre class="programlisting">
0 0 moveto screen.size savescreen % save entire screen
</pre></div></div><br class="example-break"></li><li><p><a name="f_0051"></a><code class="function">screen.size</code> &#8211; screen size in pixel</p><p>( &#8212; <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: width, height</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0115">colorbits</a></code>, <code class="function"><a class="link" href="#f_0111">currentmode</a></code>, <code class="function"><a class="link" href="#f_0053">monitorsize</a></code>, <code class="function"><a class="link" href="#f_0110">setmode</a></code>, <code class="function"><a class="link" href="#f_0114">sysinfo</a></code>, <code class="function"><a class="link" href="#f_0113">videomodeinfo</a></code>, <code class="function"><a class="link" href="#f_0112">videomodes</a></code>, <code class="function"><a class="link" href="#f_0052">vscreen.size</a></code></p><div class="example"><a name="id2740034"></a><p class="title"><b>Example<EFBFBD>72.<2E></b></p><div class="example-contents"><pre class="programlisting">
blue setcolor
0 0 moveto screen.size fillrect % draw blue screen
</pre></div></div><br class="example-break"></li><li><p><a name="f_0056"></a><code class="function">setcolor</code> &#8211; set active drawing color</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: palette index (8-bit mode) or 24-bit RGB-value (16/32-bit modes).</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2740212"></a><p class="title"><b>Example<EFBFBD>73.<2E></b></p><div class="example-contents"><pre class="programlisting">
0xff0000 setcolor % continue in red...
0xff00 setcolor % or green...
0xff setcolor % or blue
</pre></div></div><br class="example-break"></li><li><p><a name="f_0133"></a><code class="function">seteotchar</code> &#8211; set alternative end-of-text char</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: eot char</p><p>Normally strings are 0 terminated. <code class="function">seteotchar</code> lets you define an additional char text functions recognize.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0065"></a><code class="function">setfont</code> &#8211; set font</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: font data (e.g. font file).</p><p><span class="emphasis"><em>Note:</em></span> If bit 31 in <em class="parameter"><code>ptr1</code></em> is set, font is in 'password-mode' - it prints only '*'s.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0066">currentfont</a></code>, <code class="function"><a class="link" href="#f_0067">fontheight</a></code>, <code class="function"><a class="link" href="#f_0146">lineheight</a></code></p><div class="example"><a name="id2740521"></a><p class="title"><b>Example<EFBFBD>74.<2E></b></p><div class="example-contents"><pre class="programlisting">
"16x16.fnt" findfile setfont % set 16x16 font
/pwmode { 1 settype 0x80000000 or 12 settype } def
currentfont pwmode setfont % now in password mode
"abc" show % print "***"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0068"></a><code class="function">setimage</code> &#8211; set active image</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: image data. Either JPG or PCX file.</p><p><span class="emphasis"><em>Note:</em></span> JPG is only supported in 16/32-bit modes.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p><div class="example"><a name="id2740679"></a><p class="title"><b>Example<EFBFBD>75.<2E></b></p><div class="example-contents"><pre class="programlisting">
"foo.jpg" findfile setimage % load and use "foo.jpg"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0143"></a><code class="function">setlink</code> &#8211; select link</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: link number</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0135"></a><code class="function">setmaxrows</code> &#8211; maximum number of text rows to display</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: maximum number of text rows to display in a single <code class="function"><a class="link" href="#f_0072">show</a></code> command.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0110"></a><code class="function">setmode</code> &#8211; set video mode</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>bool1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: VESA or VGA mode number</p><p><em class="parameter"><code>bool1</code></em>: true = mode is set, false = failed</p><p><span class="emphasis"><em>Note:</em></span> if video mode setting fails, the old mode is restored, but the screen contents is undefined.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0115">colorbits</a></code>, <code class="function"><a class="link" href="#f_0111">currentmode</a></code>, <code class="function"><a class="link" href="#f_0053">monitorsize</a></code>, <code class="function"><a class="link" href="#f_0051">screen.size</a></code>, <code class="function"><a class="link" href="#f_0114">sysinfo</a></code>, <code class="function"><a class="link" href="#f_0113">videomodeinfo</a></code>, <code class="function"><a class="link" href="#f_0112">videomodes</a></code>, <code class="function"><a class="link" href="#f_0052">vscreen.size</a></code></p></li><li><p><a name="f_0078"></a><code class="function">setpalette</code> &#8211; set palette entry</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: palette index</p><p><em class="parameter"><code>int2</code></em>: RGB value</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2741435"></a><p class="title"><b>Example<EFBFBD>76.<2E></b></p><div class="example-contents"><pre class="programlisting">
/red 11 0xff0000 def % color 11 = red
/yellow 12 0xffff00 def % color 12 = yellow
</pre></div></div><br class="example-break"></li><li><p><a name="f_0139"></a><code class="function">setstartrow</code> &#8211; set start row</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: start row for next <code class="function"><a class="link" href="#f_0072">show</a></code> command.</p><p><span class="emphasis"><em>Note:</em></span> if a start row &gt; 0 is set, the argument to <code class="function"><a class="link" href="#f_0072">show</a></code> is irrelevant. Instead the internal data built during the last <code class="function"><a class="link" href="#f_0137">formattext</a></code> is used.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0141"></a><code class="function">settextcolors</code> &#8211; - set text markup colors</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> <em class="parameter"><code>int4</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: normal color</p><p><em class="parameter"><code>int2</code></em>: highlight color</p><p><em class="parameter"><code>int3</code></em>: link color</p><p><em class="parameter"><code>int4</code></em>: selected link color</p><p><span class="emphasis"><em>Note:</em></span> <em class="parameter"><code>int1</code></em> can be changed using <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, too.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0058"></a><code class="function">settextmodecolor</code> &#8211; set color to be used in text mode</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: text mode color</p><p><span class="emphasis"><em>Note:</em></span> You only need this in case you're running in text mode (practically never).</p></li><li><p><a name="f_0131"></a><code class="function">settextwrap</code> &#8211; set text wrap column</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: text wrap column; set to 0 to turn text wrapping off.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p></li><li><p><a name="f_0070"></a><code class="function">settransparency</code> &#8211; set transparency</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: transparency for <code class="function"><a class="link" href="#f_0087">fillrect</a></code> operations; valid values are 0 - 256.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p></li><li><p><a name="f_0080"></a><code class="function">settransparentcolor</code> &#8211; set color used for transparency</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p>When doing an <code class="function"><a class="link" href="#f_0075">image</a></code> operation, pixels with this color are not copied. Something like an alpha channel, actually. Works only with PCX images. Not at all related to <code class="function"><a class="link" href="#f_0070">settransparency</a></code></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0077">unpackimage</a></code></p></li><li><p><a name="f_0050"></a><code class="function">settype</code> &#8211; set object type</p><p>( <em class="parameter"><code>obj1</code></em> <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>obj2</code></em> )</p><p><em class="parameter"><code>obj2</code></em>: <em class="parameter"><code>obj1</code></em> with type changed to <em class="parameter"><code>int1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0049">gettype</a></code></p><div class="example"><a name="id2742616"></a><p class="title"><b>Example<EFBFBD>77.<2E></b></p><div class="example-contents"><pre class="programlisting">
% PS-like 'string' function
/string { 1 add malloc 4 settype } def % 4 = string type
10 string % new empty string of length 10
</pre></div></div><br class="example-break"></li><li><p><a name="f_0027"></a><code class="function">shl</code> &#8211; shift left</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> &lt;&lt; <em class="parameter"><code>int2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2742823"></a><p class="title"><b>Example<EFBFBD>78.<2E></b></p><div class="example-contents"><pre class="programlisting">
5 2 shl % 20
</pre></div></div><br class="example-break"></li><li><p><a name="f_0072"></a><code class="function">show</code> &#8211; print text</p><p>( <em class="parameter"><code>str1</code></em> &#8212; )</p><p>Print <em class="parameter"><code>str1</code></em> in current color using current font.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0057">currentcolor</a></code>, <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0061">currentpoint</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0071">currenttransparency</a></code>, <code class="function"><a class="link" href="#f_0087">fillrect</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0079">getpalette</a></code>, <code class="function"><a class="link" href="#f_0064">getpixel</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0062">lineto</a></code>, <code class="function"><a class="link" href="#f_0059">moveto</a></code>, <code class="function"><a class="link" href="#f_0063">putpixel</a></code>, <code class="function"><a class="link" href="#f_0060">rmoveto</a></code>, <code class="function"><a class="link" href="#f_0056">setcolor</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0078">setpalette</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0070">settransparency</a></code>, <code class="function"><a class="link" href="#f_0073">strsize</a></code></p><div class="example"><a name="id2743172"></a><p class="title"><b>Example<EFBFBD>79.<2E></b></p><div class="example-contents"><pre class="programlisting">
"Hello world!" show % print "Hello world!"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0028"></a><code class="function">shr</code> &#8211; shift right</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> &gt;&gt; <em class="parameter"><code>int2</code></em></p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2743376"></a><p class="title"><b>Example<EFBFBD>80.<2E></b></p><div class="example-contents"><pre class="programlisting">
15 2 shr % 3
</pre></div></div><br class="example-break"></li><li><p><a name="f_0088"></a><code class="function">snprintf</code> &#8211; C-style snprintf</p><p>( <em class="parameter"><code>obj1</code></em> ... <em class="parameter"><code>objN</code></em> <em class="parameter"><code>str1</code></em> <em class="parameter"><code>int1</code></em> <em class="parameter"><code>ptr1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: buffer</p><p><em class="parameter"><code>int1</code></em>: buffer size</p><p><em class="parameter"><code>str1</code></em>: format string</p><p><em class="parameter"><code>obj1</code></em> ... <em class="parameter"><code>objN</code></em>: printf arguments</p><p><span class="emphasis"><em>Note:</em></span> reversed argument order!</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0004">]</a></code>, <code class="function"><a class="link" href="#f_0008">array</a></code>, <code class="function"><a class="link" href="#f_0108">chdir</a></code>, <code class="function"><a class="link" href="#f_0086">dumpmem</a></code>, <code class="function"><a class="link" href="#f_0106">filesize</a></code>, <code class="function"><a class="link" href="#f_0105">findfile</a></code>, <code class="function"><a class="link" href="#f_0084">free</a></code>, <code class="function"><a class="link" href="#f_0107">getcwd</a></code>, <code class="function"><a class="link" href="#f_0007">length</a></code>, <code class="function"><a class="link" href="#f_0083">malloc</a></code>, <code class="function"><a class="link" href="#f_0074">memcpy</a></code>, <code class="function"><a class="link" href="#f_0085">memsize</a></code></p><div class="example"><a name="id2743602"></a><p class="title"><b>Example<EFBFBD>81.<2E></b></p><div class="example-contents"><pre class="programlisting">
/sprintf {
dup 12 settype length exch snprintf % 12 = pointer type
} def
/buf 100 string def
"bar" "foo" 3 "%d %s %s" buf sprintf
buf show % print "3 foo bar"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0125"></a><code class="function">sound.done</code> &#8211; turn off sound subsystem</p><p>( &#8212; )</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0122"></a><code class="function">sound.getsamplerate</code> &#8211; current sample rate</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: sample rate</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0120"></a><code class="function">sound.getvolume</code> &#8211; current sound volume</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: volume (0 .. 100)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0124"></a><code class="function">sound.play</code> &#8211; play sound</p><p>( &#8212; )</p><p><span class="emphasis"><em>Note:</em></span> obsolete. Sounds are played using the PC speaker.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0123"></a><code class="function">sound.setsamplerate</code> &#8211; set sample rate</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: sample rate</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0121"></a><code class="function">sound.setvolume</code> &#8211; set sound volume</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: volume (0 .. 100)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0073"></a><code class="function">strsize</code> &#8211; text dimensions</p><p>( <em class="parameter"><code>str1</code></em> &#8212; <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: width, height of <em class="parameter"><code>str1</code></em>.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0134">currenteotchar</a></code>, <code class="function"><a class="link" href="#f_0144">currentlink</a></code>, <code class="function"><a class="link" href="#f_0136">currentmaxrows</a></code>, <code class="function"><a class="link" href="#f_0142">currenttextcolors</a></code>, <code class="function"><a class="link" href="#f_0132">currenttextwrap</a></code>, <code class="function"><a class="link" href="#f_0147">currenttitle</a></code>, <code class="function"><a class="link" href="#f_0137">formattext</a></code>, <code class="function"><a class="link" href="#f_0145">getlink</a></code>, <code class="function"><a class="link" href="#f_0140">getlinks</a></code>, <code class="function"><a class="link" href="#f_0138">gettextrows</a></code>, <code class="function"><a class="link" href="#f_0133">seteotchar</a></code>, <code class="function"><a class="link" href="#f_0143">setlink</a></code>, <code class="function"><a class="link" href="#f_0135">setmaxrows</a></code>, <code class="function"><a class="link" href="#f_0139">setstartrow</a></code>, <code class="function"><a class="link" href="#f_0141">settextcolors</a></code>, <code class="function"><a class="link" href="#f_0131">settextwrap</a></code>, <code class="function"><a class="link" href="#f_0072">show</a></code></p><div class="example"><a name="id2744650"></a><p class="title"><b>Example<EFBFBD>82.<2E></b></p><div class="example-contents"><pre class="programlisting">
"Hi there!"
dup strsize pop neg 0 rmoveto show % print "Hi there!" right aligned
</pre></div></div><br class="example-break"></li><li><p><a name="f_0119"></a><code class="function">strstr</code> &#8211; find string in string</p><p>( <em class="parameter"><code>str1</code></em> <em class="parameter"><code>str2</code></em> &#8212; <em class="parameter"><code>int1</code></em> )</p><p>Search for <em class="parameter"><code>str2</code></em> in <em class="parameter"><code>str1</code></em>.</p><p><em class="parameter"><code>int1</code></em>: offset of <em class="parameter"><code>str2</code></em> in <em class="parameter"><code>str1</code></em> + 1 if found; otherwise 0.</p><p><span class="emphasis"><em>Note:</em></span> a bit strange, I know.</p><div class="example"><a name="id2744738"></a><p class="title"><b>Example<EFBFBD>83.<2E></b></p><div class="example-contents"><pre class="programlisting">
"abcd" "c" strstr % 3 (not 2)
</pre></div></div><br class="example-break"></li><li><p><a name="f_0015"></a><code class="function">sub</code> &#8211; subtraction</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p>( <em class="parameter"><code>string1</code></em> <em class="parameter"><code>int4</code></em> &#8212; <em class="parameter"><code>string2</code></em> )</p><p>( <em class="parameter"><code>ptr1</code></em> <em class="parameter"><code>int5</code></em> &#8212; <em class="parameter"><code>ptr2</code></em> )</p><p>( <em class="parameter"><code>string3</code></em> <em class="parameter"><code>string4</code></em> &#8212; <em class="parameter"><code>int6</code></em> )</p><p>( <em class="parameter"><code>ptr2</code></em> <em class="parameter"><code>ptr3</code></em> &#8212; <em class="parameter"><code>int7</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> - <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>string2</code></em>: substring of <em class="parameter"><code>string1</code></em> at offset -<em class="parameter"><code>int4</code></em></p><p><em class="parameter"><code>int6</code></em>: <em class="parameter"><code>string3</code></em> - <em class="parameter"><code>string4</code></em></p><p><em class="parameter"><code>int7</code></em>: <em class="parameter"><code>ptr2</code></em> - <em class="parameter"><code>ptr3</code></em></p><p><span class="emphasis"><em>Note:</em></span> Strings are treated as byte sequences, not Unicode chars. Boundaries of <em class="parameter"><code>string1</code></em> and <em class="parameter"><code>ptr1</code></em> are not checked.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0025">xor</a></code></p><div class="example"><a name="id2745099"></a><p class="title"><b>Example<EFBFBD>84.<2E></b></p><div class="example-contents"><pre class="programlisting">
3 1 sub % 2
"abcd" 3 add % "d"
2 sub % "bcd"
</pre></div></div><br class="example-break"></li><li><p><a name="f_0095"></a><code class="function">sysconfig</code> &#8211; get pointer to boot loader config data</p><p>( &#8212; <em class="parameter"><code>ptr1</code></em> )</p><p><em class="parameter"><code>ptr1</code></em>: boot loader config data (32 bytes)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0114"></a><code class="function">sysinfo</code> &#8211; return system info</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>obj1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: info type</p><p><em class="parameter"><code>obj1</code></em>: info (or .undef)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0115">colorbits</a></code>, <code class="function"><a class="link" href="#f_0111">currentmode</a></code>, <code class="function"><a class="link" href="#f_0053">monitorsize</a></code>, <code class="function"><a class="link" href="#f_0051">screen.size</a></code>, <code class="function"><a class="link" href="#f_0110">setmode</a></code>, <code class="function"><a class="link" href="#f_0113">videomodeinfo</a></code>, <code class="function"><a class="link" href="#f_0112">videomodes</a></code>, <code class="function"><a class="link" href="#f_0052">vscreen.size</a></code></p><div class="example"><a name="id2745487"></a><p class="title"><b>Example<EFBFBD>85.<2E></b></p><div class="example-contents"><pre class="programlisting">
0 sysinfo % video mem size in kb
1 sysinfo % gfx card oem string
2 sysinfo % gfx card vendor string
3 sysinfo % gfx card product string
4 sysinfo % gfx card revision string
</pre></div></div><br class="example-break"></li><li><p><a name="f_0156"></a><code class="function">test1</code> &#8211; for internal testing</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: some value with obscure meaning</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p><div class="example"><a name="id2745747"></a><p class="title"><b>Example<EFBFBD>86.<2E></b></p><div class="example-contents"><pre class="programlisting">
0x123 test1
</pre></div></div><br class="example-break"></li><li><p><a name="f_0150"></a><code class="function">time</code> &#8211; get current time</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: time in seconds since midnight.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0148">usleep</a></code></p></li><li><p><a name="f_0042"></a><code class="function">trace</code> &#8211; single step</p><p>( &#8212; )</p><p>Enter single step mode. Waits for a keypress after every instruction. Tab sets a temporary breakpoint after the current instruction and continues until it reaches it. Leave this mode by pressing Esc.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0041">dtrace</a></code></p></li><li><p><a name="f_0077"></a><code class="function">unpackimage</code> &#8211; unpack image region into buffer</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> <em class="parameter"><code>int4</code></em> &#8212; <em class="parameter"><code>ptr1</code></em> )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: x, y position in image</p><p><em class="parameter"><code>int3</code></em>, <em class="parameter"><code>int4</code></em>: width, height of image region</p><p><em class="parameter"><code>ptr1</code></em>: buffer with image data; use <code class="function"><a class="link" href="#f_0084">free</a></code> to free the buffer</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0154">blend</a></code>, <code class="function"><a class="link" href="#f_0069">currentimage</a></code>, <code class="function"><a class="link" href="#f_0075">image</a></code>, <code class="function"><a class="link" href="#f_0055">image.colors</a></code>, <code class="function"><a class="link" href="#f_0054">image.size</a></code>, <code class="function"><a class="link" href="#f_0076">loadpalette</a></code>, <code class="function"><a class="link" href="#f_0082">restorescreen</a></code>, <code class="function"><a class="link" href="#f_0081">savescreen</a></code>, <code class="function"><a class="link" href="#f_0068">setimage</a></code>, <code class="function"><a class="link" href="#f_0080">settransparentcolor</a></code></p><div class="example"><a name="id2746242"></a><p class="title"><b>Example<EFBFBD>87.<2E></b></p><div class="example-contents"><pre class="programlisting">
"xxx.jpg" findfile setimage % load and activate "xxx.jpg"
0 0 10 10 unpackimage % unpack upper left 10x10 region
/img exch def % img = buffer
0 10 100 {
0 exch moveto
img restorescreen
} for % repeat image section horizontally 10 times
img free % free it
</pre></div></div><br class="example-break"></li><li><p><a name="f_0148"></a><code class="function">usleep</code> &#8211; sleep micro seconds</p><p>( <em class="parameter"><code>int1</code></em> &#8212; )</p><p><em class="parameter"><code>int1</code></em>: micro seconds to sleep.</p><p><span class="emphasis"><em>Note:</em></span> the actual granularity is 18Hz, so don't make up too sophisticated timings.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0096">64bit</a></code>, <code class="function"><a class="link" href="#f_0109">_readsector</a></code>, <code class="function"><a class="link" href="#f_0151">date</a></code>, <code class="function"><a class="link" href="#f_0116">eject</a></code>, <code class="function"><a class="link" href="#f_0099">getbyte</a></code>, <code class="function"><a class="link" href="#f_0103">getdword</a></code>, <code class="function"><a class="link" href="#f_0155">getkey</a></code>, <code class="function"><a class="link" href="#f_0101">getword</a></code>, <code class="function"><a class="link" href="#f_0152">idle</a></code>, <code class="function"><a class="link" href="#f_0097">inbyte</a></code>, <code class="function"><a class="link" href="#f_0153">keepmode</a></code>, <code class="function"><a class="link" href="#f_0149">notimeout</a></code>, <code class="function"><a class="link" href="#f_0098">outbyte</a></code>, <code class="function"><a class="link" href="#f_0117">poweroff</a></code>, <code class="function"><a class="link" href="#f_0100">putbyte</a></code>, <code class="function"><a class="link" href="#f_0104">putdword</a></code>, <code class="function"><a class="link" href="#f_0102">putword</a></code>, <code class="function"><a class="link" href="#f_0118">reboot</a></code>, <code class="function"><a class="link" href="#f_0095">sysconfig</a></code>, <code class="function"><a class="link" href="#f_0156">test1</a></code>, <code class="function"><a class="link" href="#f_0150">time</a></code></p></li><li><p><a name="f_0113"></a><code class="function">videomodeinfo</code> &#8211; return video mode info</p><p>( <em class="parameter"><code>int1</code></em> &#8212; <em class="parameter"><code>int2</code></em> <em class="parameter"><code>int3</code></em> <em class="parameter"><code>int4</code></em> <em class="parameter"><code>int5</code></em> )</p><p><em class="parameter"><code>int1</code></em>: mode index <em class="parameter"><code>int2</code></em>, <em class="parameter"><code>int3</code></em>: width, height</p><p><em class="parameter"><code>int4</code></em>: color bits</p><p><em class="parameter"><code>int5</code></em>: mode number (bit 14: framebuffer mode) or .undef</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0115">colorbits</a></code>, <code class="function"><a class="link" href="#f_0111">currentmode</a></code>, <code class="function"><a class="link" href="#f_0053">monitorsize</a></code>, <code class="function"><a class="link" href="#f_0051">screen.size</a></code>, <code class="function"><a class="link" href="#f_0110">setmode</a></code>, <code class="function"><a class="link" href="#f_0114">sysinfo</a></code>, <code class="function"><a class="link" href="#f_0112">videomodes</a></code>, <code class="function"><a class="link" href="#f_0052">vscreen.size</a></code></p><div class="example"><a name="id2746680"></a><p class="title"><b>Example<EFBFBD>88.<2E></b></p><div class="example-contents"><pre class="programlisting">
2 videomodeinfo
</pre></div></div><br class="example-break"></li><li><p><a name="f_0112"></a><code class="function">videomodes</code> &#8211; video mode list length</p><p>( &#8212; <em class="parameter"><code>int1</code></em> )</p><p><em class="parameter"><code>int1</code></em>: video mode list length (always &gt;= 1)</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0115">colorbits</a></code>, <code class="function"><a class="link" href="#f_0111">currentmode</a></code>, <code class="function"><a class="link" href="#f_0053">monitorsize</a></code>, <code class="function"><a class="link" href="#f_0051">screen.size</a></code>, <code class="function"><a class="link" href="#f_0110">setmode</a></code>, <code class="function"><a class="link" href="#f_0114">sysinfo</a></code>, <code class="function"><a class="link" href="#f_0113">videomodeinfo</a></code>, <code class="function"><a class="link" href="#f_0052">vscreen.size</a></code></p></li><li><p><a name="f_0052"></a><code class="function">vscreen.size</code> &#8211; virtual screen size</p><p>( &#8212; <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> )</p><p><em class="parameter"><code>int1</code></em>, <em class="parameter"><code>int2</code></em>: virtual width and height</p><p>You normally can expect the virtual height to be larger than the visible height returned by <code class="function"><a class="link" href="#f_0051">screen.size</a></code> That area is available e.g. for hidden drawing. Some kind of scrolling is not implemented, however.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0115">colorbits</a></code>, <code class="function"><a class="link" href="#f_0111">currentmode</a></code>, <code class="function"><a class="link" href="#f_0053">monitorsize</a></code>, <code class="function"><a class="link" href="#f_0051">screen.size</a></code>, <code class="function"><a class="link" href="#f_0110">setmode</a></code>, <code class="function"><a class="link" href="#f_0114">sysinfo</a></code>, <code class="function"><a class="link" href="#f_0113">videomodeinfo</a></code>, <code class="function"><a class="link" href="#f_0112">videomodes</a></code></p></li><li><p><a name="f_0129"></a><code class="function">wav.play</code> &#8211; play wav file</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: wav file</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0130">wav.playlater</a></code></p></li><li><p><a name="f_0130"></a><code class="function">wav.playlater</code> &#8211; play wav file after current one</p><p>( <em class="parameter"><code>ptr1</code></em> &#8212; )</p><p><em class="parameter"><code>ptr1</code></em>: wav file</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0126">mod.load</a></code>, <code class="function"><a class="link" href="#f_0127">mod.play</a></code>, <code class="function"><a class="link" href="#f_0128">mod.playsample</a></code>, <code class="function"><a class="link" href="#f_0125">sound.done</a></code>, <code class="function"><a class="link" href="#f_0122">sound.getsamplerate</a></code>, <code class="function"><a class="link" href="#f_0120">sound.getvolume</a></code>, <code class="function"><a class="link" href="#f_0124">sound.play</a></code>, <code class="function"><a class="link" href="#f_0123">sound.setsamplerate</a></code>, <code class="function"><a class="link" href="#f_0121">sound.setvolume</a></code>, <code class="function"><a class="link" href="#f_0129">wav.play</a></code></p></li><li><p><a name="f_0025"></a><code class="function">xor</code> &#8211; logical or arithmetical exclusive 'or'</p><p>( <em class="parameter"><code>int1</code></em> <em class="parameter"><code>int2</code></em> &#8212; <em class="parameter"><code>int3</code></em> )</p><p>( <em class="parameter"><code>bool1</code></em> <em class="parameter"><code>bool2</code></em> &#8212; <em class="parameter"><code>bool3</code></em> )</p><p><em class="parameter"><code>int3</code></em>: <em class="parameter"><code>int1</code></em> ^ <em class="parameter"><code>int2</code></em></p><p><em class="parameter"><code>bool3</code></em>: bool ^^ <em class="parameter"><code>bool2</code></em></p><p><span class="emphasis"><em>Note:</em></span> Mixing boolean and integer argument types is possible, in this case integers are converted to boolean first.</p><p><span class="emphasis"><em>See also:</em></span> <code class="function"><a class="link" href="#f_0020">abs</a></code>, <code class="function"><a class="link" href="#f_0014">add</a></code>, <code class="function"><a class="link" href="#f_0023">and</a></code>, <code class="function"><a class="link" href="#f_0017">div</a></code>, <code class="function"><a class="link" href="#f_0022">max</a></code>, <code class="function"><a class="link" href="#f_0021">min</a></code>, <code class="function"><a class="link" href="#f_0018">mod</a></code>, <code class="function"><a class="link" href="#f_0016">mul</a></code>, <code class="function"><a class="link" href="#f_0019">neg</a></code>, <code class="function"><a class="link" href="#f_0026">not</a></code>, <code class="function"><a class="link" href="#f_0024">or</a></code>, <code class="function"><a class="link" href="#f_0027">shl</a></code>, <code class="function"><a class="link" href="#f_0028">shr</a></code>, <code class="function"><a class="link" href="#f_0015">sub</a></code></p><div class="example"><a name="id2747463"></a><p class="title"><b>Example<EFBFBD>89.<2E></b></p><div class="example-contents"><pre class="programlisting">
true false xor % true
3 6 xor % 5
10 true xor % gives false, but please avoid this
</pre></div></div><br class="example-break"></li></ul></div></div></div></div></body></html>