1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-26 04:00:43 +03:00

Further refactoring

This commit is contained in:
Graham Nelson 2023-06-08 19:57:05 +01:00
parent fc608e7428
commit bbf0849314
65 changed files with 439 additions and 355 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
[Version](notes/versioning.md): 10.2.0-beta+6W57 'Krypton' (7 June 2023)
[Version](notes/versioning.md): 10.2.0-beta+6W58 'Krypton' (8 June 2023)
## About Inform

View file

@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 7 June 2023
Build Number: 6W57
Build Date: 8 June 2023
Build Number: 6W58

View file

@ -195,7 +195,7 @@ Glulx are indistinguishable here.
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprevoff">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprevoff">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-str.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -166,8 +166,46 @@ the ZSCII character set.
<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="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>It's convenient to provide this relatively fast routine to reverse the
case of a letter, since this is an operation used frequently in regular
expression matching.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">TEXT_TY_RevCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">ch</span><span class="plain-syntax">&lt;</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">ch</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">ch</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'a'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-</span><span class="character-syntax">'a'</span><span class="plain-syntax">+</span><span class="character-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">ch</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'A'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-</span><span class="character-syntax">'A'</span><span class="plain-syntax">+</span><span class="character-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">ch</span><span class="plain-syntax">&lt;128) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">155</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+3; </span><span class="comment-syntax">a, o, u umlaut in ZSCII</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">158</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-3; </span><span class="comment-syntax">A, O, U umlaut</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">164</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+3; </span><span class="comment-syntax">e, i umlaut</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">167</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-3; </span><span class="comment-syntax">E, I umlaut</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">169</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+6; </span><span class="comment-syntax">a, e, i, o, u, y acute</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">175</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-6; </span><span class="comment-syntax">A, E, I, O, U, Y acute</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">181</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+5; </span><span class="comment-syntax">a, e, i, o, u grave</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">186</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-5; </span><span class="comment-syntax">A, E, I, O, U grave</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">191</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+5; </span><span class="comment-syntax">a, e, i, o, u circumflex</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">196</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-5; </span><span class="comment-syntax">A, E, I, O, U circumflex</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">202</span><span class="plain-syntax">; </span><span class="comment-syntax">a circle</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">201</span><span class="plain-syntax">; </span><span class="comment-syntax">A circle</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">204</span><span class="plain-syntax">; </span><span class="comment-syntax">o slash</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">203</span><span class="plain-syntax">; </span><span class="comment-syntax">O slash</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">205</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+3; </span><span class="comment-syntax">a, n, o tilde</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">208</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-3; </span><span class="comment-syntax">A, N, O tilde</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">212</span><span class="plain-syntax">; </span><span class="comment-syntax">ae ligature</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">211</span><span class="plain-syntax">; </span><span class="comment-syntax">AE ligature</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">214</span><span class="plain-syntax">; </span><span class="comment-syntax">c cedilla</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">213</span><span class="plain-syntax">; </span><span class="comment-syntax">C cedilla</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> == </span><span class="constant-syntax">215</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</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">ch</span><span class="plain-syntax">+2; </span><span class="comment-syntax">thorn, eth</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> == </span><span class="constant-syntax">217</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</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">ch</span><span class="plain-syntax">-2; </span><span class="comment-syntax">Thorn, Eth</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">221</span><span class="plain-syntax">; </span><span class="comment-syntax">oe ligature</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">220</span><span class="plain-syntax">; </span><span class="comment-syntax">OE ligature</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-str.html">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-io.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -0,0 +1,98 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>File 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">
<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 'File 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">Architecture16Kit</a></li><li><b>File Input Output Template</b></li></ul></div>
<p class="purpose">Access to external files.</p>
<ul class="toc"><li><a href="S-fio.html#SP1">&#167;1. API</a></li><li><a href="S-fio.html#SP2">&#167;2. Errors</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. API. </b>The 16-bit architecture does not allow for any external file I/O at all,
so these functions essentially refuse to do anything. Note that <span class="extract"><span class="extract-syntax">FileIO_GetC</span></span>
returns end-of-file at all times, thus treating all files as if empty.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_Exists</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_Ready</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_GetC</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</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">FileIO_PutTable</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</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">FileIO_Error</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">, </span><span class="string-syntax">"external files cannot be used in the Z-machine"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_MarkReady</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">status</span><span class="plain-syntax">; </span><span class="identifier-syntax">FileIO_PutTable</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">); ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_GetTable</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax">; </span><span class="identifier-syntax">FileIO_PutTable</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">); ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_PrintContents</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax">; </span><span class="identifier-syntax">FileIO_PutTable</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">); ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_PutContents</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax">; </span><span class="identifier-syntax">FileIO_PutTable</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">); ];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Errors. </b>This could be used for I/O errors of all kinds, but in fact we only need one:
see above.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_Error</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">err_text</span><span class="plain-syntax"> </span><span class="identifier-syntax">struc</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">extf</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">extf</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">NO_EXTERNAL_FILES</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">"^*** Error on unknown file: "</span><span class="plain-syntax">, (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">err_text</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">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">struc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TableOfExternalFiles</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">extf</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">"^*** Error on file '"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">struc</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">AUXF_FILENAME</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">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">err_text</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><span class="identifier-syntax">RunTimeProblem</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTP_FILEIOERROR</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>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="S-io.html">&#10094;</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">fio</li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-vnr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -384,7 +384,7 @@ line; line 2 is underneath, and so on; columns are similarly numbered from
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="S-cs.html">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-cs.html">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-fio.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -82,7 +82,7 @@ activity runs; and then <span class="extract"><span class="extract-syntax">VM_In
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="S-cpb.html">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-cpb.html">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-cs.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -87,7 +87,7 @@ and do no harm.
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="S-io.html">&#10094;</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">&#10095;</li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-fio.html">&#10094;</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="progresssection"><a href="S-fio.html">fio</a></li><li class="progresscurrent">vnr</li><li class="progressnextoff">&#10095;</li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -69,6 +69,11 @@
<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-fio.html">
<spon class="sectiontitle">File Input Output Template</span></a> -
<span class="sectionpurpose">Access to external files.</span></p>
</li>
<li>
<p class="chapterentry"><a href="S-vnr.html">
<spon class="sectiontitle">Veneer Template</span></a> -

View file

