mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Enter Architecture16Kit and Architecture32Kit
This commit is contained in:
parent
042c9f7c2e
commit
f2749f0087
|
@ -63,6 +63,8 @@ web: "EnglishLanguageKit" at "inform7/Internal/Inter/EnglishLanguageKit" in "doc
|
|||
web: "CommandParserKit" at "inform7/Internal/Inter/CommandParserKit" in "docs/CommandParserKit"
|
||||
web: "BasicInformKit" at "inform7/Internal/Inter/BasicInformKit" in "docs/BasicInformKit"
|
||||
web: "BasicInformExtrasKit" at "inform7/Internal/Inter/BasicInformExtrasKit" in "docs/BasicInformExtrasKit"
|
||||
web: "Architecture16Kit" at "inform7/Internal/Inter/Architecture16Kit" in "docs/Architecture16Kit"
|
||||
web: "Architecture32Kit" at "inform7/Internal/Inter/Architecture32Kit" in "docs/Architecture32Kit"
|
||||
web: "DialogueKit" at "inform7/Internal/Inter/DialogueKit" in "docs/DialogueKit"
|
||||
|
||||
breadcrumbs: "Home: //overview//"
|
||||
|
|
|
@ -38,3 +38,18 @@
|
|||
new feature of Inform which is not yet implemented.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<a href="Architecture16Kit/index.html"><img src="docs-assets/kit.jpg" alt="Architecture16Kit" style="width:100%"></a>
|
||||
<h3><a href="Architecture16Kit/index.html">Architecture16Kit</a></h3>
|
||||
<p>A kit of Inter code providing runtime support for projects being compiled
|
||||
to 16-bit platforms, such as the Z-machine virtual machine via Inform 6.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="Architecture32Kit/index.html"><img src="docs-assets/kit.jpg" alt="Architecture32Kit" style="width:100%"></a>
|
||||
<h3><a href="Architecture32Kit/index.html">Architecture32Kit</a></h3>
|
||||
<p>A kit of Inter code providing runtime support for projects being compiled
|
||||
to 32-bit platforms, such as the Glulx virtual machine via Inform 6, or to
|
||||
executables via C.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -7,12 +7,15 @@ extensions, different projects may use different sets of kits, but some are
|
|||
compulsory, and others nearly so. For an English-language work of interactive
|
||||
fiction being made with the Inform apps, the kits will be:
|
||||
= (text)
|
||||
BasicInformKit + EnglishLanguageKit + WorldModelKit + CommandParserKit
|
||||
Architecture32Kit + BasicInformKit + EnglishLanguageKit + WorldModelKit + CommandParserKit
|
||||
=
|
||||
or perhaps Architecture16Kit instead of Architecture32Kit, depending on whether
|
||||
the project is being compiled to a 16-bit or a 32-bit platform.
|
||||
|
||||
However, if the "Basic Inform" checkbox is ticked on the Settings panel for
|
||||
the project, the kits will instead be:
|
||||
= (text)
|
||||
BasicInformKit + EnglishLanguageKit + BasicInformExtrasKit
|
||||
Architecture32Kit + BasicInformKit + EnglishLanguageKit + BasicInformExtrasKit
|
||||
=
|
||||
And these are also the defaults when Inform projects are compiled from the command
|
||||
line, with the optional |-basic| switch forcing us into the second case.
|
||||
|
|
155
docs/Architecture16Kit/S-cpb.html
Normal file
155
docs/Architecture16Kit/S-cpb.html
Normal file
|
@ -0,0 +1,155 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Capabilities Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Capabilities Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture16Kit</a></li><li><b>Capabilities Template</b></li></ul></div>
|
||||
<p class="purpose">Miscellaneous capabilities of the 16-bit architecture.</p>
|
||||
|
||||
<ul class="toc"><li><a href="S-cpb.html#SP1">§1. Summary</a></li><li><a href="S-cpb.html#SP2">§2. Release Number</a></li><li><a href="S-cpb.html#SP3">§3. RNG</a></li><li><a href="S-cpb.html#SP4">§4. Memory Allocation</a></li><li><a href="S-cpb.html#SP5">§5. Audiovisual Resources</a></li><li><a href="S-cpb.html#SP6">§6. Typography</a></li><li><a href="S-cpb.html#SP7">§7. Undo</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Summary. </b>The 16-bit architecture is for very limited virtual machines, and is closely
|
||||
modelled on Infocom's Z-machine, originally developed between 1979 and 1986,
|
||||
but still sometimes used into the modern age. Its input-output model is
|
||||
almost entirely textual, and it has an idiosyncratic character set.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Release Number. </b>Our programs will have both a release number and a serial code, which are
|
||||
in each case stored in the header memory of the virtual machine.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_Describe_Release()</span></span> has been removed and replaced with functions returning
|
||||
the release number, a non-negative integer, and the serial code, a byte array
|
||||
expected to be 6 digit characters wide.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_ReleaseNumber</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">HDR_GAMERELEASE</span><span class="plain-syntax">-->0) & </span><span class="constant-syntax">$03ff</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_SerialNumber</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HDR_GAMESERIAL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. RNG. </b>No routine is needed for extracting a random number, since I6's built-in
|
||||
<span class="extract"><span class="extract-syntax">random</span></span> function does that, but it's useful to abstract the process of
|
||||
seeding the RNG so that it produces a repeatable sequence of "random"
|
||||
numbers from here on: the necessary opcodes are different for the two VMs.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Seed_RNG</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Memory Allocation. </b>This is dynamic memory allocation: something which is never practicable in
|
||||
the Z-machine, because the whole address range is already claimed, but which
|
||||
is viable on recent revisions of Glulx.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_AllocateMemory</span><span class="plain-syntax"> </span><span class="identifier-syntax">amount</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_FreeMemory</span><span class="plain-syntax"> </span><span class="identifier-syntax">address</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Audiovisual Resources. </b>The Z-machine only barely supports figures and sound effects, and only in
|
||||
version 6 of the Z-machine, which Inform 7 no longer supports. Sound effects
|
||||
have a longer pedigree and Infocom used them on some version 5 and even some
|
||||
version 3 works: really, though, from an Inform point of view we would prefer
|
||||
that anyone needing figures and sounds use Glulx instead. (Inform 6 remains
|
||||
available for those who really need to make audiovisual effects in these
|
||||
long-gone formats.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Picture</span><span class="plain-syntax"> </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_SoundEffect</span><span class="plain-syntax"> </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Typography. </b>Relatively few typographic effects are available on the Z-machine, so that
|
||||
many of the semantic markups for text which would be distinguishable on
|
||||
Glulx are indistinguishable here.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Style</span><span class="plain-syntax"> </span><span class="identifier-syntax">sty</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sty</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NORMAL_VMSTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOTE_VMSTY</span><span class="plain-syntax">: </span><span class="reserved-syntax">style</span><span class="plain-syntax"> </span><span class="identifier-syntax">roman</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HEADER_VMSTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">SUBHEADER_VMSTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">ALERT_VMSTY</span><span class="plain-syntax">: </span><span class="reserved-syntax">style</span><span class="plain-syntax"> </span><span class="identifier-syntax">bold</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Undo. </b>These simply wrap the relevant opcodes.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Undo</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">restore_undo</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Save_Undo</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">save_undo</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrent">cpb</li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-str.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
117
docs/Architecture16Kit/S-cs.html
Normal file
117
docs/Architecture16Kit/S-cs.html
Normal file
|
@ -0,0 +1,117 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Character Set Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Character Set Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture16Kit</a></li><li><b>Character Set Template</b></li></ul></div>
|
||||
<p class="purpose">Code relating to the ZSCII character set.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The following are the equivalent of <span class="extract"><span class="extract-syntax">tolower</span></span> and <span class="extract"><span class="extract-syntax">toupper</span></span>, the traditional
|
||||
C library functions for forcing letters into lower and upper case form, for
|
||||
the ZSCII character set.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_UpperToLowerCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="character-syntax">'A'</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="character-syntax">'Z'</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">32</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">158</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">160</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">167</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">168</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">175</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">180</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">186</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">190</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">196</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">200</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">202</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">204</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">208</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">210</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">212</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">214</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">217</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">218</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">221</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_LowerToUpperCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="character-syntax">'a'</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="character-syntax">'z'</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">32</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">155</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">157</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">164</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">165</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">169</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">174</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">181</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">185</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">191</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">195</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">201</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">203</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">205</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">207</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">211</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">213</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">215</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">216</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">220</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-str.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresscurrent">cs</li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-io.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>ZMachine Template</title>
|
||||
<title>Input Output Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
|
@ -60,29 +60,14 @@ MathJax = {
|
|||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'ZMachine Template' generated by Inweb-->
|
||||
<!--Weave of 'Input Output Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>ZMachine Template</b></li></ul></div>
|
||||
<p class="purpose">To provide routines handling low-level Z-machine facilities.</p>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture16Kit</a></li><li><b>Input Output Template</b></li></ul></div>
|
||||
<p class="purpose">Access to the keyboard and to textual windows.</p>
|
||||
|
||||
<ul class="toc"><li><a href="S-zmc.html#SP1">§1. Begin Z-only matter</a></li><li><a href="S-zmc.html#SP2">§2. Summary</a></li><li><a href="S-zmc.html#SP3">§3. Variables and Arrays</a></li><li><a href="S-zmc.html#SP4">§4. Release Number</a></li><li><a href="S-zmc.html#SP5">§5. Keyboard Input</a></li><li><a href="S-zmc.html#SP6">§6. Buffer Functions</a></li><li><a href="S-zmc.html#SP7">§7. Dictionary Functions</a></li><li><a href="S-zmc.html#SP8">§8. Command Tables</a></li><li><a href="S-zmc.html#SP9">§9. RNG</a></li><li><a href="S-zmc.html#SP10">§10. Memory Allocation</a></li><li><a href="S-zmc.html#SP11">§11. Audiovisual Resources</a></li><li><a href="S-zmc.html#SP12">§12. Typography</a></li><li><a href="S-zmc.html#SP13">§13. Character Casing</a></li><li><a href="S-zmc.html#SP14">§14. The Screen</a></li><li><a href="S-zmc.html#SP15">§15. Window Colours</a></li><li><a href="S-zmc.html#SP16">§16. Main Window</a></li><li><a href="S-zmc.html#SP17">§17. Status Line</a></li><li><a href="S-zmc.html#SP18">§18. Quotation Boxes</a></li><li><a href="S-zmc.html#SP19">§19. Undo</a></li><li><a href="S-zmc.html#SP20">§20. Veneer</a></li><li><a href="S-zmc.html#SP21">§21. End Z-only matter</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-io.html#SP1">§1. Variables and Arrays</a></li><li><a href="S-io.html#SP2">§2. Keyboard Input</a></li><li><a href="S-io.html#SP3">§3. Buffer Functions</a></li><li><a href="S-io.html#SP4">§4. Dictionary Functions</a></li><li><a href="S-io.html#SP5">§5. Command Tables</a></li><li><a href="S-io.html#SP6">§6. The Screen</a></li><li><a href="S-io.html#SP7">§7. Window Colours</a></li><li><a href="S-io.html#SP8">§8. Main Window</a></li><li><a href="S-io.html#SP9">§9. Status Line</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Begin Z-only matter. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">TARGET_ZCODE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Summary. </b>This segment closely parallels "Glulx.i6t", which provides exactly
|
||||
equivalent functionality (indeed, usually the same-named functions and in
|
||||
the same order) for the Glulx VM. This is intended to make the rest of the
|
||||
template code independent of the choice of VM, although that is more of an
|
||||
ideal than a reality, because there are so many fiddly differences in some
|
||||
of the grammar and dictionary tables that it is not really practical for
|
||||
the parser (for instance) to call VM-neutral routines to get the data it
|
||||
wants out of these arrays.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Variables and Arrays. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Variables and Arrays. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">xcommsdir</span><span class="plain-syntax">; </span><span class="comment-syntax">true if command recording is on</span>
|
||||
|
@ -100,24 +85,7 @@ wants out of these arrays.
|
|||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">dict_end</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Release Number. </b>Like all software, IF story files have release numbers to mark revised
|
||||
versions being circulated: unlike most software, and partly for traditional
|
||||
reasons, the version number is recorded not in some print statement or
|
||||
variable but is branded on, so to speak, in a specific memory location
|
||||
of the story file header.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_Describe_Release()</span></span> describes the release and is used as part of the
|
||||
"banner", IF's equivalent to a title page.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Describe_Release</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"Release "</span><span class="plain-syntax">, (</span><span class="identifier-syntax">HDR_GAMERELEASE</span><span class="plain-syntax">-->0) & </span><span class="constant-syntax">$03ff</span><span class="plain-syntax">, </span><span class="string-syntax">" / Serial number "</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0 : </span><span class="identifier-syntax">i</span><span class="plain-syntax"><6 : </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">char</span><span class="plain-syntax">) </span><span class="identifier-syntax">HDR_GAMESERIAL</span><span class="plain-syntax">-></span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Keyboard Input. </b>The VM must provide three routines for keyboard input:
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Keyboard Input. </b>The VM must provide three routines for keyboard input:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">VM_KeyChar()</span></span> waits for a key to be pressed and then returns the
|
||||
|
@ -153,7 +121,7 @@ to document all of that.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Buffer Functions. </b>A "buffer", in this sense, is an array containing a stream of characters
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Buffer Functions. </b>A "buffer", in this sense, is an array containing a stream of characters
|
||||
typed from the keyboard; a "parse buffer" is an array which resolves this
|
||||
into individual words, pointing to the relevant entries in the dictionary
|
||||
structure. Because each VM has its own format for each of these arrays (not
|
||||
|
@ -176,7 +144,7 @@ are called tokens.
|
|||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">LTI_Insert</span></span> is documented in the DM4 and the <span class="extract"><span class="extract-syntax">LTI</span></span> prefix stands for
|
||||
"Language To Informese": it's used only by translations into non-English
|
||||
languages of play, and is not called in the template.
|
||||
languages of play.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -216,7 +184,7 @@ languages of play, and is not called in the template.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">b</span><span class="plain-syntax">->1 < </span><span class="identifier-syntax">b</span><span class="plain-syntax">->0) (</span><span class="identifier-syntax">b</span><span class="plain-syntax">->1)++;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Dictionary Functions. </b>Again, the dictionary structure is differently arranged on the different VMs.
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Dictionary Functions. </b>Again, the dictionary structure is differently arranged on the different VMs.
|
||||
This is a data structure containing, in compressed form, the text of all the
|
||||
words to be recognised by tokenisation (above). In I6 for Z, a dictionary word
|
||||
value is represented at run-time by its record number in the dictionary,
|
||||
|
@ -242,7 +210,7 @@ convert between record numbers and dictionary addresses.
|
|||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_DictionaryAddressToNumber</span><span class="plain-syntax"> </span><span class="identifier-syntax">w</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">w</span><span class="plain-syntax">-(</span><span class="identifier-syntax">HDR_DICTIONARY</span><span class="plain-syntax">-->0 + </span><span class="constant-syntax">7</span><span class="plain-syntax">))/</span><span class="identifier-syntax">DICT_ENTRY_BYTES</span><span class="plain-syntax">; ];</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_NumberToDictionaryAddress</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HDR_DICTIONARY</span><span class="plain-syntax">-->0 + </span><span class="constant-syntax">7</span><span class="plain-syntax"> + </span><span class="identifier-syntax">DICT_ENTRY_BYTES</span><span class="plain-syntax">*</span><span class="identifier-syntax">n</span><span class="plain-syntax">; ];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Command Tables. </b>The VM is also generated containing a data structure for the grammar
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Command Tables. </b>The VM is also generated containing a data structure for the grammar
|
||||
produced by I6's <span class="extract"><span class="extract-syntax">Verb</span></span> and <span class="extract"><span class="extract-syntax">Extend</span></span> directives: this is essentially a
|
||||
list of command verbs such as DROP or PUSH, together with a list of
|
||||
synonyms, and then the grammar for the subsequent commands to be
|
||||
|
@ -261,117 +229,7 @@ recognised by the parser.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"'"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">address</span><span class="plain-syntax">) </span><span class="identifier-syntax">VM_NumberToDictionaryAddress</span><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">), </span><span class="string-syntax">"' "</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. RNG. </b>No routine is needed for extracting a random number, since I6's built-in
|
||||
<span class="extract"><span class="extract-syntax">random</span></span> function does that, but it's useful to abstract the process of
|
||||
seeding the RNG so that it produces a repeatable sequence of "random"
|
||||
numbers from here on: the necessary opcodes are different for the two VMs.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Seed_RNG</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Memory Allocation. </b>This is dynamic memory allocation: something which is never practicable in
|
||||
the Z-machine, because the whole address range is already claimed, but which
|
||||
is viable on recent revisions of Glulx.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_AllocateMemory</span><span class="plain-syntax"> </span><span class="identifier-syntax">amount</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_FreeMemory</span><span class="plain-syntax"> </span><span class="identifier-syntax">address</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Audiovisual Resources. </b>The Z-machine only barely supports figures and sound effects, and only in
|
||||
version 6 of the Z-machine, which Inform 7 no longer supports. Sound effects
|
||||
have a longer pedigree and Infocom used them on some version 5 and even some
|
||||
version 3 works: really, though, from an Inform point of view we would prefer
|
||||
that anyone needing figures and sounds use Glulx instead. (Inform 6 remains
|
||||
available for those who really need to make audiovisual effects in these
|
||||
long-gone formats.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Picture</span><span class="plain-syntax"> </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_SoundEffect</span><span class="plain-syntax"> </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Typography. </b>Relatively few typographic effects are available on the Z-machine, so that
|
||||
many of the semantic markups for text which would be distinguishable on
|
||||
Glulx are indistinguishable here.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Style</span><span class="plain-syntax"> </span><span class="identifier-syntax">sty</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sty</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NORMAL_VMSTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOTE_VMSTY</span><span class="plain-syntax">: </span><span class="reserved-syntax">style</span><span class="plain-syntax"> </span><span class="identifier-syntax">roman</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HEADER_VMSTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">SUBHEADER_VMSTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">ALERT_VMSTY</span><span class="plain-syntax">: </span><span class="reserved-syntax">style</span><span class="plain-syntax"> </span><span class="identifier-syntax">bold</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Character Casing. </b>The following are the equivalent of <span class="extract"><span class="extract-syntax">tolower</span></span> and <span class="extract"><span class="extract-syntax">toupper</span></span>, the traditional
|
||||
C library functions for forcing letters into lower and upper case form, for
|
||||
the ZSCII character set.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_UpperToLowerCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="character-syntax">'A'</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="character-syntax">'Z'</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">32</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">158</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">160</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">167</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">168</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">175</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">180</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">186</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">190</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">196</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">200</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">202</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">204</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">208</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">210</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">212</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">214</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">217</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">218</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">221</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_LowerToUpperCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="character-syntax">'a'</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="character-syntax">'z'</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> - </span><span class="constant-syntax">32</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">155</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">157</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">164</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">165</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">169</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">174</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">181</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">185</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">191</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">195</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">201</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">203</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">205</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="constant-syntax">207</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">211</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">213</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">215</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">216</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">220</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. The Screen. </b>Our generic screen model is that the screen is made up of windows: we tend
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. The Screen. </b>Our generic screen model is that the screen is made up of windows: we tend
|
||||
to refer only to two of these, the main window and the status line, but
|
||||
others may also exist from time to time. Windows have unique ID numbers:
|
||||
the special window ID \(-1\) means "all windows" or "the entire screen",
|
||||
|
@ -402,7 +260,7 @@ in order to keep it accurate.
|
|||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_ScreenHeight</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">HDR_SCREENHLINES</span><span class="plain-syntax">->0); ];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. Window Colours. </b>Each window can have its own foreground and background colours.
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Window Colours. </b>Each window can have its own foreground and background colours.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The colour of individual letters or words of type is not controllable in
|
||||
|
@ -441,7 +299,7 @@ which is greatly superior in this respect).
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Main Window. </b>The part of the screen on which commands and responses are printed, which
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Main Window. </b>The part of the screen on which commands and responses are printed, which
|
||||
ordinarily occupies almost all of the screen area.
|
||||
</p>
|
||||
|
||||
|
@ -460,7 +318,7 @@ emulates the Glulx model of window rather than text colours.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_current</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Status Line. </b>Despite the name, the status line need not be a single line at the top of
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Status Line. </b>Despite the name, the status line need not be a single line at the top of
|
||||
the screen: that's only the conventional default arrangement. It can expand
|
||||
to become the equivalent of an old-fashioned VT220 terminal, with menus
|
||||
and grids and mazes displayed lovingly in character graphics, or it can
|
||||
|
@ -501,62 +359,8 @@ line; line 2 is underneath, and so on; columns are similarly numbered from
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">height</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. Quotation Boxes. </b>No routine is needed to produce quotation boxes: the I6 <span class="extract"><span class="extract-syntax">box</span></span> statement
|
||||
generates the necessary Z-machine opcodes all by itself.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Undo. </b>These simply wrap the relevant opcodes.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Undo</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">restore_undo</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Save_Undo</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">save_undo</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. Veneer. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Unsigned__Compare</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="identifier-syntax">u</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">je</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> ?</span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; </span><span class="comment-syntax">i.e., return 0</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jl</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> ?</span><span class="identifier-syntax">XNegative</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">So here x >= 0 and x ~= y</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jl</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> ?</span><span class="identifier-syntax">XPosYNeg</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Here x >=0, y >= 0, x ~= y</span>
|
||||
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jg</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> ?</span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; </span><span class="comment-syntax">i.e., return 1</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">ret</span><span class="plain-syntax"> -1;</span>
|
||||
|
||||
<span class="plain-syntax"> .</span><span class="identifier-syntax">XPosYNeg</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Here x >= 0, y < 0, x ~= y</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">ret</span><span class="plain-syntax"> -1;</span>
|
||||
|
||||
<span class="plain-syntax"> .</span><span class="identifier-syntax">XNegative</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jl</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> ?~</span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; </span><span class="comment-syntax">if x < 0, y >= 0, return 1</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Here x < 0, y < 0, x ~= y</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jg</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> ?</span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">ret</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RT__ChLDW</span><span class="plain-syntax"> </span><span class="identifier-syntax">base</span><span class="plain-syntax"> </span><span class="identifier-syntax">offset</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">loadw</span><span class="plain-syntax"> </span><span class="identifier-syntax">base</span><span class="plain-syntax"> </span><span class="identifier-syntax">offset</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">ret</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. End Z-only matter. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">; </span><span class="comment-syntax">TARGET_ZCODE</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-gll.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresscurrent">zmc</li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-prg.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-cs.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresscurrent">io</li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-vnr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
91
docs/Architecture16Kit/S-str.html
Normal file
91
docs/Architecture16Kit/S-str.html
Normal file
|
@ -0,0 +1,91 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Startup Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Startup Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture16Kit</a></li><li><b>Startup Template</b></li></ul></div>
|
||||
<p class="purpose">How programs for this architecture start up the virtual machine.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b><span class="extract"><span class="extract-syntax">VM_PreInitialise()</span></span> is called; then the "starting the virtual machine"
|
||||
activity runs; and then <span class="extract"><span class="extract-syntax">VM_Initialise()</span></span> is called.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">standard_interpreter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_TERPSTANDARD</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">transcript_mode</span><span class="plain-syntax"> = ((</span><span class="identifier-syntax">HDR_GAMEFLAGS</span><span class="plain-syntax">-->0) & </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_DICTIONARY</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">->(</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">->0 + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> + </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">->0 + </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_end</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> + ((</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">)-->0) * </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">->0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer2</span><span class="plain-syntax">->0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer3</span><span class="plain-syntax">->0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse</span><span class="plain-syntax">->0 = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse2</span><span class="plain-syntax">->0 = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">FIX_RNG_CFGF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="constant-syntax">10000</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-2000;</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-cpb.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresscurrent">str</li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-cs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
96
docs/Architecture16Kit/S-vnr.html
Normal file
96
docs/Architecture16Kit/S-vnr.html
Normal file
|
@ -0,0 +1,96 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Veneer Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Veneer Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture16Kit</a></li><li><b>Veneer Template</b></li></ul></div>
|
||||
<p class="purpose">Veneer code for use by the Inform 6 compiler with the Z-machine target.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>These functions have strange-looking names special to the Inform 6 compiler,
|
||||
which uses them to replace its default "veneer" functions. If we're compiling
|
||||
to something other than Inform 6, though, they are just strangely-named functions,
|
||||
and do no harm.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Unsigned__Compare</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="identifier-syntax">u</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">je</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> ?</span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; </span><span class="comment-syntax">i.e., return 0</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jl</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> ?</span><span class="identifier-syntax">XNegative</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">So here x >= 0 and x ~= y</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jl</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> ?</span><span class="identifier-syntax">XPosYNeg</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Here x >=0, y >= 0, x ~= y</span>
|
||||
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jg</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> ?</span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; </span><span class="comment-syntax">i.e., return 1</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">ret</span><span class="plain-syntax"> -1;</span>
|
||||
|
||||
<span class="plain-syntax"> .</span><span class="identifier-syntax">XPosYNeg</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Here x >= 0, y < 0, x ~= y</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">ret</span><span class="plain-syntax"> -1;</span>
|
||||
|
||||
<span class="plain-syntax"> .</span><span class="identifier-syntax">XNegative</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jl</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> ?~</span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; </span><span class="comment-syntax">if x < 0, y >= 0, return 1</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Here x < 0, y < 0, x ~= y</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jg</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> ?</span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">ret</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RT__ChLDW</span><span class="plain-syntax"> </span><span class="identifier-syntax">base</span><span class="plain-syntax"> </span><span class="identifier-syntax">offset</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">loadw</span><span class="plain-syntax"> </span><span class="identifier-syntax">base</span><span class="plain-syntax"> </span><span class="identifier-syntax">offset</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">ret</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-io.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresscurrent">vnr</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
84
docs/Architecture16Kit/index.html
Normal file
84
docs/Architecture16Kit/index.html
Normal file
|
@ -0,0 +1,84 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Architecture16Kit</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><b>Architecture16Kit</b></li></ul>
|
||||
<p class="purpose">Inter-level support for compiling Inform programs to 16-bit architectures. This is version 1.</p>
|
||||
<hr>
|
||||
<div class="contentspage">
|
||||
<ul class="chapterlist">
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-cpb.html">
|
||||
<spon class="sectiontitle">Capabilities Template</span></a> -
|
||||
<span class="sectionpurpose">Miscellaneous capabilities of the 16-bit architecture.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-str.html">
|
||||
<spon class="sectiontitle">Startup Template</span></a> -
|
||||
<span class="sectionpurpose">How programs for this architecture start up the virtual machine.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-cs.html">
|
||||
<spon class="sectiontitle">Character Set Template</span></a> -
|
||||
<span class="sectionpurpose">Code relating to the ZSCII character set.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-io.html">
|
||||
<spon class="sectiontitle">Input Output Template</span></a> -
|
||||
<span class="sectionpurpose">Access to the keyboard and to textual windows.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-vnr.html">
|
||||
<spon class="sectiontitle">Veneer Template</span></a> -
|
||||
<span class="sectionpurpose">Veneer code for use by the Inform 6 compiler with the Z-machine target.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr>
|
||||
<p class="purpose">Powered by <a href="https://github.com/ganelson/inweb">Inweb</a>.</p>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
164
docs/Architecture32Kit/S-cpb.html
Normal file
164
docs/Architecture32Kit/S-cpb.html
Normal file
|
@ -0,0 +1,164 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Capabilities Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Capabilities Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Capabilities Template</b></li></ul></div>
|
||||
<p class="purpose">Miscellaneous capabilities of the 16-bit architecture.</p>
|
||||
|
||||
<ul class="toc"><li><a href="S-cpb.html#SP1">§1. Summary</a></li><li><a href="S-cpb.html#SP2">§2. Release Number</a></li><li><a href="S-cpb.html#SP3">§3. Random Number Generator</a></li><li><a href="S-cpb.html#SP4">§4. Memory Allocation</a></li><li><a href="S-cpb.html#SP5">§5. Audiovisual Resources</a></li><li><a href="S-cpb.html#SP6">§6. Typography</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Summary. </b>The 32-bit architecture is currently the default targeted by Inform, and is
|
||||
used both for programs compiled via Inform 6 to the Glulx virtual machine, and
|
||||
also for programs compiled via C.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Release Number. </b>Our programs will have both a release number and a serial code, which are
|
||||
in each case stored in the header memory of the virtual machine.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_Describe_Release()</span></span> has been removed and replaced with functions returning
|
||||
the release number, a non-negative integer, and the serial code, a byte array
|
||||
expected to be 6 digit characters wide.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_ReleaseNumber</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">aloads</span><span class="plain-syntax"> </span><span class="identifier-syntax">ROM_GAMERELEASE</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_SerialNumber</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ROM_GAMESERIAL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Random Number Generator. </b>No routine is needed for extracting a random number, since I6's built-in
|
||||
<span class="extract"><span class="extract-syntax">random</span></span> function does that, but it's useful to abstract the process of
|
||||
seeding the RNG so that it produces a repeatable sequence of "random"
|
||||
numbers from here on: the necessary opcodes are different for the two VMs.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Seed_RNG</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">setrandom</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Memory Allocation. </b>This is dynamic memory allocation: something which is never practicable in
|
||||
the Z-machine, because the whole address range is already claimed, but which
|
||||
is viable on recent revisions of Glulx.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_AllocateMemory</span><span class="plain-syntax"> </span><span class="identifier-syntax">amount</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">gestalt</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">malloc</span><span class="plain-syntax"> </span><span class="identifier-syntax">amount</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_FreeMemory</span><span class="plain-syntax"> </span><span class="identifier-syntax">address</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">gestalt</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">mfree</span><span class="plain-syntax"> </span><span class="identifier-syntax">address</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Audiovisual Resources. </b>The Z-machine only barely supports figures and sound effects, so Glulx is
|
||||
the preferred VM to choose if they are wanted. Properly speaking, it's not
|
||||
Glulx which supports these, but its I/O layer Glk, and implementations
|
||||
of Glk are free to support them or not as they please: "cheapglk", a
|
||||
dumb terminal version, does not, for instance. We therefore have to
|
||||
investigate the "gestalt" to find out.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Picture</span><span class="plain-syntax"> </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Graphics</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_image_draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">, </span><span class="identifier-syntax">imagealign_InlineCenter</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[Picture number "</span><span class="plain-syntax">, </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">, </span><span class="string-syntax">" here.]^"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_SoundEffect</span><span class="plain-syntax"> </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Sound</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_schannel_play</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax">, </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[Sound effect number "</span><span class="plain-syntax">, </span><span class="identifier-syntax">resource_ID</span><span class="plain-syntax">, </span><span class="string-syntax">" here.]^"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Typography. </b>Glk makes an attempt to present typographic styles as being a matter of
|
||||
semantic markup rather than controlling the actual appearance of text:
|
||||
the idea is that the story file should want to print something in a
|
||||
heading kind of way, and then the interpreter — guided by the player's
|
||||
reading preferences — might set that in bold, or larger type, or red ink,
|
||||
or any combination of the three, or with other effects entirely. (This is
|
||||
not the place to discuss whether that was a wise decision for Glk to take.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Style</span><span class="plain-syntax"> </span><span class="identifier-syntax">sty</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sty</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NORMAL_VMSTY</span><span class="plain-syntax">: </span><span class="identifier-syntax">glk_set_style</span><span class="plain-syntax">(</span><span class="identifier-syntax">style_Normal</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HEADER_VMSTY</span><span class="plain-syntax">: </span><span class="identifier-syntax">glk_set_style</span><span class="plain-syntax">(</span><span class="identifier-syntax">style_Header</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SUBHEADER_VMSTY</span><span class="plain-syntax">: </span><span class="identifier-syntax">glk_set_style</span><span class="plain-syntax">(</span><span class="identifier-syntax">style_Subheader</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NOTE_VMSTY</span><span class="plain-syntax">: </span><span class="identifier-syntax">glk_set_style</span><span class="plain-syntax">(</span><span class="identifier-syntax">style_Note</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ALERT_VMSTY</span><span class="plain-syntax">: </span><span class="identifier-syntax">glk_set_style</span><span class="plain-syntax">(</span><span class="identifier-syntax">style_Alert</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BLOCKQUOTE_VMSTY</span><span class="plain-syntax">: </span><span class="identifier-syntax">glk_set_style</span><span class="plain-syntax">(</span><span class="identifier-syntax">style_BlockQuote</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">INPUT_VMSTY</span><span class="plain-syntax">: </span><span class="identifier-syntax">glk_set_style</span><span class="plain-syntax">(</span><span class="identifier-syntax">style_Input</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrent">cpb</li><li class="progresssection"><a href="S-glk.html">glk</a></li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-glk.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
71
docs/Architecture32Kit/S-cs.html
Normal file
71
docs/Architecture32Kit/S-cs.html
Normal file
|
@ -0,0 +1,71 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Character Set Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Character Set Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Character Set Template</b></li></ul></div>
|
||||
<p class="purpose">Code relating to the Unicode character set.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The following are the equivalent of <span class="extract"><span class="extract-syntax">tolower</span></span> and <span class="extract"><span class="extract-syntax">toupper</span></span>, the traditional
|
||||
C library functions for forcing letters into lower and upper case form, for
|
||||
the 32-bit architecture's character set. That's now Unicode, and we delegate
|
||||
all of the work to glk functions.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_UpperToLowerCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">glk_char_to_lower</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">); ];</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_LowerToUpperCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">glk_char_to_upper</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">); ];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-str.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresssection"><a href="S-glk.html">glk</a></li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresscurrent">cs</li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-io.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
941
docs/Architecture32Kit/S-glk.html
Normal file
941
docs/Architecture32Kit/S-glk.html
Normal file
|
@ -0,0 +1,941 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Glk Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Glk Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Glk Template</b></li></ul></div>
|
||||
<p class="purpose">Glk is a fully-featured input-output model, designed by Andrew Plotkin for use with the Glulx virtual machine, but not used only for that. All 32-bit Inform programs use Glk.</p>
|
||||
|
||||
<ul class="toc"><li><a href="S-glk.html#SP1">§1. Stubs</a></li><li><a href="S-glk.html#SP2">§2. Definitions</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Stubs. </b>These are I6 library-style entry point routines, not used by I7, but retained
|
||||
in case I7 extensions want to do interesting things with Glulx.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Stub</span><span class="plain-syntax"> </span><span class="identifier-syntax">HandleGlkEvent</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Stub</span><span class="plain-syntax"> </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Stub</span><span class="plain-syntax"> </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Definitions. </b>This section is a verbatim copy of an invaluable I6 header file originally
|
||||
put together by John Cater.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GLK_NULL</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="comment-syntax">infglk.h — auto-generated by parse_dispatch.py.</span>
|
||||
<span class="comment-syntax">Generated for Glk API version 0.7.4</span>
|
||||
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_Arrange</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_CharInput</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_Hyperlink</span><span class="plain-syntax"> = </span><span class="constant-syntax">8</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_LineInput</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_MouseInput</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_None</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_Redraw</span><span class="plain-syntax"> = </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_SoundNotify</span><span class="plain-syntax"> = </span><span class="constant-syntax">7</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_Timer</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">evtype_VolumeNotify</span><span class="plain-syntax"> = </span><span class="constant-syntax">9</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">filemode_Read</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">filemode_ReadWrite</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">filemode_Write</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">filemode_WriteAppend</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">fileusage_BinaryMode</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">fileusage_Data</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">fileusage_InputRecord</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">fileusage_SavedGame</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">fileusage_TextMode</span><span class="plain-syntax"> = </span><span class="constant-syntax">256</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">fileusage_Transcript</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">fileusage_TypeMask</span><span class="plain-syntax"> = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_CharInput</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_CharOutput</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_CharOutput_ApproxPrint</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_CharOutput_CannotPrint</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_CharOutput_ExactPrint</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_DateTime</span><span class="plain-syntax"> = </span><span class="constant-syntax">20</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_DrawImage</span><span class="plain-syntax"> = </span><span class="constant-syntax">7</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_Graphics</span><span class="plain-syntax"> = </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_GraphicsCharInput</span><span class="plain-syntax"> = </span><span class="constant-syntax">23</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_GraphicsTransparency</span><span class="plain-syntax"> = </span><span class="constant-syntax">14</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_HyperlinkInput</span><span class="plain-syntax"> = </span><span class="constant-syntax">12</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_Hyperlinks</span><span class="plain-syntax"> = </span><span class="constant-syntax">11</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_LineInput</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_LineInputEcho</span><span class="plain-syntax"> = </span><span class="constant-syntax">17</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_LineTerminatorKey</span><span class="plain-syntax"> = </span><span class="constant-syntax">19</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_LineTerminators</span><span class="plain-syntax"> = </span><span class="constant-syntax">18</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_MouseInput</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_ResourceStream</span><span class="plain-syntax"> = </span><span class="constant-syntax">22</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_Sound</span><span class="plain-syntax"> = </span><span class="constant-syntax">8</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_Sound2</span><span class="plain-syntax"> = </span><span class="constant-syntax">21</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_SoundMusic</span><span class="plain-syntax"> = </span><span class="constant-syntax">13</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_SoundNotify</span><span class="plain-syntax"> = </span><span class="constant-syntax">10</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_SoundVolume</span><span class="plain-syntax"> = </span><span class="constant-syntax">9</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_Timer</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_Unicode</span><span class="plain-syntax"> = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_UnicodeNorm</span><span class="plain-syntax"> = </span><span class="constant-syntax">16</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">gestalt_Version</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">imagealign_InlineCenter</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">imagealign_InlineDown</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">imagealign_MarginLeft</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">imagealign_MarginRight</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">imagealign_InlineUp</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Delete</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967289</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Down</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967291</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_End</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967283</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Escape</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967288</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func1</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967279</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func10</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967270</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func11</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967269</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func12</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967268</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func2</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967278</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func3</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967277</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func4</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967276</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func5</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967275</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func6</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967274</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func7</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967273</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func8</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967272</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Func9</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967271</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Home</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967284</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Left</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967294</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_MAXVAL</span><span class="plain-syntax"> = </span><span class="constant-syntax">28</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_PageDown</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967285</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_PageUp</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967286</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Return</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967290</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Right</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967293</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Tab</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967287</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Unknown</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967295</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">keycode_Up</span><span class="plain-syntax"> = </span><span class="constant-syntax">4294967292</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">seekmode_Current</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">seekmode_End</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">seekmode_Start</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_Alert</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_BlockQuote</span><span class="plain-syntax"> = </span><span class="constant-syntax">7</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_Emphasized</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_Header</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_Input</span><span class="plain-syntax"> = </span><span class="constant-syntax">8</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_NUMSTYLES</span><span class="plain-syntax"> = </span><span class="constant-syntax">11</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_Normal</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_Note</span><span class="plain-syntax"> = </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_Preformatted</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_Subheader</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_User1</span><span class="plain-syntax"> = </span><span class="constant-syntax">9</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">style_User2</span><span class="plain-syntax"> = </span><span class="constant-syntax">10</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_BackColor</span><span class="plain-syntax"> = </span><span class="constant-syntax">8</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_Indentation</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_Justification</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_NUMHINTS</span><span class="plain-syntax"> = </span><span class="constant-syntax">10</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_Oblique</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_ParaIndentation</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_Proportional</span><span class="plain-syntax"> = </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_ReverseColor</span><span class="plain-syntax"> = </span><span class="constant-syntax">9</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_Size</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_TextColor</span><span class="plain-syntax"> = </span><span class="constant-syntax">7</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_Weight</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_just_Centered</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_just_LeftFlush</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_just_LeftRight</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">stylehint_just_RightFlush</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_Above</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_Below</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_Border</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_BorderMask</span><span class="plain-syntax"> = </span><span class="constant-syntax">256</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_DirMask</span><span class="plain-syntax"> = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_DivisionMask</span><span class="plain-syntax"> = </span><span class="constant-syntax">240</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_Fixed</span><span class="plain-syntax"> = </span><span class="constant-syntax">16</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_Left</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_NoBorder</span><span class="plain-syntax"> = </span><span class="constant-syntax">256</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_Proportional</span><span class="plain-syntax"> = </span><span class="constant-syntax">32</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">winmethod_Right</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">wintype_AllTypes</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">wintype_Blank</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">wintype_Graphics</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">wintype_Pair</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">wintype_TextGrid</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_exit</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_exit()</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_tick</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_tick()</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_gestalt</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_gestalt(uint, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_gestalt_ext</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_gestalt_ext(uint, uint, uintarray, arraylen) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_iterate</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_iterate(window, &uint) => window</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">32</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_rock</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_rock(window) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">33</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_root</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_root() => window</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">34</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_open(window, uint, uint, uint, uint) => window</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">35</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_close</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_close(window, &{uint, uint})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">36</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_size</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_size(window, &uint, &uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">37</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_set_arrangement</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_set_arrangement(window, uint, uint, window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">38</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_arrangement</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_arrangement(window, &uint, &uint, &window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">39</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_type(window) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">40</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_parent</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_parent(window) => window</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">41</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_clear</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_clear(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">42</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_move_cursor</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_move_cursor(window, uint, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">43</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_stream(window) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">44</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_set_echo_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_set_echo_stream(window, stream)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">45</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_echo_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_echo_stream(window) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">46</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_set_window</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_set_window(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">47</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_get_sibling</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_get_sibling(window) => window</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">48</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_iterate</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_iterate(stream, &uint) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">64</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_get_rock</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_get_rock(stream) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">65</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_open_file</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_open_file(fileref, uint, uint) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">66</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_open_memory</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_open_memory(nativechararray, arraylen, uint, uint) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">67</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_close</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_close(stream, &{uint, uint})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">68</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_set_position</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_set_position(stream, int, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">69</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_get_position</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_get_position(stream) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">70</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_set_current(stream)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">71</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_get_current</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_get_current() => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">72</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_open_resource</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_open_resource(uint, uint) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">73</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_create_temp</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_create_temp(uint, uint) => fileref</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">96</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_create_by_name</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_create_by_name(uint, string, uint) => fileref</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">97</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_create_by_prompt</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_create_by_prompt(uint, uint, uint) => fileref</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">98</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_destroy</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_destroy(fileref)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">99</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_iterate</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_iterate(fileref, &uint) => fileref</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">100</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_get_rock</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_get_rock(fileref) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">101</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_delete_file</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_delete_file(fileref)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">102</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_does_file_exist</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_does_file_exist(fileref) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">103</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_fileref_create_from_fileref</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_fileref_create_from_fileref(uint, fileref, uint) => fileref</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">104</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_char</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_char(uchar)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">128</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_char_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_char_stream(stream, uchar)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">129</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_string</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_string(string)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">130</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_string_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_string_stream(stream, string)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">131</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_buffer</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_buffer(nativechararray, arraylen)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">132</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_buffer_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_buffer_stream(stream, nativechararray, arraylen)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">133</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_set_style</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_set_style(uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">134</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_set_style_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_set_style_stream(stream, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">135</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_get_char_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_get_char_stream(stream) => int</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">144</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_get_line_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_get_line_stream(stream, nativechararray, arraylen) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">145</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_get_buffer_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_get_buffer_stream(stream, nativechararray, arraylen) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">146</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_char_to_lower</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_char_to_lower(uchar) => uchar</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">160</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_char_to_upper</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_char_to_upper(uchar) => uchar</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">161</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stylehint_set(uint, uint, uint, int)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">176</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stylehint_clear</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stylehint_clear(uint, uint, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">177</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_style_distinguish</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_style_distinguish(window, uint, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">178</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_style_measure</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_style_measure(window, uint, uint, &uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">179</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_select</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_select(&{uint, window, uint, uint})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">192</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_select_poll</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_select_poll(&{uint, window, uint, uint})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">193</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_request_line_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_request_line_event(window, nativechararray, arraylen, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">208</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_cancel_line_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_cancel_line_event(window, &{uint, window, uint, uint})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">209</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_request_char_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_request_char_event(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">210</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_cancel_char_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_cancel_char_event(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">211</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_request_mouse_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_request_mouse_event(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">212</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_cancel_mouse_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_cancel_mouse_event(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">213</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_request_timer_events</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_request_timer_events(uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">214</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_image_get_info</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_image_get_info(uint, &uint, &uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">224</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_image_draw</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_image_draw(window, uint, int, int) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">225</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_image_draw_scaled</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_image_draw_scaled(window, uint, int, int, uint, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">226</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_flow_break</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_flow_break(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">232</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_erase_rect</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_erase_rect(window, int, int, uint, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">233</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_fill_rect</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_fill_rect(window, uint, int, int, uint, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">234</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_window_set_background_color</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_window_set_background_color(window, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">235</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_iterate</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_iterate(schannel, &uint) => schannel</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">240</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_get_rock</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_get_rock(schannel) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">241</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_create</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_create(uint) => schannel</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">242</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_destroy</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_destroy(schannel)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">243</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_create_ext</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_create_ext(uint, uint) => schannel</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">244</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_play_multi</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_play_multi(schannelarray, arraylen, uintarray, arraylen, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">247</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_play</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_play(schannel, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">248</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_play_ext</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_play_ext(schannel, uint, uint, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">249</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_stop</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_stop(schannel)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">250</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_set_volume</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_set_volume(schannel, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">251</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_sound_load_hint</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_sound_load_hint(uint, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">252</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_set_volume_ext</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_set_volume_ext(schannel, uint, uint, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">253</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_pause</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_pause(schannel)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">254</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_schannel_unpause</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_schannel_unpause(schannel)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">255</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_set_hyperlink</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_set_hyperlink(uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">256</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_set_hyperlink_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_set_hyperlink_stream(stream, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">257</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_request_hyperlink_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_request_hyperlink_event(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">258</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_cancel_hyperlink_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_cancel_hyperlink_event(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">259</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_buffer_to_lower_case_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_buffer_to_lower_case_uni(uintarray, arraylen, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">288</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_buffer_to_upper_case_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_buffer_to_upper_case_uni(uintarray, arraylen, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">289</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_buffer_to_title_case_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_buffer_to_title_case_uni(uintarray, arraylen, uint, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">290</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_buffer_canon_decompose_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_buffer_canon_decompose_uni(uintarray, arraylen, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">291</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_buffer_canon_normalize_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_buffer_canon_normalize_uni(uintarray, arraylen, uint) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">292</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_char_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_char_uni(uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">296</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_string_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_string_uni(unicode)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">297</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_buffer_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_buffer_uni(uintarray, arraylen)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">298</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_char_stream_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_char_stream_uni(stream, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">299</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_string_stream_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_string_stream_uni(stream, unicode)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">300</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_put_buffer_stream_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_put_buffer_stream_uni(stream, uintarray, arraylen)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">301</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_get_char_stream_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_get_char_stream_uni(stream) => int</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">304</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_get_buffer_stream_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_get_buffer_stream_uni(stream, uintarray, arraylen) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">305</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_get_line_stream_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_get_line_stream_uni(stream, uintarray, arraylen) => uint</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">306</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_open_file_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_open_file_uni(fileref, uint, uint) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">312</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_open_memory_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_open_memory_uni(uintarray, arraylen, uint, uint) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">313</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_stream_open_resource_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_stream_open_resource_uni(uint, uint) => stream</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">314</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_request_char_event_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_request_char_event_uni(window)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">320</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_request_line_event_uni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_request_line_event_uni(window, uintarray, arraylen, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">321</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_set_echo_line_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_set_echo_line_event(window, uint)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">336</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_set_terminators_line_event</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_set_terminators_line_event(window, uintarray, arraylen)</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">337</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_current_time</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_current_time(&{int, uint, int})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">352</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_current_simple_time</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_current_simple_time(uint) => int</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">353</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_time_to_date_utc</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_time_to_date_utc(&{int, uint, int}, &{int, int, int, int, int, int, int, int})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">360</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_time_to_date_local</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_time_to_date_local(&{int, uint, int}, &{int, int, int, int, int, int, int, int})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">361</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_simple_time_to_date_utc</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_simple_time_to_date_utc(int, uint, &{int, int, int, int, int, int, int, int})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">362</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_simple_time_to_date_local</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_simple_time_to_date_local(int, uint, &{int, int, int, int, int, int, int, int})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">363</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_date_to_time_utc</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_date_to_time_utc(&{int, int, int, int, int, int, int, int}, &{int, uint, int})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">364</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_date_to_time_local</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_date_to_time_local(&{int, int, int, int, int, int, int, int}, &{int, uint, int})</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">365</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_date_to_simple_time_utc</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_date_to_simple_time_utc(&{int, int, int, int, int, int, int, int}, uint) => int</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">366</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">glk_date_to_simple_time_local</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">glk_date_to_simple_time_local(&{int, int, int, int, int, int, int, int}, uint) => int</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">367</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-cpb.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresscurrent">glk</li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-str.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
832
docs/Architecture32Kit/S-io.html
Normal file
832
docs/Architecture32Kit/S-io.html
Normal file
|
@ -0,0 +1,832 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Input Output Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
MathJax = {
|
||||
tex: {
|
||||
inlineMath: '$', '$'], ['\\(', '\\)'
|
||||
},
|
||||
svg: {
|
||||
fontCache: 'global'
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Input Output Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Input Output Template</b></li></ul></div>
|
||||
<p class="purpose">Access to the keyboard and to textual windows.</p>
|
||||
|
||||
<ul class="toc"><li><a href="S-io.html#SP1">§1. Variables and Arrays</a></li><li><a href="S-io.html#SP2">§2. Rocks</a></li><li><a href="S-io.html#SP3">§3. Keyboard Input</a></li><li><a href="S-io.html#SP4">§4. Buffer Functions</a></li><li><a href="S-io.html#SP5">§5. Dictionary Functions</a></li><li><a href="S-io.html#SP6">§6. Command Tables</a></li><li><a href="S-io.html#SP7">§7. Glulx-Only Printing Routines</a></li><li><a href="S-io.html#SP8">§8. The Screen</a></li><li><a href="S-io.html#SP9">§9. Window Colours</a></li><li><a href="S-io.html#SP10">§10. Main Window</a></li><li><a href="S-io.html#SP11">§11. Status Line</a></li><li><a href="S-io.html#SP12">§12. Quotation Boxes</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Variables and Arrays. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_event</span><span class="plain-syntax"> --> </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax"> </span><span class="constant-syntax">28</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_scriptfref</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_savestr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax">true if gg_commandstr is being replayed</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax"> = </span><span class="constant-syntax">260</span><span class="plain-syntax">; </span><span class="comment-syntax">No extra byte necessary</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">MAX_BUFFER_WORDS</span><span class="plain-syntax"> = </span><span class="constant-syntax">20</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARSE_BUFFER_LEN</span><span class="plain-syntax"> = </span><span class="constant-syntax">61</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax"> --> </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">buffer2</span><span class="plain-syntax"> --> </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">buffer3</span><span class="plain-syntax"> --> </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse</span><span class="plain-syntax"> --> </span><span class="identifier-syntax">PARSE_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse2</span><span class="plain-syntax"> --> </span><span class="identifier-syntax">PARSE_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Rocks. </b>These are unique ID codes used to mark resources; think of them as inedible
|
||||
cookies.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">201</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">202</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_QUOTEWIN_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">203</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_SAVESTR_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">301</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_SCRIPTSTR_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">302</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_COMMANDWSTR_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">303</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_COMMANDRSTR_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">304</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_SCRIPTFREF_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">401</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_FOREGROUNDCHAN_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">410</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_BACKGROUNDCHAN_ROCK</span><span class="plain-syntax"> </span><span class="constant-syntax">411</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Keyboard Input. </b>The VM must provide three routines for keyboard input:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">VM_KeyChar()</span></span> waits for a key to be pressed and then returns the
|
||||
character chosen as a ZSCII character.
|
||||
</li><li>(b) <span class="extract"><span class="extract-syntax">VM_KeyDelay(N)</span></span> waits up to \(N/10\) seconds for a key to be pressed,
|
||||
returning the ZSCII character if so, or 0 if not.
|
||||
</li><li>(c) <span class="extract"><span class="extract-syntax">VM_ReadKeyboard(b, t)</span></span> reads a whole newline-terminated command
|
||||
into the buffer <span class="extract"><span class="extract-syntax">b</span></span>, then parses it into a word stream in the table <span class="extract"><span class="extract-syntax">t</span></span>.
|
||||
</li></ul>
|
||||
<p class="commentary">There are elaborations to do with mouse clicks, but this isn't the place
|
||||
to document all of that.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_KeyChar</span><span class="plain-syntax"> </span><span class="identifier-syntax">win</span><span class="plain-syntax"> </span><span class="identifier-syntax">nostat</span><span class="plain-syntax"> </span><span class="identifier-syntax">done</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> </span><span class="identifier-syntax">jx</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">jx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ch</span><span class="plain-syntax">; </span><span class="comment-syntax">squash compiler warnings</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">win</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">win</span><span class="plain-syntax"> = </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax"> && </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> ~= </span><span class="reserved-syntax">false</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">done</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_get_line_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">, </span><span class="constant-syntax">31</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">done</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">fall through to normal user input.</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Trim the trailing newline</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">->(</span><span class="identifier-syntax">done</span><span class="plain-syntax">-1) == </span><span class="constant-syntax">10</span><span class="plain-syntax">) </span><span class="identifier-syntax">done</span><span class="plain-syntax"> = </span><span class="identifier-syntax">done</span><span class="plain-syntax">-1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> == </span><span class="character-syntax">'\') {</span>
|
||||
<span class="character-syntax"> res = 0;</span>
|
||||
<span class="character-syntax"> for (ix=1 : ix<done : ix++) {</span>
|
||||
<span class="character-syntax"> ch = gg_arguments->ix;</span>
|
||||
<span class="character-syntax"> if (ch >= '</span><span class="constant-syntax">0</span><span class="character-syntax">' && ch <= '</span><span class="constant-syntax">9</span><span class="character-syntax">') {</span>
|
||||
<span class="character-syntax"> @shiftl res 4 res;</span>
|
||||
<span class="character-syntax"> res = res + (ch-'</span><span class="constant-syntax">0</span><span class="character-syntax">');</span>
|
||||
<span class="character-syntax"> } else if (ch >= '</span><span class="identifier-syntax">a</span><span class="character-syntax">' && ch <= '</span><span class="identifier-syntax">f</span><span class="character-syntax">') {</span>
|
||||
<span class="character-syntax"> @shiftl res 4 res;</span>
|
||||
<span class="character-syntax"> res = res + (ch+10-'</span><span class="identifier-syntax">a</span><span class="character-syntax">');</span>
|
||||
<span class="character-syntax"> } else if (ch >= '</span><span class="identifier-syntax">A</span><span class="character-syntax">' && ch <= '</span><span class="identifier-syntax">F</span><span class="character-syntax">') {</span>
|
||||
<span class="character-syntax"> @shiftl res 4 res;</span>
|
||||
<span class="character-syntax"> res = res + (ch+10-'</span><span class="identifier-syntax">A</span><span class="character-syntax">');</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> jump KCPContinue;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> done = false;</span>
|
||||
<span class="character-syntax"> glk_request_char_event(win);</span>
|
||||
<span class="character-syntax"> while (~~done) {</span>
|
||||
<span class="character-syntax"> glk_select(gg_event);</span>
|
||||
<span class="character-syntax"> switch (gg_event-->0) {</span>
|
||||
<span class="character-syntax"> 5: </span><span class="comment-syntax">evtype_Arrange</span>
|
||||
<span class="character-syntax"> if (nostat) {</span>
|
||||
<span class="character-syntax"> glk_cancel_char_event(win);</span>
|
||||
<span class="character-syntax"> res = $80000000;</span>
|
||||
<span class="character-syntax"> done = true;</span>
|
||||
<span class="character-syntax"> break;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> DrawStatusLine();</span>
|
||||
<span class="character-syntax"> 2: </span><span class="comment-syntax">evtype_CharInput</span>
|
||||
<span class="character-syntax"> if (gg_event-->1 == win) {</span>
|
||||
<span class="character-syntax"> res = gg_event-->2;</span>
|
||||
<span class="character-syntax"> done = true;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> ix = HandleGlkEvent(gg_event, 1, gg_arguments);</span>
|
||||
<span class="character-syntax"> if (ix == 2) {</span>
|
||||
<span class="character-syntax"> res = gg_arguments-->0;</span>
|
||||
<span class="character-syntax"> done = true;</span>
|
||||
<span class="character-syntax"> } else if (ix == -1) done = false;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> if (gg_commandstr ~= 0 && gg_command_reading == false) {</span>
|
||||
<span class="character-syntax"> if (res < 32 || res >= 256 || (res == '</span><span class="plain-syntax">\</span><span class="character-syntax">' or '</span><span class="plain-syntax"> </span><span class="character-syntax">')) {</span>
|
||||
<span class="character-syntax"> glk_put_char_stream(gg_commandstr, '</span><span class="plain-syntax">\</span><span class="character-syntax">');</span>
|
||||
<span class="character-syntax"> done = 0;</span>
|
||||
<span class="character-syntax"> jx = res;</span>
|
||||
<span class="character-syntax"> for (ix=0 : ix<8 : ix++) {</span>
|
||||
<span class="character-syntax"> @ushiftr jx 28 ch;</span>
|
||||
<span class="character-syntax"> @shiftl jx 4 jx;</span>
|
||||
<span class="character-syntax"> ch = ch & $0F;</span>
|
||||
<span class="character-syntax"> if (ch ~= 0 || ix == 7) done = 1;</span>
|
||||
<span class="character-syntax"> if (done) {</span>
|
||||
<span class="character-syntax"> if (ch >= 0 && ch <= 9) ch = ch + '</span><span class="constant-syntax">0</span><span class="character-syntax">';</span>
|
||||
<span class="character-syntax"> else ch = (ch - 10) + '</span><span class="identifier-syntax">A</span><span class="character-syntax">';</span>
|
||||
<span class="character-syntax"> glk_put_char_stream(gg_commandstr, ch);</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> } else {</span>
|
||||
<span class="character-syntax"> glk_put_char_stream(gg_commandstr, res);</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> glk_put_char_stream(gg_commandstr, 10); </span><span class="comment-syntax">newline</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> .KCPContinue;</span>
|
||||
<span class="character-syntax"> return res;</span>
|
||||
<span class="character-syntax">];</span>
|
||||
|
||||
<span class="character-syntax">[ VM_KeyDelay tenths key done ix;</span>
|
||||
<span class="character-syntax"> glk_request_char_event(gg_mainwin);</span>
|
||||
<span class="character-syntax"> glk_request_timer_events(tenths*100);</span>
|
||||
<span class="character-syntax"> while (~~done) {</span>
|
||||
<span class="character-syntax"> glk_select(gg_event);</span>
|
||||
<span class="character-syntax"> ix = HandleGlkEvent(gg_event, 1, gg_arguments);</span>
|
||||
<span class="character-syntax"> if (ix == 2) {</span>
|
||||
<span class="character-syntax"> key = gg_arguments-->0;</span>
|
||||
<span class="character-syntax"> done = true;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> else if (ix >= 0 && gg_event-->0 == 1 or 2) {</span>
|
||||
<span class="character-syntax"> key = gg_event-->2;</span>
|
||||
<span class="character-syntax"> done = true;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> glk_cancel_char_event(gg_mainwin);</span>
|
||||
<span class="character-syntax"> glk_request_timer_events(0);</span>
|
||||
<span class="character-syntax"> return key;</span>
|
||||
<span class="character-syntax">];</span>
|
||||
|
||||
<span class="character-syntax">[ VM_ReadKeyboard a_buffer a_table done ix;</span>
|
||||
<span class="character-syntax"> if (gg_commandstr ~= 0 && gg_command_reading ~= false) {</span>
|
||||
<span class="character-syntax"> done = glk_get_line_stream_uni(gg_commandstr, a_buffer+WORDSIZE,</span>
|
||||
<span class="character-syntax"> (INPUT_BUFFER_LEN-1)-1);</span>
|
||||
<span class="character-syntax"> if (done == 0) {</span>
|
||||
<span class="character-syntax"> glk_stream_close(gg_commandstr, 0);</span>
|
||||
<span class="character-syntax"> gg_commandstr = 0;</span>
|
||||
<span class="character-syntax"> gg_command_reading = false;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> else {</span>
|
||||
<span class="character-syntax"> </span><span class="comment-syntax">Trim the trailing newline</span>
|
||||
<span class="character-syntax"> if ((a_buffer+WORDSIZE)-->(done-1) == 10) done = done-1;</span>
|
||||
<span class="character-syntax"> a_buffer-->0 = done;</span>
|
||||
<span class="character-syntax"> VM_Style(INPUT_VMSTY);</span>
|
||||
<span class="character-syntax"> glk_put_buffer_uni(a_buffer+WORDSIZE, done);</span>
|
||||
<span class="character-syntax"> VM_Style(NORMAL_VMSTY);</span>
|
||||
<span class="character-syntax"> print "^";</span>
|
||||
<span class="character-syntax"> jump KPContinue;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> done = false;</span>
|
||||
<span class="character-syntax"> glk_request_line_event_uni(gg_mainwin, a_buffer+WORDSIZE, INPUT_BUFFER_LEN-1, 0);</span>
|
||||
<span class="character-syntax"> while (~~done) {</span>
|
||||
<span class="character-syntax"> glk_select(gg_event);</span>
|
||||
<span class="character-syntax"> switch (gg_event-->0) {</span>
|
||||
<span class="character-syntax"> 5: </span><span class="comment-syntax">evtype_Arrange</span>
|
||||
<span class="character-syntax"> DrawStatusLine();</span>
|
||||
<span class="character-syntax"> 3: </span><span class="comment-syntax">evtype_LineInput</span>
|
||||
<span class="character-syntax"> if (gg_event-->1 == gg_mainwin) {</span>
|
||||
<span class="character-syntax"> a_buffer-->0 = gg_event-->2;</span>
|
||||
<span class="character-syntax"> done = true;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> ix = HandleGlkEvent(gg_event, 0, a_buffer);</span>
|
||||
<span class="character-syntax"> if (ix == 2) done = true;</span>
|
||||
<span class="character-syntax"> else if (ix == -1) done = false;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> if (gg_commandstr ~= 0 && gg_command_reading == false) {</span>
|
||||
<span class="character-syntax"> glk_put_buffer_stream(gg_commandstr, a_buffer+WORDSIZE, a_buffer-->0);</span>
|
||||
<span class="character-syntax"> glk_put_char_stream(gg_commandstr, 10); </span><span class="comment-syntax">newline</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> .KPContinue;</span>
|
||||
<span class="character-syntax"> VM_Tokenise(a_buffer,a_table);</span>
|
||||
<span class="character-syntax"> </span><span class="comment-syntax">It's time to close any quote window we've got going.</span>
|
||||
<span class="character-syntax"> if (gg_quotewin) {</span>
|
||||
<span class="character-syntax"> glk_window_close(gg_quotewin, 0);</span>
|
||||
<span class="character-syntax"> gg_quotewin = 0;</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax"> if (BasicInformKit`ECHO_COMMANDS_CFGF) {</span>
|
||||
<span class="character-syntax"> print "** ";</span>
|
||||
<span class="character-syntax"> for (ix=0: ix<(a_buffer-->0): ix++) print (char) a_buffer-->(1+ix);</span>
|
||||
<span class="character-syntax"> print "^";</span>
|
||||
<span class="character-syntax"> }</span>
|
||||
<span class="character-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Buffer Functions. </b>A "buffer", in this sense, is an array containing a stream of characters
|
||||
typed from the keyboard; a "parse buffer" is an array which resolves this
|
||||
into individual words, pointing to the relevant entries in the dictionary
|
||||
structure. Because each VM has its own format for each of these arrays (not
|
||||
to mention the dictionary), we have to provide some standard operations
|
||||
needed by the rest of the template as routines for each VM.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_CopyBuffer(to, from)</span></span> copies one buffer into another.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_Tokenise(buff, parse_buff)</span></span> takes the text in the buffer <span class="extract"><span class="extract-syntax">buff</span></span> and
|
||||
produces the corresponding data in the parse buffer <span class="extract"><span class="extract-syntax">parse_buff</span></span> — this is
|
||||
called tokenisation since the characters are divided into words: in traditional
|
||||
computing jargon, such clumps of characters treated syntactically as units
|
||||
are called tokens.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">LTI_Insert</span></span> is documented in the DM4 and the <span class="extract"><span class="extract-syntax">LTI</span></span> prefix stands for
|
||||
"Language To Informese": it's used only by translations into non-English
|
||||
languages of play, and is not called in the template.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_CopyBuffer</span><span class="plain-syntax"> </span><span class="identifier-syntax">bto</span><span class="plain-syntax"> </span><span class="identifier-syntax">bfrom</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0: </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">: </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">bto</span><span class="plain-syntax">--></span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bfrom</span><span class="plain-syntax">--></span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_PrintToBuffer</span><span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">b</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">b</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="reserved-syntax">metaclass</span><span class="plain-syntax">(</span><span class="identifier-syntax">a</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Object</span><span class="plain-syntax"> && </span><span class="identifier-syntax">a</span><span class="plain-syntax">.#</span><span class="identifier-syntax">b</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORDSIZE</span>
|
||||
<span class="plain-syntax"> && </span><span class="reserved-syntax">metaclass</span><span class="plain-syntax">(</span><span class="identifier-syntax">a</span><span class="plain-syntax">.</span><span class="identifier-syntax">b</span><span class="plain-syntax">) == </span><span class="identifier-syntax">String</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">Glulx_PrintAnyToArrayUni</span><span class="plain-syntax">(</span><span class="identifier-syntax">buf</span><span class="plain-syntax">+</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">, </span><span class="identifier-syntax">len</span><span class="plain-syntax">, </span><span class="identifier-syntax">a</span><span class="plain-syntax">.</span><span class="identifier-syntax">b</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="reserved-syntax">metaclass</span><span class="plain-syntax">(</span><span class="identifier-syntax">a</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Routine</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">Glulx_PrintAnyToArrayUni</span><span class="plain-syntax">(</span><span class="identifier-syntax">buf</span><span class="plain-syntax">+</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">, </span><span class="identifier-syntax">len</span><span class="plain-syntax">, </span><span class="identifier-syntax">a</span><span class="plain-syntax">, </span><span class="identifier-syntax">b</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">Glulx_PrintAnyToArrayUni</span><span class="plain-syntax">(</span><span class="identifier-syntax">buf</span><span class="plain-syntax">+</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">, </span><span class="identifier-syntax">len</span><span class="plain-syntax">, </span><span class="identifier-syntax">a</span><span class="plain-syntax">, </span><span class="identifier-syntax">b</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="reserved-syntax">metaclass</span><span class="plain-syntax">(</span><span class="identifier-syntax">a</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Routine</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">Glulx_PrintAnyToArrayUni</span><span class="plain-syntax">(</span><span class="identifier-syntax">buf</span><span class="plain-syntax">+</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">, </span><span class="identifier-syntax">len</span><span class="plain-syntax">, </span><span class="identifier-syntax">a</span><span class="plain-syntax">, </span><span class="identifier-syntax">b</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">Glulx_PrintAnyToArrayUni</span><span class="plain-syntax">(</span><span class="identifier-syntax">buf</span><span class="plain-syntax">+</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">, </span><span class="identifier-syntax">len</span><span class="plain-syntax">, </span><span class="identifier-syntax">a</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0 > </span><span class="identifier-syntax">len</span><span class="plain-syntax">) </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOWERCASE_BUF_SIZE</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">*</span><span class="identifier-syntax">DICT_WORD_SIZE</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_lowercasebuf</span><span class="plain-syntax"> --> </span><span class="identifier-syntax">LOWERCASE_BUF_SIZE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Tokenise</span><span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cx</span><span class="plain-syntax"> </span><span class="identifier-syntax">numwords</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> </span><span class="identifier-syntax">bx</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> </span><span class="identifier-syntax">wx</span><span class="plain-syntax"> </span><span class="identifier-syntax">wpos</span><span class="plain-syntax"> </span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> </span><span class="identifier-syntax">dictlen</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> </span><span class="identifier-syntax">bytesperword</span><span class="plain-syntax"> </span><span class="identifier-syntax">uninormavail</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> = </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">buf</span><span class="plain-syntax">+</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">First, split the buffer up into words. We use the standard Infocom</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">list of word separators (comma, period, double-quote).</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cx</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">numwords</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cx</span><span class="plain-syntax"> < </span><span class="identifier-syntax">len</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cx</span><span class="plain-syntax"> < </span><span class="identifier-syntax">len</span><span class="plain-syntax"> && </span><span class="identifier-syntax">buf</span><span class="plain-syntax">--></span><span class="identifier-syntax">cx</span><span class="plain-syntax"> == </span><span class="character-syntax">' '</span><span class="plain-syntax">) </span><span class="identifier-syntax">cx</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cx</span><span class="plain-syntax"> >= </span><span class="identifier-syntax">len</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cx</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">buf</span><span class="plain-syntax">--></span><span class="identifier-syntax">cx</span><span class="plain-syntax"> == </span><span class="character-syntax">'.'</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="character-syntax">','</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="character-syntax">'"'</span><span class="plain-syntax">) </span><span class="identifier-syntax">cx</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cx</span><span class="plain-syntax"> < </span><span class="identifier-syntax">len</span><span class="plain-syntax"> && </span><span class="identifier-syntax">buf</span><span class="plain-syntax">--></span><span class="identifier-syntax">cx</span><span class="plain-syntax"> ~= </span><span class="character-syntax">' '</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="character-syntax">'.'</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="character-syntax">','</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="character-syntax">'"'</span><span class="plain-syntax">) </span><span class="identifier-syntax">cx</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">numwords</span><span class="plain-syntax">*3+2) = (</span><span class="identifier-syntax">cx</span><span class="plain-syntax">-</span><span class="identifier-syntax">bx</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">numwords</span><span class="plain-syntax">*3+3) = </span><span class="constant-syntax">1</span><span class="plain-syntax">+</span><span class="identifier-syntax">bx</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">numwords</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">numwords</span><span class="plain-syntax"> >= </span><span class="identifier-syntax">MAX_BUFFER_WORDS</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">numwords</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Now we look each word up in the dictionary.</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dictlen</span><span class="plain-syntax"> = #</span><span class="identifier-syntax">dictionary_table</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bytesperword</span><span class="plain-syntax"> = </span><span class="identifier-syntax">DICT_WORD_SIZE</span><span class="plain-syntax"> * </span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">uninormavail</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_gestalt</span><span class="plain-syntax">(16, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wx</span><span class="plain-syntax">=0 : </span><span class="identifier-syntax">wx</span><span class="plain-syntax"><</span><span class="identifier-syntax">numwords</span><span class="plain-syntax"> : </span><span class="identifier-syntax">wx</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">wx</span><span class="plain-syntax">*3+2);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wpos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">wx</span><span class="plain-syntax">*3+3);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Copy the word into the gg_tokenbuf array, clipping to DICT_WORD_SIZE</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">characters and lower case. We'll do this in two steps, because</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">lowercasing might (theoretically) condense characters and allow more</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">to fit into gg_tokenbuf.</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> > </span><span class="identifier-syntax">LOWERCASE_BUF_SIZE</span><span class="plain-syntax">) </span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LOWERCASE_BUF_SIZE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wpos</span><span class="plain-syntax"> - </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ix</span><span class="plain-syntax">=0 : </span><span class="identifier-syntax">ix</span><span class="plain-syntax"><</span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> : </span><span class="identifier-syntax">ix</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">buf</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">cx</span><span class="plain-syntax">+</span><span class="identifier-syntax">ix</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_lowercasebuf</span><span class="plain-syntax">--></span><span class="identifier-syntax">ix</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ch</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_buffer_to_lower_case_uni</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_lowercasebuf</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOWERCASE_BUF_SIZE</span><span class="plain-syntax">, </span><span class="identifier-syntax">wlen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uninormavail</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Also normalize the Unicode — combine accent marks with letters</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">where possible.</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_buffer_canon_normalize_uni</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_lowercasebuf</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOWERCASE_BUF_SIZE</span><span class="plain-syntax">, </span><span class="identifier-syntax">wlen</span><span class="plain-syntax">); </span><span class="comment-syntax">buffer_canon_normalize_uni</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> > </span><span class="identifier-syntax">DICT_WORD_SIZE</span><span class="plain-syntax">) </span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> = </span><span class="identifier-syntax">DICT_WORD_SIZE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ix</span><span class="plain-syntax">=0: </span><span class="identifier-syntax">ix</span><span class="plain-syntax"><</span><span class="identifier-syntax">wlen</span><span class="plain-syntax"> : </span><span class="identifier-syntax">ix</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_tokenbuf</span><span class="plain-syntax">--></span><span class="identifier-syntax">ix</span><span class="plain-syntax"> = </span><span class="identifier-syntax">gg_lowercasebuf</span><span class="plain-syntax">--></span><span class="identifier-syntax">ix</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (: </span><span class="identifier-syntax">ix</span><span class="plain-syntax"><</span><span class="identifier-syntax">DICT_WORD_SIZE</span><span class="plain-syntax"> : </span><span class="identifier-syntax">ix</span><span class="plain-syntax">++) </span><span class="identifier-syntax">gg_tokenbuf</span><span class="plain-syntax">--></span><span class="identifier-syntax">ix</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = #</span><span class="identifier-syntax">dictionary_table</span><span class="plain-syntax"> + </span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">binarysearch</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_tokenbuf</span><span class="plain-syntax"> </span><span class="identifier-syntax">bytesperword</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> </span><span class="identifier-syntax">DICT_ENTRY_BYTES</span><span class="plain-syntax"> </span><span class="identifier-syntax">dictlen</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">wx</span><span class="plain-syntax">*3+1) = </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">LTI_Insert</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> </span><span class="identifier-syntax">b</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Protect us from strict mode, as this isn't an array in quite the</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">sense it expects</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">(This is not an issue now that buffer is a word array, but I'm</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">keeping the alias.)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">b</span><span class="plain-syntax"> = </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Insert character ch into buffer at point i.</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Being careful not to let the buffer possibly overflow:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> = </span><span class="identifier-syntax">b</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">y</span><span class="plain-syntax"> > </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">) </span><span class="identifier-syntax">y</span><span class="plain-syntax"> = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Move the subsequent text along one character:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">y</span><span class="plain-syntax">=</span><span class="identifier-syntax">y</span><span class="plain-syntax">+1 : </span><span class="identifier-syntax">y</span><span class="plain-syntax">></span><span class="identifier-syntax">i</span><span class="plain-syntax"> : </span><span class="identifier-syntax">y</span><span class="plain-syntax">--) </span><span class="identifier-syntax">b</span><span class="plain-syntax">--></span><span class="identifier-syntax">y</span><span class="plain-syntax"> = </span><span class="identifier-syntax">b</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">y</span><span class="plain-syntax">-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">b</span><span class="plain-syntax">--></span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ch</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">And the text is now one character longer:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">b</span><span class="plain-syntax">-->0 < </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">) (</span><span class="identifier-syntax">b</span><span class="plain-syntax">-->0)++;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Dictionary Functions. </b>Again, the dictionary structure is differently arranged on the different VMs.
|
||||
This is a data structure containing, in compressed form, the text of all the
|
||||
words to be recognised by tokenisation (above). In I6 for Glulx, a dictionary
|
||||
word is represented at run-time by its record's address in the dictionary.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_InvalidDictionaryAddress(A)</span></span> tests whether <span class="extract"><span class="extract-syntax">A</span></span> is a valid record address
|
||||
in the dictionary data structure. In Glulx, dictionary records might in
|
||||
theory be anywhere in the 2 GB or so of possible memory, but we can rule
|
||||
out negative addresses. (This allows \(-1\), say, to be used as a value meaning
|
||||
"not a valid dictionary word".)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_DictionaryAddressToNumber(A)</span></span> and <span class="extract"><span class="extract-syntax">VM_NumberToDictionaryAddress(N)</span></span>
|
||||
convert between word addresses and their run-time representations:
|
||||
since, on Glulx, they are the same, these are each the identity function.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_InvalidDictionaryAddress</span><span class="plain-syntax"> </span><span class="identifier-syntax">addr</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">addr</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_DictionaryAddressToNumber</span><span class="plain-syntax"> </span><span class="identifier-syntax">w</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">w</span><span class="plain-syntax">; ];</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_NumberToDictionaryAddress</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">; ];</span>
|
||||
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_tokenbuf</span><span class="plain-syntax"> --> </span><span class="identifier-syntax">DICT_WORD_SIZE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">GGWordCompare</span><span class="plain-syntax"> </span><span class="identifier-syntax">str1</span><span class="plain-syntax"> </span><span class="identifier-syntax">str2</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> </span><span class="identifier-syntax">jx</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ix</span><span class="plain-syntax">=0 : </span><span class="identifier-syntax">ix</span><span class="plain-syntax"><</span><span class="identifier-syntax">DICT_WORD_SIZE</span><span class="plain-syntax"> : </span><span class="identifier-syntax">ix</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">jx</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">str1</span><span class="plain-syntax">--></span><span class="identifier-syntax">ix</span><span class="plain-syntax">) - (</span><span class="identifier-syntax">str2</span><span class="plain-syntax">--></span><span class="identifier-syntax">ix</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">jx</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">jx</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Command Tables. </b>The VM is also generated containing a data structure for the grammar
|
||||
produced by I6's <span class="extract"><span class="extract-syntax">Verb</span></span> and <span class="extract"><span class="extract-syntax">Extend</span></span> directives: this is essentially a
|
||||
list of command verbs such as DROP or PUSH, together with a list of
|
||||
synonyms, and then the grammar for the subsequent commands to be
|
||||
recognised by the parser.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_CommandTableAddress</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (#</span><span class="identifier-syntax">grammar_table</span><span class="plain-syntax">)-->(</span><span class="identifier-syntax">i</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_PrintCommandWords</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">wd</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> </span><span class="identifier-syntax">dictlen</span><span class="plain-syntax"> </span><span class="identifier-syntax">entrylen</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dictlen</span><span class="plain-syntax"> = #</span><span class="identifier-syntax">dictionary_table</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">entrylen</span><span class="plain-syntax"> = </span><span class="identifier-syntax">DICT_WORD_SIZE</span><span class="plain-syntax"> + </span><span class="constant-syntax">7</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0 : </span><span class="identifier-syntax">j</span><span class="plain-syntax"><</span><span class="identifier-syntax">dictlen</span><span class="plain-syntax"> : </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wd</span><span class="plain-syntax"> = #</span><span class="identifier-syntax">dictionary_table</span><span class="plain-syntax"> + </span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax"> + </span><span class="identifier-syntax">entrylen</span><span class="plain-syntax">*</span><span class="identifier-syntax">j</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">DictionaryWordToVerbNum</span><span class="plain-syntax">(</span><span class="identifier-syntax">wd</span><span class="plain-syntax">) == </span><span class="identifier-syntax">i</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"'"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">address</span><span class="plain-syntax">) </span><span class="identifier-syntax">wd</span><span class="plain-syntax">, </span><span class="string-syntax">"' "</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Glulx-Only Printing Routines. </b>Partly because of the smallness of the range of representable values in
|
||||
the Z-machine, there is little run-time type-checking that can be done:
|
||||
for instance a dictionary address cannot be distinguished from a function
|
||||
address because they are encoded differently, so that a function address
|
||||
(which is packed) could well coincide with that of a dictionary word (which
|
||||
is not). On Glulx these restrictions are somewhat lifted, so that it's
|
||||
possible to write a routine which can look at a value, work out what it
|
||||
must mean, and print it suitably. This is only possible up to a point —
|
||||
for instance, it can't distinguish an integer from a function address —
|
||||
and in I7 the use of this sort of trick is much less important because
|
||||
type-checking in the Inform compiler handles the problem much better. Still,
|
||||
we retain some Glulx-only features because they are convenient for writing
|
||||
external files to disc, for instance, something which the Z-machine can't
|
||||
do in any case.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">Glulx_PrintAnything</span></span> handles strings, functions (with optional arguments),
|
||||
objects, object properties (with optional arguments), and dictionary words.
|
||||
(Object property printing has been somewhat simplified from the ideal version
|
||||
of this function in order to avoid calling the CA__Pr veneer function.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">Glulx_PrintAnyToArray</span></span> does the same, but the output is sent to a byte
|
||||
array in memory. The first two arguments must be the array address and
|
||||
length; subsequent arguments are as for <span class="extract"><span class="extract-syntax">Glulx_PrintAnything</span></span>. The return
|
||||
value is the number of characters output. If the output is longer than the
|
||||
array length given, the extra characters are discarded, so the array does
|
||||
not overflow. (However, the return value is the total length of the output,
|
||||
including discarded characters.) The character set stored here is ZSCII,
|
||||
not Unicode.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">Glulx_PrintAnyToArrayUni</span></span> does the same again, but the output is sent to a
|
||||
word array in memory. The stored characters are Unicode code points.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">Glulx_ChangeAnyToCString</span></span> calls <span class="extract"><span class="extract-syntax">Glulx_PrintAnyToArray</span></span> on a particular
|
||||
array, then amends the result to make it a C-style string — that is, a
|
||||
sequence of byte-sized characters which are null terminated. The character
|
||||
set stored here is once again ZSCII, not Unicode.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="comment-syntax">Glulx_PrintAnything() <nothing printed></span>
|
||||
<span class="comment-syntax">Glulx_PrintAnything(0) <nothing printed></span>
|
||||
<span class="comment-syntax">Glulx_PrintAnything("string"); print (string) "string";</span>
|
||||
<span class="comment-syntax">Glulx_PrintAnything('word') print (address) 'word';</span>
|
||||
<span class="comment-syntax">Glulx_PrintAnything(obj) print (name) obj;</span>
|
||||
<span class="comment-syntax">Glulx_PrintAnything(obj, prop) obj.prop(); NOTE: Using PrintOrRun</span>
|
||||
<span class="comment-syntax">Glulx_PrintAnything(obj, prop, args...) obj.prop(args...); NOTE: Unsupported</span>
|
||||
<span class="comment-syntax">Glulx_PrintAnything(func) func();</span>
|
||||
<span class="comment-syntax">Glulx_PrintAnything(func, args...) func(args...);</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Glulx_PrintAnything</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">mclass</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">--;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax">->0 == </span><span class="constant-syntax">$60</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Dictionary word. Metaclass() can't catch this case, so we do it manually</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">address</span><span class="plain-syntax">) </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mclass</span><span class="plain-syntax"> = </span><span class="reserved-syntax">metaclass</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mclass</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">String</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Routine</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Call the function with all the arguments which are already</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">on the stack.</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">call</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Object</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">name</span><span class="plain-syntax">) </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Push the object back onto the stack, and call the</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">veneer routine that handles obj.prop() calls.</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">call</span><span class="plain-syntax"> </span><span class="identifier-syntax">PrintOrRun</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Glulx_PrintAnyToArray</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">arr</span><span class="plain-syntax"> </span><span class="identifier-syntax">arrlen</span><span class="plain-syntax"> </span><span class="identifier-syntax">str</span><span class="plain-syntax"> </span><span class="identifier-syntax">oldstr</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="identifier-syntax">arr</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="identifier-syntax">arrlen</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">oldstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_get_current</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">str</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_open_memory</span><span class="plain-syntax">(</span><span class="identifier-syntax">arr</span><span class="plain-syntax">, </span><span class="identifier-syntax">arrlen</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">str</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">str</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">call</span><span class="plain-syntax"> </span><span class="identifier-syntax">Glulx_PrintAnything</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">oldstr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="constant-syntax">$ffffffff</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">str</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">$0044</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax">stream_close</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Glulx_PrintAnyToArrayUni</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">arr</span><span class="plain-syntax"> </span><span class="identifier-syntax">arrlen</span><span class="plain-syntax"> </span><span class="identifier-syntax">str</span><span class="plain-syntax"> </span><span class="identifier-syntax">oldstr</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="identifier-syntax">arr</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="identifier-syntax">arrlen</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">oldstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_get_current</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">str</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_open_memory_uni</span><span class="plain-syntax">(</span><span class="identifier-syntax">arr</span><span class="plain-syntax">, </span><span class="identifier-syntax">arrlen</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">str</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">str</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">call</span><span class="plain-syntax"> </span><span class="identifier-syntax">Glulx_PrintAnything</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">oldstr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="constant-syntax">$ffffffff</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">str</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">glk</span><span class="plain-syntax"> </span><span class="constant-syntax">$0044</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax">stream_close</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GG_ANYTOSTRING_LEN</span><span class="plain-syntax"> </span><span class="constant-syntax">66</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">AnyToStrArr</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">GG_ANYTOSTRING_LEN</span><span class="plain-syntax">+1;</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Glulx_ChangeAnyToCString</span><span class="plain-syntax"> </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GG_ANYTOSTRING_LEN</span><span class="plain-syntax">-2;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AnyToStrArr</span><span class="plain-syntax">+1;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">copy</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> = </span><span class="identifier-syntax">_vararg_count</span><span class="plain-syntax">+2;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">call</span><span class="plain-syntax"> </span><span class="identifier-syntax">Glulx_PrintAnyToArray</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AnyToStrArr</span><span class="plain-syntax">->0 = </span><span class="constant-syntax">$E0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">len</span><span class="plain-syntax"> >= </span><span class="identifier-syntax">GG_ANYTOSTRING_LEN</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GG_ANYTOSTRING_LEN</span><span class="plain-syntax">-1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AnyToStrArr</span><span class="plain-syntax">->(</span><span class="identifier-syntax">len</span><span class="plain-syntax">+1) = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">AnyToStrArr</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. The Screen. </b>Our generic screen model is that the screen is made up of windows: we tend
|
||||
to refer only to two of these, the main window and the status line, but
|
||||
others may also exist from time to time. Windows have unique ID numbers:
|
||||
the special window ID \(-1\) means "all windows" or "the entire screen",
|
||||
which usually amounts to the same thing.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Screen height and width are measured in characters, with respect to the
|
||||
fixed-pitch font used for the status line. The main window normally contains
|
||||
variable-pitch text which may even have been kerned, and character dimensions
|
||||
make little sense there.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_ClearScreen</span><span class="plain-syntax"> </span><span class="identifier-syntax">window</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">window</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WIN_ALL</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">WIN_MAIN</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> && </span><span class="identifier-syntax">window</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WIN_ALL</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">WIN_STATUS</span><span class="plain-syntax">) </span><span class="identifier-syntax">glk_window_clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_ScreenWidth</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">=</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> && </span><span class="identifier-syntax">statuswin_current</span><span class="plain-syntax">) </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_get_size</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_ScreenHeight</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_get_size</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Window Colours. </b>Our generic screen model is that the screen is made up of windows, each of
|
||||
which can have its own foreground and background colours.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The colour of individual letters or words of type is not controllable in
|
||||
Glulx, to the frustration of many, and so the template layer of I7 has no
|
||||
framework for handling this (even though it is controllable on the Z-machine,
|
||||
which is greatly superior in this respect).
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_SetWindowColours</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax"> </span><span class="identifier-syntax">b</span><span class="plain-syntax"> </span><span class="identifier-syntax">window</span><span class="plain-syntax"> </span><span class="identifier-syntax">doclear</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">fwd</span><span class="plain-syntax"> </span><span class="identifier-syntax">bwd</span><span class="plain-syntax"> </span><span class="identifier-syntax">swin</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">clr_on</span><span class="plain-syntax"> && </span><span class="identifier-syntax">f</span><span class="plain-syntax"> && </span><span class="identifier-syntax">b</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">window</span><span class="plain-syntax">) </span><span class="identifier-syntax">swin</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">-</span><span class="identifier-syntax">window</span><span class="plain-syntax">; </span><span class="comment-syntax">4 for TextGrid, 3 for TextBuffer</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fwd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MakeColourWord</span><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bwd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MakeColourWord</span><span class="plain-syntax">(</span><span class="identifier-syntax">b</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0 : </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">style_NUMSTYLES</span><span class="plain-syntax">: </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CLR_DEFAULT</span><span class="plain-syntax"> || </span><span class="identifier-syntax">b</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CLR_DEFAULT</span><span class="plain-syntax">) { </span><span class="comment-syntax">remove style hints</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">swin</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_TextColor</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">swin</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_BackColor</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">swin</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_TextColor</span><span class="plain-syntax">, </span><span class="identifier-syntax">fwd</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">swin</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_BackColor</span><span class="plain-syntax">, </span><span class="identifier-syntax">bwd</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Now re-open the windows to apply the hints</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax">) </span><span class="identifier-syntax">glk_window_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">doclear</span><span class="plain-syntax"> || ( </span><span class="identifier-syntax">window</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">1</span><span class="plain-syntax"> && (</span><span class="identifier-syntax">clr_fg</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">f</span><span class="plain-syntax"> || </span><span class="identifier-syntax">clr_bg</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">b</span><span class="plain-syntax">) ) ) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(0, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_set_echo_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="identifier-syntax">winmethod_Fixed</span><span class="plain-syntax"> + </span><span class="identifier-syntax">winmethod_Above</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextGrid</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">statuswin_current</span><span class="plain-syntax"> && </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax">) </span><span class="identifier-syntax">VM_MoveCursorInStatusLine</span><span class="plain-syntax">(); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">VM_MainWindow</span><span class="plain-syntax">();</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">window</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">clr_fgstatus</span><span class="plain-syntax"> = </span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">clr_bgstatus</span><span class="plain-syntax"> = </span><span class="identifier-syntax">b</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">window</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">clr_fg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">clr_bg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">b</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_RestoreWindowColours</span><span class="plain-syntax">; </span><span class="comment-syntax">used after UNDO: compare I6 patch L61007</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">clr_on</span><span class="plain-syntax">) { </span><span class="comment-syntax">check colour has been used</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_SetWindowColours</span><span class="plain-syntax">(</span><span class="identifier-syntax">clr_fg</span><span class="plain-syntax">, </span><span class="identifier-syntax">clr_bg</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">); </span><span class="comment-syntax">make sure both sets of variables are restored</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_SetWindowColours</span><span class="plain-syntax">(</span><span class="identifier-syntax">clr_fgstatus</span><span class="plain-syntax">, </span><span class="identifier-syntax">clr_bgstatus</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="reserved-syntax">true</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_ClearScreen</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">MakeColourWord</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">9</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c</span><span class="plain-syntax">-2;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">$ff0000</span><span class="plain-syntax">*(</span><span class="identifier-syntax">c</span><span class="plain-syntax">&1) + </span><span class="constant-syntax">$ff00</span><span class="plain-syntax">*(</span><span class="identifier-syntax">c</span><span class="plain-syntax">&2 ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) + </span><span class="constant-syntax">$ff</span><span class="plain-syntax">*(</span><span class="identifier-syntax">c</span><span class="plain-syntax">&4 ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Main Window. </b>The part of the screen on which commands and responses are printed, which
|
||||
ordinarily occupies almost all of the screen area.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_MainWindow()</span></span> switches printing back from another window, usually the
|
||||
status line, to the main window.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_MainWindow</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_set_window</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">); </span><span class="comment-syntax">set_window</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_current</span><span class="plain-syntax">=0;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Status Line. </b>Despite the name, the status line need not be a single line at the top of
|
||||
the screen: that's only the conventional default arrangement. It can expand
|
||||
to become the equivalent of an old-fashioned VT220 terminal, with menus
|
||||
and grids and mazes displayed lovingly in character graphics, or it can
|
||||
close up to invisibility.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_StatusLineHeight(n)</span></span> sets the status line to have a height of <span class="extract"><span class="extract-syntax">n</span></span> lines
|
||||
of type. (The width of the status line is always the width of the whole
|
||||
screen, and the position is always at the top, so the height is the only
|
||||
controllable aspect.) The \(n=0\) case makes the status line disappear.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">VM_MoveCursorInStatusLine(x, y)</span></span> switches printing to the status line,
|
||||
positioning the "cursor" — the position at which printing will begin —
|
||||
at the given character grid position \((x, y)\). Line 1 represents the top
|
||||
line; line 2 is underneath, and so on; columns are similarly numbered from
|
||||
1 at the left.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_StatusLineHeight</span><span class="plain-syntax"> </span><span class="identifier-syntax">hgt</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hgt</span><span class="plain-syntax"> == </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_set_arrangement</span><span class="plain-syntax">(</span><span class="identifier-syntax">glk_window_get_parent</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax">), </span><span class="constant-syntax">$12</span><span class="plain-syntax">, </span><span class="identifier-syntax">hgt</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hgt</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_MoveCursorInStatusLine</span><span class="plain-syntax"> </span><span class="identifier-syntax">line</span><span class="plain-syntax"> </span><span class="identifier-syntax">column</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_set_window</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">line</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">line</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="identifier-syntax">column</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_move_cursor</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax">, </span><span class="identifier-syntax">column</span><span class="plain-syntax">-1, </span><span class="identifier-syntax">line</span><span class="plain-syntax">-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_current</span><span class="plain-syntax">=1;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Quotation Boxes. </b>On the Z-machine, quotation boxes are produced by stretching the status line,
|
||||
but on Glulx they usually occupy windows of their own. If it isn't possible
|
||||
to create such a window, so that <span class="extract"><span class="extract-syntax">gg_quotewin</span></span> is zero below, the quotation
|
||||
text just appears in the main window.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Box__Routine</span><span class="plain-syntax"> </span><span class="identifier-syntax">maxwid</span><span class="plain-syntax"> </span><span class="identifier-syntax">arr</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> </span><span class="identifier-syntax">lines</span><span class="plain-syntax"> </span><span class="identifier-syntax">lastnl</span><span class="plain-syntax"> </span><span class="identifier-syntax">parwin</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">maxwid</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax">squash compiler warning</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lines</span><span class="plain-syntax"> = </span><span class="identifier-syntax">arr</span><span class="plain-syntax">-->0;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">lines</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_QUOTEWIN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ix</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="identifier-syntax">winmethod_Fixed</span><span class="plain-syntax"> + </span><span class="identifier-syntax">winmethod_Above</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lines</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_QUOTEWIN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_get_parent</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_set_arrangement</span><span class="plain-syntax">(</span><span class="identifier-syntax">parwin</span><span class="plain-syntax">, </span><span class="constant-syntax">$12</span><span class="plain-syntax">, </span><span class="identifier-syntax">lines</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lastnl</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_set_window</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lastnl</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_Style</span><span class="plain-syntax">(</span><span class="identifier-syntax">BLOCKQUOTE_VMSTY</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ix</span><span class="plain-syntax">=0 : </span><span class="identifier-syntax">ix</span><span class="plain-syntax"><</span><span class="identifier-syntax">lines</span><span class="plain-syntax"> : </span><span class="identifier-syntax">ix</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">arr</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">ix</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ix</span><span class="plain-syntax"> < </span><span class="identifier-syntax">lines</span><span class="plain-syntax">-1 || </span><span class="identifier-syntax">lastnl</span><span class="plain-syntax">) </span><span class="reserved-syntax">new_line</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_Style</span><span class="plain-syntax">(</span><span class="identifier-syntax">NORMAL_VMSTY</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax">) </span><span class="identifier-syntax">glk_set_window</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-cs.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresssection"><a href="S-glk.html">glk</a></li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresscurrent">io</li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-vnr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
232
docs/Architecture32Kit/S-str.html
Normal file
232
docs/Architecture32Kit/S-str.html
Normal file
|
@ -0,0 +1,232 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Startup Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Startup Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Startup Template</b></li></ul></div>
|
||||
<p class="purpose">How programs for this architecture start up the virtual machine.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b><span class="extract"><span class="extract-syntax">VM_Initialise()</span></span> is almost the first routine called, except that the
|
||||
"starting the virtual machine" activity is allowed to go first; and,
|
||||
come to think of it, memory allocation has to be set up before even that,
|
||||
and that in turn calls <span class="extract"><span class="extract-syntax">VM_PreInitialise()</span></span> to do the absolute minimum.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Arrangements are a little different here compared with the 16-bit architecture,
|
||||
because some data is retained in the case of a restart.
|
||||
</p>
|
||||
|
||||
<p class="commentary">(Many thanks are due to Eliuk Blau, who found several tricky timing errors
|
||||
here and elsewhere in the Glulx-specific code. Frankly, I feel like hanging
|
||||
a sign on the following routines which reads "Congratulations on bringing
|
||||
light to the Dark Room.")
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">gestalt</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">; </span><span class="comment-syntax">Test if this interpreter has Glk...</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">quit</span><span class="plain-syntax">; </span><span class="comment-syntax">...without which there would be nothing we could do</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unicode_gestalt_ok</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Unicode</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unicode_gestalt_ok</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Set the VM's I/O system to be Glk.</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">setiosys</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> </span><span class="identifier-syntax">sty</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">gestalt</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">; </span><span class="comment-syntax">Test if this interpreter has Glk...</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">quit</span><span class="plain-syntax">; </span><span class="comment-syntax">...without which there would be nothing we could do</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">First, we must go through all the Glk objects that exist, and see</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">if we created any of them. One might think this strange, since the</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">program has just started running, but remember that the player might</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">have just typed "restart".</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GGRecoverObjects</span><span class="plain-syntax">();</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Sound channel initialisation, and RNG fixing, must be done now rather</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">than later in case InitGlkWindow() returns a non-zero value.</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Sound</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_create</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_FOREGROUNDCHAN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_create</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_BACKGROUNDCHAN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">FIX_RNG_CFGF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="constant-syntax">10000</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-2000;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">setrandom</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Now, gg_mainwin and gg_storywin might already be set. If not, set them.</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Open the story window.</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Left-justify the header style</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Header</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Justification</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Try to make emphasized type in italics and not boldface</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Emphasized</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Weight</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Emphasized</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Oblique</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(0, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">quit</span><span class="plain-syntax">; </span><span class="comment-syntax">If we can't even open one window, give in</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">There was already a story window. We should erase it.</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">statuswin_size</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sty</span><span class="plain-syntax">=0: </span><span class="identifier-syntax">sty</span><span class="plain-syntax"><</span><span class="identifier-syntax">style_NUMSTYLES</span><span class="plain-syntax">: </span><span class="identifier-syntax">sty</span><span class="plain-syntax">++)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextGrid</span><span class="plain-syntax">, </span><span class="identifier-syntax">sty</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_ReverseColor</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="identifier-syntax">winmethod_Fixed</span><span class="plain-syntax"> + </span><span class="identifier-syntax">winmethod_Above</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextGrid</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">It's possible that the status window couldn't be opened, in which case</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">gg_statuswin is now zero. We must allow for that later on.</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_set_window</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(1);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Empty the parse buffer (see bug 0001451)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer3</span><span class="plain-syntax">-->0 = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">GGRecoverObjects</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">If GGRecoverObjects() has been called, all these stored IDs are</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">invalid, so we start by clearing them all out.</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">(In fact, after a restoreundo, some of them may still be good.</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">For simplicity, though, we assume the general case.)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_scriptfref</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_savestr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Also tell the game to clear its object references.</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(0);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SAVESTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_savestr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SCRIPTSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_COMMANDWSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_COMMANDRSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_QUOTEWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_fileref_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SCRIPTFREF_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_scriptfref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_fileref_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Sound</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_FOREGROUNDCHAN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_BACKGROUNDCHAN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">-->0);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">glk_schannel_stop</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">glk_schannel_stop</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax">Tell the game to tie up any loose ends.</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(2);</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-glk.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresssection"><a href="S-glk.html">glk</a></li><li class="progresscurrent">str</li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-cs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
88
docs/Architecture32Kit/S-vnr.html
Normal file
88
docs/Architecture32Kit/S-vnr.html
Normal file
|
@ -0,0 +1,88 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Veneer Template</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Veneer Template' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Veneer Template</b></li></ul></div>
|
||||
<p class="purpose">Veneer code for use by the Inform 6 compiler with the Glulx target.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>These functions have strange-looking names special to the Inform 6 compiler,
|
||||
which uses them to replace its default "veneer" functions. If we're compiling
|
||||
to something other than Inform 6, though, they are just strangely-named functions,
|
||||
and do no harm.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Unsigned__Compare</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jleu</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> ?</span><span class="identifier-syntax">lesseq</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> .</span><span class="identifier-syntax">lesseq</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">jeq</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> ?</span><span class="identifier-syntax">equal</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> .</span><span class="identifier-syntax">equal</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RT__ChLDW</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">aload</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RT__ChLDB</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">aloadb</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-io.html">❮</a></li><li class="progresssection"><a href="S-cpb.html">cpb</a></li><li class="progresssection"><a href="S-glk.html">glk</a></li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progresssection"><a href="S-cs.html">cs</a></li><li class="progresssection"><a href="S-io.html">io</a></li><li class="progresscurrent">vnr</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
89
docs/Architecture32Kit/index.html
Normal file
89
docs/Architecture32Kit/index.html
Normal file
|
@ -0,0 +1,89 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Architecture32Kit</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><b>Architecture32Kit</b></li></ul>
|
||||
<p class="purpose">Inter-level support for compiling Inform programs to 32-bit architectures. This is version 1.</p>
|
||||
<hr>
|
||||
<div class="contentspage">
|
||||
<ul class="chapterlist">
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-cpb.html">
|
||||
<spon class="sectiontitle">Capabilities Template</span></a> -
|
||||
<span class="sectionpurpose">Miscellaneous capabilities of the 16-bit architecture.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-glk.html">
|
||||
<spon class="sectiontitle">Glk Template</span></a> -
|
||||
<span class="sectionpurpose">Glk is a fully-featured input-output model, designed by Andrew Plotkin for use with the Glulx virtual machine, but not used only for that. All 32-bit Inform programs use Glk.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-str.html">
|
||||
<spon class="sectiontitle">Startup Template</span></a> -
|
||||
<span class="sectionpurpose">How programs for this architecture start up the virtual machine.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-cs.html">
|
||||
<spon class="sectiontitle">Character Set Template</span></a> -
|
||||
<span class="sectionpurpose">Code relating to the Unicode character set.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-io.html">
|
||||
<spon class="sectiontitle">Input Output Template</span></a> -
|
||||
<span class="sectionpurpose">Access to the keyboard and to textual windows.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-vnr.html">
|
||||
<spon class="sectiontitle">Veneer Template</span></a> -
|
||||
<span class="sectionpurpose">Veneer code for use by the Inform 6 compiler with the Glulx target.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr>
|
||||
<p class="purpose">Powered by <a href="https://github.com/ganelson/inweb">Inweb</a>.</p>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -51,7 +51,7 @@
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">BasicInformExtrasKit</a></li><li><b>Miscellany</b></li></ul></div>
|
||||
<p class="purpose">Additions to the Basic Inform template which are needed only if the Standard Rules are not to be used.</p>
|
||||
|
||||
<ul class="toc"><li><a href="S-msc.html#SP1">§1. Identification</a></li><li><a href="S-msc.html#SP2">§2. Justification</a></li><li><a href="S-msc.html#SP3">§3. Miscellany</a></li><li><a href="S-msc.html#SP4">§4. Veneer</a></li><li><a href="S-msc.html#SP5">§5. Short Name Storage</a></li><li><a href="S-msc.html#SP6">§6. Object Names I</a></li><li><a href="S-msc.html#SP7">§7. Standard Name Printing Rule</a></li><li><a href="S-msc.html#SP8">§8. Object Names II</a></li><li><a href="S-msc.html#SP9">§9. Object Names III</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-msc.html#SP1">§1. Identification</a></li><li><a href="S-msc.html#SP2">§2. Justification</a></li><li><a href="S-msc.html#SP3">§3. Miscellany</a></li><li><a href="S-msc.html#SP4">§4. Short Name Storage</a></li><li><a href="S-msc.html#SP5">§5. Object Names I</a></li><li><a href="S-msc.html#SP6">§6. Standard Name Printing Rule</a></li><li><a href="S-msc.html#SP7">§7. Object Names II</a></li><li><a href="S-msc.html#SP8">§8. Object Names III</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Identification. </b></p>
|
||||
|
||||
|
@ -97,7 +97,7 @@ before it is known how they will be used.
|
|||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">TARGET_GLULX</span><span class="plain-syntax">; </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">(); #</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LanguageInitialise</span><span class="plain-syntax">();</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HeapInitialise</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create a completely unused memory allocation heap</span>
|
||||
|
@ -110,23 +110,7 @@ before it is known how they will be used.
|
|||
<span class="plain-syntax">[ </span><span class="identifier-syntax">DrawStatusLine</span><span class="plain-syntax"> </span><span class="identifier-syntax">width</span><span class="plain-syntax"> </span><span class="identifier-syntax">posb</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Veneer. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">TARGET_ZCODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">standard_interpreter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_TERPSTANDARD</span><span class="plain-syntax">-->0;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">FIX_RNG_CFGF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="constant-syntax">10000</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-2000;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[Random number generator seed is "</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="string-syntax">"]^"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Short Name Storage. </b>None of the following functions should be called for the Z-machine if the
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Short Name Storage. </b>None of the following functions should be called for the Z-machine if the
|
||||
short name exceeds the size of the following buffer: whereas the Glulx
|
||||
implementation of <span class="extract"><span class="extract-syntax">VM_PrintToBuffer</span></span> will safely truncate overlong text,
|
||||
that's impossible for the Z-machine, and horrible results will follow.
|
||||
|
@ -192,7 +176,7 @@ buffer and then altering the first character.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">CPrintOrRun</span><span class="plain-syntax">(</span><span class="identifier-syntax">str</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Object Names I. </b>We now begin the work of printing object names. In the lowest level of this
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Object Names I. </b>We now begin the work of printing object names. In the lowest level of this
|
||||
process we print just the name itself (without articles attached), and we
|
||||
do it by carrying out an activity.
|
||||
</p>
|
||||
|
@ -214,7 +198,7 @@ do it by carrying out an activity.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PSN__</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">); </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Standard Name Printing Rule. </b>In its initial state, the "printing the name of" activity has just one rule:
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Standard Name Printing Rule. </b>In its initial state, the "printing the name of" activity has just one rule:
|
||||
the following "for" rule.
|
||||
</p>
|
||||
|
||||
|
@ -248,7 +232,7 @@ the following "for" rule.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PrintOrRun</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">plural</span><span class="plain-syntax">, </span><span class="reserved-syntax">true</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Object Names II. </b>The second level of the system for printing object names handles the placing
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Object Names II. </b>The second level of the system for printing object names handles the placing
|
||||
of articles in front of them: {\it the} red herring, {\it an} elephant,
|
||||
{\it Some} bread. The following routine allows us to choose:
|
||||
</p>
|
||||
|
@ -323,7 +307,7 @@ indefinite singular depends on the text of the object's name.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PSN__</span><span class="plain-syntax">) </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Object Names III. </b>The routines accessible from outside this segment.
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Object Names III. </b>The routines accessible from outside this segment.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -1164,7 +1164,7 @@ in memory between builds invalidating this required output.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-flx.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresscurrent">blc</li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-txt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-flx.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresscurrent">blc</li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-txt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -214,7 +214,7 @@ or returns \(-1\) if it isn't a digit.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-unc.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresscurrent">chr</li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rgx.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-unc.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresscurrent">chr</li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rgx.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -239,7 +239,7 @@ same kind.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-lst.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresscurrent">cmb</li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rlt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-lst.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresscurrent">cmb</li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rlt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -640,7 +640,7 @@ future use.
|
|||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">unicode_temp</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrent">dfn</li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-utl.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrent">dfn</li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-utl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -560,7 +560,7 @@ run-time problem when there is no alternative.
|
|||
<span class="plain-syntax">#</span><span class="identifier-syntax">ENDIF</span><span class="plain-syntax">; </span><span class="comment-syntax">TARGET_GLULX</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-mth.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresscurrent">fl</li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-srt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-mth.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresscurrent">fl</li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-srt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -718,7 +718,7 @@ only.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-rlb.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresscurrent">flx</li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-blc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-rlb.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresscurrent">flx</li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-blc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -811,7 +811,7 @@ we sort based not on the item values but on their values for the property
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-rgx.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresscurrent">lst</li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-cmb.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-rgx.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresscurrent">lst</li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-cmb.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -276,7 +276,7 @@ to see happening.)
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-tbl.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresscurrent">mst</li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rlb.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-tbl.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresscurrent">mst</li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rlb.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -771,7 +771,7 @@ cases used to check the floating-point extensions to Glulx.
|
|||
<span class="plain-syntax">#</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">; </span><span class="comment-syntax">TARGET_GLULX</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-prg.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresscurrent">mth</li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-fl.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-prg.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresscurrent">mth</li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-fl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -402,7 +402,7 @@ whatever is the current language of play.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-zmc.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresscurrent">prg</li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-mth.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-utl.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresscurrent">prg</li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-mth.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1866,7 +1866,7 @@ which handles the special syntaxes used in search-and-replace.
|
|||
<span class="character-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-chr.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresscurrent">rgx</li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-lst.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-chr.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresscurrent">rgx</li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-lst.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -330,7 +330,7 @@ occur, in so far as memory economy allows this.
|
|||
<span class="plain-syntax">[ </span><span class="identifier-syntax">EMPTY_RULEBOOK</span><span class="plain-syntax"> </span><span class="identifier-syntax">forbid_breaks</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; ];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-mst.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresscurrent">rlb</li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-flx.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-mst.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresscurrent">rlb</li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-flx.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1992,7 +1992,7 @@ relation to become non-empty, since that would require making up data.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-cmb.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresscurrent">rlt</li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rlt2.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-cmb.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresscurrent">rlt</li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rlt2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1088,7 +1088,7 @@ relation in turn. (Each right-way-round relation, at any rate.)
|
|||
</p>
|
||||
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-rlt.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresscurrent">rlt2</li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rtp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-rlt.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresscurrent">rlt2</li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-rtp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -394,7 +394,7 @@ only as decimal numbers.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-rlt2.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresscurrent">rtp</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-rlt2.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresscurrent">rtp</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -279,7 +279,7 @@ implementation, which in turn follows the <span class="extract"><span class="ext
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-fl.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresscurrent">srt</li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-tbl.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-fl.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresscurrent">srt</li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-tbl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1030,7 +1030,7 @@ is called.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-srt.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresscurrent">tbl</li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-mst.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-srt.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresscurrent">tbl</li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-mst.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1072,7 +1072,7 @@ expression search-and-replace is going on: see "RegExp.i6t".
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-blc.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresscurrent">txt</li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-unc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-blc.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresscurrent">txt</li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-unc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -217,7 +217,7 @@ not included in the ranges below is not a letter.
|
|||
<span class="plain-syntax">#</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">; </span><span class="comment-syntax">TARGET_GLULX</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-txt.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresscurrent">unc</li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-chr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-txt.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresssection"><a href="S-utl.html">utl</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresscurrent">unc</li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-chr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -476,7 +476,7 @@ anachronism, as it's used for all kinds of value.
|
|||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-dfn.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresscurrent">utl</li><li class="progresssection"><a href="S-gll.html">gll</a></li><li class="progresssection"><a href="S-zmc.html">zmc</a></li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-gll.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="S-dfn.html">❮</a></li><li class="progresssection"><a href="S-dfn.html">dfn</a></li><li class="progresscurrent">utl</li><li class="progresssection"><a href="S-prg.html">prg</a></li><li class="progresssection"><a href="S-mth.html">mth</a></li><li class="progresssection"><a href="S-fl.html">fl</a></li><li class="progresssection"><a href="S-srt.html">srt</a></li><li class="progresssection"><a href="S-tbl.html">tbl</a></li><li class="progresssection"><a href="S-mst.html">mst</a></li><li class="progresssection"><a href="S-rlb.html">rlb</a></li><li class="progresssection"><a href="S-flx.html">flx</a></li><li class="progresssection"><a href="S-blc.html">blc</a></li><li class="progresssection"><a href="S-txt.html">txt</a></li><li class="progresssection"><a href="S-unc.html">unc</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-rgx.html">rgx</a></li><li class="progresssection"><a href="S-lst.html">lst</a></li><li class="progresssection"><a href="S-cmb.html">cmb</a></li><li class="progresssection"><a href="S-rlt.html">rlt</a></li><li class="progresssection"><a href="S-rlt2.html">rlt2</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progressnext"><a href="S-prg.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -59,16 +59,6 @@
|
|||
<spon class="sectiontitle">Utilities Template</span></a> -
|
||||
<span class="sectionpurpose">Miscellaneous utility routines for some fundamental I6 needs.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-gll.html">
|
||||
<spon class="sectiontitle">Glulx Template</span></a> -
|
||||
<span class="sectionpurpose">To start up the Glk interface for the Glulx virtual machine, and provide Glulx-specific printing functions.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-zmc.html">
|
||||
<spon class="sectiontitle">ZMachine Template</span></a> -
|
||||
<span class="sectionpurpose">To provide routines handling low-level Z-machine facilities.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a href="S-prg.html">
|
||||
<spon class="sectiontitle">Paragraphing</span></a> -
|
||||
|
|
|
@ -168,7 +168,7 @@ where he is, the surprise will not be spoiled.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">TARGET_GLULX</span><span class="plain-syntax">; </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">(); #</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LanguageInitialise</span><span class="plain-syntax">();</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">not_yet_in_play</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -198,7 +198,7 @@ compile a <span class="extract"><span class="extract-syntax">Story_Author</span>
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Banner</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">Banner</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">serial</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BeginActivity</span><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTING_BANNER_TEXT_ACT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ForActivity</span><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTING_BANNER_TEXT_ACT</span><span class="plain-syntax">) == </span><span class="reserved-syntax">false</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_Style</span><span class="plain-syntax">(</span><span class="identifier-syntax">HEADER_VMSTY</span><span class="plain-syntax">);</span>
|
||||
|
@ -211,7 +211,9 @@ compile a <span class="extract"><span class="extract-syntax">Story_Author</span>
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Say</span><span class="plain-syntax">(</span><span class="identifier-syntax">Story_Author</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">new_line</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_Describe_Release</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"Release "</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM_ReleaseNumber</span><span class="plain-syntax">(), </span><span class="string-syntax">" / Serial number "</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">serial</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM_SerialNumber</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0 : </span><span class="identifier-syntax">i</span><span class="plain-syntax"><6 : </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">char</span><span class="plain-syntax">) </span><span class="identifier-syntax">serial</span><span class="plain-syntax">-></span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" / Inform 7 v"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">PrintI6Text</span><span class="plain-syntax">) </span><span class="identifier-syntax">I7_VERSION_NUMBER</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">DEBUG</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" / D"</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -51,39 +51,14 @@
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>ZMachine Template</b></li></ul></div>
|
||||
<p class="purpose">To provide Z-specific actions.</p>
|
||||
|
||||
<ul class="toc"><li><a href="S-zmc.html#SP1">§1. Begin Z-only matter</a></li><li><a href="S-zmc.html#SP2">§2. Veneer</a></li><li><a href="S-zmc.html#SP3">§3. Quit The Game Rule</a></li><li><a href="S-zmc.html#SP4">§4. Restart The Game Rule</a></li><li><a href="S-zmc.html#SP5">§5. Restore The Game Rule</a></li><li><a href="S-zmc.html#SP6">§6. Save The Game Rule</a></li><li><a href="S-zmc.html#SP7">§7. Verify The Story File Rule</a></li><li><a href="S-zmc.html#SP8">§8. Switch Transcript On Rule</a></li><li><a href="S-zmc.html#SP9">§9. Switch Transcript Off Rule</a></li><li><a href="S-zmc.html#SP10">§10. Announce Story File Version Rule</a></li><li><a href="S-zmc.html#SP11">§11. Descend To Specific Action Rule</a></li><li><a href="S-zmc.html#SP12">§12. End Z-only matter</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-zmc.html#SP1">§1. Begin Z-only matter</a></li><li><a href="S-zmc.html#SP2">§2. Quit The Game Rule</a></li><li><a href="S-zmc.html#SP3">§3. Restart The Game Rule</a></li><li><a href="S-zmc.html#SP4">§4. Restore The Game Rule</a></li><li><a href="S-zmc.html#SP5">§5. Save The Game Rule</a></li><li><a href="S-zmc.html#SP6">§6. Verify The Story File Rule</a></li><li><a href="S-zmc.html#SP7">§7. Switch Transcript On Rule</a></li><li><a href="S-zmc.html#SP8">§8. Switch Transcript Off Rule</a></li><li><a href="S-zmc.html#SP9">§9. Announce Story File Version Rule</a></li><li><a href="S-zmc.html#SP10">§10. Descend To Specific Action Rule</a></li><li><a href="S-zmc.html#SP11">§11. End Z-only matter</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Begin Z-only matter. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">TARGET_ZCODE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Veneer. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">standard_interpreter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_TERPSTANDARD</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">transcript_mode</span><span class="plain-syntax"> = ((</span><span class="identifier-syntax">HDR_GAMEFLAGS</span><span class="plain-syntax">-->0) & </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_DICTIONARY</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">->(</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">->0 + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> + </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">->0 + </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_end</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> + ((</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">)-->0) * </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">->0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer2</span><span class="plain-syntax">->0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer3</span><span class="plain-syntax">->0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse</span><span class="plain-syntax">->0 = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse2</span><span class="plain-syntax">->0 = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">FIX_RNG_CFGF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="constant-syntax">10000</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-2000;</span>
|
||||
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> -> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Quit The Game Rule. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Quit The Game Rule. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">QUIT_THE_GAME_R</span><span class="plain-syntax">;</span>
|
||||
|
@ -92,7 +67,7 @@
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">YesOrNo</span><span class="plain-syntax">()~=0) </span><span class="reserved-syntax">quit</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Restart The Game Rule. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Restart The Game Rule. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RESTART_THE_GAME_R</span><span class="plain-syntax">;</span>
|
||||
|
@ -104,7 +79,7 @@
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Restore The Game Rule. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Restore The Game Rule. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RESTORE_THE_GAME_R</span><span class="plain-syntax">;</span>
|
||||
|
@ -115,7 +90,7 @@
|
|||
<span class="plain-syntax"> .</span><span class="identifier-syntax">RMaybe</span><span class="plain-syntax">; </span><span class="identifier-syntax">RESTORE_THE_GAME_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">); </span><span class="reserved-syntax">new_line</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Save The Game Rule. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Save The Game Rule. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">SAVE_THE_GAME_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">flag</span><span class="plain-syntax">;</span>
|
||||
|
@ -128,7 +103,7 @@
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Verify The Story File Rule. </b>This is a fossil now, really, but in the days of Infocom, the 110K story
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Verify The Story File Rule. </b>This is a fossil now, really, but in the days of Infocom, the 110K story
|
||||
file occupying an entire disc was a huge data set: floppy discs were by no
|
||||
means a reliable medium, and cheap hardware often used hit-and-miss
|
||||
components, as on the notorious Commodore 64 disc controller. If somebody
|
||||
|
@ -151,7 +126,7 @@ opcode, and so Glulx followed suit.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERIFY_THE_STORY_FILE_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">); </span><span class="reserved-syntax">new_line</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Switch Transcript On Rule. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Switch Transcript On Rule. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">SWITCH_TRANSCRIPT_ON_R</span><span class="plain-syntax">;</span>
|
||||
|
@ -164,7 +139,7 @@ opcode, and so Glulx followed suit.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">transcript_mode</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Switch Transcript Off Rule. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Switch Transcript Off Rule. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">SWITCH_TRANSCRIPT_OFF_R</span><span class="plain-syntax">;</span>
|
||||
|
@ -177,7 +152,7 @@ opcode, and so Glulx followed suit.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">transcript_mode</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Announce Story File Version Rule. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Announce Story File Version Rule. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">ANNOUNCE_STORY_FILE_VERSION_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">ix</span><span class="plain-syntax">;</span>
|
||||
|
@ -205,7 +180,7 @@ opcode, and so Glulx followed suit.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">say__p</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Descend To Specific Action Rule. </b>There are 100 or so actions, typically, and this rule is for efficiency's
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Descend To Specific Action Rule. </b>There are 100 or so actions, typically, and this rule is for efficiency's
|
||||
sake: rather than perform 100 or so comparisons to see which routine to
|
||||
call, we indirect through a jump table. The routines called are the <span class="extract"><span class="extract-syntax">-Sub</span></span>
|
||||
routines: thus, for instance, if <span class="extract"><span class="extract-syntax">action</span></span> is <span class="extract"><span class="extract-syntax">##Wait</span></span> then <span class="extract"><span class="extract-syntax">WaitSub</span></span> is
|
||||
|
@ -224,7 +199,7 @@ compared to the Z-machine's: hence the <span class="extract"><span class="extrac
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. End Z-only matter. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. End Z-only matter. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">; </span><span class="comment-syntax">TARGET_ZCODE</span>
|
||||
|
|
|
@ -463,7 +463,7 @@ according to what the <span class="extract"><span class="extract-syntax">token</
|
|||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Testing. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Compatibility::test</span><span class="plain-syntax">(</span><span class="reserved-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Compatibility::test</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Compatibility::test</span></span>:<br/><a href="2-cmp.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">decision</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">default_allows</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">;</span>
|
||||
|
@ -480,6 +480,18 @@ according to what the <span class="extract"><span class="extract-syntax">token</
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>This tests whether at least one VM of the given architecture is compatible.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Compatibility::test_architecture</span><span class="plain-syntax">(</span><span class="reserved-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="2-cmp.html#SP11" class="function-link"><span class="function-syntax">Compatibility::test</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">)) && (</span><a href="2-tvm.html#SP9" class="function-link"><span class="function-syntax">TargetVMs::has_architecture</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-tvm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-arc.html">arc</a></li><li class="progresssection"><a href="2-tvm.html">tvm</a></li><li class="progresscurrent">cmp</li><li class="progresschapter"><a href="3-fm.html">3</a></li><li class="progressnext"><a href="3-fm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -441,6 +441,12 @@ two lists of options give rise to sets which are subsets of each other.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">max_locals</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">max_locals</span><span class="plain-syntax"> < </span><span class="identifier-syntax">N</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::has_architecture</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::has_architecture</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no VM"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">architecture</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>This function is only called to decide whether to issue certain ICL memory
|
||||
settings to the Inform 6 compiler, and so we can basically assume the VM here
|
||||
|
@ -535,12 +541,12 @@ will return the empty text.
|
|||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Family compatibility. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::family</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::family</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP10_4">§10.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">TargetVMs::family</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::family</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP10_4">§10.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no VM"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::compatible_with</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::compatible_with</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP10_1">§10.1</a>, <a href="2-cmp.html#SP10_3">§10.3</a>, <a href="2-cmp.html#SP10_4">§10.4</a>, <a href="2-cmp.html#SP10_5">§10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">token</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TargetVMs::compatible_with</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">TargetVMs::compatible_with</span></span>:<br/>Compatibility - <a href="2-cmp.html#SP10_1">§10.1</a>, <a href="2-cmp.html#SP10_3">§10.3</a>, <a href="2-cmp.html#SP10_4">§10.4</a>, <a href="2-cmp.html#SP10_5">§10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">token</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="element-syntax">transpiler_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">token</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -93,6 +93,8 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"CommandParserKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"BasicInformKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"BasicInformExtrasKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Architecture16Kit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Architecture32Kit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">KitVersioning::show_version</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -61,14 +61,18 @@ fiction being made with the Inform apps, the kits will be:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">BasicInformKit + EnglishLanguageKit + WorldModelKit + CommandParserKit</span>
|
||||
<span class="plain-syntax">Architecture32Kit + BasicInformKit + EnglishLanguageKit + WorldModelKit + CommandParserKit</span>
|
||||
</pre>
|
||||
<p class="commentary">or perhaps Architecture16Kit instead of Architecture32Kit, depending on whether
|
||||
the project is being compiled to a 16-bit or a 32-bit platform.
|
||||
</p>
|
||||
|
||||
<p class="commentary">However, if the "Basic Inform" checkbox is ticked on the Settings panel for
|
||||
the project, the kits will instead be:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">BasicInformKit + EnglishLanguageKit + BasicInformExtrasKit</span>
|
||||
<span class="plain-syntax">Architecture32Kit + BasicInformKit + EnglishLanguageKit + BasicInformExtrasKit</span>
|
||||
</pre>
|
||||
<p class="commentary">And these are also the defaults when Inform projects are compiled from the command
|
||||
line, with the optional <span class="extract"><span class="extract-syntax">-basic</span></span> switch forcing us into the second case.
|
||||
|
@ -119,6 +123,21 @@ to include. For documentation on how, see <a href="inbuild/M-agtk.html" class="i
|
|||
new feature of Inform which is not yet implemented.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="w3-row-padding w3-padding-16 w3-center">
|
||||
<div class="w3-quarter">
|
||||
<a href="Architecture16Kit/index.html"><img src="docs-assets/kit.jpg" alt="Architecture16Kit" style="width:100%"></a>
|
||||
<h3><a href="Architecture16Kit/index.html">Architecture16Kit</a></h3>
|
||||
<p>A kit of Inter code providing runtime support for projects being compiled
|
||||
to 16-bit platforms, such as the Z-machine virtual machine via Inform 6.</p>
|
||||
</div>
|
||||
<div class="w3-quarter">
|
||||
<a href="Architecture32Kit/index.html"><img src="docs-assets/kit.jpg" alt="Architecture32Kit" style="width:100%"></a>
|
||||
<h3><a href="Architecture32Kit/index.html">Architecture32Kit</a></h3>
|
||||
<p>A kit of Inter code providing runtime support for projects being compiled
|
||||
to 32-bit platforms, such as the Glulx virtual machine via Inform 6, or to
|
||||
executables via C.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--End of weave-->
|
||||
|
|
|
@ -483,7 +483,7 @@ line, which is why we couldn't work this out earlier:
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_target_VM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::current_vm</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Supervisor::current_vm</span></span>:<br/>Project Services - <a href="5-ps2.html#SP31">§31</a>, <a href="5-ps2.html#SP33_1">§33.1</a><br/>Source Text - <a href="6-st.html#SP3">§3</a><br/>Headings - <a href="6-hdn.html#SP13">§13</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::current_vm</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Supervisor::current_vm</span></span>:<br/>Project Services - <a href="5-ps2.html#SP22_1">§22.1</a>, <a href="5-ps2.html#SP31">§31</a>, <a href="5-ps2.html#SP33_1">§33.1</a><br/>Source Text - <a href="6-st.html#SP3">§3</a><br/>Headings - <a href="6-hdn.html#SP13">§13</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">TINKERING_INBUILD_PHASE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_target_VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -618,16 +618,17 @@ internal nest shouldn't be written to even on other platforms.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Architectures::canonical_binary</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax"> *</span><span class="identifier-syntax">BV</span><span class="plain-syntax"> = </span><a href="3-bg.html#SP2" class="function-link"><span class="function-syntax">Graphs::file_vertex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">nest_of_origin</span><span class="plain-syntax">) && (</span><a href="2-nst.html#SP3" class="function-link"><span class="function-syntax">Nests::is_protected</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">nest_of_origin</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BV</span><span class="plain-syntax">-></span><span class="element-syntax">never_build_this</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ks.html#SP14_1_1" class="named-paragraph-link"><span class="named-paragraph">Check the Inter version used any already-existing binary file</span><span class="named-paragraph-number">14.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bg.html#SP4" class="function-link"><span class="function-syntax">Graphs::need_this_to_build</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">KV</span><span class="plain-syntax">, </span><span class="identifier-syntax">BV</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bs2.html#SP4" class="function-link"><span class="function-syntax">BuildSteps::attach</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">BV</span><span class="plain-syntax">, </span><span class="identifier-syntax">build_kit_using_inter_skill</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">BV</span><span class="plain-syntax">, </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax">, </span><span class="identifier-syntax">BVL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Compatibility::test_architecture</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">compatibility</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Architectures::canonical_binary</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax"> *</span><span class="identifier-syntax">BV</span><span class="plain-syntax"> = </span><a href="3-bg.html#SP2" class="function-link"><span class="function-syntax">Graphs::file_vertex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">nest_of_origin</span><span class="plain-syntax">) && (</span><a href="2-nst.html#SP3" class="function-link"><span class="function-syntax">Nests::is_protected</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">nest_of_origin</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BV</span><span class="plain-syntax">-></span><span class="element-syntax">never_build_this</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ks.html#SP14_1_1" class="named-paragraph-link"><span class="named-paragraph">Check the Inter version used any already-existing binary file</span><span class="named-paragraph-number">14.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bg.html#SP4" class="function-link"><span class="function-syntax">Graphs::need_this_to_build</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">KV</span><span class="plain-syntax">, </span><span class="identifier-syntax">BV</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bs2.html#SP4" class="function-link"><span class="function-syntax">BuildSteps::attach</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">BV</span><span class="plain-syntax">, </span><span class="identifier-syntax">build_kit_using_inter_skill</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">BV</span><span class="plain-syntax">, </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax">, </span><span class="identifier-syntax">BVL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ks.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_2" class="paragraph-anchor"></a><b>§14.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add build edges from the binary vertices to the contents vertex</span><span class="named-paragraph-number">14.2</span></span><span class="comment-syntax"> =</span>
|
||||
|
|
|
@ -673,6 +673,12 @@ on <a href="../WorldModelKit/index.html" class="internal">WorldModelKit</a>, thr
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">-></span><span class="element-syntax">kits_to_include</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">no_word_from_JSON</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ps2.html#SP20" class="function-link"><span class="function-syntax">Projects::add_kit_dependency</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"BasicInformKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TargetVMs::is_16_bit</span><span class="plain-syntax">(</span><a href="1-ic.html#SP11" class="function-link"><span class="function-syntax">Supervisor::current_vm</span></a><span class="plain-syntax">()))</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ps2.html#SP20" class="function-link"><span class="function-syntax">Projects::add_kit_dependency</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Architecture16Kit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ps2.html#SP20" class="function-link"><span class="function-syntax">Projects::add_kit_dependency</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Architecture32Kit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">project</span><span class="plain-syntax">-></span><span class="element-syntax">language_of_play</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ls.html#SP7" class="function-link"><span class="function-syntax">Languages::add_kit_dependencies_to_project</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">project</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -480,16 +480,17 @@ internal nest shouldn't be written to even on other platforms.
|
|||
|
||||
@<Add build edges to the binaries for each architecture@> =
|
||||
inter_architecture *A;
|
||||
LOOP_OVER(A, inter_architecture) {
|
||||
filename *F = Architectures::canonical_binary(P, A);
|
||||
build_vertex *BV = Graphs::file_vertex(F);
|
||||
if ((C->nest_of_origin) && (Nests::is_protected(C->nest_of_origin)))
|
||||
BV->never_build_this = TRUE;
|
||||
else @<Check the Inter version used any already-existing binary file@>;
|
||||
Graphs::need_this_to_build(KV, BV);
|
||||
BuildSteps::attach(BV, build_kit_using_inter_skill, FALSE, NULL, A, K->as_copy);
|
||||
ADD_TO_LINKED_LIST(BV, build_vertex, BVL);
|
||||
}
|
||||
LOOP_OVER(A, inter_architecture)
|
||||
if (Compatibility::test_architecture(K->as_copy->edition->compatibility, A)) {
|
||||
filename *F = Architectures::canonical_binary(P, A);
|
||||
build_vertex *BV = Graphs::file_vertex(F);
|
||||
if ((C->nest_of_origin) && (Nests::is_protected(C->nest_of_origin)))
|
||||
BV->never_build_this = TRUE;
|
||||
else @<Check the Inter version used any already-existing binary file@>;
|
||||
Graphs::need_this_to_build(KV, BV);
|
||||
BuildSteps::attach(BV, build_kit_using_inter_skill, FALSE, NULL, A, K->as_copy);
|
||||
ADD_TO_LINKED_LIST(BV, build_vertex, BVL);
|
||||
}
|
||||
|
||||
@<Add build edges from the binary vertices to the contents vertex@> =
|
||||
build_vertex *BV;
|
||||
|
|
|
@ -568,6 +568,12 @@ on //WorldModelKit//, through the if-this-then-that mechanism.
|
|||
}
|
||||
if (LinkedLists::len(project->kits_to_include) > 0) no_word_from_JSON = FALSE;
|
||||
Projects::add_kit_dependency(project, I"BasicInformKit", NULL, NULL, NULL, NULL);
|
||||
|
||||
if (TargetVMs::is_16_bit(Supervisor::current_vm()))
|
||||
Projects::add_kit_dependency(project, I"Architecture16Kit", NULL, NULL, NULL, NULL);
|
||||
else
|
||||
Projects::add_kit_dependency(project, I"Architecture32Kit", NULL, NULL, NULL, NULL);
|
||||
|
||||
inform_language *L = project->language_of_play;
|
||||
if (L) {
|
||||
Languages::add_kit_dependencies_to_project(L, project);
|
||||
|
|
2
inform7/.gitignore
vendored
2
inform7/.gitignore
vendored
|
@ -60,4 +60,6 @@ Internal/Inter/BasicInformKit/*.interb
|
|||
Internal/Inter/BasicInformExtrasKit/*.interb
|
||||
Internal/Inter/WorldModelKit/*.interb
|
||||
Internal/Inter/CommandParserKit/*.interb
|
||||
Internal/Inter/Architecture16Kit/*.interb
|
||||
Internal/Inter/Architecture32Kit/*.interb
|
||||
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
Total memory consumption was 137358K = 134 MB
|
||||
Total memory consumption was 137390K = 134 MB
|
||||
|
||||
---- was used for 2099126 objects, in 371747 frames in 0 x 800K = 0K = 0 MB:
|
||||
---- was used for 2100455 objects, in 372185 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
30.2% inter_tree_node_array 59 x 8192 = 483328 objects, 42534752 bytes
|
||||
19.2% text_stream_array 4803 x 100 = 480300 objects, 27050496 bytes
|
||||
17.7% linked_list 44690 objects, 25026400 bytes
|
||||
19.2% text_stream_array 4810 x 100 = 481000 objects, 27089920 bytes
|
||||
17.8% linked_list 44804 objects, 25090240 bytes
|
||||
10.1% inter_symbol_array 134 x 1024 = 137216 objects, 14274752 bytes
|
||||
9.7% inter_error_stash_array 105 x 1024 = 107520 objects, 13765920 bytes
|
||||
7.5% parse_node 133417 objects, 10673360 bytes
|
||||
5.4% verb_conjugation 164 objects, 7610912 bytes
|
||||
4.0% parse_node_annotation_array 356 x 500 = 178000 objects, 5707392 bytes
|
||||
2.5% scan_directory 878 objects, 3624384 bytes
|
||||
2.6% scan_directory 920 objects, 3797760 bytes
|
||||
2.5% pcalc_prop_array 26 x 1000 = 26000 objects, 3536832 bytes
|
||||
2.2% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
|
||||
1.9% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
|
||||
|
@ -18,11 +18,11 @@ Total memory consumption was 137358K = 134 MB
|
|||
1.4% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
|
||||
1.3% package_request 21234 objects, 1868592 bytes
|
||||
1.3% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes
|
||||
1.1% dict_entry_array 479 x 100 = 47900 objects, 1548128 bytes
|
||||
1.1% dict_entry_array 481 x 100 = 48100 objects, 1554592 bytes
|
||||
1.0% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
|
||||
1.0% inter_symbols_table 26690 objects, 1494640 bytes
|
||||
1.0% inter_symbols_table 26701 objects, 1495256 bytes
|
||||
1.0% i6_schema_array 24 x 100 = 2400 objects, 1440768 bytes
|
||||
0.9% inter_package 26690 objects, 1281120 bytes
|
||||
0.9% inter_package 26701 objects, 1281648 bytes
|
||||
0.8% map_data 672 objects, 1128960 bytes
|
||||
0.7% id_body 955 objects, 1092520 bytes
|
||||
0.7% adjective_meaning 208 objects, 1030016 bytes
|
||||
|
@ -36,13 +36,13 @@ Total memory consumption was 137358K = 134 MB
|
|||
0.3% local_variable_array 48 x 100 = 4800 objects, 462336 bytes
|
||||
0.2% verb_usage 1148 objects, 394912 bytes
|
||||
0.2% rule 472 objects, 370048 bytes
|
||||
0.2% dictionary 7659 objects, 367632 bytes
|
||||
0.2% dictionary 7688 objects, 369024 bytes
|
||||
0.2% verb_form 388 objects, 350752 bytes
|
||||
0.2% noun 2388 objects, 286560 bytes
|
||||
0.1% compilation_subtask 3369 objects, 269520 bytes
|
||||
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
|
||||
0.1% inference_subject 667 objects, 261464 bytes
|
||||
0.1% vanilla_function 3738 objects, 239232 bytes
|
||||
0.1% vanilla_function 3739 objects, 239296 bytes
|
||||
0.1% binary_predicate 326 objects, 172128 bytes
|
||||
0.1% hierarchy_location 1179 objects, 169776 bytes
|
||||
0.1% linguistic_stock_item 3331 objects, 159888 bytes
|
||||
|
@ -56,8 +56,8 @@ Total memory consumption was 137358K = 134 MB
|
|||
---- imperative_defn 1393 objects, 100296 bytes
|
||||
---- noun_usage 2411 objects, 96440 bytes
|
||||
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
|
||||
---- inter_tree 7 objects, 95368 bytes
|
||||
---- preposition 274 objects, 87680 bytes
|
||||
---- inter_tree 6 objects, 81744 bytes
|
||||
---- lexical_cluster 2528 objects, 80896 bytes
|
||||
---- kind_variable_declaration 1656 objects, 79488 bytes
|
||||
---- rulebook 407 objects, 78144 bytes
|
||||
|
@ -93,55 +93,55 @@ Total memory consumption was 137358K = 134 MB
|
|||
---- verb_sense 407 objects, 29304 bytes
|
||||
---- parse_node_tree 33 objects, 28776 bytes
|
||||
---- action_pattern_array 7 x 100 = 700 objects, 28224 bytes
|
||||
---- filename 632 objects, 25280 bytes
|
||||
---- shared_variable_set_array 6 x 100 = 600 objects, 24192 bytes
|
||||
---- filename 590 objects, 23600 bytes
|
||||
---- property 146 objects, 22192 bytes
|
||||
---- backdrops_data 672 objects, 21504 bytes
|
||||
---- pathname 524 objects, 20960 bytes
|
||||
---- inter_node_list 646 objects, 20672 bytes
|
||||
---- nonlocal_variable 94 objects, 20304 bytes
|
||||
---- pipeline_step 15 objects, 20280 bytes
|
||||
---- action_name 90 objects, 20160 bytes
|
||||
---- pathname 490 objects, 19600 bytes
|
||||
---- build_vertex 166 objects, 19920 bytes
|
||||
---- timed_rules_rfd_data 403 objects, 19344 bytes
|
||||
---- method 395 objects, 18960 bytes
|
||||
---- pcalc_prop_deferral 86 objects, 17888 bytes
|
||||
---- build_vertex 149 objects, 17880 bytes
|
||||
---- to_phrase_request 63 objects, 17136 bytes
|
||||
---- instance 162 objects, 16848 bytes
|
||||
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- adjective 140 objects, 15680 bytes
|
||||
---- JSON_value 158 objects, 13904 bytes
|
||||
---- JSON_value 176 objects, 15488 bytes
|
||||
---- web_bibliographic_datum 232 objects, 14848 bytes
|
||||
---- booking_list 407 objects, 13024 bytes
|
||||
---- adjective_iname_holder 323 objects, 12920 bytes
|
||||
---- uniqueness_count 489 objects, 11736 bytes
|
||||
---- web_bibliographic_datum 174 objects, 11136 bytes
|
||||
---- uniqueness_count 485 objects, 11640 bytes
|
||||
---- inter_construct 31 objects, 10664 bytes
|
||||
---- heading_tree 33 objects, 10296 bytes
|
||||
---- stopwatch_timer 121 objects, 9680 bytes
|
||||
---- inbuild_work 133 objects, 8512 bytes
|
||||
---- inbuild_copy 64 objects, 7680 bytes
|
||||
---- inbuild_work 136 objects, 8704 bytes
|
||||
---- inbuild_copy 66 objects, 7920 bytes
|
||||
---- equation_node 68 objects, 7616 bytes
|
||||
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
|
||||
---- shared_variable_array 1 x 100 objects, 7232 bytes
|
||||
---- determiner 22 objects, 7216 bytes
|
||||
---- inbuild_edition 98 objects, 7056 bytes
|
||||
---- verb 109 objects, 6976 bytes
|
||||
---- inbuild_edition 96 objects, 6912 bytes
|
||||
---- hierarchy_attachment_point 78 objects, 6864 bytes
|
||||
---- inform_extension 32 objects, 6656 bytes
|
||||
---- text_literal_holder 163 objects, 6520 bytes
|
||||
---- parsed_use_option_setting 79 objects, 5688 bytes
|
||||
---- compatibility_specification 110 objects, 5280 bytes
|
||||
---- section_md 59 objects, 5664 bytes
|
||||
---- compatibility_specification 114 objects, 5472 bytes
|
||||
---- build_script 166 objects, 5312 bytes
|
||||
---- explicit_action_array 1 x 100 objects, 4832 bytes
|
||||
---- section_md 50 objects, 4800 bytes
|
||||
---- build_script 149 objects, 4768 bytes
|
||||
---- activity 35 objects, 4760 bytes
|
||||
---- value_property_data 84 objects, 4704 bytes
|
||||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- command_line_switch 55 objects, 4400 bytes
|
||||
---- semver_range 41 objects, 4264 bytes
|
||||
---- use_option 31 objects, 4216 bytes
|
||||
---- semver_range 39 objects, 4056 bytes
|
||||
---- either_or_property_data 62 objects, 3968 bytes
|
||||
---- parse_node_annotation_type 119 objects, 3808 bytes
|
||||
---- definition 48 objects, 3456 bytes
|
||||
|
@ -158,48 +158,48 @@ Total memory consumption was 137358K = 134 MB
|
|||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
---- scene 1 object, 2352 bytes
|
||||
---- build_step 28 objects, 2016 bytes
|
||||
---- build_step 32 objects, 2304 bytes
|
||||
---- pronoun_usage 42 objects, 1680 bytes
|
||||
---- compiler_feature 30 objects, 1680 bytes
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- inform_pipeline 24 objects, 1536 bytes
|
||||
---- inbuild_requirement 36 objects, 1440 bytes
|
||||
---- noun_filter_token 22 objects, 1408 bytes
|
||||
---- special_meaning_holder 35 objects, 1400 bytes
|
||||
---- inter_node_array 35 objects, 1400 bytes
|
||||
---- inbuild_requirement 35 objects, 1400 bytes
|
||||
---- JSON_requirement 42 objects, 1344 bytes
|
||||
---- table_column 16 objects, 1280 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- direction_inference_data 30 objects, 1200 bytes
|
||||
---- inbuild_search_result 29 objects, 1160 bytes
|
||||
---- web_md 8 objects, 1152 bytes
|
||||
---- tree_inventory_item 28 objects, 1120 bytes
|
||||
---- inbuild_search_result 28 objects, 1120 bytes
|
||||
---- submodule_identity 34 objects, 1088 bytes
|
||||
---- runtime_kind_structure 13 objects, 1040 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
---- pipeline_stage 20 objects, 960 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- JSON_pair_requirement 29 objects, 928 bytes
|
||||
---- inform_kit 8 objects, 896 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- web_md 6 objects, 864 bytes
|
||||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
---- kit_configuration 20 objects, 800 bytes
|
||||
---- copy_error 7 objects, 784 bytes
|
||||
---- internal_test 15 objects, 720 bytes
|
||||
---- inform_kit 6 objects, 672 bytes
|
||||
---- chapter_md 8 objects, 704 bytes
|
||||
---- module 8 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- implication 13 objects, 624 bytes
|
||||
---- code_generation 1 object, 576 bytes
|
||||
---- generated_segment 14 objects, 560 bytes
|
||||
---- inter_annotation_form 14 objects, 560 bytes
|
||||
---- inter_warehouse_room 10 objects, 560 bytes
|
||||
---- inter_annotation_form 14 objects, 560 bytes
|
||||
---- rulebook_outcome 17 objects, 544 bytes
|
||||
---- chapter_md 6 objects, 528 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
---- i6_memory_setting 15 objects, 480 bytes
|
||||
---- module 6 objects, 480 bytes
|
||||
---- equation 4 objects, 480 bytes
|
||||
---- i6_memory_setting 15 objects, 480 bytes
|
||||
---- bp_family 14 objects, 448 bytes
|
||||
---- inference_family 11 objects, 440 bytes
|
||||
---- inbuild_genre 8 objects, 384 bytes
|
||||
|
@ -213,11 +213,12 @@ Total memory consumption was 137358K = 134 MB
|
|||
---- module_request 8 objects, 320 bytes
|
||||
---- inter_pipeline 1 object, 312 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- contents_entry 7 objects, 280 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- kit_dependency 5 objects, 240 bytes
|
||||
---- inform_project 1 object, 232 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- local_block_value 4 objects, 224 bytes
|
||||
|
@ -225,13 +226,12 @@ Total memory consumption was 137358K = 134 MB
|
|||
---- release_instructions 1 object, 208 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- code_generator 5 objects, 200 bytes
|
||||
---- element_activation 6 objects, 192 bytes
|
||||
---- attachment_instruction 5 objects, 200 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- attachment_instruction 4 objects, 160 bytes
|
||||
---- element_activation 6 objects, 192 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- inform_language 1 object, 104 bytes
|
||||
---- inform_kit_ittt 2 objects, 96 bytes
|
||||
|
@ -251,16 +251,16 @@ Total memory consumption was 137358K = 134 MB
|
|||
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
61.9% text stream storage 87080964 bytes in 503519 claims
|
||||
3.7% dictionary storage 5336064 bytes in 7659 claims
|
||||
---- sorting 2760 bytes in 394 claims
|
||||
61.8% text stream storage 87079836 bytes in 504199 claims
|
||||
3.8% dictionary storage 5360640 bytes in 7688 claims
|
||||
---- sorting 2792 bytes in 403 claims
|
||||
5.1% source text 7200000 bytes in 3 claims
|
||||
7.6% source text details 10800000 bytes in 2 claims
|
||||
0.1% documentation fragments 262144 bytes in 1 claim
|
||||
---- linguistic stock array 81920 bytes in 2 claims
|
||||
---- small word set array 105600 bytes in 22 claims
|
||||
3.2% inter symbols storage 4568528 bytes in 28056 claims
|
||||
11.9% inter bytecode storage 16775500 bytes in 14 claims
|
||||
3.2% inter symbols storage 4586304 bytes in 28076 claims
|
||||
11.9% inter bytecode storage 16767120 bytes in 15 claims
|
||||
4.4% inter links storage 6222976 bytes in 11 claims
|
||||
0.1% inter tree location list storage 191232 bytes in 32 claims
|
||||
1.2% instance-of-kind counting 1705636 bytes in 1 claim
|
||||
|
@ -269,5 +269,5 @@ Total memory consumption was 137358K = 134 MB
|
|||
---- code generation workspace for objects 3480 bytes in 19 claims
|
||||
0.1% emitter array storage 280672 bytes in 2002 claims
|
||||
|
||||
-136.-4% was overhead - -191955720 bytes = -187456K = -183 MB
|
||||
-136.-6% was overhead - -192269016 bytes = -187762K = -183 MB
|
||||
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
100.0% in inform7 run
|
||||
69.7% in compilation to Inter
|
||||
49.2% in //Sequence::undertake_queued_tasks//
|
||||
4.9% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
68.4% in compilation to Inter
|
||||
48.6% in //Sequence::undertake_queued_tasks//
|
||||
4.8% in //MajorNodes::pre_pass//
|
||||
3.2% in //MajorNodes::pass_1//
|
||||
1.7% in //ImperativeDefinitions::assess_all//
|
||||
1.5% in //RTPhrasebook::compile_entries//
|
||||
1.3% in //RTKindConstructors::compile//
|
||||
1.3% in //RTPhrasebook::compile_entries//
|
||||
0.9% in //Sequence::lint_inter//
|
||||
0.7% in //ImperativeDefinitions::compile_first_block//
|
||||
0.5% in //ImperativeDefinitions::compile_first_block//
|
||||
0.5% in //MajorNodes::pass_2//
|
||||
0.5% in //Sequence::undertake_queued_tasks//
|
||||
0.5% in //World::stage_V//
|
||||
0.3% in //InferenceSubjects::emit_all//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.1% in //CompletionModule::compile//
|
||||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
2.8% not specifically accounted for
|
||||
26.6% in running Inter pipeline
|
||||
2.5% not specifically accounted for
|
||||
28.0% in running Inter pipeline
|
||||
10.9% in step 14/15: generate inform6 -> auto.inf
|
||||
5.9% in step 5/15: load-binary-kits
|
||||
5.1% in step 6/15: make-synoptic-module
|
||||
7.1% in step 5/15: load-binary-kits
|
||||
5.3% in step 6/15: make-synoptic-module
|
||||
1.7% in step 9/15: make-identifiers-unique
|
||||
0.3% in step 12/15: eliminate-redundant-operations
|
||||
0.3% in step 4/15: compile-splats
|
||||
0.3% in step 7/15: shorten-wiring
|
||||
0.3% in step 8/15: detect-indirect-calls
|
||||
0.1% in step 11/15: eliminate-redundant-labels
|
||||
1.0% not specifically accounted for
|
||||
2.9% in supervisor
|
||||
0.6% not specifically accounted for
|
||||
1.1% not specifically accounted for
|
||||
3.0% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
|
|
13
inform7/Internal/Inter/Architecture16Kit/Contents.w
Normal file
13
inform7/Internal/Inter/Architecture16Kit/Contents.w
Normal file
|
@ -0,0 +1,13 @@
|
|||
Title: Architecture16Kit
|
||||
Author: Graham Nelson
|
||||
Purpose: Inter-level support for compiling Inform programs to 16-bit architectures.
|
||||
Language: Inform 6
|
||||
Licence: Artistic License 2.0
|
||||
Web Syntax Version: 2
|
||||
|
||||
Sections
|
||||
Capabilities
|
||||
Startup
|
||||
Character Set
|
||||
Input Output
|
||||
Veneer
|
|
@ -0,0 +1,94 @@
|
|||
Capabilities Template.
|
||||
|
||||
Miscellaneous capabilities of the 16-bit architecture.
|
||||
|
||||
@h Summary.
|
||||
The 16-bit architecture is for very limited virtual machines, and is closely
|
||||
modelled on Infocom's Z-machine, originally developed between 1979 and 1986,
|
||||
but still sometimes used into the modern age. Its input-output model is
|
||||
almost entirely textual, and it has an idiosyncratic character set.
|
||||
|
||||
@h Release Number.
|
||||
Our programs will have both a release number and a serial code, which are
|
||||
in each case stored in the header memory of the virtual machine.
|
||||
|
||||
|VM_Describe_Release()| has been removed and replaced with functions returning
|
||||
the release number, a non-negative integer, and the serial code, a byte array
|
||||
expected to be 6 digit characters wide.
|
||||
|
||||
=
|
||||
[ VM_ReleaseNumber;
|
||||
return (HDR_GAMERELEASE-->0) & $03ff;
|
||||
];
|
||||
|
||||
[ VM_SerialNumber;
|
||||
return HDR_GAMESERIAL;
|
||||
];
|
||||
|
||||
@h RNG.
|
||||
No routine is needed for extracting a random number, since I6's built-in
|
||||
|random| function does that, but it's useful to abstract the process of
|
||||
seeding the RNG so that it produces a repeatable sequence of "random"
|
||||
numbers from here on: the necessary opcodes are different for the two VMs.
|
||||
|
||||
=
|
||||
[ VM_Seed_RNG n;
|
||||
if (n > 0) n = -n;
|
||||
@random n -> n;
|
||||
];
|
||||
|
||||
@h Memory Allocation.
|
||||
This is dynamic memory allocation: something which is never practicable in
|
||||
the Z-machine, because the whole address range is already claimed, but which
|
||||
is viable on recent revisions of Glulx.
|
||||
|
||||
=
|
||||
[ VM_AllocateMemory amount;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ VM_FreeMemory address;
|
||||
];
|
||||
|
||||
@h Audiovisual Resources.
|
||||
The Z-machine only barely supports figures and sound effects, and only in
|
||||
version 6 of the Z-machine, which Inform 7 no longer supports. Sound effects
|
||||
have a longer pedigree and Infocom used them on some version 5 and even some
|
||||
version 3 works: really, though, from an Inform point of view we would prefer
|
||||
that anyone needing figures and sounds use Glulx instead. (Inform 6 remains
|
||||
available for those who really need to make audiovisual effects in these
|
||||
long-gone formats.)
|
||||
|
||||
=
|
||||
[ VM_Picture resource_ID;
|
||||
];
|
||||
|
||||
[ VM_SoundEffect resource_ID;
|
||||
];
|
||||
|
||||
@h Typography.
|
||||
Relatively few typographic effects are available on the Z-machine, so that
|
||||
many of the semantic markups for text which would be distinguishable on
|
||||
Glulx are indistinguishable here.
|
||||
|
||||
=
|
||||
[ VM_Style sty;
|
||||
switch (sty) {
|
||||
NORMAL_VMSTY, NOTE_VMSTY: style roman;
|
||||
HEADER_VMSTY, SUBHEADER_VMSTY, ALERT_VMSTY: style bold;
|
||||
}
|
||||
];
|
||||
|
||||
@h Undo.
|
||||
These simply wrap the relevant opcodes.
|
||||
|
||||
=
|
||||
[ VM_Undo result_code;
|
||||
@restore_undo result_code;
|
||||
return result_code;
|
||||
];
|
||||
|
||||
[ VM_Save_Undo result_code;
|
||||
@save_undo result_code;
|
||||
return result_code;
|
||||
];
|
|
@ -0,0 +1,58 @@
|
|||
Character Set Template.
|
||||
|
||||
Code relating to the ZSCII character set.
|
||||
|
||||
@ The following are the equivalent of |tolower| and |toupper|, the traditional
|
||||
C library functions for forcing letters into lower and upper case form, for
|
||||
the ZSCII character set.
|
||||
|
||||
=
|
||||
[ VM_UpperToLowerCase c;
|
||||
if (c < 'A') return c;
|
||||
if (c <= 'Z') return c + 32;
|
||||
if (c < 158) return c;
|
||||
if (c <= 160) return c - 3;
|
||||
if (c < 167) return c;
|
||||
if (c <= 168) return c - 3;
|
||||
if (c < 175) return c;
|
||||
if (c <= 180) return c - 6;
|
||||
if (c < 186) return c;
|
||||
if (c <= 190) return c - 5;
|
||||
if (c < 196) return c;
|
||||
if (c <= 200) return c - 5;
|
||||
if (c == 202) return c - 1;
|
||||
if (c == 204) return c - 1;
|
||||
if (c < 208) return c;
|
||||
if (c <= 210) return c - 3;
|
||||
if (c == 212) return c - 1;
|
||||
if (c == 214) return c - 1;
|
||||
if (c == 217) return c - 2;
|
||||
if (c == 218) return c - 2;
|
||||
if (c == 221) return c - 1;
|
||||
return c;
|
||||
];
|
||||
|
||||
[ VM_LowerToUpperCase c;
|
||||
if (c < 'a') return c;
|
||||
if (c <= 'z') return c - 32;
|
||||
if (c < 155) return c;
|
||||
if (c <= 157) return c + 3;
|
||||
if (c < 164) return c;
|
||||
if (c <= 165) return c + 3;
|
||||
if (c < 169) return c;
|
||||
if (c <= 174) return c + 6;
|
||||
if (c < 181) return c;
|
||||
if (c <= 185) return c + 5;
|
||||
if (c < 191) return c;
|
||||
if (c <= 195) return c + 5;
|
||||
if (c == 201) return c + 1;
|
||||
if (c == 203) return c + 1;
|
||||
if (c < 205) return c;
|
||||
if (c <= 207) return c + 3;
|
||||
if (c == 211) return c + 1;
|
||||
if (c == 213) return c + 1;
|
||||
if (c == 215) return c + 2;
|
||||
if (c == 216) return c + 2;
|
||||
if (c == 220) return c + 1;
|
||||
return c;
|
||||
];
|
|
@ -1,21 +1,6 @@
|
|||
ZMachine Template.
|
||||
Input Output Template.
|
||||
|
||||
To provide routines handling low-level Z-machine facilities.
|
||||
|
||||
@h Begin Z-only matter.
|
||||
|
||||
=
|
||||
#Ifdef TARGET_ZCODE;
|
||||
|
||||
@h Summary.
|
||||
This segment closely parallels "Glulx.i6t", which provides exactly
|
||||
equivalent functionality (indeed, usually the same-named functions and in
|
||||
the same order) for the Glulx VM. This is intended to make the rest of the
|
||||
template code independent of the choice of VM, although that is more of an
|
||||
ideal than a reality, because there are so many fiddly differences in some
|
||||
of the grammar and dictionary tables that it is not really practical for
|
||||
the parser (for instance) to call VM-neutral routines to get the data it
|
||||
wants out of these arrays.
|
||||
Access to the keyboard and to textual windows.
|
||||
|
||||
@h Variables and Arrays.
|
||||
|
||||
|
@ -35,22 +20,6 @@ Global dict_start;
|
|||
Global dict_entry_size;
|
||||
Global dict_end;
|
||||
|
||||
@h Release Number.
|
||||
Like all software, IF story files have release numbers to mark revised
|
||||
versions being circulated: unlike most software, and partly for traditional
|
||||
reasons, the version number is recorded not in some print statement or
|
||||
variable but is branded on, so to speak, in a specific memory location
|
||||
of the story file header.
|
||||
|
||||
|VM_Describe_Release()| describes the release and is used as part of the
|
||||
"banner", IF's equivalent to a title page.
|
||||
|
||||
=
|
||||
[ VM_Describe_Release i;
|
||||
print "Release ", (HDR_GAMERELEASE-->0) & $03ff, " / Serial number ";
|
||||
for (i=0 : i<6 : i++) print (char) HDR_GAMESERIAL->i;
|
||||
];
|
||||
|
||||
@h Keyboard Input.
|
||||
The VM must provide three routines for keyboard input:
|
||||
|
||||
|
@ -106,7 +75,7 @@ are called tokens.
|
|||
|
||||
|LTI_Insert| is documented in the DM4 and the |LTI| prefix stands for
|
||||
"Language To Informese": it's used only by translations into non-English
|
||||
languages of play, and is not called in the template.
|
||||
languages of play.
|
||||
|
||||
=
|
||||
[ VM_CopyBuffer bto bfrom i;
|
||||
|
@ -188,116 +157,6 @@ recognised by the parser.
|
|||
print "'", (address) VM_NumberToDictionaryAddress(j), "' ";
|
||||
];
|
||||
|
||||
@h RNG.
|
||||
No routine is needed for extracting a random number, since I6's built-in
|
||||
|random| function does that, but it's useful to abstract the process of
|
||||
seeding the RNG so that it produces a repeatable sequence of "random"
|
||||
numbers from here on: the necessary opcodes are different for the two VMs.
|
||||
|
||||
=
|
||||
[ VM_Seed_RNG n;
|
||||
if (n > 0) n = -n;
|
||||
@random n -> n;
|
||||
];
|
||||
|
||||
@h Memory Allocation.
|
||||
This is dynamic memory allocation: something which is never practicable in
|
||||
the Z-machine, because the whole address range is already claimed, but which
|
||||
is viable on recent revisions of Glulx.
|
||||
|
||||
=
|
||||
[ VM_AllocateMemory amount;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ VM_FreeMemory address;
|
||||
];
|
||||
|
||||
@h Audiovisual Resources.
|
||||
The Z-machine only barely supports figures and sound effects, and only in
|
||||
version 6 of the Z-machine, which Inform 7 no longer supports. Sound effects
|
||||
have a longer pedigree and Infocom used them on some version 5 and even some
|
||||
version 3 works: really, though, from an Inform point of view we would prefer
|
||||
that anyone needing figures and sounds use Glulx instead. (Inform 6 remains
|
||||
available for those who really need to make audiovisual effects in these
|
||||
long-gone formats.)
|
||||
|
||||
=
|
||||
[ VM_Picture resource_ID;
|
||||
];
|
||||
|
||||
[ VM_SoundEffect resource_ID;
|
||||
];
|
||||
|
||||
@h Typography.
|
||||
Relatively few typographic effects are available on the Z-machine, so that
|
||||
many of the semantic markups for text which would be distinguishable on
|
||||
Glulx are indistinguishable here.
|
||||
|
||||
=
|
||||
[ VM_Style sty;
|
||||
switch (sty) {
|
||||
NORMAL_VMSTY, NOTE_VMSTY: style roman;
|
||||
HEADER_VMSTY, SUBHEADER_VMSTY, ALERT_VMSTY: style bold;
|
||||
}
|
||||
];
|
||||
|
||||
@h Character Casing.
|
||||
The following are the equivalent of |tolower| and |toupper|, the traditional
|
||||
C library functions for forcing letters into lower and upper case form, for
|
||||
the ZSCII character set.
|
||||
|
||||
=
|
||||
[ VM_UpperToLowerCase c;
|
||||
if (c < 'A') return c;
|
||||
if (c <= 'Z') return c + 32;
|
||||
if (c < 158) return c;
|
||||
if (c <= 160) return c - 3;
|
||||
if (c < 167) return c;
|
||||
if (c <= 168) return c - 3;
|
||||
if (c < 175) return c;
|
||||
if (c <= 180) return c - 6;
|
||||
if (c < 186) return c;
|
||||
if (c <= 190) return c - 5;
|
||||
if (c < 196) return c;
|
||||
if (c <= 200) return c - 5;
|
||||
if (c == 202) return c - 1;
|
||||
if (c == 204) return c - 1;
|
||||
if (c < 208) return c;
|
||||
if (c <= 210) return c - 3;
|
||||
if (c == 212) return c - 1;
|
||||
if (c == 214) return c - 1;
|
||||
if (c == 217) return c - 2;
|
||||
if (c == 218) return c - 2;
|
||||
if (c == 221) return c - 1;
|
||||
return c;
|
||||
];
|
||||
|
||||
[ VM_LowerToUpperCase c;
|
||||
if (c < 'a') return c;
|
||||
if (c <= 'z') return c - 32;
|
||||
if (c < 155) return c;
|
||||
if (c <= 157) return c + 3;
|
||||
if (c < 164) return c;
|
||||
if (c <= 165) return c + 3;
|
||||
if (c < 169) return c;
|
||||
if (c <= 174) return c + 6;
|
||||
if (c < 181) return c;
|
||||
if (c <= 185) return c + 5;
|
||||
if (c < 191) return c;
|
||||
if (c <= 195) return c + 5;
|
||||
if (c == 201) return c + 1;
|
||||
if (c == 203) return c + 1;
|
||||
if (c < 205) return c;
|
||||
if (c <= 207) return c + 3;
|
||||
if (c == 211) return c + 1;
|
||||
if (c == 213) return c + 1;
|
||||
if (c == 215) return c + 2;
|
||||
if (c == 216) return c + 2;
|
||||
if (c == 220) return c + 1;
|
||||
return c;
|
||||
];
|
||||
|
||||
@h The Screen.
|
||||
Our generic screen model is that the screen is made up of windows: we tend
|
||||
to refer only to two of these, the main window and the status line, but
|
||||
|
@ -421,57 +280,3 @@ line; line 2 is underneath, and so on; columns are similarly numbered from
|
|||
@split_window height;
|
||||
statuswin_cursize = height;
|
||||
];
|
||||
|
||||
@h Quotation Boxes.
|
||||
No routine is needed to produce quotation boxes: the I6 |box| statement
|
||||
generates the necessary Z-machine opcodes all by itself.
|
||||
|
||||
@h Undo.
|
||||
These simply wrap the relevant opcodes.
|
||||
|
||||
=
|
||||
[ VM_Undo result_code;
|
||||
@restore_undo result_code;
|
||||
return result_code;
|
||||
];
|
||||
|
||||
[ VM_Save_Undo result_code;
|
||||
@save_undo result_code;
|
||||
return result_code;
|
||||
];
|
||||
|
||||
@h Veneer.
|
||||
|
||||
=
|
||||
[ Unsigned__Compare x y u v;
|
||||
@je x y ?rfalse; ! i.e., return 0
|
||||
@jl x 0 ?XNegative;
|
||||
! So here x >= 0 and x ~= y
|
||||
@jl y 0 ?XPosYNeg;
|
||||
|
||||
! Here x >=0, y >= 0, x ~= y
|
||||
|
||||
@jg x y ?rtrue; ! i.e., return 1
|
||||
@ret -1;
|
||||
|
||||
.XPosYNeg;
|
||||
! Here x >= 0, y < 0, x ~= y
|
||||
@ret -1;
|
||||
|
||||
.XNegative;
|
||||
@jl y 0 ?~rtrue; ! if x < 0, y >= 0, return 1
|
||||
|
||||
! Here x < 0, y < 0, x ~= y
|
||||
@jg x y ?rtrue;
|
||||
@ret -1;
|
||||
];
|
||||
|
||||
[ RT__ChLDW base offset;
|
||||
@loadw base offset -> sp;
|
||||
@ret sp;
|
||||
];
|
||||
|
||||
@h End Z-only matter.
|
||||
|
||||
=
|
||||
#Endif; ! TARGET_ZCODE
|
|
@ -0,0 +1,32 @@
|
|||
Startup Template.
|
||||
|
||||
How programs for this architecture start up the virtual machine.
|
||||
|
||||
@ |VM_PreInitialise()| is called; then the "starting the virtual machine"
|
||||
activity runs; and then |VM_Initialise()| is called.
|
||||
|
||||
=
|
||||
[ VM_PreInitialise;
|
||||
];
|
||||
|
||||
[ VM_Initialise i;
|
||||
standard_interpreter = HDR_TERPSTANDARD-->0;
|
||||
transcript_mode = ((HDR_GAMEFLAGS-->0) & 1);
|
||||
|
||||
dict_start = HDR_DICTIONARY-->0;
|
||||
dict_entry_size = dict_start->(dict_start->0 + 1);
|
||||
dict_start = dict_start + dict_start->0 + 4;
|
||||
dict_end = dict_start + ((dict_start - 2)-->0) * dict_entry_size;
|
||||
|
||||
buffer->0 = INPUT_BUFFER_LEN;
|
||||
buffer2->0 = INPUT_BUFFER_LEN;
|
||||
buffer3->0 = INPUT_BUFFER_LEN;
|
||||
parse->0 = 15;
|
||||
parse2->0 = 15;
|
||||
|
||||
if (BasicInformKit`FIX_RNG_CFGF) {
|
||||
@random 10000 -> i;
|
||||
i = -i-2000;
|
||||
@random i -> i;
|
||||
}
|
||||
];
|
37
inform7/Internal/Inter/Architecture16Kit/Sections/Veneer.i6t
Normal file
37
inform7/Internal/Inter/Architecture16Kit/Sections/Veneer.i6t
Normal file
|
@ -0,0 +1,37 @@
|
|||
Veneer Template.
|
||||
|
||||
Veneer code for use by the Inform 6 compiler with the Z-machine target.
|
||||
|
||||
@ These functions have strange-looking names special to the Inform 6 compiler,
|
||||
which uses them to replace its default "veneer" functions. If we're compiling
|
||||
to something other than Inform 6, though, they are just strangely-named functions,
|
||||
and do no harm.
|
||||
|
||||
=
|
||||
[ Unsigned__Compare x y u v;
|
||||
@je x y ?rfalse; ! i.e., return 0
|
||||
@jl x 0 ?XNegative;
|
||||
! So here x >= 0 and x ~= y
|
||||
@jl y 0 ?XPosYNeg;
|
||||
|
||||
! Here x >=0, y >= 0, x ~= y
|
||||
|
||||
@jg x y ?rtrue; ! i.e., return 1
|
||||
@ret -1;
|
||||
|
||||
.XPosYNeg;
|
||||
! Here x >= 0, y < 0, x ~= y
|
||||
@ret -1;
|
||||
|
||||
.XNegative;
|
||||
@jl y 0 ?~rtrue; ! if x < 0, y >= 0, return 1
|
||||
|
||||
! Here x < 0, y < 0, x ~= y
|
||||
@jg x y ?rtrue;
|
||||
@ret -1;
|
||||
];
|
||||
|
||||
[ RT__ChLDW base offset;
|
||||
@loadw base offset -> sp;
|
||||
@ret sp;
|
||||
];
|
12
inform7/Internal/Inter/Architecture16Kit/kit_metadata.json
Normal file
12
inform7/Internal/Inter/Architecture16Kit/kit_metadata.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture16Kit",
|
||||
"version": "10.2.0-beta+6W57"
|
||||
},
|
||||
"compatibility": "16-bit",
|
||||
"kit-details": {
|
||||
"has-priority": 1,
|
||||
"defines-Main": false
|
||||
}
|
||||
}
|
14
inform7/Internal/Inter/Architecture32Kit/Contents.w
Normal file
14
inform7/Internal/Inter/Architecture32Kit/Contents.w
Normal file
|
@ -0,0 +1,14 @@
|
|||
Title: Architecture32Kit
|
||||
Author: Graham Nelson
|
||||
Purpose: Inter-level support for compiling Inform programs to 32-bit architectures.
|
||||
Language: Inform 6
|
||||
Licence: Artistic License 2.0
|
||||
Web Syntax Version: 2
|
||||
|
||||
Sections
|
||||
Capabilities
|
||||
Glk
|
||||
Startup
|
||||
Character Set
|
||||
Input Output
|
||||
Veneer
|
|
@ -0,0 +1,103 @@
|
|||
Capabilities Template.
|
||||
|
||||
Miscellaneous capabilities of the 16-bit architecture.
|
||||
|
||||
@h Summary.
|
||||
The 32-bit architecture is currently the default targeted by Inform, and is
|
||||
used both for programs compiled via Inform 6 to the Glulx virtual machine, and
|
||||
also for programs compiled via C.
|
||||
|
||||
@h Release Number.
|
||||
Our programs will have both a release number and a serial code, which are
|
||||
in each case stored in the header memory of the virtual machine.
|
||||
|
||||
|VM_Describe_Release()| has been removed and replaced with functions returning
|
||||
the release number, a non-negative integer, and the serial code, a byte array
|
||||
expected to be 6 digit characters wide.
|
||||
|
||||
=
|
||||
[ VM_ReleaseNumber r;
|
||||
@aloads ROM_GAMERELEASE 0 r;
|
||||
return r;
|
||||
];
|
||||
|
||||
[ VM_SerialNumber;
|
||||
return ROM_GAMESERIAL;
|
||||
];
|
||||
|
||||
@h Random Number Generator.
|
||||
No routine is needed for extracting a random number, since I6's built-in
|
||||
|random| function does that, but it's useful to abstract the process of
|
||||
seeding the RNG so that it produces a repeatable sequence of "random"
|
||||
numbers from here on: the necessary opcodes are different for the two VMs.
|
||||
|
||||
=
|
||||
[ VM_Seed_RNG n;
|
||||
@setrandom n;
|
||||
];
|
||||
|
||||
@h Memory Allocation.
|
||||
This is dynamic memory allocation: something which is never practicable in
|
||||
the Z-machine, because the whole address range is already claimed, but which
|
||||
is viable on recent revisions of Glulx.
|
||||
|
||||
=
|
||||
[ VM_AllocateMemory amount i;
|
||||
@gestalt 7 0 i;
|
||||
if (i == 0) return i;
|
||||
@malloc amount i;
|
||||
return i;
|
||||
];
|
||||
|
||||
[ VM_FreeMemory address i;
|
||||
@gestalt 7 0 i;
|
||||
if (i == 0) return;
|
||||
@mfree address;
|
||||
];
|
||||
|
||||
@h Audiovisual Resources.
|
||||
The Z-machine only barely supports figures and sound effects, so Glulx is
|
||||
the preferred VM to choose if they are wanted. Properly speaking, it's not
|
||||
Glulx which supports these, but its I/O layer Glk, and implementations
|
||||
of Glk are free to support them or not as they please: "cheapglk", a
|
||||
dumb terminal version, does not, for instance. We therefore have to
|
||||
investigate the "gestalt" to find out.
|
||||
|
||||
=
|
||||
[ VM_Picture resource_ID;
|
||||
if (glk_gestalt(gestalt_Graphics, 0)) {
|
||||
glk_image_draw(gg_mainwin, resource_ID, imagealign_InlineCenter, 0);
|
||||
} else {
|
||||
print "[Picture number ", resource_ID, " here.]^";
|
||||
}
|
||||
];
|
||||
|
||||
[ VM_SoundEffect resource_ID;
|
||||
if (glk_gestalt(gestalt_Sound, 0)) {
|
||||
glk_schannel_play(gg_foregroundchan, resource_ID);
|
||||
} else {
|
||||
print "[Sound effect number ", resource_ID, " here.]^";
|
||||
}
|
||||
];
|
||||
|
||||
@h Typography.
|
||||
Glk makes an attempt to present typographic styles as being a matter of
|
||||
semantic markup rather than controlling the actual appearance of text:
|
||||
the idea is that the story file should want to print something in a
|
||||
heading kind of way, and then the interpreter -- guided by the player's
|
||||
reading preferences -- might set that in bold, or larger type, or red ink,
|
||||
or any combination of the three, or with other effects entirely. (This is
|
||||
not the place to discuss whether that was a wise decision for Glk to take.)
|
||||
|
||||
=
|
||||
[ VM_Style sty;
|
||||
switch (sty) {
|
||||
NORMAL_VMSTY: glk_set_style(style_Normal);
|
||||
HEADER_VMSTY: glk_set_style(style_Header);
|
||||
SUBHEADER_VMSTY: glk_set_style(style_Subheader);
|
||||
NOTE_VMSTY: glk_set_style(style_Note);
|
||||
ALERT_VMSTY: glk_set_style(style_Alert);
|
||||
BLOCKQUOTE_VMSTY: glk_set_style(style_BlockQuote);
|
||||
INPUT_VMSTY: glk_set_style(style_Input);
|
||||
}
|
||||
];
|
|
@ -0,0 +1,12 @@
|
|||
Character Set Template.
|
||||
|
||||
Code relating to the Unicode character set.
|
||||
|
||||
@ The following are the equivalent of |tolower| and |toupper|, the traditional
|
||||
C library functions for forcing letters into lower and upper case form, for
|
||||
the 32-bit architecture's character set. That's now Unicode, and we delegate
|
||||
all of the work to glk functions.
|
||||
|
||||
=
|
||||
[ VM_UpperToLowerCase c; return glk_char_to_lower(c); ];
|
||||
[ VM_LowerToUpperCase c; return glk_char_to_upper(c); ];
|
884
inform7/Internal/Inter/Architecture32Kit/Sections/Glk.i6t
Normal file
884
inform7/Internal/Inter/Architecture32Kit/Sections/Glk.i6t
Normal file
|
@ -0,0 +1,884 @@
|
|||
Glk Template.
|
||||
|
||||
Glk is a fully-featured input-output model, designed by Andrew Plotkin for use
|
||||
with the Glulx virtual machine, but not used only for that. All 32-bit Inform
|
||||
programs use Glk.
|
||||
|
||||
@h Stubs.
|
||||
These are I6 library-style entry point routines, not used by I7, but retained
|
||||
in case I7 extensions want to do interesting things with Glulx.
|
||||
|
||||
=
|
||||
#Stub HandleGlkEvent 3;
|
||||
#Stub IdentifyGlkObject 4;
|
||||
#Stub InitGlkWindow 1;
|
||||
|
||||
@h Definitions.
|
||||
This section is a verbatim copy of an invaluable I6 header file originally
|
||||
put together by John Cater.
|
||||
|
||||
=
|
||||
Constant GLK_NULL 0;
|
||||
|
||||
! infglk.h -- auto-generated by parse_dispatch.py.
|
||||
! Generated for Glk API version 0.7.4
|
||||
|
||||
Constant evtype_Arrange = 5;
|
||||
Constant evtype_CharInput = 2;
|
||||
Constant evtype_Hyperlink = 8;
|
||||
Constant evtype_LineInput = 3;
|
||||
Constant evtype_MouseInput = 4;
|
||||
Constant evtype_None = 0;
|
||||
Constant evtype_Redraw = 6;
|
||||
Constant evtype_SoundNotify = 7;
|
||||
Constant evtype_Timer = 1;
|
||||
Constant evtype_VolumeNotify = 9;
|
||||
Constant filemode_Read = 2;
|
||||
Constant filemode_ReadWrite = 3;
|
||||
Constant filemode_Write = 1;
|
||||
Constant filemode_WriteAppend = 5;
|
||||
Constant fileusage_BinaryMode = 0;
|
||||
Constant fileusage_Data = 0;
|
||||
Constant fileusage_InputRecord = 3;
|
||||
Constant fileusage_SavedGame = 1;
|
||||
Constant fileusage_TextMode = 256;
|
||||
Constant fileusage_Transcript = 2;
|
||||
Constant fileusage_TypeMask = 15;
|
||||
Constant gestalt_CharInput = 1;
|
||||
Constant gestalt_CharOutput = 3;
|
||||
Constant gestalt_CharOutput_ApproxPrint = 1;
|
||||
Constant gestalt_CharOutput_CannotPrint = 0;
|
||||
Constant gestalt_CharOutput_ExactPrint = 2;
|
||||
Constant gestalt_DateTime = 20;
|
||||
Constant gestalt_DrawImage = 7;
|
||||
Constant gestalt_Graphics = 6;
|
||||
Constant gestalt_GraphicsCharInput = 23;
|
||||
Constant gestalt_GraphicsTransparency = 14;
|
||||
Constant gestalt_HyperlinkInput = 12;
|
||||
Constant gestalt_Hyperlinks = 11;
|
||||
Constant gestalt_LineInput = 2;
|
||||
Constant gestalt_LineInputEcho = 17;
|
||||
Constant gestalt_LineTerminatorKey = 19;
|
||||
Constant gestalt_LineTerminators = 18;
|
||||
Constant gestalt_MouseInput = 4;
|
||||
Constant gestalt_ResourceStream = 22;
|
||||
Constant gestalt_Sound = 8;
|
||||
Constant gestalt_Sound2 = 21;
|
||||
Constant gestalt_SoundMusic = 13;
|
||||
Constant gestalt_SoundNotify = 10;
|
||||
Constant gestalt_SoundVolume = 9;
|
||||
Constant gestalt_Timer = 5;
|
||||
Constant gestalt_Unicode = 15;
|
||||
Constant gestalt_UnicodeNorm = 16;
|
||||
Constant gestalt_Version = 0;
|
||||
Constant imagealign_InlineCenter = 3;
|
||||
Constant imagealign_InlineDown = 2;
|
||||
Constant imagealign_MarginLeft = 4;
|
||||
Constant imagealign_MarginRight = 5;
|
||||
Constant imagealign_InlineUp = 1;
|
||||
Constant keycode_Delete = 4294967289;
|
||||
Constant keycode_Down = 4294967291;
|
||||
Constant keycode_End = 4294967283;
|
||||
Constant keycode_Escape = 4294967288;
|
||||
Constant keycode_Func1 = 4294967279;
|
||||
Constant keycode_Func10 = 4294967270;
|
||||
Constant keycode_Func11 = 4294967269;
|
||||
Constant keycode_Func12 = 4294967268;
|
||||
Constant keycode_Func2 = 4294967278;
|
||||
Constant keycode_Func3 = 4294967277;
|
||||
Constant keycode_Func4 = 4294967276;
|
||||
Constant keycode_Func5 = 4294967275;
|
||||
Constant keycode_Func6 = 4294967274;
|
||||
Constant keycode_Func7 = 4294967273;
|
||||
Constant keycode_Func8 = 4294967272;
|
||||
Constant keycode_Func9 = 4294967271;
|
||||
Constant keycode_Home = 4294967284;
|
||||
Constant keycode_Left = 4294967294;
|
||||
Constant keycode_MAXVAL = 28;
|
||||
Constant keycode_PageDown = 4294967285;
|
||||
Constant keycode_PageUp = 4294967286;
|
||||
Constant keycode_Return = 4294967290;
|
||||
Constant keycode_Right = 4294967293;
|
||||
Constant keycode_Tab = 4294967287;
|
||||
Constant keycode_Unknown = 4294967295;
|
||||
Constant keycode_Up = 4294967292;
|
||||
Constant seekmode_Current = 1;
|
||||
Constant seekmode_End = 2;
|
||||
Constant seekmode_Start = 0;
|
||||
Constant style_Alert = 5;
|
||||
Constant style_BlockQuote = 7;
|
||||
Constant style_Emphasized = 1;
|
||||
Constant style_Header = 3;
|
||||
Constant style_Input = 8;
|
||||
Constant style_NUMSTYLES = 11;
|
||||
Constant style_Normal = 0;
|
||||
Constant style_Note = 6;
|
||||
Constant style_Preformatted = 2;
|
||||
Constant style_Subheader = 4;
|
||||
Constant style_User1 = 9;
|
||||
Constant style_User2 = 10;
|
||||
Constant stylehint_BackColor = 8;
|
||||
Constant stylehint_Indentation = 0;
|
||||
Constant stylehint_Justification = 2;
|
||||
Constant stylehint_NUMHINTS = 10;
|
||||
Constant stylehint_Oblique = 5;
|
||||
Constant stylehint_ParaIndentation = 1;
|
||||
Constant stylehint_Proportional = 6;
|
||||
Constant stylehint_ReverseColor = 9;
|
||||
Constant stylehint_Size = 3;
|
||||
Constant stylehint_TextColor = 7;
|
||||
Constant stylehint_Weight = 4;
|
||||
Constant stylehint_just_Centered = 2;
|
||||
Constant stylehint_just_LeftFlush = 0;
|
||||
Constant stylehint_just_LeftRight = 1;
|
||||
Constant stylehint_just_RightFlush = 3;
|
||||
Constant winmethod_Above = 2;
|
||||
Constant winmethod_Below = 3;
|
||||
Constant winmethod_Border = 0;
|
||||
Constant winmethod_BorderMask = 256;
|
||||
Constant winmethod_DirMask = 15;
|
||||
Constant winmethod_DivisionMask = 240;
|
||||
Constant winmethod_Fixed = 16;
|
||||
Constant winmethod_Left = 0;
|
||||
Constant winmethod_NoBorder = 256;
|
||||
Constant winmethod_Proportional = 32;
|
||||
Constant winmethod_Right = 1;
|
||||
Constant wintype_AllTypes = 0;
|
||||
Constant wintype_Blank = 2;
|
||||
Constant wintype_Graphics = 5;
|
||||
Constant wintype_Pair = 1;
|
||||
Constant wintype_TextBuffer = 3;
|
||||
Constant wintype_TextGrid = 4;
|
||||
|
||||
[ glk_exit _vararg_count;
|
||||
! glk_exit()
|
||||
@glk 1 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_tick _vararg_count;
|
||||
! glk_tick()
|
||||
@glk 3 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_gestalt _vararg_count ret;
|
||||
! glk_gestalt(uint, uint) => uint
|
||||
@glk 4 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_gestalt_ext _vararg_count ret;
|
||||
! glk_gestalt_ext(uint, uint, uintarray, arraylen) => uint
|
||||
@glk 5 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_iterate _vararg_count ret;
|
||||
! glk_window_iterate(window, &uint) => window
|
||||
@glk 32 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_get_rock _vararg_count ret;
|
||||
! glk_window_get_rock(window) => uint
|
||||
@glk 33 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_get_root _vararg_count ret;
|
||||
! glk_window_get_root() => window
|
||||
@glk 34 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_open _vararg_count ret;
|
||||
! glk_window_open(window, uint, uint, uint, uint) => window
|
||||
@glk 35 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_close _vararg_count;
|
||||
! glk_window_close(window, &{uint, uint})
|
||||
@glk 36 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_get_size _vararg_count;
|
||||
! glk_window_get_size(window, &uint, &uint)
|
||||
@glk 37 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_set_arrangement _vararg_count;
|
||||
! glk_window_set_arrangement(window, uint, uint, window)
|
||||
@glk 38 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_get_arrangement _vararg_count;
|
||||
! glk_window_get_arrangement(window, &uint, &uint, &window)
|
||||
@glk 39 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_get_type _vararg_count ret;
|
||||
! glk_window_get_type(window) => uint
|
||||
@glk 40 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_get_parent _vararg_count ret;
|
||||
! glk_window_get_parent(window) => window
|
||||
@glk 41 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_clear _vararg_count;
|
||||
! glk_window_clear(window)
|
||||
@glk 42 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_move_cursor _vararg_count;
|
||||
! glk_window_move_cursor(window, uint, uint)
|
||||
@glk 43 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_get_stream _vararg_count ret;
|
||||
! glk_window_get_stream(window) => stream
|
||||
@glk 44 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_set_echo_stream _vararg_count;
|
||||
! glk_window_set_echo_stream(window, stream)
|
||||
@glk 45 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_get_echo_stream _vararg_count ret;
|
||||
! glk_window_get_echo_stream(window) => stream
|
||||
@glk 46 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_set_window _vararg_count;
|
||||
! glk_set_window(window)
|
||||
@glk 47 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_get_sibling _vararg_count ret;
|
||||
! glk_window_get_sibling(window) => window
|
||||
@glk 48 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_iterate _vararg_count ret;
|
||||
! glk_stream_iterate(stream, &uint) => stream
|
||||
@glk 64 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_get_rock _vararg_count ret;
|
||||
! glk_stream_get_rock(stream) => uint
|
||||
@glk 65 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_open_file _vararg_count ret;
|
||||
! glk_stream_open_file(fileref, uint, uint) => stream
|
||||
@glk 66 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_open_memory _vararg_count ret;
|
||||
! glk_stream_open_memory(nativechararray, arraylen, uint, uint) => stream
|
||||
@glk 67 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_close _vararg_count;
|
||||
! glk_stream_close(stream, &{uint, uint})
|
||||
@glk 68 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_stream_set_position _vararg_count;
|
||||
! glk_stream_set_position(stream, int, uint)
|
||||
@glk 69 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_stream_get_position _vararg_count ret;
|
||||
! glk_stream_get_position(stream) => uint
|
||||
@glk 70 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_set_current _vararg_count;
|
||||
! glk_stream_set_current(stream)
|
||||
@glk 71 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_stream_get_current _vararg_count ret;
|
||||
! glk_stream_get_current() => stream
|
||||
@glk 72 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_open_resource _vararg_count ret;
|
||||
! glk_stream_open_resource(uint, uint) => stream
|
||||
@glk 73 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_fileref_create_temp _vararg_count ret;
|
||||
! glk_fileref_create_temp(uint, uint) => fileref
|
||||
@glk 96 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_fileref_create_by_name _vararg_count ret;
|
||||
! glk_fileref_create_by_name(uint, string, uint) => fileref
|
||||
@glk 97 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_fileref_create_by_prompt _vararg_count ret;
|
||||
! glk_fileref_create_by_prompt(uint, uint, uint) => fileref
|
||||
@glk 98 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_fileref_destroy _vararg_count;
|
||||
! glk_fileref_destroy(fileref)
|
||||
@glk 99 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_fileref_iterate _vararg_count ret;
|
||||
! glk_fileref_iterate(fileref, &uint) => fileref
|
||||
@glk 100 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_fileref_get_rock _vararg_count ret;
|
||||
! glk_fileref_get_rock(fileref) => uint
|
||||
@glk 101 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_fileref_delete_file _vararg_count;
|
||||
! glk_fileref_delete_file(fileref)
|
||||
@glk 102 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_fileref_does_file_exist _vararg_count ret;
|
||||
! glk_fileref_does_file_exist(fileref) => uint
|
||||
@glk 103 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_fileref_create_from_fileref _vararg_count ret;
|
||||
! glk_fileref_create_from_fileref(uint, fileref, uint) => fileref
|
||||
@glk 104 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_put_char _vararg_count;
|
||||
! glk_put_char(uchar)
|
||||
@glk 128 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_char_stream _vararg_count;
|
||||
! glk_put_char_stream(stream, uchar)
|
||||
@glk 129 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_string _vararg_count;
|
||||
! glk_put_string(string)
|
||||
@glk 130 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_string_stream _vararg_count;
|
||||
! glk_put_string_stream(stream, string)
|
||||
@glk 131 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_buffer _vararg_count;
|
||||
! glk_put_buffer(nativechararray, arraylen)
|
||||
@glk 132 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_buffer_stream _vararg_count;
|
||||
! glk_put_buffer_stream(stream, nativechararray, arraylen)
|
||||
@glk 133 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_set_style _vararg_count;
|
||||
! glk_set_style(uint)
|
||||
@glk 134 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_set_style_stream _vararg_count;
|
||||
! glk_set_style_stream(stream, uint)
|
||||
@glk 135 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_get_char_stream _vararg_count ret;
|
||||
! glk_get_char_stream(stream) => int
|
||||
@glk 144 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_get_line_stream _vararg_count ret;
|
||||
! glk_get_line_stream(stream, nativechararray, arraylen) => uint
|
||||
@glk 145 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_get_buffer_stream _vararg_count ret;
|
||||
! glk_get_buffer_stream(stream, nativechararray, arraylen) => uint
|
||||
@glk 146 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_char_to_lower _vararg_count ret;
|
||||
! glk_char_to_lower(uchar) => uchar
|
||||
@glk 160 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_char_to_upper _vararg_count ret;
|
||||
! glk_char_to_upper(uchar) => uchar
|
||||
@glk 161 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stylehint_set _vararg_count;
|
||||
! glk_stylehint_set(uint, uint, uint, int)
|
||||
@glk 176 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_stylehint_clear _vararg_count;
|
||||
! glk_stylehint_clear(uint, uint, uint)
|
||||
@glk 177 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_style_distinguish _vararg_count ret;
|
||||
! glk_style_distinguish(window, uint, uint) => uint
|
||||
@glk 178 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_style_measure _vararg_count ret;
|
||||
! glk_style_measure(window, uint, uint, &uint) => uint
|
||||
@glk 179 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_select _vararg_count;
|
||||
! glk_select(&{uint, window, uint, uint})
|
||||
@glk 192 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_select_poll _vararg_count;
|
||||
! glk_select_poll(&{uint, window, uint, uint})
|
||||
@glk 193 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_request_line_event _vararg_count;
|
||||
! glk_request_line_event(window, nativechararray, arraylen, uint)
|
||||
@glk 208 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_cancel_line_event _vararg_count;
|
||||
! glk_cancel_line_event(window, &{uint, window, uint, uint})
|
||||
@glk 209 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_request_char_event _vararg_count;
|
||||
! glk_request_char_event(window)
|
||||
@glk 210 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_cancel_char_event _vararg_count;
|
||||
! glk_cancel_char_event(window)
|
||||
@glk 211 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_request_mouse_event _vararg_count;
|
||||
! glk_request_mouse_event(window)
|
||||
@glk 212 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_cancel_mouse_event _vararg_count;
|
||||
! glk_cancel_mouse_event(window)
|
||||
@glk 213 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_request_timer_events _vararg_count;
|
||||
! glk_request_timer_events(uint)
|
||||
@glk 214 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_image_get_info _vararg_count ret;
|
||||
! glk_image_get_info(uint, &uint, &uint) => uint
|
||||
@glk 224 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_image_draw _vararg_count ret;
|
||||
! glk_image_draw(window, uint, int, int) => uint
|
||||
@glk 225 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_image_draw_scaled _vararg_count ret;
|
||||
! glk_image_draw_scaled(window, uint, int, int, uint, uint) => uint
|
||||
@glk 226 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_window_flow_break _vararg_count;
|
||||
! glk_window_flow_break(window)
|
||||
@glk 232 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_erase_rect _vararg_count;
|
||||
! glk_window_erase_rect(window, int, int, uint, uint)
|
||||
@glk 233 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_fill_rect _vararg_count;
|
||||
! glk_window_fill_rect(window, uint, int, int, uint, uint)
|
||||
@glk 234 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_window_set_background_color _vararg_count;
|
||||
! glk_window_set_background_color(window, uint)
|
||||
@glk 235 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_schannel_iterate _vararg_count ret;
|
||||
! glk_schannel_iterate(schannel, &uint) => schannel
|
||||
@glk 240 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_schannel_get_rock _vararg_count ret;
|
||||
! glk_schannel_get_rock(schannel) => uint
|
||||
@glk 241 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_schannel_create _vararg_count ret;
|
||||
! glk_schannel_create(uint) => schannel
|
||||
@glk 242 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_schannel_destroy _vararg_count;
|
||||
! glk_schannel_destroy(schannel)
|
||||
@glk 243 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_schannel_create_ext _vararg_count ret;
|
||||
! glk_schannel_create_ext(uint, uint) => schannel
|
||||
@glk 244 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_schannel_play_multi _vararg_count ret;
|
||||
! glk_schannel_play_multi(schannelarray, arraylen, uintarray, arraylen, uint) => uint
|
||||
@glk 247 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_schannel_play _vararg_count ret;
|
||||
! glk_schannel_play(schannel, uint) => uint
|
||||
@glk 248 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_schannel_play_ext _vararg_count ret;
|
||||
! glk_schannel_play_ext(schannel, uint, uint, uint) => uint
|
||||
@glk 249 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_schannel_stop _vararg_count;
|
||||
! glk_schannel_stop(schannel)
|
||||
@glk 250 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_schannel_set_volume _vararg_count;
|
||||
! glk_schannel_set_volume(schannel, uint)
|
||||
@glk 251 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_sound_load_hint _vararg_count;
|
||||
! glk_sound_load_hint(uint, uint)
|
||||
@glk 252 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_schannel_set_volume_ext _vararg_count;
|
||||
! glk_schannel_set_volume_ext(schannel, uint, uint, uint)
|
||||
@glk 253 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_schannel_pause _vararg_count;
|
||||
! glk_schannel_pause(schannel)
|
||||
@glk 254 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_schannel_unpause _vararg_count;
|
||||
! glk_schannel_unpause(schannel)
|
||||
@glk 255 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_set_hyperlink _vararg_count;
|
||||
! glk_set_hyperlink(uint)
|
||||
@glk 256 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_set_hyperlink_stream _vararg_count;
|
||||
! glk_set_hyperlink_stream(stream, uint)
|
||||
@glk 257 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_request_hyperlink_event _vararg_count;
|
||||
! glk_request_hyperlink_event(window)
|
||||
@glk 258 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_cancel_hyperlink_event _vararg_count;
|
||||
! glk_cancel_hyperlink_event(window)
|
||||
@glk 259 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_buffer_to_lower_case_uni _vararg_count ret;
|
||||
! glk_buffer_to_lower_case_uni(uintarray, arraylen, uint) => uint
|
||||
@glk 288 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_buffer_to_upper_case_uni _vararg_count ret;
|
||||
! glk_buffer_to_upper_case_uni(uintarray, arraylen, uint) => uint
|
||||
@glk 289 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_buffer_to_title_case_uni _vararg_count ret;
|
||||
! glk_buffer_to_title_case_uni(uintarray, arraylen, uint, uint) => uint
|
||||
@glk 290 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_buffer_canon_decompose_uni _vararg_count ret;
|
||||
! glk_buffer_canon_decompose_uni(uintarray, arraylen, uint) => uint
|
||||
@glk 291 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_buffer_canon_normalize_uni _vararg_count ret;
|
||||
! glk_buffer_canon_normalize_uni(uintarray, arraylen, uint) => uint
|
||||
@glk 292 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_put_char_uni _vararg_count;
|
||||
! glk_put_char_uni(uint)
|
||||
@glk 296 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_string_uni _vararg_count;
|
||||
! glk_put_string_uni(unicode)
|
||||
@glk 297 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_buffer_uni _vararg_count;
|
||||
! glk_put_buffer_uni(uintarray, arraylen)
|
||||
@glk 298 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_char_stream_uni _vararg_count;
|
||||
! glk_put_char_stream_uni(stream, uint)
|
||||
@glk 299 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_string_stream_uni _vararg_count;
|
||||
! glk_put_string_stream_uni(stream, unicode)
|
||||
@glk 300 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_put_buffer_stream_uni _vararg_count;
|
||||
! glk_put_buffer_stream_uni(stream, uintarray, arraylen)
|
||||
@glk 301 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_get_char_stream_uni _vararg_count ret;
|
||||
! glk_get_char_stream_uni(stream) => int
|
||||
@glk 304 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_get_buffer_stream_uni _vararg_count ret;
|
||||
! glk_get_buffer_stream_uni(stream, uintarray, arraylen) => uint
|
||||
@glk 305 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_get_line_stream_uni _vararg_count ret;
|
||||
! glk_get_line_stream_uni(stream, uintarray, arraylen) => uint
|
||||
@glk 306 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_open_file_uni _vararg_count ret;
|
||||
! glk_stream_open_file_uni(fileref, uint, uint) => stream
|
||||
@glk 312 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_open_memory_uni _vararg_count ret;
|
||||
! glk_stream_open_memory_uni(uintarray, arraylen, uint, uint) => stream
|
||||
@glk 313 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_stream_open_resource_uni _vararg_count ret;
|
||||
! glk_stream_open_resource_uni(uint, uint) => stream
|
||||
@glk 314 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_request_char_event_uni _vararg_count;
|
||||
! glk_request_char_event_uni(window)
|
||||
@glk 320 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_request_line_event_uni _vararg_count;
|
||||
! glk_request_line_event_uni(window, uintarray, arraylen, uint)
|
||||
@glk 321 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_set_echo_line_event _vararg_count;
|
||||
! glk_set_echo_line_event(window, uint)
|
||||
@glk 336 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_set_terminators_line_event _vararg_count;
|
||||
! glk_set_terminators_line_event(window, uintarray, arraylen)
|
||||
@glk 337 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_current_time _vararg_count;
|
||||
! glk_current_time(&{int, uint, int})
|
||||
@glk 352 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_current_simple_time _vararg_count ret;
|
||||
! glk_current_simple_time(uint) => int
|
||||
@glk 353 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_time_to_date_utc _vararg_count;
|
||||
! glk_time_to_date_utc(&{int, uint, int}, &{int, int, int, int, int, int, int, int})
|
||||
@glk 360 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_time_to_date_local _vararg_count;
|
||||
! glk_time_to_date_local(&{int, uint, int}, &{int, int, int, int, int, int, int, int})
|
||||
@glk 361 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_simple_time_to_date_utc _vararg_count;
|
||||
! glk_simple_time_to_date_utc(int, uint, &{int, int, int, int, int, int, int, int})
|
||||
@glk 362 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_simple_time_to_date_local _vararg_count;
|
||||
! glk_simple_time_to_date_local(int, uint, &{int, int, int, int, int, int, int, int})
|
||||
@glk 363 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_date_to_time_utc _vararg_count;
|
||||
! glk_date_to_time_utc(&{int, int, int, int, int, int, int, int}, &{int, uint, int})
|
||||
@glk 364 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_date_to_time_local _vararg_count;
|
||||
! glk_date_to_time_local(&{int, int, int, int, int, int, int, int}, &{int, uint, int})
|
||||
@glk 365 _vararg_count 0;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ glk_date_to_simple_time_utc _vararg_count ret;
|
||||
! glk_date_to_simple_time_utc(&{int, int, int, int, int, int, int, int}, uint) => int
|
||||
@glk 366 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
||||
[ glk_date_to_simple_time_local _vararg_count ret;
|
||||
! glk_date_to_simple_time_local(&{int, int, int, int, int, int, int, int}, uint) => int
|
||||
@glk 367 _vararg_count ret;
|
||||
return ret;
|
||||
];
|
||||
|
|
@ -0,0 +1,743 @@
|
|||
Input Output Template.
|
||||
|
||||
Access to the keyboard and to textual windows.
|
||||
|
||||
@h Variables and Arrays.
|
||||
|
||||
=
|
||||
Array gg_event --> 4;
|
||||
Array gg_arguments buffer 28;
|
||||
Global gg_mainwin = 0;
|
||||
Global gg_statuswin = 0;
|
||||
Global gg_quotewin = 0;
|
||||
Global gg_scriptfref = 0;
|
||||
Global gg_scriptstr = 0;
|
||||
Global gg_savestr = 0;
|
||||
Global gg_commandstr = 0;
|
||||
Global gg_command_reading = 0; ! true if gg_commandstr is being replayed
|
||||
Global gg_foregroundchan = 0;
|
||||
Global gg_backgroundchan = 0;
|
||||
|
||||
Constant INPUT_BUFFER_LEN = 260; ! No extra byte necessary
|
||||
Constant MAX_BUFFER_WORDS = 20;
|
||||
Constant PARSE_BUFFER_LEN = 61;
|
||||
|
||||
Array buffer --> INPUT_BUFFER_LEN;
|
||||
Array buffer2 --> INPUT_BUFFER_LEN;
|
||||
Array buffer3 --> INPUT_BUFFER_LEN;
|
||||
Array parse --> PARSE_BUFFER_LEN;
|
||||
Array parse2 --> PARSE_BUFFER_LEN;
|
||||
|
||||
@h Rocks.
|
||||
These are unique ID codes used to mark resources; think of them as inedible
|
||||
cookies.
|
||||
|
||||
=
|
||||
Constant GG_MAINWIN_ROCK 201;
|
||||
Constant GG_STATUSWIN_ROCK 202;
|
||||
Constant GG_QUOTEWIN_ROCK 203;
|
||||
Constant GG_SAVESTR_ROCK 301;
|
||||
Constant GG_SCRIPTSTR_ROCK 302;
|
||||
Constant GG_COMMANDWSTR_ROCK 303;
|
||||
Constant GG_COMMANDRSTR_ROCK 304;
|
||||
Constant GG_SCRIPTFREF_ROCK 401;
|
||||
Constant GG_FOREGROUNDCHAN_ROCK 410;
|
||||
Constant GG_BACKGROUNDCHAN_ROCK 411;
|
||||
|
||||
@h Keyboard Input.
|
||||
The VM must provide three routines for keyboard input:
|
||||
|
||||
(a) |VM_KeyChar()| waits for a key to be pressed and then returns the
|
||||
character chosen as a ZSCII character.
|
||||
(b) |VM_KeyDelay(N)| waits up to $N/10$ seconds for a key to be pressed,
|
||||
returning the ZSCII character if so, or 0 if not.
|
||||
(c) |VM_ReadKeyboard(b, t)| reads a whole newline-terminated command
|
||||
into the buffer |b|, then parses it into a word stream in the table |t|.
|
||||
|
||||
There are elaborations to do with mouse clicks, but this isn't the place
|
||||
to document all of that.
|
||||
|
||||
=
|
||||
[ VM_KeyChar win nostat done res ix jx ch;
|
||||
jx = ch; ! squash compiler warnings
|
||||
if (win == 0) win = gg_mainwin;
|
||||
if (gg_commandstr ~= 0 && gg_command_reading ~= false) {
|
||||
done = glk_get_line_stream(gg_commandstr, gg_arguments, 31);
|
||||
if (done == 0) {
|
||||
glk_stream_close(gg_commandstr, 0);
|
||||
gg_commandstr = 0;
|
||||
gg_command_reading = false;
|
||||
! fall through to normal user input.
|
||||
} else {
|
||||
! Trim the trailing newline
|
||||
if (gg_arguments->(done-1) == 10) done = done-1;
|
||||
res = gg_arguments->0;
|
||||
if (res == '\') {
|
||||
res = 0;
|
||||
for (ix=1 : ix<done : ix++) {
|
||||
ch = gg_arguments->ix;
|
||||
if (ch >= '0' && ch <= '9') {
|
||||
@shiftl res 4 res;
|
||||
res = res + (ch-'0');
|
||||
} else if (ch >= 'a' && ch <= 'f') {
|
||||
@shiftl res 4 res;
|
||||
res = res + (ch+10-'a');
|
||||
} else if (ch >= 'A' && ch <= 'F') {
|
||||
@shiftl res 4 res;
|
||||
res = res + (ch+10-'A');
|
||||
}
|
||||
}
|
||||
}
|
||||
jump KCPContinue;
|
||||
}
|
||||
}
|
||||
done = false;
|
||||
glk_request_char_event(win);
|
||||
while (~~done) {
|
||||
glk_select(gg_event);
|
||||
switch (gg_event-->0) {
|
||||
5: ! evtype_Arrange
|
||||
if (nostat) {
|
||||
glk_cancel_char_event(win);
|
||||
res = $80000000;
|
||||
done = true;
|
||||
break;
|
||||
}
|
||||
DrawStatusLine();
|
||||
2: ! evtype_CharInput
|
||||
if (gg_event-->1 == win) {
|
||||
res = gg_event-->2;
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
ix = HandleGlkEvent(gg_event, 1, gg_arguments);
|
||||
if (ix == 2) {
|
||||
res = gg_arguments-->0;
|
||||
done = true;
|
||||
} else if (ix == -1) done = false;
|
||||
}
|
||||
if (gg_commandstr ~= 0 && gg_command_reading == false) {
|
||||
if (res < 32 || res >= 256 || (res == '\' or ' ')) {
|
||||
glk_put_char_stream(gg_commandstr, '\');
|
||||
done = 0;
|
||||
jx = res;
|
||||
for (ix=0 : ix<8 : ix++) {
|
||||
@ushiftr jx 28 ch;
|
||||
@shiftl jx 4 jx;
|
||||
ch = ch & $0F;
|
||||
if (ch ~= 0 || ix == 7) done = 1;
|
||||
if (done) {
|
||||
if (ch >= 0 && ch <= 9) ch = ch + '0';
|
||||
else ch = (ch - 10) + 'A';
|
||||
glk_put_char_stream(gg_commandstr, ch);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
glk_put_char_stream(gg_commandstr, res);
|
||||
}
|
||||
glk_put_char_stream(gg_commandstr, 10); ! newline
|
||||
}
|
||||
.KCPContinue;
|
||||
return res;
|
||||
];
|
||||
|
||||
[ VM_KeyDelay tenths key done ix;
|
||||
glk_request_char_event(gg_mainwin);
|
||||
glk_request_timer_events(tenths*100);
|
||||
while (~~done) {
|
||||
glk_select(gg_event);
|
||||
ix = HandleGlkEvent(gg_event, 1, gg_arguments);
|
||||
if (ix == 2) {
|
||||
key = gg_arguments-->0;
|
||||
done = true;
|
||||
}
|
||||
else if (ix >= 0 && gg_event-->0 == 1 or 2) {
|
||||
key = gg_event-->2;
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
glk_cancel_char_event(gg_mainwin);
|
||||
glk_request_timer_events(0);
|
||||
return key;
|
||||
];
|
||||
|
||||
[ VM_ReadKeyboard a_buffer a_table done ix;
|
||||
if (gg_commandstr ~= 0 && gg_command_reading ~= false) {
|
||||
done = glk_get_line_stream_uni(gg_commandstr, a_buffer+WORDSIZE,
|
||||
(INPUT_BUFFER_LEN-1)-1);
|
||||
if (done == 0) {
|
||||
glk_stream_close(gg_commandstr, 0);
|
||||
gg_commandstr = 0;
|
||||
gg_command_reading = false;
|
||||
}
|
||||
else {
|
||||
! Trim the trailing newline
|
||||
if ((a_buffer+WORDSIZE)-->(done-1) == 10) done = done-1;
|
||||
a_buffer-->0 = done;
|
||||
VM_Style(INPUT_VMSTY);
|
||||
glk_put_buffer_uni(a_buffer+WORDSIZE, done);
|
||||
VM_Style(NORMAL_VMSTY);
|
||||
print "^";
|
||||
jump KPContinue;
|
||||
}
|
||||
}
|
||||
done = false;
|
||||
glk_request_line_event_uni(gg_mainwin, a_buffer+WORDSIZE, INPUT_BUFFER_LEN-1, 0);
|
||||
while (~~done) {
|
||||
glk_select(gg_event);
|
||||
switch (gg_event-->0) {
|
||||
5: ! evtype_Arrange
|
||||
DrawStatusLine();
|
||||
3: ! evtype_LineInput
|
||||
if (gg_event-->1 == gg_mainwin) {
|
||||
a_buffer-->0 = gg_event-->2;
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
ix = HandleGlkEvent(gg_event, 0, a_buffer);
|
||||
if (ix == 2) done = true;
|
||||
else if (ix == -1) done = false;
|
||||
}
|
||||
if (gg_commandstr ~= 0 && gg_command_reading == false) {
|
||||
glk_put_buffer_stream(gg_commandstr, a_buffer+WORDSIZE, a_buffer-->0);
|
||||
glk_put_char_stream(gg_commandstr, 10); ! newline
|
||||
}
|
||||
.KPContinue;
|
||||
VM_Tokenise(a_buffer,a_table);
|
||||
! It's time to close any quote window we've got going.
|
||||
if (gg_quotewin) {
|
||||
glk_window_close(gg_quotewin, 0);
|
||||
gg_quotewin = 0;
|
||||
}
|
||||
if (BasicInformKit`ECHO_COMMANDS_CFGF) {
|
||||
print "** ";
|
||||
for (ix=0: ix<(a_buffer-->0): ix++) print (char) a_buffer-->(1+ix);
|
||||
print "^";
|
||||
}
|
||||
];
|
||||
|
||||
@h Buffer Functions.
|
||||
A "buffer", in this sense, is an array containing a stream of characters
|
||||
typed from the keyboard; a "parse buffer" is an array which resolves this
|
||||
into individual words, pointing to the relevant entries in the dictionary
|
||||
structure. Because each VM has its own format for each of these arrays (not
|
||||
to mention the dictionary), we have to provide some standard operations
|
||||
needed by the rest of the template as routines for each VM.
|
||||
|
||||
|VM_CopyBuffer(to, from)| copies one buffer into another.
|
||||
|
||||
|VM_Tokenise(buff, parse_buff)| takes the text in the buffer |buff| and
|
||||
produces the corresponding data in the parse buffer |parse_buff| -- this is
|
||||
called tokenisation since the characters are divided into words: in traditional
|
||||
computing jargon, such clumps of characters treated syntactically as units
|
||||
are called tokens.
|
||||
|
||||
|LTI_Insert| is documented in the DM4 and the |LTI| prefix stands for
|
||||
"Language To Informese": it's used only by translations into non-English
|
||||
languages of play, and is not called in the template.
|
||||
|
||||
=
|
||||
[ VM_CopyBuffer bto bfrom i;
|
||||
for (i=0: i<INPUT_BUFFER_LEN: i++) bto-->i = bfrom-->i;
|
||||
];
|
||||
|
||||
[ VM_PrintToBuffer buf len a b c;
|
||||
if (b) {
|
||||
if (metaclass(a) == Object && a.#b == WORDSIZE
|
||||
&& metaclass(a.b) == String)
|
||||
buf-->0 = Glulx_PrintAnyToArrayUni(buf+WORDSIZE, len, a.b);
|
||||
else if (metaclass(a) == Routine)
|
||||
buf-->0 = Glulx_PrintAnyToArrayUni(buf+WORDSIZE, len, a, b, c);
|
||||
else
|
||||
buf-->0 = Glulx_PrintAnyToArrayUni(buf+WORDSIZE, len, a, b);
|
||||
}
|
||||
else if (metaclass(a) == Routine)
|
||||
buf-->0 = Glulx_PrintAnyToArrayUni(buf+WORDSIZE, len, a, b, c);
|
||||
else
|
||||
buf-->0 = Glulx_PrintAnyToArrayUni(buf+WORDSIZE, len, a);
|
||||
if (buf-->0 > len) buf-->0 = len;
|
||||
return buf-->0;
|
||||
];
|
||||
|
||||
Constant LOWERCASE_BUF_SIZE = 2*DICT_WORD_SIZE;
|
||||
Array gg_lowercasebuf --> LOWERCASE_BUF_SIZE;
|
||||
|
||||
[ VM_Tokenise buf tab
|
||||
cx numwords len bx ix wx wpos wlen val res dictlen ch bytesperword uninormavail;
|
||||
len = buf-->0;
|
||||
buf = buf+WORDSIZE;
|
||||
|
||||
! First, split the buffer up into words. We use the standard Infocom
|
||||
! list of word separators (comma, period, double-quote).
|
||||
|
||||
cx = 0;
|
||||
numwords = 0;
|
||||
while (cx < len) {
|
||||
while (cx < len && buf-->cx == ' ') cx++;
|
||||
if (cx >= len) break;
|
||||
bx = cx;
|
||||
if (buf-->cx == '.' or ',' or '"') cx++;
|
||||
else {
|
||||
while (cx < len && buf-->cx ~= ' ' or '.' or ',' or '"') cx++;
|
||||
}
|
||||
tab-->(numwords*3+2) = (cx-bx);
|
||||
tab-->(numwords*3+3) = 1+bx;
|
||||
numwords++;
|
||||
if (numwords >= MAX_BUFFER_WORDS) break;
|
||||
}
|
||||
tab-->0 = numwords;
|
||||
|
||||
! Now we look each word up in the dictionary.
|
||||
|
||||
dictlen = #dictionary_table-->0;
|
||||
bytesperword = DICT_WORD_SIZE * WORDSIZE;
|
||||
uninormavail = glk_gestalt(16, 0);
|
||||
|
||||
for (wx=0 : wx<numwords : wx++) {
|
||||
wlen = tab-->(wx*3+2);
|
||||
wpos = tab-->(wx*3+3);
|
||||
|
||||
! Copy the word into the gg_tokenbuf array, clipping to DICT_WORD_SIZE
|
||||
! characters and lower case. We'll do this in two steps, because
|
||||
! lowercasing might (theoretically) condense characters and allow more
|
||||
! to fit into gg_tokenbuf.
|
||||
if (wlen > LOWERCASE_BUF_SIZE) wlen = LOWERCASE_BUF_SIZE;
|
||||
cx = wpos - 1;
|
||||
for (ix=0 : ix<wlen : ix++) {
|
||||
ch = buf-->(cx+ix);
|
||||
gg_lowercasebuf-->ix = ch;
|
||||
}
|
||||
wlen = glk_buffer_to_lower_case_uni(gg_lowercasebuf, LOWERCASE_BUF_SIZE, wlen);
|
||||
if (uninormavail) {
|
||||
! Also normalize the Unicode -- combine accent marks with letters
|
||||
! where possible.
|
||||
wlen = glk_buffer_canon_normalize_uni(gg_lowercasebuf, LOWERCASE_BUF_SIZE, wlen); ! buffer_canon_normalize_uni
|
||||
}
|
||||
if (wlen > DICT_WORD_SIZE) wlen = DICT_WORD_SIZE;
|
||||
for (ix=0: ix<wlen : ix++) {
|
||||
gg_tokenbuf-->ix = gg_lowercasebuf-->ix;
|
||||
}
|
||||
for (: ix<DICT_WORD_SIZE : ix++) gg_tokenbuf-->ix = 0;
|
||||
|
||||
val = #dictionary_table + WORDSIZE;
|
||||
@binarysearch gg_tokenbuf bytesperword val DICT_ENTRY_BYTES dictlen 4 1 res;
|
||||
tab-->(wx*3+1) = res;
|
||||
}
|
||||
];
|
||||
|
||||
[ LTI_Insert i ch b y;
|
||||
|
||||
! Protect us from strict mode, as this isn't an array in quite the
|
||||
! sense it expects
|
||||
! (This is not an issue now that buffer is a word array, but I'm
|
||||
! keeping the alias.)
|
||||
b = buffer;
|
||||
|
||||
! Insert character ch into buffer at point i.
|
||||
! Being careful not to let the buffer possibly overflow:
|
||||
y = b-->0;
|
||||
if (y > INPUT_BUFFER_LEN) y = INPUT_BUFFER_LEN;
|
||||
|
||||
! Move the subsequent text along one character:
|
||||
for (y=y+1 : y>i : y--) b-->y = b-->(y-1);
|
||||
b-->i = ch;
|
||||
|
||||
! And the text is now one character longer:
|
||||
if (b-->0 < INPUT_BUFFER_LEN) (b-->0)++;
|
||||
];
|
||||
|
||||
@h Dictionary Functions.
|
||||
Again, the dictionary structure is differently arranged on the different VMs.
|
||||
This is a data structure containing, in compressed form, the text of all the
|
||||
words to be recognised by tokenisation (above). In I6 for Glulx, a dictionary
|
||||
word is represented at run-time by its record's address in the dictionary.
|
||||
|
||||
|VM_InvalidDictionaryAddress(A)| tests whether |A| is a valid record address
|
||||
in the dictionary data structure. In Glulx, dictionary records might in
|
||||
theory be anywhere in the 2 GB or so of possible memory, but we can rule
|
||||
out negative addresses. (This allows $-1$, say, to be used as a value meaning
|
||||
"not a valid dictionary word".)
|
||||
|
||||
|VM_DictionaryAddressToNumber(A)| and |VM_NumberToDictionaryAddress(N)|
|
||||
convert between word addresses and their run-time representations:
|
||||
since, on Glulx, they are the same, these are each the identity function.
|
||||
|
||||
=
|
||||
[ VM_InvalidDictionaryAddress addr;
|
||||
if (addr < 0) rtrue;
|
||||
rfalse;
|
||||
];
|
||||
|
||||
[ VM_DictionaryAddressToNumber w; return w; ];
|
||||
[ VM_NumberToDictionaryAddress n; return n; ];
|
||||
|
||||
Array gg_tokenbuf --> DICT_WORD_SIZE;
|
||||
|
||||
[ GGWordCompare str1 str2 ix jx;
|
||||
for (ix=0 : ix<DICT_WORD_SIZE : ix++) {
|
||||
jx = (str1-->ix) - (str2-->ix);
|
||||
if (jx ~= 0) return jx;
|
||||
}
|
||||
return 0;
|
||||
];
|
||||
|
||||
@h Command Tables.
|
||||
The VM is also generated containing a data structure for the grammar
|
||||
produced by I6's |Verb| and |Extend| directives: this is essentially a
|
||||
list of command verbs such as DROP or PUSH, together with a list of
|
||||
synonyms, and then the grammar for the subsequent commands to be
|
||||
recognised by the parser.
|
||||
|
||||
=
|
||||
[ VM_CommandTableAddress i;
|
||||
return (#grammar_table)-->(i+1);
|
||||
];
|
||||
|
||||
[ VM_PrintCommandWords i wd j dictlen entrylen;
|
||||
dictlen = #dictionary_table-->0;
|
||||
entrylen = DICT_WORD_SIZE + 7;
|
||||
for (j=0 : j<dictlen : j++) {
|
||||
wd = #dictionary_table + WORDSIZE + entrylen*j;
|
||||
if (DictionaryWordToVerbNum(wd) == i)
|
||||
print "'", (address) wd, "' ";
|
||||
}
|
||||
];
|
||||
|
||||
@h Glulx-Only Printing Routines.
|
||||
Partly because of the smallness of the range of representable values in
|
||||
the Z-machine, there is little run-time type-checking that can be done:
|
||||
for instance a dictionary address cannot be distinguished from a function
|
||||
address because they are encoded differently, so that a function address
|
||||
(which is packed) could well coincide with that of a dictionary word (which
|
||||
is not). On Glulx these restrictions are somewhat lifted, so that it's
|
||||
possible to write a routine which can look at a value, work out what it
|
||||
must mean, and print it suitably. This is only possible up to a point --
|
||||
for instance, it can't distinguish an integer from a function address --
|
||||
and in I7 the use of this sort of trick is much less important because
|
||||
type-checking in the Inform compiler handles the problem much better. Still,
|
||||
we retain some Glulx-only features because they are convenient for writing
|
||||
external files to disc, for instance, something which the Z-machine can't
|
||||
do in any case.
|
||||
|
||||
|Glulx_PrintAnything| handles strings, functions (with optional arguments),
|
||||
objects, object properties (with optional arguments), and dictionary words.
|
||||
(Object property printing has been somewhat simplified from the ideal version
|
||||
of this function in order to avoid calling the CA__Pr veneer function.)
|
||||
|
||||
|Glulx_PrintAnyToArray| does the same, but the output is sent to a byte
|
||||
array in memory. The first two arguments must be the array address and
|
||||
length; subsequent arguments are as for |Glulx_PrintAnything|. The return
|
||||
value is the number of characters output. If the output is longer than the
|
||||
array length given, the extra characters are discarded, so the array does
|
||||
not overflow. (However, the return value is the total length of the output,
|
||||
including discarded characters.) The character set stored here is ZSCII,
|
||||
not Unicode.
|
||||
|
||||
|Glulx_PrintAnyToArrayUni| does the same again, but the output is sent to a
|
||||
word array in memory. The stored characters are Unicode code points.
|
||||
|
||||
|Glulx_ChangeAnyToCString| calls |Glulx_PrintAnyToArray| on a particular
|
||||
array, then amends the result to make it a C-style string -- that is, a
|
||||
sequence of byte-sized characters which are null terminated. The character
|
||||
set stored here is once again ZSCII, not Unicode.
|
||||
|
||||
=
|
||||
! Glulx_PrintAnything() <nothing printed>
|
||||
! Glulx_PrintAnything(0) <nothing printed>
|
||||
! Glulx_PrintAnything("string"); print (string) "string";
|
||||
! Glulx_PrintAnything('word') print (address) 'word';
|
||||
! Glulx_PrintAnything(obj) print (name) obj;
|
||||
! Glulx_PrintAnything(obj, prop) obj.prop(); NOTE: Using PrintOrRun
|
||||
! Glulx_PrintAnything(obj, prop, args...) obj.prop(args...); NOTE: Unsupported
|
||||
! Glulx_PrintAnything(func) func();
|
||||
! Glulx_PrintAnything(func, args...) func(args...);
|
||||
|
||||
[ Glulx_PrintAnything _vararg_count obj mclass;
|
||||
if (_vararg_count == 0) return;
|
||||
@copy sp obj;
|
||||
_vararg_count--;
|
||||
if (obj == 0) return;
|
||||
|
||||
if (obj->0 == $60) {
|
||||
! Dictionary word. Metaclass() can't catch this case, so we do it manually
|
||||
print (address) obj;
|
||||
return;
|
||||
}
|
||||
|
||||
mclass = metaclass(obj);
|
||||
switch (mclass) {
|
||||
nothing:
|
||||
return;
|
||||
String:
|
||||
print (string) obj;
|
||||
return;
|
||||
Routine:
|
||||
! Call the function with all the arguments which are already
|
||||
! on the stack.
|
||||
@call obj _vararg_count 0;
|
||||
return;
|
||||
Object:
|
||||
if (_vararg_count == 0) {
|
||||
print (name) obj;
|
||||
}
|
||||
else {
|
||||
! Push the object back onto the stack, and call the
|
||||
! veneer routine that handles obj.prop() calls.
|
||||
@copy obj sp;
|
||||
_vararg_count++;
|
||||
@call PrintOrRun _vararg_count 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
];
|
||||
|
||||
[ Glulx_PrintAnyToArray _vararg_count arr arrlen str oldstr len;
|
||||
@copy sp arr;
|
||||
@copy sp arrlen;
|
||||
_vararg_count = _vararg_count - 2;
|
||||
|
||||
oldstr = glk_stream_get_current();
|
||||
str = glk_stream_open_memory(arr, arrlen, 1, 0);
|
||||
if (str == 0) return 0;
|
||||
|
||||
glk_stream_set_current(str);
|
||||
|
||||
@call Glulx_PrintAnything _vararg_count 0;
|
||||
|
||||
glk_stream_set_current(oldstr);
|
||||
@copy $ffffffff sp;
|
||||
@copy str sp;
|
||||
@glk $0044 2 0; ! stream_close
|
||||
@copy sp len;
|
||||
@copy sp 0;
|
||||
return len;
|
||||
];
|
||||
|
||||
[ Glulx_PrintAnyToArrayUni _vararg_count arr arrlen str oldstr len;
|
||||
@copy sp arr;
|
||||
@copy sp arrlen;
|
||||
_vararg_count = _vararg_count - 2;
|
||||
|
||||
oldstr = glk_stream_get_current();
|
||||
str = glk_stream_open_memory_uni(arr, arrlen, 1, 0);
|
||||
if (str == 0) return 0;
|
||||
|
||||
glk_stream_set_current(str);
|
||||
|
||||
@call Glulx_PrintAnything _vararg_count 0;
|
||||
|
||||
glk_stream_set_current(oldstr);
|
||||
@copy $ffffffff sp;
|
||||
@copy str sp;
|
||||
@glk $0044 2 0; ! stream_close
|
||||
@copy sp len;
|
||||
@copy sp 0;
|
||||
return len;
|
||||
];
|
||||
|
||||
Constant GG_ANYTOSTRING_LEN 66;
|
||||
Array AnyToStrArr -> GG_ANYTOSTRING_LEN+1;
|
||||
|
||||
[ Glulx_ChangeAnyToCString _vararg_count ix len;
|
||||
ix = GG_ANYTOSTRING_LEN-2;
|
||||
@copy ix sp;
|
||||
ix = AnyToStrArr+1;
|
||||
@copy ix sp;
|
||||
ix = _vararg_count+2;
|
||||
@call Glulx_PrintAnyToArray ix len;
|
||||
AnyToStrArr->0 = $E0;
|
||||
if (len >= GG_ANYTOSTRING_LEN)
|
||||
len = GG_ANYTOSTRING_LEN-1;
|
||||
AnyToStrArr->(len+1) = 0;
|
||||
return AnyToStrArr;
|
||||
];
|
||||
|
||||
@h The Screen.
|
||||
Our generic screen model is that the screen is made up of windows: we tend
|
||||
to refer only to two of these, the main window and the status line, but
|
||||
others may also exist from time to time. Windows have unique ID numbers:
|
||||
the special window ID $-1$ means "all windows" or "the entire screen",
|
||||
which usually amounts to the same thing.
|
||||
|
||||
Screen height and width are measured in characters, with respect to the
|
||||
fixed-pitch font used for the status line. The main window normally contains
|
||||
variable-pitch text which may even have been kerned, and character dimensions
|
||||
make little sense there.
|
||||
|
||||
=
|
||||
[ VM_ClearScreen window;
|
||||
if (window == WIN_ALL or WIN_MAIN) {
|
||||
glk_window_clear(gg_mainwin);
|
||||
if (gg_quotewin) {
|
||||
glk_window_close(gg_quotewin, 0);
|
||||
gg_quotewin = 0;
|
||||
}
|
||||
}
|
||||
if (gg_statuswin && window == WIN_ALL or WIN_STATUS) glk_window_clear(gg_statuswin);
|
||||
];
|
||||
|
||||
[ VM_ScreenWidth id;
|
||||
id=gg_mainwin;
|
||||
if (gg_statuswin && statuswin_current) id = gg_statuswin;
|
||||
glk_window_get_size(id, gg_arguments, 0);
|
||||
return gg_arguments-->0;
|
||||
];
|
||||
|
||||
[ VM_ScreenHeight;
|
||||
glk_window_get_size(gg_mainwin, 0, gg_arguments);
|
||||
return gg_arguments-->0;
|
||||
];
|
||||
|
||||
@h Window Colours.
|
||||
Our generic screen model is that the screen is made up of windows, each of
|
||||
which can have its own foreground and background colours.
|
||||
|
||||
The colour of individual letters or words of type is not controllable in
|
||||
Glulx, to the frustration of many, and so the template layer of I7 has no
|
||||
framework for handling this (even though it is controllable on the Z-machine,
|
||||
which is greatly superior in this respect).
|
||||
|
||||
=
|
||||
[ VM_SetWindowColours f b window doclear i fwd bwd swin;
|
||||
if (clr_on && f && b) {
|
||||
if (window) swin = 5-window; ! 4 for TextGrid, 3 for TextBuffer
|
||||
|
||||
fwd = MakeColourWord(f);
|
||||
bwd = MakeColourWord(b);
|
||||
for (i=0 : i<style_NUMSTYLES: i++) {
|
||||
if (f == CLR_DEFAULT || b == CLR_DEFAULT) { ! remove style hints
|
||||
glk_stylehint_clear(swin, i, stylehint_TextColor);
|
||||
glk_stylehint_clear(swin, i, stylehint_BackColor);
|
||||
} else {
|
||||
glk_stylehint_set(swin, i, stylehint_TextColor, fwd);
|
||||
glk_stylehint_set(swin, i, stylehint_BackColor, bwd);
|
||||
}
|
||||
}
|
||||
|
||||
! Now re-open the windows to apply the hints
|
||||
if (gg_statuswin) glk_window_close(gg_statuswin, 0);
|
||||
gg_statuswin = 0;
|
||||
|
||||
if (doclear || ( window ~= 1 && (clr_fg ~= f || clr_bg ~= b) ) ) {
|
||||
glk_window_close(gg_mainwin, 0);
|
||||
gg_mainwin = glk_window_open(0, 0, 0, wintype_TextBuffer, GG_MAINWIN_ROCK);
|
||||
if (gg_scriptstr ~= 0)
|
||||
glk_window_set_echo_stream(gg_mainwin, gg_scriptstr);
|
||||
}
|
||||
|
||||
gg_statuswin =
|
||||
glk_window_open(gg_mainwin, winmethod_Fixed + winmethod_Above,
|
||||
statuswin_cursize, wintype_TextGrid, GG_STATUSWIN_ROCK);
|
||||
if (statuswin_current && gg_statuswin) VM_MoveCursorInStatusLine(); else VM_MainWindow();
|
||||
|
||||
if (window ~= 2) {
|
||||
clr_fgstatus = f;
|
||||
clr_bgstatus = b;
|
||||
}
|
||||
if (window ~= 1) {
|
||||
clr_fg = f;
|
||||
clr_bg = b;
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
[ VM_RestoreWindowColours; ! used after UNDO: compare I6 patch L61007
|
||||
if (clr_on) { ! check colour has been used
|
||||
VM_SetWindowColours(clr_fg, clr_bg, 2); ! make sure both sets of variables are restored
|
||||
VM_SetWindowColours(clr_fgstatus, clr_bgstatus, 1, true);
|
||||
VM_ClearScreen();
|
||||
}
|
||||
];
|
||||
|
||||
[ MakeColourWord c;
|
||||
if (c > 9) return c;
|
||||
c = c-2;
|
||||
return $ff0000*(c&1) + $ff00*(c&2 ~= 0) + $ff*(c&4 ~= 0);
|
||||
];
|
||||
|
||||
@h Main Window.
|
||||
The part of the screen on which commands and responses are printed, which
|
||||
ordinarily occupies almost all of the screen area.
|
||||
|
||||
|VM_MainWindow()| switches printing back from another window, usually the
|
||||
status line, to the main window.
|
||||
|
||||
=
|
||||
[ VM_MainWindow;
|
||||
glk_set_window(gg_mainwin); ! set_window
|
||||
statuswin_current=0;
|
||||
];
|
||||
|
||||
@h Status Line.
|
||||
Despite the name, the status line need not be a single line at the top of
|
||||
the screen: that's only the conventional default arrangement. It can expand
|
||||
to become the equivalent of an old-fashioned VT220 terminal, with menus
|
||||
and grids and mazes displayed lovingly in character graphics, or it can
|
||||
close up to invisibility.
|
||||
|
||||
|VM_StatusLineHeight(n)| sets the status line to have a height of |n| lines
|
||||
of type. (The width of the status line is always the width of the whole
|
||||
screen, and the position is always at the top, so the height is the only
|
||||
controllable aspect.) The $n=0$ case makes the status line disappear.
|
||||
|
||||
|VM_MoveCursorInStatusLine(x, y)| switches printing to the status line,
|
||||
positioning the "cursor" -- the position at which printing will begin --
|
||||
at the given character grid position $(x, y)$. Line 1 represents the top
|
||||
line; line 2 is underneath, and so on; columns are similarly numbered from
|
||||
1 at the left.
|
||||
|
||||
=
|
||||
[ VM_StatusLineHeight hgt;
|
||||
if (gg_statuswin == 0) return;
|
||||
if (hgt == statuswin_cursize) return;
|
||||
glk_window_set_arrangement(glk_window_get_parent(gg_statuswin), $12, hgt, 0);
|
||||
statuswin_cursize = hgt;
|
||||
];
|
||||
|
||||
[ VM_MoveCursorInStatusLine line column;
|
||||
if (gg_statuswin == 0) return;
|
||||
glk_set_window(gg_statuswin);
|
||||
if (line == 0) { line = 1; column = 1; }
|
||||
glk_window_move_cursor(gg_statuswin, column-1, line-1);
|
||||
statuswin_current=1;
|
||||
];
|
||||
|
||||
@h Quotation Boxes.
|
||||
On the Z-machine, quotation boxes are produced by stretching the status line,
|
||||
but on Glulx they usually occupy windows of their own. If it isn't possible
|
||||
to create such a window, so that |gg_quotewin| is zero below, the quotation
|
||||
text just appears in the main window.
|
||||
|
||||
=
|
||||
[ Box__Routine maxwid arr ix lines lastnl parwin;
|
||||
maxwid = 0; ! squash compiler warning
|
||||
lines = arr-->0;
|
||||
|
||||
if (gg_quotewin == 0) {
|
||||
gg_arguments-->0 = lines;
|
||||
ix = InitGlkWindow(GG_QUOTEWIN_ROCK);
|
||||
if (ix == 0)
|
||||
gg_quotewin =
|
||||
glk_window_open(gg_mainwin, winmethod_Fixed + winmethod_Above,
|
||||
lines, wintype_TextBuffer, GG_QUOTEWIN_ROCK);
|
||||
} else {
|
||||
parwin = glk_window_get_parent(gg_quotewin);
|
||||
glk_window_set_arrangement(parwin, $12, lines, 0);
|
||||
}
|
||||
|
||||
lastnl = true;
|
||||
if (gg_quotewin) {
|
||||
glk_window_clear(gg_quotewin);
|
||||
glk_set_window(gg_quotewin);
|
||||
lastnl = false;
|
||||
}
|
||||
|
||||
VM_Style(BLOCKQUOTE_VMSTY);
|
||||
for (ix=0 : ix<lines : ix++) {
|
||||
print (string) arr-->(ix+1);
|
||||
if (ix < lines-1 || lastnl) new_line;
|
||||
}
|
||||
VM_Style(NORMAL_VMSTY);
|
||||
|
||||
if (gg_quotewin) glk_set_window(gg_mainwin);
|
||||
];
|
171
inform7/Internal/Inter/Architecture32Kit/Sections/Startup.i6t
Normal file
171
inform7/Internal/Inter/Architecture32Kit/Sections/Startup.i6t
Normal file
|
@ -0,0 +1,171 @@
|
|||
Startup Template.
|
||||
|
||||
How programs for this architecture start up the virtual machine.
|
||||
|
||||
@ |VM_Initialise()| is almost the first routine called, except that the
|
||||
"starting the virtual machine" activity is allowed to go first; and,
|
||||
come to think of it, memory allocation has to be set up before even that,
|
||||
and that in turn calls |VM_PreInitialise()| to do the absolute minimum.
|
||||
|
||||
Arrangements are a little different here compared with the 16-bit architecture,
|
||||
because some data is retained in the case of a restart.
|
||||
|
||||
(Many thanks are due to Eliuk Blau, who found several tricky timing errors
|
||||
here and elsewhere in the Glulx-specific code. Frankly, I feel like hanging
|
||||
a sign on the following routines which reads "Congratulations on bringing
|
||||
light to the Dark Room.")
|
||||
|
||||
=
|
||||
[ VM_PreInitialise res;
|
||||
@gestalt 4 2 res; ! Test if this interpreter has Glk...
|
||||
if (res == 0) quit; ! ...without which there would be nothing we could do
|
||||
|
||||
unicode_gestalt_ok = false;
|
||||
if (glk_gestalt(gestalt_Unicode, 0))
|
||||
unicode_gestalt_ok = true;
|
||||
|
||||
! Set the VM's I/O system to be Glk.
|
||||
@setiosys 2 0;
|
||||
];
|
||||
|
||||
[ VM_Initialise res sty i;
|
||||
@gestalt 4 2 res; ! Test if this interpreter has Glk...
|
||||
if (res == 0) quit; ! ...without which there would be nothing we could do
|
||||
|
||||
! First, we must go through all the Glk objects that exist, and see
|
||||
! if we created any of them. One might think this strange, since the
|
||||
! program has just started running, but remember that the player might
|
||||
! have just typed "restart".
|
||||
|
||||
GGRecoverObjects();
|
||||
|
||||
! Sound channel initialisation, and RNG fixing, must be done now rather
|
||||
! than later in case InitGlkWindow() returns a non-zero value.
|
||||
|
||||
if (glk_gestalt(gestalt_Sound, 0)) {
|
||||
if (gg_foregroundchan == 0)
|
||||
gg_foregroundchan = glk_schannel_create(GG_FOREGROUNDCHAN_ROCK);
|
||||
if (gg_backgroundchan == 0)
|
||||
gg_backgroundchan = glk_schannel_create(GG_BACKGROUNDCHAN_ROCK);
|
||||
}
|
||||
|
||||
if (BasicInformKit`FIX_RNG_CFGF) {
|
||||
@random 10000 i;
|
||||
i = -i-2000;
|
||||
@setrandom i;
|
||||
}
|
||||
|
||||
res = InitGlkWindow(0);
|
||||
if (res ~= 0) return;
|
||||
|
||||
! Now, gg_mainwin and gg_storywin might already be set. If not, set them.
|
||||
|
||||
if (gg_mainwin == 0) {
|
||||
! Open the story window.
|
||||
res = InitGlkWindow(GG_MAINWIN_ROCK);
|
||||
if (res == 0) {
|
||||
! Left-justify the header style
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Header, stylehint_Justification, 0);
|
||||
! Try to make emphasized type in italics and not boldface
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Emphasized, stylehint_Weight, 0);
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Emphasized, stylehint_Oblique, 1);
|
||||
gg_mainwin = glk_window_open(0, 0, 0, wintype_TextBuffer, GG_MAINWIN_ROCK);
|
||||
}
|
||||
if (gg_mainwin == 0) quit; ! If we can't even open one window, give in
|
||||
} else {
|
||||
! There was already a story window. We should erase it.
|
||||
glk_window_clear(gg_mainwin);
|
||||
}
|
||||
|
||||
if (gg_statuswin == 0) {
|
||||
res = InitGlkWindow(GG_STATUSWIN_ROCK);
|
||||
if (res == 0) {
|
||||
statuswin_cursize = statuswin_size;
|
||||
for (sty=0: sty<style_NUMSTYLES: sty++)
|
||||
glk_stylehint_set(wintype_TextGrid, sty, stylehint_ReverseColor, 1);
|
||||
gg_statuswin =
|
||||
glk_window_open(gg_mainwin, winmethod_Fixed + winmethod_Above,
|
||||
statuswin_cursize, wintype_TextGrid, GG_STATUSWIN_ROCK);
|
||||
}
|
||||
}
|
||||
! It's possible that the status window couldn't be opened, in which case
|
||||
! gg_statuswin is now zero. We must allow for that later on.
|
||||
|
||||
glk_set_window(gg_mainwin);
|
||||
|
||||
InitGlkWindow(1);
|
||||
|
||||
! Empty the parse buffer (see bug 0001451)
|
||||
buffer3-->0 = 0;
|
||||
];
|
||||
|
||||
[ GGRecoverObjects id;
|
||||
! If GGRecoverObjects() has been called, all these stored IDs are
|
||||
! invalid, so we start by clearing them all out.
|
||||
! (In fact, after a restoreundo, some of them may still be good.
|
||||
! For simplicity, though, we assume the general case.)
|
||||
gg_mainwin = 0;
|
||||
gg_statuswin = 0;
|
||||
gg_quotewin = 0;
|
||||
gg_scriptfref = 0;
|
||||
gg_scriptstr = 0;
|
||||
gg_savestr = 0;
|
||||
statuswin_cursize = 0;
|
||||
gg_foregroundchan = 0;
|
||||
gg_backgroundchan = 0;
|
||||
gg_commandstr = 0;
|
||||
gg_command_reading = false;
|
||||
! Also tell the game to clear its object references.
|
||||
IdentifyGlkObject(0);
|
||||
|
||||
id = glk_stream_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_SAVESTR_ROCK: gg_savestr = id;
|
||||
GG_SCRIPTSTR_ROCK: gg_scriptstr = id;
|
||||
GG_COMMANDWSTR_ROCK: gg_commandstr = id;
|
||||
gg_command_reading = false;
|
||||
GG_COMMANDRSTR_ROCK: gg_commandstr = id;
|
||||
gg_command_reading = true;
|
||||
default: IdentifyGlkObject(1, 1, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_stream_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
id = glk_window_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_MAINWIN_ROCK: gg_mainwin = id;
|
||||
GG_STATUSWIN_ROCK: gg_statuswin = id;
|
||||
GG_QUOTEWIN_ROCK: gg_quotewin = id;
|
||||
default: IdentifyGlkObject(1, 0, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_window_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
id = glk_fileref_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_SCRIPTFREF_ROCK: gg_scriptfref = id;
|
||||
default: IdentifyGlkObject(1, 2, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_fileref_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
if (glk_gestalt(gestalt_Sound, 0)) {
|
||||
id = glk_schannel_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_FOREGROUNDCHAN_ROCK: gg_foregroundchan = id;
|
||||
GG_BACKGROUNDCHAN_ROCK: gg_backgroundchan = id;
|
||||
default: IdentifyGlkObject(1, 3, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_schannel_iterate(id, gg_arguments);
|
||||
}
|
||||
if (gg_foregroundchan ~= 0) { glk_schannel_stop(gg_foregroundchan); }
|
||||
if (gg_backgroundchan ~= 0) { glk_schannel_stop(gg_backgroundchan); }
|
||||
}
|
||||
|
||||
! Tell the game to tie up any loose ends.
|
||||
IdentifyGlkObject(2);
|
||||
];
|
29
inform7/Internal/Inter/Architecture32Kit/Sections/Veneer.i6t
Normal file
29
inform7/Internal/Inter/Architecture32Kit/Sections/Veneer.i6t
Normal file
|
@ -0,0 +1,29 @@
|
|||
Veneer Template.
|
||||
|
||||
Veneer code for use by the Inform 6 compiler with the Glulx target.
|
||||
|
||||
@ These functions have strange-looking names special to the Inform 6 compiler,
|
||||
which uses them to replace its default "veneer" functions. If we're compiling
|
||||
to something other than Inform 6, though, they are just strangely-named functions,
|
||||
and do no harm.
|
||||
|
||||
=
|
||||
[ Unsigned__Compare x y;
|
||||
@jleu x y ?lesseq;
|
||||
return 1;
|
||||
.lesseq;
|
||||
@jeq x y ?equal;
|
||||
return -1;
|
||||
.equal;
|
||||
return 0;
|
||||
];
|
||||
|
||||
[ RT__ChLDW x y;
|
||||
@aload x y sp;
|
||||
@return sp;
|
||||
];
|
||||
|
||||
[ RT__ChLDB x y;
|
||||
@aloadb x y sp;
|
||||
@return sp;
|
||||
];
|
12
inform7/Internal/Inter/Architecture32Kit/kit_metadata.json
Normal file
12
inform7/Internal/Inter/Architecture32Kit/kit_metadata.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture32Kit",
|
||||
"version": "10.2.0-beta+6W57"
|
||||
},
|
||||
"compatibility": "32-bit",
|
||||
"kit-details": {
|
||||
"has-priority": 1,
|
||||
"defines-Main": false
|
||||
}
|
||||
}
|
|
@ -47,7 +47,7 @@ Constant ACTION_PROCESSING_RB = -1; ! Identifier needs to exist even when the ru
|
|||
];
|
||||
|
||||
[ INITIALISE_MEMORY_R;
|
||||
#ifdef TARGET_GLULX; VM_PreInitialise(); #Endif;
|
||||
VM_PreInitialise();
|
||||
LanguageInitialise();
|
||||
|
||||
HeapInitialise(); ! Create a completely unused memory allocation heap
|
||||
|
@ -60,22 +60,6 @@ Constant ACTION_PROCESSING_RB = -1; ! Identifier needs to exist even when the ru
|
|||
[ DrawStatusLine width posb;
|
||||
];
|
||||
|
||||
@h Veneer.
|
||||
|
||||
=
|
||||
#Ifdef TARGET_ZCODE;
|
||||
[ VM_Initialise i;
|
||||
standard_interpreter = HDR_TERPSTANDARD-->0;
|
||||
|
||||
if (BasicInformKit`FIX_RNG_CFGF) {
|
||||
@random 10000 -> i;
|
||||
i = -i-2000;
|
||||
print "[Random number generator seed is ", i, "]^";
|
||||
@random i -> i;
|
||||
}
|
||||
];
|
||||
#Endif;
|
||||
|
||||
@h Short Name Storage.
|
||||
None of the following functions should be called for the Z-machine if the
|
||||
short name exceeds the size of the following buffer: whereas the Glulx
|
||||
|
|
|
@ -8,8 +8,6 @@ Web Syntax Version: 2
|
|||
Sections
|
||||
Definitions
|
||||
Utilities
|
||||
Glulx
|
||||
ZMachine
|
||||
Paragraphing
|
||||
Mathematics
|
||||
FileIO
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -104,7 +104,7 @@ where he is, the surprise will not be spoiled.
|
|||
|
||||
=
|
||||
[ INITIALISE_MEMORY_R;
|
||||
#ifdef TARGET_GLULX; VM_PreInitialise(); #Endif;
|
||||
VM_PreInitialise();
|
||||
LanguageInitialise();
|
||||
|
||||
not_yet_in_play = true;
|
||||
|
|
|
@ -147,7 +147,7 @@ Note that Inform always compiles |Story| and |Headline| texts, but does not alwa
|
|||
compile a |Story_Author|.
|
||||
|
||||
=
|
||||
[ Banner;
|
||||
[ Banner i serial;
|
||||
BeginActivity(PRINTING_BANNER_TEXT_ACT);
|
||||
if (ForActivity(PRINTING_BANNER_TEXT_ACT) == false) {
|
||||
VM_Style(HEADER_VMSTY);
|
||||
|
@ -160,7 +160,9 @@ compile a |Story_Author|.
|
|||
TEXT_TY_Say(Story_Author);
|
||||
}
|
||||
new_line;
|
||||
VM_Describe_Release();
|
||||
print "Release ", VM_ReleaseNumber(), " / Serial number ";
|
||||
serial = VM_SerialNumber();
|
||||
for (i=0 : i<6 : i++) print (char) serial->i;
|
||||
print " / Inform 7 v", (PrintI6Text) I7_VERSION_NUMBER;
|
||||
#Ifdef DEBUG;
|
||||
print " / D";
|
||||
|
|
|
@ -7,31 +7,6 @@ To provide Z-specific actions.
|
|||
=
|
||||
#Ifdef TARGET_ZCODE;
|
||||
|
||||
@h Veneer.
|
||||
|
||||
=
|
||||
[ VM_Initialise i;
|
||||
standard_interpreter = HDR_TERPSTANDARD-->0;
|
||||
transcript_mode = ((HDR_GAMEFLAGS-->0) & 1);
|
||||
|
||||
dict_start = HDR_DICTIONARY-->0;
|
||||
dict_entry_size = dict_start->(dict_start->0 + 1);
|
||||
dict_start = dict_start + dict_start->0 + 4;
|
||||
dict_end = dict_start + ((dict_start - 2)-->0) * dict_entry_size;
|
||||
|
||||
buffer->0 = INPUT_BUFFER_LEN;
|
||||
buffer2->0 = INPUT_BUFFER_LEN;
|
||||
buffer3->0 = INPUT_BUFFER_LEN;
|
||||
parse->0 = 15;
|
||||
parse2->0 = 15;
|
||||
|
||||
if (BasicInformKit`FIX_RNG_CFGF) {
|
||||
@random 10000 -> i;
|
||||
i = -i-2000;
|
||||
@random i -> i;
|
||||
}
|
||||
];
|
||||
|
||||
@h Quit The Game Rule.
|
||||
|
||||
=
|
||||
|
|
|
@ -58,3 +58,5 @@ Internal/Inter/BasicInformKit/*.interb
|
|||
Internal/Inter/BasicInformExtrasKit/*.interb
|
||||
Internal/Inter/WorldModelKit/*.interb
|
||||
Internal/Inter/CommandParserKit/*.interb
|
||||
Internal/Inter/Architecture16Kit/*.interb
|
||||
Internal/Inter/Architecture32Kit/*.interb
|
||||
|
|
|
@ -33,6 +33,8 @@ void KitVersioning::iterate(semantic_version_number set_to) {
|
|||
KitVersioning::show_version(I"CommandParserKit", set_to);
|
||||
KitVersioning::show_version(I"BasicInformKit", set_to);
|
||||
KitVersioning::show_version(I"BasicInformExtrasKit", set_to);
|
||||
KitVersioning::show_version(I"Architecture16Kit", set_to);
|
||||
KitVersioning::show_version(I"Architecture32Kit", set_to);
|
||||
}
|
||||
|
||||
void KitVersioning::show_version(text_stream *name, semantic_version_number set_to) {
|
||||
|
|
|
@ -149,6 +149,8 @@ INFORM6WEB = inform6
|
|||
# code and Inform 7 extensions.
|
||||
|
||||
{component type: web symbol: BASICINFORMKIT webname: BasicInformKit path: inform7/Internal/Inter/BasicInformKit set: kits}
|
||||
{component type: web symbol: ARCHITECTURE16KIT webname: Architecture16Kit path: inform7/Internal/Inter/Architecture16Kit set: kits}
|
||||
{component type: web symbol: ARCHITECTURE32KIT webname: Architecture32Kit path: inform7/Internal/Inter/Architecture32Kit set: kits}
|
||||
{component type: web symbol: WORLDMODELKIT webname: WorldModelKit path: inform7/Internal/Inter/WorldModelKit set: kits}
|
||||
{component type: web symbol: COMMANDPARSERKIT webname: CommandParserKit path: inform7/Internal/Inter/CommandParserKit set: kits}
|
||||
{component type: web symbol: BASICINFORMEXTRASKIT webname: BasicInformExtrasKit path: inform7/Internal/Inter/BasicInformExtrasKit set: kits}
|
||||
|
|
|
@ -362,3 +362,14 @@ int Compatibility::test_universal(compatibility_specification *C) {
|
|||
if (C->default_allows == FALSE) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ This tests whether at least one VM of the given architecture is compatible.
|
||||
|
||||
=
|
||||
int Compatibility::test_architecture(compatibility_specification *C, inter_architecture *A) {
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if ((Compatibility::test(C, VM)) && (TargetVMs::has_architecture(VM, A)))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -349,6 +349,12 @@ int TargetVMs::allow_this_many_locals(target_vm *VM, int N) {
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
int TargetVMs::has_architecture(target_vm *VM, inter_architecture *A) {
|
||||
if (VM == NULL) internal_error("no VM");
|
||||
if (A == VM->architecture) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ This function is only called to decide whether to issue certain ICL memory
|
||||
settings to the Inform 6 compiler, and so we can basically assume the VM here
|
||||
is going to end up as either the Z-machine or Glulx.
|
||||
|
|
Loading…
Reference in a new issue