@ -184,7 +184,7 @@ not the place to discuss whether that was a wise decision for Glk to take.)
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprevoff">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprevoff">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-glk.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -179,8 +179,24 @@ all of the work to glk functions.
<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>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>It's convenient to provide this relatively fast routine to reverse the
case of a letter, since this is an operation used frequently in regular
expression matching.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">TEXT_TY_RevCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">ch</span><span class="plain-syntax">&lt;</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">ch</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">ch</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'a'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-</span><span class="character-syntax">'a'</span><span class="plain-syntax">+</span><span class="character-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">ch</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'A'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-</span><span class="character-syntax">'A'</span><span class="plain-syntax">+</span><span class="character-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">ch</span><span class="plain-syntax">&lt;128) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">CharIsOfCase</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch</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">CharToCase</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch</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">CharIsOfCase</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CharToCase</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch</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">ch</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">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-str.html">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-io.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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>FileIO Template</title>
<title>File 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">
@ -46,69 +46,14 @@
</ul>
</nav>
<main role="main">
<!--Weave of 'FileIO Template' generated by Inweb-->
<!--Weave of 'File 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>FileIO Template</b></li></ul></div>
<p class="purpose">Reading and writing external files, in the Glulx virtual machine only.</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">Architecture32Kit</a></li><li><b>File Input Output Template</b></li></ul></div>
<p class="purpose">Access to external files.</p>
<ul class="toc"><li><a href="S-fl.html#SP1">&#167;1. Structure</a></li><li><a href="S-fl.html#SP2">&#167;2. Instances</a></li><li><a href="S-fl.html#SP3">&#167;3. Errors</a></li><li><a href="S-fl.html#SP4">&#167;4. Glulx Material</a></li><li><a href="S-fl.html#SP5">&#167;5. Existence</a></li><li><a href="S-fl.html#SP6">&#167;6. Readiness</a></li><li><a href="S-fl.html#SP7">&#167;7. Open File</a></li><li><a href="S-fl.html#SP8">&#167;8. Close File</a></li><li><a href="S-fl.html#SP9">&#167;9. Get Character</a></li><li><a href="S-fl.html#SP10">&#167;10. Put Character</a></li><li><a href="S-fl.html#SP11">&#167;11. Print Line</a></li><li><a href="S-fl.html#SP12">&#167;12. Print Contents</a></li><li><a href="S-fl.html#SP13">&#167;13. Print Text</a></li><li><a href="S-fl.html#SP14">&#167;14. Serialising Tables</a></li><li><a href="S-fl.html#SP15">&#167;15. Internal file support</a></li><li><a href="S-fl.html#SP16">&#167;16. Z-Machine Stubs</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-fio.html#SP1">&#167;1. Existence</a></li><li><a href="S-fio.html#SP2">&#167;2. Readiness</a></li><li><a href="S-fio.html#SP3">&#167;3. Open File</a></li><li><a href="S-fio.html#SP4">&#167;4. Close File</a></li><li><a href="S-fio.html#SP5">&#167;5. Get Character</a></li><li><a href="S-fio.html#SP6">&#167;6. Put Character</a></li><li><a href="S-fio.html#SP7">&#167;7. Print Line</a></li><li><a href="S-fio.html#SP8">&#167;8. Print Contents</a></li><li><a href="S-fio.html#SP9">&#167;9. Print Text</a></li><li><a href="S-fio.html#SP10">&#167;10. Serialising Tables</a></li><li><a href="S-fio.html#SP11">&#167;11. Internal file support</a></li><li><a href="S-fio.html#SP12">&#167;12. Errors</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Structure. </b>The I7 kind of value "auxiliary-file" is an <span class="extract"><span class="extract-syntax">--&gt;</span></span> array, holding a memory
structure containing information about external files. The following
constants specify memory offsets and values. Note the safety value stored
as the first word of the structure: this helps protect the routines below
from accidents. (16339, besides being prime, is a number interesting to the
author of Inform since it was the examination board identifying number of
his school, and so had to be filled in on all of the many papers he sat
during his formative years.)
</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">AUXF_MAGIC</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax">First word holds a safety constant</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_MAGIC_VALUE</span><span class="plain-syntax"> = </span><span class="constant-syntax">16339</span><span class="plain-syntax">; </span><span class="comment-syntax">Should be first word of any valid file structure</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="comment-syntax">One of the following:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS_IS_CLOSED</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="comment-syntax">Currently closed, or perhaps doesn't exist</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS_IS_OPEN_FOR_READ</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">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS_IS_OPEN_FOR_WRITE</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">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS_IS_OPEN_FOR_APPEND</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</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">AUXF_STATUS_IS_ERRONEOUS</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">AUXF_BINARY</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">; </span><span class="comment-syntax">False for text files (I7 default), true for binary</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STREAM</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">; </span><span class="comment-syntax">Stream for an open file (meaningless otherwise)</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_FILENAME</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">; </span><span class="comment-syntax">Packed address of constant string</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_IFID_OF_OWNER</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">; </span><span class="comment-syntax">UUID_ARRAY if owned by this project, or</span>
<span class="plain-syntax"> </span><span class="comment-syntax">string array of IFID of owner, or NULL to leave open</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_RESOURCE_ID</span><span class="plain-syntax"> = </span><span class="constant-syntax">6</span><span class="plain-syntax">; </span><span class="comment-syntax">Only for internal files, identified by Blorb resource</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Instances. </b>These structures are not dynamically created: they are precompiled by the Inform
compiler, already filled in with the necessary values. The following command
generates them.
</p>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Errors. </b>This is used for I/O errors of all kinds: it isn't within the Glulx-only
code because one of the errors is to try to use these routines on the
Z-machine.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_Error</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">err_text</span><span class="plain-syntax"> </span><span class="identifier-syntax">struc</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">extf</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">extf</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">NO_EXTERNAL_FILES</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">"^*** Error on unknown file: "</span><span class="plain-syntax">, (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">err_text</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">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">struc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TableOfExternalFiles</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">extf</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">"^*** Error on file '"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">struc</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">AUXF_FILENAME</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">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">err_text</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><span class="identifier-syntax">RunTimeProblem</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTP_FILEIOERROR</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="SP4" class="paragraph-anchor"></a><b>&#167;4. Glulx Material. </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_GLULX</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Existence. </b>Determine whether a file exists on disc. Note that we have no concept of
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Existence. </b>Determine whether a file exists on disc. Note that we have no concept of
directories, or the file system structure on the host machine: indeed, it
is entirely up to the Glulx VM what it does when asked to look for a file.
By convention, though, files for a project are stored in the same folder
@ -132,7 +77,7 @@ alongside the Inform project file.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Readiness. </b>One of our problems is that a file might be being used by another application:
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Readiness. </b>One of our problems is that a file might be being used by another application:
perhaps even by another story file running in a second incarnation of Glulx,
like a parallel world of which we can know nothing. We actually want to
allow for this sort of thing, because one use for external files in I7
@ -202,7 +147,7 @@ asterisk or hyphen into the initial character as needed.
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_fileref_destroy</span><span class="plain-syntax">(</span><span class="identifier-syntax">fref</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Open File. </b></p>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Open File. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_Open</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">write_flag</span><span class="plain-syntax"> </span><span class="identifier-syntax">append_flag</span>
@ -291,7 +236,7 @@ asterisk or hyphen into the initial character as needed.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FileIO_Error</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">, </span><span class="string-syntax">"tried to open a file which seems to be malformed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. Close File. </b>Note that a call to the following, in write mode, must be followed by a
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Close File. </b>Note that a call to the following, in write mode, must be followed by a
<span class="extract"><span class="extract-syntax">glk_stream_set_current()</span></span>, or else the next print statement will run into
Glk errors.
</p>
@ -316,7 +261,7 @@ Glk errors.
<span class="plain-syntax"> </span><span class="identifier-syntax">struc</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">AUXF_STATUS</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AUXF_STATUS_IS_CLOSED</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Get Character. </b></p>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Get Character. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_GetC</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">struc</span><span class="plain-syntax">;</span>
@ -326,7 +271,7 @@ Glk errors.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">glk_get_char_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">struc</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">AUXF_STREAM</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Put Character. </b></p>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Put Character. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_PutC</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">char</span><span class="plain-syntax"> </span><span class="identifier-syntax">struc</span><span class="plain-syntax">;</span>
@ -341,7 +286,7 @@ Glk errors.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">glk_put_char_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">struc</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">AUXF_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">char</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. Print Line. </b>We read characters from the supplied file until the next newline
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Print Line. </b>We read characters from the supplied file until the next newline
character. (We allow for that to be encoded as either a single <span class="extract"><span class="extract-syntax">0a</span></span> or a
single <span class="extract"><span class="extract-syntax">0d</span></span>.) Each character is printed, and at the end we print a newline.
</p>
@ -359,7 +304,7 @@ single <span class="extract"><span class="extract-syntax">0d</span></span>.) Eac
<span class="plain-syntax"> }</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. Print Contents. </b>Repeating this until the file runs out is equivalent to the Unix command
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. Print Contents. </b>Repeating this until the file runs out is equivalent to the Unix command
<span class="extract"><span class="extract-syntax">cat</span></span>, that is, it copies the stream of characters from the file to the
output stream. (This might well be another file, just as with <span class="extract"><span class="extract-syntax">cat</span></span>, in
which case we have a copy utility.)
@ -378,7 +323,7 @@ which case we have a copy utility.)
<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="SP13" class="paragraph-anchor"></a><b>&#167;13. Print Text. </b>The following writes a given piece of text as the new content of the file,
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Print Text. </b>The following writes a given piece of text as the new content of the file,
either as the whole file (if <span class="extract"><span class="extract-syntax">append_flag</span></span> is false) or adding only to the
end (if true).
</p>
@ -402,7 +347,7 @@ end (if true).
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. Serialising Tables. </b>The most important data structures to "serialise" &mdash; that is, to convert
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Serialising Tables. </b>The most important data structures to "serialise" &mdash; that is, to convert
from their binary representations in memory into text representations in an
external file &mdash; are Tables. Here we only carry out the file-handling; the
actual translations are in "Tables.i6t".
@ -436,7 +381,7 @@ actual translations are in "Tables.i6t".
<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="SP15" class="paragraph-anchor"></a><b>&#167;15. Internal file support. </b>Internal files (new in Inform with IE-0004) are handled very similarly to
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. Internal file support. </b>Internal files (new in Inform with IE-0004) are handled very similarly to
external, though they are read-only, and there are no issues with ownership,
making everything much simpler.
</p>
@ -541,26 +486,26 @@ the file; files are opened using resource IDs rather than filenames.
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. Z-Machine Stubs. </b>These routines do the minimum possible, but equally, they only generate a
run-time problem when there is no alternative.
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. Errors. </b>This could be used for I/O errors of all kinds, but in fact we only need one:
see above.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">#</span><span class="identifier-syntax">IFNOT</span><span class="plain-syntax">; </span><span class="comment-syntax">TARGET_GLULX</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_Exists</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_Ready</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_GetC</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</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">FileIO_PutTable</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</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">FileIO_Error</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">, </span><span class="string-syntax">"external files can only be used under Glulx"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_Error</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">err_text</span><span class="plain-syntax"> </span><span class="identifier-syntax">struc</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">extf</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">extf</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">NO_EXTERNAL_FILES</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">"^*** Error on unknown file: "</span><span class="plain-syntax">, (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">err_text</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">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">struc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TableOfExternalFiles</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">extf</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">"^*** Error on file '"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">struc</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">AUXF_FILENAME</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">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">err_text</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><span class="identifier-syntax">RunTimeProblem</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTP_FILEIOERROR</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">FileIO_MarkReady</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">status</span><span class="plain-syntax">; </span><span class="identifier-syntax">FileIO_PutTable</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">); ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_GetTable</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax">; </span><span class="identifier-syntax">FileIO_PutTable</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">); ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_PrintContents</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax">; </span><span class="identifier-syntax">FileIO_PutTable</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">); ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FileIO_PutContents</span><span class="plain-syntax"> </span><span class="identifier-syntax">extf</span><span class="plain-syntax">; </span><span class="identifier-syntax">FileIO_PutTable</span><span class="plain-syntax">(</span><span class="identifier-syntax">extf</span><span class="plain-syntax">); ];</span>
<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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-io.html">&#10094;</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">fio</li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-vnr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -978,7 +978,7 @@ put together by John Cater.
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="S-cpb.html">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-cpb.html">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-str.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -851,7 +851,7 @@ text just appears in the main window.
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="S-cs.html">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-cs.html">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-fio.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -230,7 +230,7 @@ light to the Dark Room.")
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="S-glk.html">&#10094;</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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-glk.html">&#10094;</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-fio.html">fio</a></li><li class="progresssection"><a href="S-vnr.html">vnr</a></li><li class="progressnext"><a href="S-cs.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -79,7 +79,7 @@ and do no harm.
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="S-io.html">&#10094;</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">&#10095;</li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-fio.html">&#10094;</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="progresssection"><a href="S-fio.html">fio</a></li><li class="progresscurrent">vnr</li><li class="progressnextoff">&#10095;</li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -74,6 +74,11 @@
<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-fio.html">
<spon class="sectiontitle">File Input Output Template</span></a> -
<span class="sectionpurpose">Access to external files.</span></p>
</li>
<li>
<p class="chapterentry"><a href="S-vnr.html">
<spon class="sectiontitle">Veneer Template</span></a> -

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-flx.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -65,7 +65,7 @@ MathJax = {
<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>Char Template</b></li></ul></div>
<p class="purpose">To decide whether letters are upper or lower case, and convert between the two.</p>
<ul class="toc"><li><a href="S-chr.html#SP1">&#167;1. Char Is Of Case</a></li><li><a href="S-chr.html#SP2">&#167;2. Char To Case</a></li><li><a href="S-chr.html#SP3">&#167;3. Reversing Case</a></li><li><a href="S-chr.html#SP4">&#167;4. DigitToValue</a></li><li><a href="S-chr.html#SP5">&#167;5. Testing</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-chr.html#SP1">&#167;1. Char Is Of Case</a></li><li><a href="S-chr.html#SP2">&#167;2. Char To Case</a></li><li><a href="S-chr.html#SP3">&#167;3. DigitToValue</a></li><li><a href="S-chr.html#SP4">&#167;4. Testing</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Char Is Of Case. </b>The following decides whether a character <span class="extract"><span class="extract-syntax">c</span></span> belongs to case <span class="extract"><span class="extract-syntax">case</span></span>, where
0 means lower case and 1 means upper. <span class="extract"><span class="extract-syntax">c</span></span> is interpreted according to the
@ -136,57 +136,7 @@ it unchanged if it is not a letter with variant casings.
<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="SP3" class="paragraph-anchor"></a><b>&#167;3. Reversing Case. </b>It's convenient to provide this relatively fast routine to reverse the
case of a letter since this is an operation used frequently in regular
expression matching (see "RegExp.i6t").
</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">TEXT_TY_RevCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">ch</span><span class="plain-syntax">&lt;</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">ch</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">ch</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'a'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-</span><span class="character-syntax">'a'</span><span class="plain-syntax">+</span><span class="character-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">ch</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'A'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-</span><span class="character-syntax">'A'</span><span class="plain-syntax">+</span><span class="character-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">ch</span><span class="plain-syntax">&lt;128) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">155</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+3; </span><span class="comment-syntax">a, o, u umlaut in ZSCII</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">158</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-3; </span><span class="comment-syntax">A, O, U umlaut</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">164</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+3; </span><span class="comment-syntax">e, i umlaut</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">167</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-3; </span><span class="comment-syntax">E, I umlaut</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">169</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+6; </span><span class="comment-syntax">a, e, i, o, u, y acute</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">175</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-6; </span><span class="comment-syntax">A, E, I, O, U, Y acute</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">181</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+5; </span><span class="comment-syntax">a, e, i, o, u grave</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">186</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-5; </span><span class="comment-syntax">A, E, I, O, U grave</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">191</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+5; </span><span class="comment-syntax">a, e, i, o, u circumflex</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">196</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-5; </span><span class="comment-syntax">A, E, I, O, U circumflex</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">202</span><span class="plain-syntax">; </span><span class="comment-syntax">a circle</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">201</span><span class="plain-syntax">; </span><span class="comment-syntax">A circle</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">204</span><span class="plain-syntax">; </span><span class="comment-syntax">o slash</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">203</span><span class="plain-syntax">; </span><span class="comment-syntax">O slash</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">205</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">+3; </span><span class="comment-syntax">a, n, o tilde</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">208</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-3; </span><span class="comment-syntax">A, N, O tilde</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">212</span><span class="plain-syntax">; </span><span class="comment-syntax">ae ligature</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">211</span><span class="plain-syntax">; </span><span class="comment-syntax">AE ligature</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">214</span><span class="plain-syntax">; </span><span class="comment-syntax">c cedilla</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">213</span><span class="plain-syntax">; </span><span class="comment-syntax">C cedilla</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> == </span><span class="constant-syntax">215</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</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">ch</span><span class="plain-syntax">+2; </span><span class="comment-syntax">thorn, eth</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> == </span><span class="constant-syntax">217</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</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">ch</span><span class="plain-syntax">-2; </span><span class="comment-syntax">Thorn, Eth</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">221</span><span class="plain-syntax">; </span><span class="comment-syntax">oe ligature</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ch</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="constant-syntax">220</span><span class="plain-syntax">; </span><span class="comment-syntax">OE ligature</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">IFNOT</span><span class="plain-syntax">;</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">TEXT_TY_RevCase</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">ch</span><span class="plain-syntax">&lt;</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">ch</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">ch</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'a'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-</span><span class="character-syntax">'a'</span><span class="plain-syntax">+</span><span class="character-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">ch</span><span class="plain-syntax"> &gt;= </span><span class="character-syntax">'A'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ch</span><span class="plain-syntax"> &lt;= </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">ch</span><span class="plain-syntax">-</span><span class="character-syntax">'A'</span><span class="plain-syntax">+</span><span class="character-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">ch</span><span class="plain-syntax">&lt;128) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</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">CharIsOfCase</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch</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">CharToCase</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch</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">CharIsOfCase</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CharToCase</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch</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">ch</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="SP4" class="paragraph-anchor"></a><b>&#167;4. DigitToValue. </b>This takes a ZSCII or Unicode character code and returns its value as a digit,
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. DigitToValue. </b>This takes a ZSCII or Unicode character code and returns its value as a digit,
or returns \(-1\) if it isn't a digit.
</p>
@ -197,7 +147,7 @@ or returns \(-1\) if it isn't a digit.
<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="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Testing. </b>Not actually used: simply for testing the tables.
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Testing. </b>Not actually used: simply for testing the tables.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -214,7 +164,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-txt.html">&#10094;</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">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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-txt.html">&#10094;</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-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">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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-lst.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -65,7 +65,7 @@ MathJax = {
<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>Definitions Template</b></li></ul></div>
<p class="purpose">Miscellaneous constant definitions, usually providing symbolic names for otherwise inscrutable numbers, which are used throughout the template layer.</p>
<ul class="toc"><li><a href="S-dfn.html#SP1">&#167;1. Identification</a></li><li><a href="S-dfn.html#SP2">&#167;2. Nothing</a></li><li><a href="S-dfn.html#SP3">&#167;3. Powers of Two</a></li><li><a href="S-dfn.html#SP4">&#167;4. Text Styles</a></li><li><a href="S-dfn.html#SP5">&#167;5. Colour Numbers</a></li><li><a href="S-dfn.html#SP6">&#167;6. Window Numbers</a></li><li><a href="S-dfn.html#SP7">&#167;7. Paragraphing Flags</a></li><li><a href="S-dfn.html#SP8">&#167;8. Descriptors in the Language of Play</a></li><li><a href="S-dfn.html#SP9">&#167;9. Run-Time Problem Numbers</a></li><li><a href="S-dfn.html#SP10">&#167;10. Scope Searching Reasons</a></li><li><a href="S-dfn.html#SP11">&#167;11. Token Types</a></li><li><a href="S-dfn.html#SP12">&#167;12. GPR Return Values</a></li><li><a href="S-dfn.html#SP13">&#167;13. List Styles</a></li><li><a href="S-dfn.html#SP14">&#167;14. Lengths Of Time</a></li><li><a href="S-dfn.html#SP15">&#167;15. Empty Text</a></li><li><a href="S-dfn.html#SP16">&#167;16. Empty Table</a></li><li><a href="S-dfn.html#SP17">&#167;17. Empty Set</a></li><li><a href="S-dfn.html#SP18">&#167;18. Template Attributes</a></li><li><a href="S-dfn.html#SP19">&#167;19. Template Properties</a></li><li><a href="S-dfn.html#SP20">&#167;20. Formal Parameters</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-dfn.html#SP1">&#167;1. Identification</a></li><li><a href="S-dfn.html#SP2">&#167;2. Nothing</a></li><li><a href="S-dfn.html#SP3">&#167;3. Powers of Two</a></li><li><a href="S-dfn.html#SP4">&#167;4. Text Styles</a></li><li><a href="S-dfn.html#SP5">&#167;5. Colour Numbers</a></li><li><a href="S-dfn.html#SP6">&#167;6. Window Numbers</a></li><li><a href="S-dfn.html#SP7">&#167;7. Paragraphing Flags</a></li><li><a href="S-dfn.html#SP8">&#167;8. Descriptors in the Language of Play</a></li><li><a href="S-dfn.html#SP9">&#167;9. Auxiliary file structure</a></li><li><a href="S-dfn.html#SP10">&#167;10. Run-Time Problem Numbers</a></li><li><a href="S-dfn.html#SP11">&#167;11. Scope Searching Reasons</a></li><li><a href="S-dfn.html#SP12">&#167;12. Token Types</a></li><li><a href="S-dfn.html#SP13">&#167;13. GPR Return Values</a></li><li><a href="S-dfn.html#SP14">&#167;14. List Styles</a></li><li><a href="S-dfn.html#SP15">&#167;15. Lengths Of Time</a></li><li><a href="S-dfn.html#SP16">&#167;16. Empty Text</a></li><li><a href="S-dfn.html#SP17">&#167;17. Empty Table</a></li><li><a href="S-dfn.html#SP18">&#167;18. Empty Set</a></li><li><a href="S-dfn.html#SP19">&#167;19. Template Attributes</a></li><li><a href="S-dfn.html#SP20">&#167;20. Template Properties</a></li><li><a href="S-dfn.html#SP21">&#167;21. Formal Parameters</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Identification. </b></p>
@ -193,7 +193,30 @@ in the definition of the language of play.
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIGHTED_PK</span><span class="plain-syntax"> = </span><span class="constant-syntax">$103</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">UNLIGHTED_PK</span><span class="plain-syntax"> = </span><span class="constant-syntax">$104</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Run-Time Problem Numbers. </b>The enumeration sequence here must correspond to that in the file of RTP
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Auxiliary file structure. </b>The I7 kind of value "auxiliary-file" is an <span class="extract"><span class="extract-syntax">--&gt;</span></span> array, holding a memory
structure containing information about external files. The following
constants specify memory offsets and values. Note the safety value stored
as the first word of the structure: this helps protect the routines below
from accidents.
</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">AUXF_MAGIC</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax">First word holds a safety constant</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_MAGIC_VALUE</span><span class="plain-syntax"> = </span><span class="constant-syntax">16339</span><span class="plain-syntax">; </span><span class="comment-syntax">Should be first word of any valid file structure</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="comment-syntax">One of the following:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS_IS_CLOSED</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="comment-syntax">Currently closed, or perhaps doesn't exist</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS_IS_OPEN_FOR_READ</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">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS_IS_OPEN_FOR_WRITE</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">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STATUS_IS_OPEN_FOR_APPEND</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</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">AUXF_STATUS_IS_ERRONEOUS</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">AUXF_BINARY</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">; </span><span class="comment-syntax">False for text files (I7 default), true for binary</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_STREAM</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">; </span><span class="comment-syntax">Stream for an open file (meaningless otherwise)</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_FILENAME</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">; </span><span class="comment-syntax">Packed address of constant string</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_IFID_OF_OWNER</span><span class="plain-syntax"> = </span><span class="constant-syntax">5</span><span class="plain-syntax">; </span><span class="comment-syntax">UUID_ARRAY if owned by this project, or</span>
<span class="plain-syntax"> </span><span class="comment-syntax">string array of IFID of owner, or NULL to leave open</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUXF_RESOURCE_ID</span><span class="plain-syntax"> = </span><span class="constant-syntax">6</span><span class="plain-syntax">; </span><span class="comment-syntax">Only for internal files, identified by Blorb resource</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Run-Time Problem Numbers. </b>The enumeration sequence here must correspond to that in the file of RTP
texts, which is used to generate the HTML pages displayed by the Inform
user interface when a run-time problem has occurred. (For instance, the
file of RTP texts includes the heading "P17 - Can't divide by zero",
@ -277,7 +300,7 @@ to I7.
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_NOTASUPPORTER</span><span class="plain-syntax"> = </span><span class="constant-syntax">72</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_BADCONTAINMENT</span><span class="plain-syntax"> = </span><span class="constant-syntax">73</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Scope Searching Reasons. </b>The parser makes use of a mechanism for searching through the objects currently
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. Scope Searching Reasons. </b>The parser makes use of a mechanism for searching through the objects currently
"in scope", which basically means visible to the actor who would perform the
action envisaged by the command being parsed. It is sometimes useful to
behave differently depending on why this scope searching is being done, so
@ -296,7 +319,7 @@ in numbering.
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOOPOVERSCOPE_REASON</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">TESTSCOPE_REASON</span><span class="plain-syntax"> = </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. Token Types. </b>Tokens are the indecomposable pieces of a grammar line making up a possible
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. Token Types. </b>Tokens are the indecomposable pieces of a grammar line making up a possible
reading of a command; some are literal words, others stand for "any named
object in scope", and so on. The following codes identify the possibilities.
The <span class="extract"><span class="extract-syntax">*_TOKEN</span></span> constants must not be altered without modifying the I6 compiler
@ -324,7 +347,7 @@ to match (so, basically, they must not be altered at all).
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">TOPIC_TOKEN</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">ENDIT_TOKEN</span><span class="plain-syntax"> = </span><span class="constant-syntax">15</span><span class="plain-syntax">; </span><span class="comment-syntax">Value used to mean "end of grammar line"</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. GPR Return Values. </b>GRP stands for "General Parsing Routine", an I6 routine which acts as a
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>&#167;13. GPR Return Values. </b>GRP stands for "General Parsing Routine", an I6 routine which acts as a
grammar token: again, see the {\it Inform Designer's Manual}, 4th edition,
for details.
</p>
@ -352,7 +375,7 @@ here regardless.
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">GPR_MULTIINSIDE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GPR_NOUN</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">GPR_CREATURE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GPR_NOUN</span><span class="plain-syntax"> + </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>&#167;13. List Styles. </b>These constants make up bitmaps of the options in use when listing objects.
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. List Styles. </b>These constants make up bitmaps of the options in use when listing objects.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -375,7 +398,7 @@ here regardless.
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXTRAINDENT_BIT</span><span class="plain-syntax"> = </span><span class="constant-syntax">$$0010000000000000</span><span class="plain-syntax">; </span><span class="comment-syntax">New in I7: extra indentation of 1 level</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">CFIRSTART_BIT</span><span class="plain-syntax"> = </span><span class="constant-syntax">$$0100000000000000</span><span class="plain-syntax">; </span><span class="comment-syntax">Capitalise first article in list</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. Lengths Of Time. </b>Inform measures time in minutes.
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. Lengths Of Time. </b>Inform measures time in minutes.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -385,7 +408,7 @@ here regardless.
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">TWELVE_HOURS</span><span class="plain-syntax"> = </span><span class="constant-syntax">720</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">TWENTY_FOUR_HOURS</span><span class="plain-syntax"> = </span><span class="constant-syntax">1440</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. Empty Text. </b>The I6 compiler does not optimise string compilation: if it needs to compile
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. Empty Text. </b>The I6 compiler does not optimise string compilation: if it needs to compile
the (packed, read-only) string <span class="extract"><span class="extract-syntax">"exemplum"</span></span> twice, it will compile two copies.
This is slightly wasteful on memory, though in practice the loss is not
enough for us to care. But we do want to avoid this in I7 because, to make
@ -401,21 +424,21 @@ and properties: we give it a name as follows.
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_TEXT_PACKED</span><span class="plain-syntax"> </span><span class="string-syntax">""</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_TEXT_VALUE</span><span class="plain-syntax"> --&gt; </span><span class="identifier-syntax">CONSTANT_PACKED_TEXT_STORAGE</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_TEXT_PACKED</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. Empty Table. </b>Similarly: the default value for the "table" kind of value, a Table
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. Empty Table. </b>Similarly: the default value for the "table" kind of value, a Table
containing no rows and no columns.
</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">TheEmptyTable</span><span class="plain-syntax"> --&gt; </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. Empty Set. </b>The falsity proposition describes the empty set of objects, and is the
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>&#167;18. Empty Set. </b>The falsity proposition describes the empty set of objects, and is the
zero value for the "description" kind of value.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">Prop_Falsity</span><span class="plain-syntax"> </span><span class="identifier-syntax">reason</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</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>
</pre>
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>&#167;18. Template Attributes. </b>An I6 attribute is equivalent to an I7 "either/or property", though the
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. Template Attributes. </b>An I6 attribute is equivalent to an I7 "either/or property", though the
latter are not always translated into I6 attributes because the Z-machine
has only a limited number of attributes to use. Here, we define attributes
used by the template.
@ -478,7 +501,7 @@ are not visible to I7 source text as storage.
<span class="identifier-syntax">Attribute</span><span class="plain-syntax"> </span><span class="identifier-syntax">workflag2</span><span class="plain-syntax">; </span><span class="comment-syntax">new in I7 and also temporary workspace</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">list_filter_permits</span><span class="plain-syntax"> = </span><span class="identifier-syntax">privately_named</span><span class="plain-syntax">; </span><span class="comment-syntax">another I7 listwriter convenience</span>
</pre>
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. Template Properties. </b>As remarked above, these more often correspond to value properties in I7.
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>&#167;20. Template Properties. </b>As remarked above, these more often correspond to value properties in I7.
To an experienced I6 user, though, the death toll of abolished I6
properties in I7 is breathtaking: in alphabetical order, <span class="extract"><span class="extract-syntax">after</span></span>,
<span class="extract"><span class="extract-syntax">cant_go</span></span>, <span class="extract"><span class="extract-syntax">daemon</span></span>, <span class="extract"><span class="extract-syntax">each_turn</span></span>, <span class="extract"><span class="extract-syntax">invent</span></span>, <span class="extract"><span class="extract-syntax">life</span></span>, <span class="extract"><span class="extract-syntax">number</span></span>, <span class="extract"><span class="extract-syntax">orders</span></span>,
@ -537,7 +560,7 @@ future use.
<span class="identifier-syntax">Property</span><span class="plain-syntax"> </span><span class="identifier-syntax">inside_description</span><span class="plain-syntax">; </span><span class="comment-syntax">not used by I7, but an interesting hook in the locale code</span>
<span class="identifier-syntax">Property</span><span class="plain-syntax"> </span><span class="identifier-syntax">short_name_indef</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax">not used by I7, but an interesting hook in the listmaker</span>
</pre>
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>&#167;20. Formal Parameters. </b>These are needed for efficient run-time ambiguity resolution.
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>&#167;21. Formal Parameters. </b>These are needed for efficient run-time ambiguity resolution.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -553,7 +576,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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprevoff">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-rlb.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-rgx.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-tbl.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-prg.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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-utl.html">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-utl.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-chr.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-mst.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-cmb.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-rlt.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-rlt2.html">&#10094;</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-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-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">&#10095;</li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-mth.html">&#10094;</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">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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -904,7 +904,6 @@ is called.
</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_GLULX</span><span class="plain-syntax">;</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">TableRead</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax"> </span><span class="identifier-syntax">auxf</span><span class="plain-syntax"> </span><span class="identifier-syntax">row</span><span class="plain-syntax"> </span><span class="identifier-syntax">maxrow</span><span class="plain-syntax"> </span><span class="identifier-syntax">col</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax"> </span><span class="identifier-syntax">sgn</span><span class="plain-syntax"> </span><span class="identifier-syntax">dg</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> </span><span class="identifier-syntax">tc</span><span class="plain-syntax"> </span><span class="identifier-syntax">kov</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">col</span><span class="plain-syntax">=1:</span><span class="identifier-syntax">col</span><span class="plain-syntax">&lt;=</span><span class="identifier-syntax">tab</span><span class="plain-syntax">--&gt;0:</span><span class="identifier-syntax">col</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tab</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">col</span><span class="plain-syntax">; </span><span class="comment-syntax">Address of column table</span>
@ -981,7 +980,6 @@ is called.
<span class="plain-syntax"> .</span><span class="identifier-syntax">NotTable</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">RunTimeProblem</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTP_TABLE_BADFILE</span><span class="plain-syntax">, </span><span class="identifier-syntax">tab</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><span class="comment-syntax">TARGET_GLULX</span>
</pre>
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>&#167;25. Debugging. </b>Routines to print the state of a table, for debugging purposes only.
</p>
@ -1030,7 +1028,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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-srt.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-blc.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -439,7 +439,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">&#10094;</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-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">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="S-dfn.html">&#10094;</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-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-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">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -69,11 +69,6 @@
<spon class="sectiontitle">Mathematics Template</span></a> -
<span class="sectionpurpose">Mathematical functions, especially for real numbers.</span></p>
</li>
<li>
<p class="chapterentry"><a href="S-fl.html">
<spon class="sectiontitle">FileIO Template</span></a> -
<span class="sectionpurpose">Reading and writing external files, in the Glulx virtual machine only.</span></p>
</li>
<li>
<p class="chapterentry"><a href="S-srt.html">
<spon class="sectiontitle">Sort Template</span></a> -

10
inform7/.gitignore vendored
View file

@ -56,10 +56,12 @@ Tests/Test Problems/_Results_Actual/
Tests/Test Filings/_Results_Actual/
Tests/Documentation/
Internal/Inter/BasicInformKit/*.interb
Internal/Inter/BasicInformExtrasKit/*.interb
Internal/Inter/WorldModelKit/*.interb
Internal/Inter/CommandParserKit/*.interb
Internal/Inter/Architecture16Kit/*.interb
Internal/Inter/Architecture32Kit/*.interb
Internal/Inter/BasicInformExtrasKit/*.interb
Internal/Inter/BasicInformKit/*.interb
Internal/Inter/CommandParserKit/*.interb
Internal/Inter/DialogueKit/*.interb
Internal/Inter/EnglishLanguageKit/*.interb
Internal/Inter/WorldModelKit/*.interb

View file

@ -1,16 +1,16 @@
Total memory consumption was 137321K = 134 MB
Total memory consumption was 137305K = 134 MB
---- was used for 2100339 objects, in 372168 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2100348 objects, in 372177 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 4809 x 100 = 480900 objects, 27084288 bytes
17.8% linked_list 44802 objects, 25089120 bytes
17.8% linked_list 44805 objects, 25090800 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.6% scan_directory 919 objects, 3793632 bytes
2.7% 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
@ -93,16 +93,16 @@ Total memory consumption was 137321K = 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 631 objects, 25240 bytes
---- filename 632 objects, 25280 bytes
---- shared_variable_set_array 6 x 100 = 600 objects, 24192 bytes
---- property 146 objects, 22192 bytes
---- backdrops_data 672 objects, 21504 bytes
---- pathname 523 objects, 20920 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
---- build_vertex 165 objects, 19800 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
@ -132,9 +132,9 @@ Total memory consumption was 137321K = 134 MB
---- inform_extension 32 objects, 6656 bytes
---- text_literal_holder 163 objects, 6520 bytes
---- parsed_use_option_setting 79 objects, 5688 bytes
---- section_md 58 objects, 5568 bytes
---- section_md 59 objects, 5664 bytes
---- compatibility_specification 114 objects, 5472 bytes
---- build_script 165 objects, 5280 bytes
---- build_script 166 objects, 5312 bytes
---- explicit_action_array 1 x 100 objects, 4832 bytes
---- activity 35 objects, 4760 bytes
---- value_property_data 84 objects, 4704 bytes
@ -251,7 +251,7 @@ Total memory consumption was 137321K = 134 MB
99.9% was used for memory not allocated for objects:
61.8% text stream storage 87009544 bytes in 503960 claims
61.8% text stream storage 86993320 bytes in 503965 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
@ -260,7 +260,7 @@ Total memory consumption was 137321K = 134 MB
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
3.2% inter symbols storage 4586560 bytes in 28078 claims
11.9% inter bytecode storage 16766344 bytes in 15 claims
11.9% inter bytecode storage 16765540 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 137321K = 134 MB
---- code generation workspace for objects 3480 bytes in 19 claims
0.1% emitter array storage 280672 bytes in 2002 claims
-136.-7% was overhead - -192257768 bytes = -187751K = -183 MB
-136.-7% was overhead - -192263904 bytes = -187757K = -183 MB

View file

@ -1,13 +1,13 @@
100.0% in inform7 run
69.2% in compilation to Inter
49.1% in //Sequence::undertake_queued_tasks//
4.7% in //MajorNodes::pre_pass//
3.2% in //MajorNodes::pass_1//
69.4% in compilation to Inter
48.9% in //Sequence::undertake_queued_tasks//
4.9% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1//
1.7% in //ImperativeDefinitions::assess_all//
1.5% in //RTKindConstructors::compile//
1.5% in //RTPhrasebook::compile_entries//
1.1% in //Sequence::lint_inter//
0.7% in //ImperativeDefinitions::compile_first_block//
1.3% in //RTKindConstructors::compile//
1.3% in //RTPhrasebook::compile_entries//
0.9% in //Sequence::lint_inter//
0.5% in //ImperativeDefinitions::compile_first_block//
0.5% in //MajorNodes::pass_2//
0.5% in //World::stage_V//
0.3% in //InferenceSubjects::emit_all//
@ -16,17 +16,17 @@
0.1% in //CompletionModule::compile//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
2.5% not specifically accounted for
27.0% in running Inter pipeline
3.0% not specifically accounted for
26.9% in running Inter pipeline
11.1% in step 14/15: generate inform6 -> auto.inf
5.9% in step 5/15: load-binary-kits
5.3% in step 6/15: make-synoptic-module
5.1% 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.1% not specifically accounted for
3.0% in supervisor
0.6% not specifically accounted for
1.0% not specifically accounted for
3.1% in supervisor
0.4% not specifically accounted for

View file

@ -10,4 +10,5 @@ Sections
Startup
Character Set
Input Output
File Input Output
Veneer

View file

@ -96,3 +96,40 @@ the ZSCII character set.
if (c == 220) return c + 1;
return c;
];
@ It's convenient to provide this relatively fast routine to reverse the
case of a letter, since this is an operation used frequently in regular
expression matching.
=
[ TEXT_TY_RevCase ch;
if (ch<'A') return ch;
if ((ch >= 'a') && (ch <= 'z')) return ch-'a'+'A';
if ((ch >= 'A') && (ch <= 'Z')) return ch-'A'+'a';
if (ch<128) return ch;
if ((ch >= 155) && (ch <= 157)) return ch+3; ! a, o, u umlaut in ZSCII
if ((ch >= 158) && (ch <= 160)) return ch-3; ! A, O, U umlaut
if ((ch >= 164) && (ch <= 165)) return ch+3; ! e, i umlaut
if ((ch >= 167) && (ch <= 168)) return ch-3; ! E, I umlaut
if ((ch >= 169) && (ch <= 174)) return ch+6; ! a, e, i, o, u, y acute
if ((ch >= 175) && (ch <= 180)) return ch-6; ! A, E, I, O, U, Y acute
if ((ch >= 181) && (ch <= 185)) return ch+5; ! a, e, i, o, u grave
if ((ch >= 186) && (ch <= 190)) return ch-5; ! A, E, I, O, U grave
if ((ch >= 191) && (ch <= 195)) return ch+5; ! a, e, i, o, u circumflex
if ((ch >= 196) && (ch <= 200)) return ch-5; ! A, E, I, O, U circumflex
if (ch == 201) return 202; ! a circle
if (ch == 202) return 201; ! A circle
if (ch == 203) return 204; ! o slash
if (ch == 204) return 203; ! O slash
if ((ch >= 205) && (ch <= 207)) return ch+3; ! a, n, o tilde
if ((ch >= 208) && (ch <= 210)) return ch-3; ! A, N, O tilde
if (ch == 211) return 212; ! ae ligature
if (ch == 212) return 211; ! AE ligature
if (ch == 213) return 214; ! c cedilla
if (ch == 214) return 213; ! C cedilla
if (ch == 215 or 216) return ch+2; ! thorn, eth
if (ch == 217 or 218) return ch-2; ! Thorn, Eth
if (ch == 220) return 221; ! oe ligature
if (ch == 221) return 220; ! OE ligature
return ch;
];

View file

@ -0,0 +1,38 @@
File Input Output Template.
Access to external files.
@h API.
The 16-bit architecture does not allow for any external file I/O at all,
so these functions essentially refuse to do anything. Note that |FileIO_GetC|
returns end-of-file at all times, thus treating all files as if empty.
=
[ FileIO_Exists extf; rfalse; ];
[ FileIO_Ready extf; rfalse; ];
[ FileIO_GetC extf; return -1; ];
[ FileIO_PutTable extf tab;
return FileIO_Error(extf, "external files cannot be used in the Z-machine");
];
[ FileIO_MarkReady extf status; FileIO_PutTable(extf); ];
[ FileIO_GetTable extf tab; FileIO_PutTable(extf); ];
[ FileIO_PrintContents extf; FileIO_PutTable(extf); ];
[ FileIO_PutContents extf; FileIO_PutTable(extf); ];
@h Errors.
This could be used for I/O errors of all kinds, but in fact we only need one:
see above.
=
[ FileIO_Error extf err_text struc;
if ((extf < 1) || (extf > NO_EXTERNAL_FILES)) {
print "^*** Error on unknown file: ", (string) err_text, " ***^";
} else {
struc = TableOfExternalFiles-->extf;
print "^*** Error on file '",
(string) struc-->AUXF_FILENAME, "': ",
(string) err_text, " ***^";
}
RunTimeProblem(RTP_FILEIOERROR);
return 0;
];

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture16Kit",
"version": "10.2.0-beta+6W57"
"version": "10.2.0-beta+6W58"
},
"compatibility": "16-bit",
"kit-details": {

View file

@ -11,4 +11,5 @@ Sections
Startup
Character Set
Input Output
File Input Output
Veneer

View file

@ -111,3 +111,18 @@ 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); ];
@ It's convenient to provide this relatively fast routine to reverse the
case of a letter, since this is an operation used frequently in regular
expression matching.
=
[ TEXT_TY_RevCase ch;
if (ch<'A') return ch;
if ((ch >= 'a') && (ch <= 'z')) return ch-'a'+'A';
if ((ch >= 'A') && (ch <= 'Z')) return ch-'A'+'a';
if (ch<128) return ch;
if (CharIsOfCase(ch, 0)) return CharToCase(ch, 1);
if (CharIsOfCase(ch, 1)) return CharToCase(ch, 0);
return ch;
];

View file

@ -1,61 +1,6 @@
FileIO Template.
File Input Output Template.
Reading and writing external files, in the Glulx virtual machine only.
@h Structure.
The I7 kind of value "auxiliary-file" is an |-->| array, holding a memory
structure containing information about external files. The following
constants specify memory offsets and values. Note the safety value stored
as the first word of the structure: this helps protect the routines below
from accidents. (16339, besides being prime, is a number interesting to the
author of Inform since it was the examination board identifying number of
his school, and so had to be filled in on all of the many papers he sat
during his formative years.)
=
Constant AUXF_MAGIC = 0; ! First word holds a safety constant
Constant AUXF_MAGIC_VALUE = 16339; ! Should be first word of any valid file structure
Constant AUXF_STATUS = 1; ! One of the following:
Constant AUXF_STATUS_IS_CLOSED = 1; ! Currently closed, or perhaps doesn't exist
Constant AUXF_STATUS_IS_OPEN_FOR_READ = 2;
Constant AUXF_STATUS_IS_OPEN_FOR_WRITE = 3;
Constant AUXF_STATUS_IS_OPEN_FOR_APPEND = 4;
Constant AUXF_STATUS_IS_ERRONEOUS = 5;
Constant AUXF_BINARY = 2; ! False for text files (I7 default), true for binary
Constant AUXF_STREAM = 3; ! Stream for an open file (meaningless otherwise)
Constant AUXF_FILENAME = 4; ! Packed address of constant string
Constant AUXF_IFID_OF_OWNER = 5; ! UUID_ARRAY if owned by this project, or
! string array of IFID of owner, or NULL to leave open
Constant AUXF_RESOURCE_ID = 6; ! Only for internal files, identified by Blorb resource
@h Instances.
These structures are not dynamically created: they are precompiled by the Inform
compiler, already filled in with the necessary values. The following command
generates them.
@h Errors.
This is used for I/O errors of all kinds: it isn't within the Glulx-only
code because one of the errors is to try to use these routines on the
Z-machine.
=
[ FileIO_Error extf err_text struc;
if ((extf < 1) || (extf > NO_EXTERNAL_FILES)) {
print "^*** Error on unknown file: ", (string) err_text, " ***^";
} else {
struc = TableOfExternalFiles-->extf;
print "^*** Error on file '",
(string) struc-->AUXF_FILENAME, "': ",
(string) err_text, " ***^";
}
RunTimeProblem(RTP_FILEIOERROR);
return 0;
];
@h Glulx Material.
=
#IFDEF TARGET_GLULX;
Access to external files.
@h Existence.
Determine whether a file exists on disc. Note that we have no concept of
@ -484,20 +429,20 @@ InternalFileReadChar(F, N) reads the data at position N in file F.
rfalse;
];
@h Z-Machine Stubs.
These routines do the minimum possible, but equally, they only generate a
run-time problem when there is no alternative.
@h Errors.
This could be used for I/O errors of all kinds, but in fact we only need one:
see above.
=
#IFNOT; ! TARGET_GLULX
[ FileIO_Exists extf; rfalse; ];
[ FileIO_Ready extf; rfalse; ];
[ FileIO_GetC extf; return -1; ];
[ FileIO_PutTable extf tab;
return FileIO_Error(extf, "external files can only be used under Glulx");
[ FileIO_Error extf err_text struc;
if ((extf < 1) || (extf > NO_EXTERNAL_FILES)) {
print "^*** Error on unknown file: ", (string) err_text, " ***^";
} else {
struc = TableOfExternalFiles-->extf;
print "^*** Error on file '",
(string) struc-->AUXF_FILENAME, "': ",
(string) err_text, " ***^";
}
RunTimeProblem(RTP_FILEIOERROR);
return 0;
];
[ FileIO_MarkReady extf status; FileIO_PutTable(extf); ];
[ FileIO_GetTable extf tab; FileIO_PutTable(extf); ];
[ FileIO_PrintContents extf; FileIO_PutTable(extf); ];
[ FileIO_PutContents extf; FileIO_PutTable(extf); ];
#ENDIF; ! TARGET_GLULX

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture32Kit",
"version": "10.2.0-beta+6W57"
"version": "10.2.0-beta+6W58"
},
"compatibility": "32-bit",
"kit-details": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformExtrasKit",
"version": "10.2.0-beta+6W57"
"version": "10.2.0-beta+6W58"
},
"kit-details": {
"has-priority": 1

View file

@ -10,7 +10,6 @@ Sections
Utilities
Paragraphing
Mathematics
FileIO
Sort
Tables
MStack

View file

@ -72,56 +72,6 @@ it unchanged if it is not a letter with variant casings.
return c;
];
@h Reversing Case.
It's convenient to provide this relatively fast routine to reverse the
case of a letter since this is an operation used frequently in regular
expression matching (see "RegExp.i6t").
=
#IFDEF TARGET_ZCODE;
[ TEXT_TY_RevCase ch;
if (ch<'A') return ch;
if ((ch >= 'a') && (ch <= 'z')) return ch-'a'+'A';
if ((ch >= 'A') && (ch <= 'Z')) return ch-'A'+'a';
if (ch<128) return ch;
if ((ch >= 155) && (ch <= 157)) return ch+3; ! a, o, u umlaut in ZSCII
if ((ch >= 158) && (ch <= 160)) return ch-3; ! A, O, U umlaut
if ((ch >= 164) && (ch <= 165)) return ch+3; ! e, i umlaut
if ((ch >= 167) && (ch <= 168)) return ch-3; ! E, I umlaut
if ((ch >= 169) && (ch <= 174)) return ch+6; ! a, e, i, o, u, y acute
if ((ch >= 175) && (ch <= 180)) return ch-6; ! A, E, I, O, U, Y acute
if ((ch >= 181) && (ch <= 185)) return ch+5; ! a, e, i, o, u grave
if ((ch >= 186) && (ch <= 190)) return ch-5; ! A, E, I, O, U grave
if ((ch >= 191) && (ch <= 195)) return ch+5; ! a, e, i, o, u circumflex
if ((ch >= 196) && (ch <= 200)) return ch-5; ! A, E, I, O, U circumflex
if (ch == 201) return 202; ! a circle
if (ch == 202) return 201; ! A circle
if (ch == 203) return 204; ! o slash
if (ch == 204) return 203; ! O slash
if ((ch >= 205) && (ch <= 207)) return ch+3; ! a, n, o tilde
if ((ch >= 208) && (ch <= 210)) return ch-3; ! A, N, O tilde
if (ch == 211) return 212; ! ae ligature
if (ch == 212) return 211; ! AE ligature
if (ch == 213) return 214; ! c cedilla
if (ch == 214) return 213; ! C cedilla
if (ch == 215 or 216) return ch+2; ! thorn, eth
if (ch == 217 or 218) return ch-2; ! Thorn, Eth
if (ch == 220) return 221; ! oe ligature
if (ch == 221) return 220; ! OE ligature
return ch;
];
#IFNOT;
[ TEXT_TY_RevCase ch;
if (ch<'A') return ch;
if ((ch >= 'a') && (ch <= 'z')) return ch-'a'+'A';
if ((ch >= 'A') && (ch <= 'Z')) return ch-'A'+'a';
if (ch<128) return ch;
if (CharIsOfCase(ch, 0)) return CharToCase(ch, 1);
if (CharIsOfCase(ch, 1)) return CharToCase(ch, 0);
return ch;
];
#ENDIF;
@h DigitToValue.
This takes a ZSCII or Unicode character code and returns its value as a digit,
or returns $-1$ if it isn't a digit.

View file

@ -130,6 +130,29 @@ Constant INDEFART_PK = $102;
Constant LIGHTED_PK = $103;
Constant UNLIGHTED_PK = $104;
@h Auxiliary file structure.
The I7 kind of value "auxiliary-file" is an |-->| array, holding a memory
structure containing information about external files. The following
constants specify memory offsets and values. Note the safety value stored
as the first word of the structure: this helps protect the routines below
from accidents.
=
Constant AUXF_MAGIC = 0; ! First word holds a safety constant
Constant AUXF_MAGIC_VALUE = 16339; ! Should be first word of any valid file structure
Constant AUXF_STATUS = 1; ! One of the following:
Constant AUXF_STATUS_IS_CLOSED = 1; ! Currently closed, or perhaps doesn't exist
Constant AUXF_STATUS_IS_OPEN_FOR_READ = 2;
Constant AUXF_STATUS_IS_OPEN_FOR_WRITE = 3;
Constant AUXF_STATUS_IS_OPEN_FOR_APPEND = 4;
Constant AUXF_STATUS_IS_ERRONEOUS = 5;
Constant AUXF_BINARY = 2; ! False for text files (I7 default), true for binary
Constant AUXF_STREAM = 3; ! Stream for an open file (meaningless otherwise)
Constant AUXF_FILENAME = 4; ! Packed address of constant string
Constant AUXF_IFID_OF_OWNER = 5; ! UUID_ARRAY if owned by this project, or
! string array of IFID of owner, or NULL to leave open
Constant AUXF_RESOURCE_ID = 6; ! Only for internal files, identified by Blorb resource
@h Run-Time Problem Numbers.
The enumeration sequence here must correspond to that in the file of RTP
texts, which is used to generate the HTML pages displayed by the Inform

View file

@ -817,7 +817,6 @@ is called.
And this is how we unserialise again. It makes sense only on Glulx.
=
#ifdef TARGET_GLULX;
[ TableRead tab auxf row maxrow col ch v sgn dg j tc kov;
for (col=1:col<=tab-->0:col++) {
j = tab-->col; ! Address of column table
@ -894,7 +893,6 @@ And this is how we unserialise again. It makes sense only on Glulx.
.NotTable;
return RunTimeProblem(RTP_TABLE_BADFILE, tab);
];
#ENDIF; ! TARGET_GLULX
@h Debugging.
Routines to print the state of a table, for debugging purposes only.

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformKit",
"version": "10.2.0-beta+6W57"
"version": "10.2.0-beta+6W58"
},
"needs": [ {
"unless": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "CommandParserKit",
"version": "10.2.0-beta+6W57"
"version": "10.2.0-beta+6W58"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "EnglishLanguageKit",
"version": "10.2.0-beta+6W57"
"version": "10.2.0-beta+6W58"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "WorldModelKit",
"version": "10.2.0-beta+6W57"
"version": "10.2.0-beta+6W58"
},
"needs": [ {
"need": {

View file

@ -54,9 +54,11 @@ Tests/Test Problems/_Results_Actual/
Tests/Test Filings/_Results_Actual/
Tests/Documentation/
Internal/Inter/BasicInformKit/*.interb
Internal/Inter/BasicInformExtrasKit/*.interb
Internal/Inter/WorldModelKit/*.interb
Internal/Inter/CommandParserKit/*.interb
Internal/Inter/Architecture16Kit/*.interb
Internal/Inter/Architecture32Kit/*.interb
Internal/Inter/BasicInformExtrasKit/*.interb
Internal/Inter/BasicInformKit/*.interb
Internal/Inter/CommandParserKit/*.interb
Internal/Inter/DialogueKit/*.interb
Internal/Inter/EnglishLanguageKit/*.interb
Internal/Inter/WorldModelKit/*.interb