1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-17 07:40:47 +03:00

Removal of BasicInformExtrasKit

This commit is contained in:
Graham Nelson 2023-06-11 14:34:38 +01:00
parent 93f871711b
commit d7d1d09277
51 changed files with 439 additions and 592 deletions

View file

@ -125,10 +125,11 @@ following command-line tools:
The following webs are the source for kits of Inter code shipped with Inform (at the subtree inform7/Internal/Inter). Kits are libraries of code needed at run-time, and whose source is written in Inform 6 notation:
* BasicInformKit - Support for Inform as a programming language - [★ Web](https://ganelson.github.io/inform/BasicInformKit/index.html)
* Architecture16Kit - Support for running on 16-bit platforms - [★ Web](https://ganelson.github.io/inform/Architecture16Kit/index.html)
* Architecture32Kit - Support for running on 32-bit platforms - [★ Web](https://ganelson.github.io/inform/Architecture32Kit/index.html)
* WorldModelKit - Support for modelling space, time and actions in interactive fiction - [★ Web](https://ganelson.github.io/inform/WorldModelKit/index.html)
* EnglishLanguageKit - Support for English as the natural language used - [★ Web](https://ganelson.github.io/inform/EnglishLanguageKit/index.html)
* CommandParserKit - Support for parsing turn-by-turn commands in interactive fiction - [★ Web](https://ganelson.github.io/inform/CommandParserKit/index.html)
* BasicInformExtrasKit - Additional support needed only if the Standard Rules are not used - [★ Web](https://ganelson.github.io/inform/BasicInformExtrasKit/index.html)
* DialogueKit - Additional support for dialogue (under construction) - [★ Web](https://ganelson.github.io/inform/DialogueKit/index.html)
### Extensions shipped with Inform

View file

@ -62,7 +62,6 @@ web: "WorldModelKit" at "inform7/Internal/Inter/WorldModelKit" in "docs/WorldMod
web: "EnglishLanguageKit" at "inform7/Internal/Inter/EnglishLanguageKit" in "docs/EnglishLanguageKit"
web: "CommandParserKit" at "inform7/Internal/Inter/CommandParserKit" in "docs/CommandParserKit"
web: "BasicInformKit" at "inform7/Internal/Inter/BasicInformKit" in "docs/BasicInformKit"
web: "BasicInformExtrasKit" at "inform7/Internal/Inter/BasicInformExtrasKit" in "docs/BasicInformExtrasKit"
web: "Architecture16Kit" at "inform7/Internal/Inter/Architecture16Kit" in "docs/Architecture16Kit"
web: "Architecture32Kit" at "inform7/Internal/Inter/Architecture32Kit" in "docs/Architecture32Kit"
web: "DialogueKit" at "inform7/Internal/Inter/DialogueKit" in "docs/DialogueKit"

View file

@ -5,40 +5,6 @@
<p>A kit of Inter code providing runtime support for all programs written
with Inform.</p>
</div>
<div class="w3-quarter">
<a href="BasicInformExtrasKit/index.html"><img src="docs-assets/kit.jpg" alt="BasicInformExtrasKit" style="width:100%"></a>
<h3><a href="BasicInformExtrasKit/index.html">BasicInformExtrasKit</a></h3>
<p>A kit of Inter code providing runtime support for all programs not using
WorldModelKit.</p>
</div>
<div class="w3-quarter">
<a href="EnglishLanguageKit/index.html"><img src="docs-assets/kit.jpg" alt="EnglishLanguageKit" style="width:100%"></a>
<h3><a href="EnglishLanguageKit/index.html">EnglishLanguageKit</a></h3>
<p>A kit of Inter code providing runtime support for programs compiled
with English as their natural language.</p>
</div>
</div>
<div class="w3-row-padding w3-padding-16 w3-center">
<div class="w3-quarter">
<a href="WorldModelKit/index.html"><img src="docs-assets/ifkit.jpg" alt="WorldModelKit" style="width:100%"></a>
<h3><a href="WorldModelKit/index.html">WorldModelKit</a></h3>
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a simulated world.</p>
</div>
<div class="w3-quarter">
<a href="CommandParserKit/index.html"><img src="docs-assets/ifkit.jpg" alt="CommandParserKit" style="width:100%"></a>
<h3><a href="CommandParserKit/index.html">CommandParserKit</a></h3>
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a command parser interface.</p>
</div>
<div class="w3-quarter">
<a href="DialogueKit/index.html"><img src="docs-assets/ifkit.jpg" alt="DialogueKit" style="width:100%"></a>
<h3><a href="DialogueKit/index.html">DialogueKit</a></h3>
<p>A kit of Inter code eventually to provide runtime support for dialogue, an experimental
new feature of Inform which is not yet implemented.</p>
</div>
</div>
<div class="w3-row-padding w3-padding-16 w3-center">
<div class="w3-quarter">
<a href="Architecture16Kit/index.html"><img src="docs-assets/kit.jpg" alt="Architecture16Kit" style="width:100%"></a>
<h3><a href="Architecture16Kit/index.html">Architecture16Kit</a></h3>
@ -53,3 +19,31 @@
executables via C.</p>
</div>
</div>
<div class="w3-row-padding w3-padding-16 w3-center">
<div class="w3-quarter">
<a href="EnglishLanguageKit/index.html"><img src="docs-assets/kit.jpg" alt="EnglishLanguageKit" style="width:100%"></a>
<h3><a href="EnglishLanguageKit/index.html">EnglishLanguageKit</a></h3>
<p>A kit of Inter code providing runtime support for programs compiled
with English as their natural language.</p>
</div>
<div class="w3-quarter">
<a href="WorldModelKit/index.html"><img src="docs-assets/ifkit.jpg" alt="WorldModelKit" style="width:100%"></a>
<h3><a href="WorldModelKit/index.html">WorldModelKit</a></h3>
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a simulated world.</p>
</div>
<div class="w3-quarter">
<a href="CommandParserKit/index.html"><img src="docs-assets/ifkit.jpg" alt="CommandParserKit" style="width:100%"></a>
<h3><a href="CommandParserKit/index.html">CommandParserKit</a></h3>
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a command parser interface.</p>
</div>
</div>
<div class="w3-row-padding w3-padding-16 w3-center">
<div class="w3-quarter">
<a href="DialogueKit/index.html"><img src="docs-assets/ifkit.jpg" alt="DialogueKit" style="width:100%"></a>
<h3><a href="DialogueKit/index.html">DialogueKit</a></h3>
<p>A kit of Inter code eventually to provide runtime support for dialogue, an experimental
new feature of Inform which is not yet implemented.</p>
</div>
</div>

View file

@ -15,7 +15,7 @@ the project is being compiled to a 16-bit or a 32-bit platform.
However, if the "Basic Inform" checkbox is ticked on the Settings panel for
the project, the kits will instead be:
= (text)
Architecture32Kit + BasicInformKit + EnglishLanguageKit + BasicInformExtrasKit
Architecture32Kit + BasicInformKit + EnglishLanguageKit
=
And these are also the defaults when Inform projects are compiled from the command
line, with the optional |-basic| switch forcing us into the second case.

View file

@ -1,135 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Miscellany</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 'Miscellany' 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><b>BasicInformExtrasKit</b></li></ul></div>
<p class="purpose">Additions to the Basic Inform template which are needed only if the Standard Rules are not to be used.</p>
<ul class="toc"><li><a href="S-msc.html#SP1">&#167;1. Identification</a></li><li><a href="S-msc.html#SP2">&#167;2. Justification</a></li><li><a href="S-msc.html#SP3">&#167;3. Miscellany</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Identification. </b></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">BASICINFORMEXTRASKIT</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Justification. </b>Q. Why isn't all of this done with conditional compilation in the Basic Inform
template files? A. That wouldn't work, since template files are assimilated
before it is known how they will be used.
</p>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Miscellany. </b></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">ACTION_PROCESSING_RB</span><span class="plain-syntax"> = -1; </span><span class="comment-syntax">Identifier needs to exist even when the rulebook does not</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">DefaultTopic</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">PrintSnippet</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</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">" and "</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">PRINT_PROTAGONIST_INTERNAL_R</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RunTimeProblemShowWM</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="identifier-syntax">z</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">OwnerOf</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">MoveObject</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="reserved-syntax">to</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">WriteListOfMarkedObjects</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_style</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">objectloop</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">Object</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">workflag2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">objectloop</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">Object</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">workflag2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PrintShortName</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">--;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">", "</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">Main</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">self</span><span class="plain-syntax"> = </span><span class="identifier-syntax">COL_HSIZE</span><span class="plain-syntax">; </span><span class="comment-syntax">To ensure this definition is not optimised out</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_Initialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SEED_RANDOM_NUMBER_GENERATOR_R</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Submain</span><span class="plain-syntax">();</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LanguageInitialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HeapInitialise</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create a completely unused memory allocation heap</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StackFramingInitialise</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create an empty stack</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CreateDynamicRelations</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create relation structures on the heap</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">DrawStatusLine</span><span class="plain-syntax"> </span><span class="identifier-syntax">width</span><span class="plain-syntax"> </span><span class="identifier-syntax">posb</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">GetGNAOfObject</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">gender</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">gender</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">case</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LanguageAnimateGender</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LanguageInanimateGender</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">pluralname</span><span class="plain-syntax">) </span><span class="identifier-syntax">case</span><span class="plain-syntax"> = </span><span class="identifier-syntax">case</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">case</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">PNToVP</span><span class="plain-syntax"> </span><span class="identifier-syntax">gna</span><span class="plain-syntax">;</span>
<span class="comment-syntax">if (prior_named_noun == player) return story_viewpoint;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prior_named_noun</span><span class="plain-syntax">) </span><span class="identifier-syntax">gna</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GetGNAOfObject</span><span class="plain-syntax">(</span><span class="identifier-syntax">prior_named_noun</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">gna</span><span class="plain-syntax">%6)/3 == </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prior_named_list</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">2</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<!--End of weave-->
</main>
</body>
</html>

View file

@ -1,64 +0,0 @@
<html>
<head>
<title>BasicInformExtrasKit</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../index.html">home</a></li>
</ul><h2>Compiler</h2><ul>
<li><a href="../structure.html">structure</a></li>
<li><a href="../inbuildn.html">inbuild</a></li>
<li><a href="../inform7n.html">inform7</a></li>
<li><a href="../intern.html">inter</a></li>
<li><a href="../services.html">services</a></li>
<li><a href="../secrets.html">secrets</a></li>
</ul><h2>Other Tools</h2><ul>
<li><a href="../inblorbn.html">inblorb</a></li>
<li><a href="../indocn.html">indoc</a></li>
<li><a href="../inform6.html">inform6</a></li>
<li><a href="../inpolicyn.html">inpolicy</a></li>
<li><a href="../inrtpsn.html">inrtps</a></li>
</ul><h2>Resources</h2><ul>
<li><a href="../extensions.html">extensions</a></li>
<li><a href="../kits.html">kits</a></li>
</ul><h2>Repository</h2><ul>
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
</ul><h2>Related Projects</h2><ul>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
<main role="main">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><b>BasicInformExtrasKit</b></li></ul>
<p class="purpose">Additional Inter-level support for non-interactive fiction uses of the Inform language. This is version 1.</p>
<hr>
<div class="contentspage">
<ul class="chapterlist">
<li>
<p class="chapterentry"><a href="S-msc.html">
<spon class="sectiontitle">Miscellany</span></a> -
<span class="sectionpurpose">Additions to the Basic Inform template which are needed only if the Standard Rules are not to be used.</span></p>
</li>
</ul>
</div>
<hr>
<p class="purpose">Powered by <a href="https://github.com/ganelson/inweb">Inweb</a>.</p>
</main>
</body>
</html>

View file

@ -275,7 +275,7 @@ use the "listing contents of..." activity in any circumstances.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">SERIAL_COMMA_CFGF</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">no_items</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">","</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>

View file

@ -51,7 +51,7 @@
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Printing Template</b></li></ul></div>
<p class="purpose">To handle the printing of names of objects.</p>
<ul class="toc"><li><a href="S-prn.html#SP1">&#167;1. Short Name Storage</a></li><li><a href="S-prn.html#SP2">&#167;2. Object Names I</a></li><li><a href="S-prn.html#SP3">&#167;3. Standard Name Printing Rule</a></li><li><a href="S-prn.html#SP4">&#167;4. Object Names II</a></li><li><a href="S-prn.html#SP5">&#167;5. Object Names III</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-prn.html#SP1">&#167;1. Short Name Storage</a></li><li><a href="S-prn.html#SP2">&#167;2. Object Names I</a></li><li><a href="S-prn.html#SP3">&#167;3. Standard Name Printing Rule</a></li><li><a href="S-prn.html#SP4">&#167;4. Object Names II</a></li><li><a href="S-prn.html#SP5">&#167;5. Object Names III</a></li><li><a href="S-prn.html#SP6">&#167;6. Miscellaneous</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Short Name Storage. </b>None of the following functions should be called for the Z-machine if the
short name exceeds the size of the following buffer: whereas the Glulx
@ -124,7 +124,7 @@ do it by carrying out an activity.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">PSN__</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</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">o</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</span><span class="plain-syntax">); </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</span><span class="plain-syntax">); </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="reserved-syntax">metaclass</span><span class="plain-syntax">(</span><span class="identifier-syntax">o</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Routine</span><span class="plain-syntax">: </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"&lt;routine "</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">, </span><span class="string-syntax">"&gt;"</span><span class="plain-syntax">; </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">String</span><span class="plain-syntax">: </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"&lt;string ~"</span><span class="plain-syntax">, (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">o</span><span class="plain-syntax">, </span><span class="string-syntax">"~&gt;"</span><span class="plain-syntax">; </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
@ -149,7 +149,7 @@ the following "for" rule.
<span class="plain-syntax">[ </span><span class="identifier-syntax">STANDARD_NAME_PRINTING_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">parameter_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="reserved-syntax">metaclass</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Routine</span><span class="plain-syntax">: </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"&lt;routine "</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="string-syntax">"&gt;"</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
@ -257,7 +257,7 @@ indefinite singular depends on the text of the object's name.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">IndefArt</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</span><span class="plain-syntax">); </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</span><span class="plain-syntax">); </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax">; </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; </span><span class="identifier-syntax">s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">self</span><span class="plain-syntax">; </span><span class="identifier-syntax">self</span><span class="plain-syntax"> = </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">proper</span><span class="plain-syntax">) { </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PSN__</span><span class="plain-syntax">) </span><span class="identifier-syntax">obj</span><span class="plain-syntax">; </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">; </span><span class="identifier-syntax">self</span><span class="plain-syntax"> = </span><span class="identifier-syntax">s</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">provides</span><span class="plain-syntax"> </span><span class="identifier-syntax">article</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">TEXT_TY_Compare</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">.</span><span class="identifier-syntax">article</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_TEXT_VALUE</span><span class="plain-syntax">) ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
@ -268,7 +268,7 @@ indefinite singular depends on the text of the object's name.
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">CIndefArt</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'X'</span><span class="plain-syntax">); </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'X'</span><span class="plain-syntax">); </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax">; </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; </span><span class="identifier-syntax">s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">self</span><span class="plain-syntax">; </span><span class="identifier-syntax">self</span><span class="plain-syntax"> = </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">proper</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -313,6 +313,65 @@ indefinite singular depends on the text of the object's name.
<span class="plain-syntax"> </span><span class="identifier-syntax">PrefaceByArticle</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">); </span><span class="identifier-syntax">indef_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">; </span><span class="identifier-syntax">self</span><span class="plain-syntax"> = </span><span class="identifier-syntax">s</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. Miscellaneous. </b>What the following functions have in common is that they are all minimal
definitions which apply only to Basic Inform programs. More elaborate
<span class="extract"><span class="extract-syntax">WorldModelKit</span></span> alternatives will be used if that kit is present, as it
always is for non-Basic Inform projects.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">DrawStatusLine</span><span class="plain-syntax"> </span><span class="identifier-syntax">width</span><span class="plain-syntax"> </span><span class="identifier-syntax">posb</span><span class="plain-syntax">; ]; </span><span class="comment-syntax">No status line is displayed</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">DefaultTopic</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="comment-syntax">Topics exist only in CommandParserKit</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">PrintSnippet</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax">; ]; </span><span class="comment-syntax">Snippets exist only in CommandParserKit</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">PRINT_PROTAGONIST_INTERNAL_R</span><span class="plain-syntax">; ]; </span><span class="comment-syntax">There is no player in Basic Inform</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RunTimeProblemShowWM</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> </span><span class="identifier-syntax">z</span><span class="plain-syntax">; ]; </span><span class="comment-syntax">Prints RTPs only occurring in WorldModelKit</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>PNToVP() takes no arguments and returns the GNA (gender-noun-animation) for
the <span class="extract"><span class="extract-syntax">prior_named_noun</span></span>.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">PNToVP</span><span class="plain-syntax"> </span><span class="identifier-syntax">gna</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">prior_named_noun</span><span class="plain-syntax">) </span><span class="identifier-syntax">gna</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GetGNAOfObject</span><span class="plain-syntax">(</span><span class="identifier-syntax">prior_named_noun</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">gna</span><span class="plain-syntax">%6)/3 == </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prior_named_list</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">2</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">GetGNAOfObject</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">gender</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">gender</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">case</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LanguageAnimateGender</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LanguageInanimateGender</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">pluralname</span><span class="plain-syntax">) </span><span class="identifier-syntax">case</span><span class="plain-syntax"> = </span><span class="identifier-syntax">case</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">case</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. </b>This provides just a little of the list-writer.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">WriteListOfMarkedObjects</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_style</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">objectloop</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">Object</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">workflag2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">objectloop</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">Object</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">workflag2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PrintShortName</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">--;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">", "</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax"> </span><span class="identifier-syntax">X</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</span><span class="plain-syntax">; </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" and "</span><span class="plain-syntax">; ];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. </b>These two functions are not really to do with printing, but are also stubs
provided for Basic Inform only.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">OwnerOf</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">; ]; </span><span class="comment-syntax">"owner" implies personhood, and we have no people</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">MoveObject</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">; </span><span class="comment-syntax">this is considerably more restricted by WorldModelKit</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">A</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">B</span><span class="plain-syntax">)) </span><span class="reserved-syntax">move</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="reserved-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</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-act.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-act.html">act</a></li><li class="progresscurrent">prn</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-->

View file

@ -156,6 +156,7 @@ or failed if &mdash;
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax">; </span><span class="comment-syntax">Depth of processing recursion</span>
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">debugging_rules</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">; </span><span class="comment-syntax">Are we tracing rule invocations?</span>
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook_without_variables</span><span class="plain-syntax"> = -1; </span><span class="comment-syntax">WorldModelKit sets this to ACTION_PROCESSING_RB</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">FollowRulebook</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> </span><span class="identifier-syntax">parameter</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_paragraph_skips</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> </span><span class="identifier-syntax">ss</span><span class="plain-syntax"> </span><span class="identifier-syntax">spv</span><span class="plain-syntax">;</span>
@ -175,10 +176,10 @@ or failed if &mdash;
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">NUMBER_RULEBOOKS_CREATED</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rulebooks_array</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">rulebook</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">rv</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">EMPTY_RULEBOOK</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">rulebook</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">ACTION_PROCESSING_RB</span><span class="plain-syntax">) </span><span class="identifier-syntax">MStack_CreateRBVars</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</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">rulebook</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">rulebook_without_variables</span><span class="plain-syntax">) </span><span class="identifier-syntax">MStack_CreateRBVars</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</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">say__p</span><span class="plain-syntax">) </span><span class="identifier-syntax">RulebookParBreak</span><span class="plain-syntax">(</span><span class="identifier-syntax">no_paragraph_skips</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rv</span><span class="plain-syntax">(</span><span class="identifier-syntax">no_paragraph_skips</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">rulebook</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">ACTION_PROCESSING_RB</span><span class="plain-syntax">) </span><span class="identifier-syntax">MStack_DestroyRBVars</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</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">rulebook</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">rulebook_without_variables</span><span class="plain-syntax">) </span><span class="identifier-syntax">MStack_DestroyRBVars</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</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">rv</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>

View file

@ -352,7 +352,7 @@ are above 32K. This only rarely happens, but it can.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">PrintSnippet</span><span class="plain-syntax"> </span><span class="identifier-syntax">snip</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="reserved-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> </span><span class="identifier-syntax">w2</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">PrintSnippet</span><span class="plain-syntax"> </span><span class="identifier-syntax">snip</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="reserved-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> </span><span class="identifier-syntax">w2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">snip</span><span class="plain-syntax">/100; </span><span class="identifier-syntax">w2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> + (</span><span class="identifier-syntax">snip</span><span class="plain-syntax">%100) - </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">w2</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">w1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">w1</span><span class="plain-syntax">&lt;1) || (</span><span class="identifier-syntax">w2</span><span class="plain-syntax">&gt;</span><span class="identifier-syntax">WordCount</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">w1</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">w2</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
@ -4009,7 +4009,7 @@ Manual}, 4th edition.
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">GetGNAOfObject</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">gender</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">GetGNAOfObject</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">gender</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">hasnt</span><span class="plain-syntax"> </span><span class="identifier-syntax">animate</span><span class="plain-syntax">) </span><span class="identifier-syntax">case</span><span class="plain-syntax"> = </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">male</span><span class="plain-syntax">) </span><span class="identifier-syntax">gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">male</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">female</span><span class="plain-syntax">) </span><span class="identifier-syntax">gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">female</span><span class="plain-syntax">;</span>
@ -4288,7 +4288,7 @@ is defined in the Standard Rules, not here.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">DefaultTopic</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">GPR_FAIL</span><span class="plain-syntax">; ];</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">DefaultTopic</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">GPR_FAIL</span><span class="plain-syntax">; ];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP67" class="paragraph-anchor"></a><b>&#167;67. Recognition-only-GPR. </b>An I6 general parsing routine to look at words from the position marker
<span class="extract"><span class="extract-syntax">wn</span></span> in the player's command to see if they match the contents of the

View file

@ -244,9 +244,9 @@ before objects in Room B if A was created before B in the source text).
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mixed_parentage</span><span class="plain-syntax">) </span><span class="identifier-syntax">common_parent</span><span class="plain-syntax"> = </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">length</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">in_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ISARE_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'W'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">in_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">CFIRSTART_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'X'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</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">in_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ISARE_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'W'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">in_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">CFIRSTART_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'X'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</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">push</span><span class="plain-syntax"> </span><span class="identifier-syntax">MarkedObjectArray</span><span class="plain-syntax">; @</span><span class="identifier-syntax">push</span><span class="plain-syntax"> </span><span class="identifier-syntax">MarkedObjectLength</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MarkedObjectArray</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RequisitionStack</span><span class="plain-syntax">(</span><span class="identifier-syntax">length</span><span class="plain-syntax">);</span>
@ -296,7 +296,7 @@ prior named list number and gender for everything matching a description.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">PNToVP</span><span class="plain-syntax"> </span><span class="identifier-syntax">gna</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">PNToVP</span><span class="plain-syntax"> </span><span class="identifier-syntax">gna</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">prior_named_noun</span><span class="plain-syntax"> == </span><span class="identifier-syntax">player</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_viewpoint</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">prior_named_noun</span><span class="plain-syntax">) </span><span class="identifier-syntax">gna</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GetGNAOfObject</span><span class="plain-syntax">(</span><span class="identifier-syntax">prior_named_noun</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">gna</span><span class="plain-syntax">%6)/3 == </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prior_named_list</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">2</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax">;</span>
@ -589,8 +589,8 @@ variables detailing the current list-writing process, and begin.
<span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c_iterator</span><span class="plain-syntax">(</span><span class="identifier-syntax">first</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">START_ITF</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">first</span><span class="plain-syntax"> == </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">in_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ISARE_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'W'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</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">in_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ISARE_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'W'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</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">in_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">NEWLINE_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">new_line</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</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">noactivity</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">iter</span><span class="plain-syntax">)) {</span>
@ -822,7 +822,7 @@ in the above sense.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ISARE_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SetLWI</span><span class="plain-syntax">(</span><span class="identifier-syntax">index</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'V'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'V'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">NEWLINE_BIT</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">":^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">char</span><span class="plain-syntax">) </span><span class="character-syntax">' '</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> - </span><span class="identifier-syntax">ISARE_BIT</span><span class="plain-syntax">;</span>
@ -891,7 +891,7 @@ in the above sense.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">SERIAL_COMMA_CFGF</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">cl</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">","</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">groups_to_do</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">", "</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -1032,17 +1032,17 @@ the iterator used at the top level) and increasing the depth by 1.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">container</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">hasnt</span><span class="plain-syntax"> </span><span class="identifier-syntax">open</span><span class="plain-syntax">) </span><span class="identifier-syntax">combo</span><span class="plain-syntax">=</span><span class="identifier-syntax">combo</span><span class="plain-syntax">+2;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">container</span><span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">open</span><span class="plain-syntax"> || </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">transparent</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> &amp;&amp; (</span><span class="reserved-syntax">child</span><span class="plain-syntax">(</span><span class="identifier-syntax">o</span><span class="plain-syntax">)==0)) </span><span class="identifier-syntax">combo</span><span class="plain-syntax">=</span><span class="identifier-syntax">combo</span><span class="plain-syntax">+4;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">combo</span><span class="plain-syntax">) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="comment-syntax">space and open bracket</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">combo</span><span class="plain-syntax">) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="comment-syntax">space and open bracket</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">combo</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'D'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">: </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'E'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">: </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'H'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax">: </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'F'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax">: </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'I'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax">: </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'G'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax">: </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'J'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'D'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">: </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'E'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">: </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'H'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax">: </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'F'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax">: </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'I'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax">: </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'G'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax">: </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'J'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">combo</span><span class="plain-syntax">) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">); </span><span class="comment-syntax">close bracket</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">combo</span><span class="plain-syntax">) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">); </span><span class="comment-syntax">close bracket</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">EndActivity</span><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTING_ROOM_DESC_DETAILS_ACT</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="comment-syntax">end of PARTINV_BIT processing</span>
@ -1050,10 +1050,10 @@ the iterator used at the top level) and increasing the depth by 1.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">FULLINV_BIT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BeginActivity</span><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTING_INVENTORY_DETAILS_ACT</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ForActivity</span><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTING_INVENTORY_DETAILS_ACT</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">) == </span><span class="reserved-syntax">false</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">light</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">worn</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'K'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">light</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">worn</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'K'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</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">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">light</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'D'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">worn</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'L'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">light</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'D'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">worn</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'L'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">container</span><span class="plain-syntax">) {</span>
@ -1061,25 +1061,25 @@ the iterator used at the top level) and increasing the depth by 1.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">SERIAL_COMMA_CFGF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">","</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</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">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">open</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="reserved-syntax">child</span><span class="plain-syntax">(</span><span class="identifier-syntax">o</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'M'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'N'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="reserved-syntax">child</span><span class="plain-syntax">(</span><span class="identifier-syntax">o</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'M'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'N'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">lockable</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">locked</span><span class="plain-syntax">) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'P'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'O'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</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">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">lockable</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">locked</span><span class="plain-syntax">) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'P'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'O'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="reserved-syntax">child</span><span class="plain-syntax">(</span><span class="identifier-syntax">o</span><span class="plain-syntax">)==0 &amp;&amp; </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">transparent</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">parenth_flag</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'F'</span><span class="plain-syntax">); }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> { </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'F'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">); }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'F'</span><span class="plain-syntax">); }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> { </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'F'</span><span class="plain-syntax">); </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">); }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax">) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parenth_flag</span><span class="plain-syntax">) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">EndActivity</span><span class="plain-syntax">(</span><span class="identifier-syntax">PRINTING_INVENTORY_DETAILS_ACT</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="comment-syntax">end of FULLINV_BIT processing</span>
@ -1094,7 +1094,7 @@ the iterator used at the top level) and increasing the depth by 1.
<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">child_count</span><span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ALWAYS_BIT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ENGLISH_BIT</span><span class="plain-syntax">) { </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" "</span><span class="plain-syntax">; </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'Q'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" "</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ENGLISH_BIT</span><span class="plain-syntax">) { </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" "</span><span class="plain-syntax">; </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'Q'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" "</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">recurse_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -1102,18 +1102,18 @@ the iterator used at the top level) and increasing the depth by 1.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">supporter</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ENGLISH_BIT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">TERSE_BIT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'R'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'S'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'R'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'S'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">recurse_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">container</span><span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">open</span><span class="plain-syntax"> || </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">transparent</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ENGLISH_BIT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">TERSE_BIT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'T'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'U'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'T'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'U'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">recurse_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -1121,7 +1121,7 @@ the iterator used at the top level) and increasing the depth by 1.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">recurse_flag</span><span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">ENGLISH_BIT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SetLWI</span><span class="plain-syntax">(</span><span class="identifier-syntax">child_count</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">eldest_child</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'V'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" "</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'V'</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">); </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" "</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">NEWLINE_BIT</span><span class="plain-syntax">) </span><span class="reserved-syntax">new_line</span><span class="plain-syntax">;</span>
@ -1135,7 +1135,7 @@ the iterator used at the top level) and increasing the depth by 1.
<span class="plain-syntax"> </span><span class="identifier-syntax">WriteListR</span><span class="plain-syntax">(</span><span class="identifier-syntax">o</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1, </span><span class="reserved-syntax">true</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">pull</span><span class="plain-syntax"> </span><span class="identifier-syntax">c_iterator</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">pull</span><span class="plain-syntax"> </span><span class="identifier-syntax">listing_size</span><span class="plain-syntax">; @</span><span class="identifier-syntax">pull</span><span class="plain-syntax"> </span><span class="identifier-syntax">listing_together</span><span class="plain-syntax">; @</span><span class="identifier-syntax">pull</span><span class="plain-syntax"> </span><span class="identifier-syntax">lt_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">TERSE_BIT</span><span class="plain-syntax">) </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c_style</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">TERSE_BIT</span><span class="plain-syntax">) </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">];</span>
</pre>
@ -1146,6 +1146,10 @@ response texts used by the list-writer.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax"> </span><span class="identifier-syntax">X</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</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">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="identifier-syntax">X</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</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-lgh.html">&#10094;</a></li><li class="progresssection"><a href="S-msc.html">msc</a></li><li class="progresssection"><a href="S-stt.html">stt</a></li><li class="progresssection"><a href="S-lgh.html">lgh</a></li><li class="progresscurrent">lst</li><li class="progresssection"><a href="S-ord.html">ord</a></li><li class="progresssection"><a href="S-act.html">act</a></li><li class="progresssection"><a href="S-fgr.html">fgr</a></li><li class="progresssection"><a href="S-otf.html">otf</a></li><li class="progresssection"><a href="S-prn.html">prn</a></li><li class="progresssection"><a href="S-wrl.html">wrl</a></li><li class="progresssection"><a href="S-mpr.html">mpr</a></li><li class="progresssection"><a href="S-rtp.html">rtp</a></li><li class="progresssection"><a href="S-tm.html">tm</a></li><li class="progresssection"><a href="S-tst.html">tst</a></li><li class="progresssection"><a href="S-chr.html">chr</a></li><li class="progresssection"><a href="S-str.html">str</a></li><li class="progressnext"><a href="S-ord.html">&#10095;</a></li></ul></div>

View file

@ -85,8 +85,9 @@ explained in the Standard Rules.
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">EarlyInTurnSequence</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">IterationsOfTurnSequence</span><span class="plain-syntax">;</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">Main</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">Main</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> | </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rulebook_without_variables</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ACTION_PROCESSING_RB</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">FollowRulebook</span><span class="plain-syntax">(</span><span class="identifier-syntax">STARTUP_RB</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">say__pc</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">) </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> - </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="reserved-syntax">true</span><span class="plain-syntax">) {</span>
@ -167,7 +168,7 @@ where he is, the surprise will not be spoiled.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LanguageInitialise</span><span class="plain-syntax">();</span>

View file

@ -172,7 +172,7 @@
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">c</span><span class="plain-syntax">-1) </span><span class="reserved-syntax">print</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="identifier-syntax">c</span><span class="plain-syntax">-1) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">SERIAL_COMMA_CFGF</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">","</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LIST_WRITER_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LW_Response</span><span class="plain-syntax">(</span><span class="character-syntax">'C'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">player</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">selfobj</span><span class="plain-syntax">) {</span>

View file

@ -140,7 +140,7 @@ in "ZMachine.i6t".
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">DrawStatusLine</span><span class="plain-syntax"> </span><span class="identifier-syntax">width</span><span class="plain-syntax"> </span><span class="identifier-syntax">posb</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">DrawStatusLine</span><span class="plain-syntax"> </span><span class="identifier-syntax">width</span><span class="plain-syntax"> </span><span class="identifier-syntax">posb</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">push</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__p</span><span class="plain-syntax">; @</span><span class="identifier-syntax">push</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BeginActivity</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTRUCTING_STATUS_LINE_ACT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_StatusLineHeight</span><span class="plain-syntax">(1); </span><span class="identifier-syntax">VM_MoveCursorInStatusLine</span><span class="plain-syntax">(1, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
@ -196,7 +196,7 @@ text substitution "[player's surroundings]".
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Player's name. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">PRINT_PROTAGONIST_INTERNAL_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">PRINT_PROTAGONIST_INTERNAL_R</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">indef_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">caps_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT_PROTAGONIST_INTERNAL_RM</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">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRINT_PROTAGONIST_INTERNAL_RM</span><span class="plain-syntax">(</span><span class="character-syntax">'B'</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>

View file

@ -56,7 +56,7 @@
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Reporting. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">RunTimeProblemShowWM</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">par1</span><span class="plain-syntax"> </span><span class="identifier-syntax">par2</span><span class="plain-syntax"> </span><span class="identifier-syntax">par3</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">RunTimeProblemShowWM</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">par1</span><span class="plain-syntax"> </span><span class="identifier-syntax">par2</span><span class="plain-syntax"> </span><span class="identifier-syntax">par3</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">n</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTP_BACKDROP</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">"Tried to move "</span><span class="plain-syntax">, (</span><span class="identifier-syntax">the</span><span class="plain-syntax">) </span><span class="identifier-syntax">par1</span><span class="plain-syntax">, </span><span class="string-syntax">" (a backdrop) to "</span><span class="plain-syntax">, (</span><span class="identifier-syntax">the</span><span class="plain-syntax">) </span><span class="identifier-syntax">par2</span><span class="plain-syntax">,</span>

View file

@ -401,7 +401,7 @@ from play, then <span class="extract"><span class="extract-syntax">worn</span></
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">OwnerOf</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">OwnerOf</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="reserved-syntax">parent</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax"> &amp;&amp; (</span><span class="identifier-syntax">p</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">K8_person</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">;</span>
@ -450,7 +450,7 @@ when moved.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">MoveObject</span><span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</span><span class="plain-syntax"> </span><span class="identifier-syntax">going_mode</span><span class="plain-syntax"> </span><span class="identifier-syntax">was</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">MoveObject</span><span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</span><span class="plain-syntax"> </span><span class="identifier-syntax">going_mode</span><span class="plain-syntax"> </span><span class="identifier-syntax">was</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</span><span class="plain-syntax"> == </span><span class="reserved-syntax">nothing</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_CANTMOVENOTHING</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">K7_backdrop</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">T</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">K9_region</span><span class="plain-syntax">) {</span>

View file

@ -351,7 +351,7 @@ the order in which filenames are read from a directory listing.
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"requirement malformed: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">errors</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../supervisor-module/2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><a href="../supervisor-module/1-ic.html#SP16" class="function-link"><span class="function-syntax">Supervisor::shared_nest_list</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../supervisor-module/2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><a href="../supervisor-module/1-ic.html#SP16" class="function-link"><span class="function-syntax">Supervisor::shared_nest_list</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP2_7" class="function-link"><span class="function-syntax">Main::add_target</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>

View file

@ -88,14 +88,18 @@ fiction being made with the Inform apps, the kits will always be:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">BasicInformKit + EnglishLanguageKit + WorldModelKit + CommandParserKit</span>
<span class="plain-syntax">BasicInformKit + Architecture32Kit + EnglishLanguageKit + WorldModelKit + CommandParserKit</span>
</pre>
<p class="commentary">That's for a 32-bit target, such as when Inform projects are compiled for Glulx:
the alternative is to swap <span class="extract"><span class="extract-syntax">Architecture16Kit</span></span> for <span class="extract"><span class="extract-syntax">Architecture32Kit</span></span>.
</p>
<p class="commentary">However, if the "Basic Inform" checkbox is ticked on the Settings panel for
the project, the kits will instead be:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">BasicInformKit + EnglishLanguageKit + BasicInformExtrasKit</span>
<span class="plain-syntax">BasicInformKit + Architecture32Kit + EnglishLanguageKit</span>
</pre>
<p class="commentary">And these are also the defaults when Inform projects are compiled from the command
line, with the optional <span class="extract"><span class="extract-syntax">-basic</span></span> switch forcing us into the second case. As a
@ -113,8 +117,8 @@ become:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">BasicInformKit + FrenchLanguageKit + WorldModelKit + CommandParserKit</span>
<span class="plain-syntax">BasicInformKit + FrenchLanguageKit + BasicInformExtrasKit</span>
<span class="plain-syntax">BasicInformKit + Architecture32Kit + FrenchLanguageKit + WorldModelKit + CommandParserKit</span>
<span class="plain-syntax">BasicInformKit + Architecture32Kit + FrenchLanguageKit</span>
</pre>
<p class="commentary">Projects can specify their own unusual choices of kits using a project_metadata.json
file: see <a href="M-agtpm.html" class="internal">A Guide to Project Metadata</a> for more on this. But assuming they
@ -141,25 +145,28 @@ for CommandParserKit includes:
<p class="commentary">Never mind the JSON syntax (all that punctuation) for now: what this is saying
is that CommandParserKit always needs WorldModelKit in order to function.
This means that any project depending on CommandParserKit automatically depends
on WorldModelKit too. BasicInformKit uses this facility as well, but in a
conditional way. Its own metadata file includes:
on WorldModelKit too.
</p>
<p class="commentary">For example, this can be used to say "unless we have kit MarthaKit, include
GeorgeKit":
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> {</span>
<span class="plain-syntax"> "unless": {</span>
<span class="plain-syntax"> "type": "kit",</span>
<span class="plain-syntax"> "title": "WorldModelKit"</span>
<span class="plain-syntax"> "title": "MarthaKit"</span>
<span class="plain-syntax"> },</span>
<span class="plain-syntax"> "need": {</span>
<span class="plain-syntax"> "type": "kit",</span>
<span class="plain-syntax"> "title": "BasicInformExtrasKit"</span>
<span class="plain-syntax"> "title": "GeorgeKit"</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<p class="commentary">Inbuild acts on this by checking to see if WorldModelKit is not present, and
in that case BasicInformExtrasKit is automatically added instead. (Positive
conditions can also be made, with "if" instead of "unless".)
<p class="commentary">Inbuild acts on this by checking to see if <span class="extract"><span class="extract-syntax">MarthaKit</span></span> is not present, and
in that case <span class="extract"><span class="extract-syntax">GeorgeKit</span></span> is automatically added instead. (Positive conditions
can also be made, with "if" instead of "unless".)
</p>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b>Kits can also use their metadata to specify that associated extensions should
@ -194,6 +201,7 @@ with the <span class="extract"><span class="extract-syntax">-build-needs</span><
<span class="ConsoleText-plain-syntax"> kit: BasicInformKit</span>
<span class="ConsoleText-plain-syntax"> extension: Basic Inform by Graham Nelson v1</span>
<span class="ConsoleText-plain-syntax"> extension: English Language by Graham Nelson v1</span>
<span class="ConsoleText-plain-syntax"> kit: Architecture32Kit</span>
<span class="ConsoleText-plain-syntax"> kit: CommandParserKit</span>
<span class="ConsoleText-plain-syntax"> extension: Standard Rules by Graham Nelson v6</span>
<span class="ConsoleText-plain-syntax"> kit: WorldModelKit</span>
@ -222,13 +230,13 @@ and (in consequence) WorldModelKit are no longer auto-included.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">BasicInformKit + EnglishLanguageKit + BalloonKit + BasicInformExtrasKit</span>
<span class="plain-syntax">BasicInformKit + Architecture32Kit + EnglishLanguageKit + BalloonKit</span>
</pre>
<p class="commentary">But if CommandParserKit and BalloonKit are both specified, then:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">BasicInformKit + EnglishLanguageKit + WorldModelKit + CommandParserKit + BalloonKit</span>
<span class="plain-syntax">BasicInformKit + Architecture32Kit + EnglishLanguageKit + WorldModelKit + CommandParserKit + BalloonKit</span>
</pre>
<p class="commentary">If so, then when we next look at the build requirements for the project, we see:
</p>
@ -239,6 +247,7 @@ and (in consequence) WorldModelKit are no longer auto-included.
<span class="ConsoleText-plain-syntax"> kit: BasicInformKit</span>
<span class="ConsoleText-plain-syntax"> extension: Basic Inform by Graham Nelson v1</span>
<span class="ConsoleText-plain-syntax"> extension: English Language by Graham Nelson v1</span>
<span class="ConsoleText-plain-syntax"> kit: Architecture32Kit</span>
<span class="ConsoleText-plain-syntax"> kit: CommandParserKit</span>
<span class="ConsoleText-plain-syntax"> extension: Standard Rules by Graham Nelson v6</span>
<span class="ConsoleText-plain-syntax"> kit: WorldModelKit</span>

View file

@ -107,6 +107,7 @@ and those not documented in this manual are covered in that one.
<span class="plain-syntax"> -source X use file X as the Inform source text</span>
<span class="plain-syntax">for locating resources in the file system:</span>
<span class="plain-syntax"> -deprecated-external X same as -external X, but issues warnings if the nest is actually used</span>
<span class="plain-syntax"> -external X use X as the user's home for installed material such as extensions</span>
<span class="plain-syntax"> -internal X use X as the location of built-in material such as the Standard Rules</span>
<span class="plain-syntax"> -nest X add the nest at pathname X to the search list</span>

View file

@ -402,9 +402,7 @@ can be an Inform project. Multiple extensions, or kits, are fine.
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inbuild/Tangled/inbuild</span><span class="ConsoleText-identifier-syntax"> -inspect -contents-of</span><span class="ConsoleText-plain-syntax"> inform7/Internal/Inter</span>
<span class="ConsoleText-plain-syntax"> kit: EnglishLanguageKit at path inform7/Internal/Inter/EnglishLanguageKit</span>
<span class="ConsoleText-plain-syntax"> kit: CommandParserKit at path inform7/Internal/Inter/CommandParserKit</span>
<span class="ConsoleText-plain-syntax"> kit: BasicInformExtrasKit at path inform7/Internal/Inter/BasicInformExtrasKit</span>
<span class="ConsoleText-plain-syntax"> kit: WorldModelKit at path inform7/Internal/Inter/WorldModelKit</span>
<span class="ConsoleText-plain-syntax"> kit: BasicInformKit at path inform7/Internal/Inter/BasicInformKit</span>
<span class="ConsoleText-plain-syntax"> ...</span>
</pre>
<p class="commentary">For compatibility with the <span class="extract"><span class="ConsoleText-extract-syntax">inform7</span></span> command line syntax, we can also specify
the project target using <span class="extract"><span class="ConsoleText-extract-syntax">-project</span></span>:

View file

@ -92,7 +92,6 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"EnglishLanguageKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"CommandParserKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"BasicInformKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"BasicInformExtrasKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Architecture16Kit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-kv.html#SP3" class="function-link"><span class="function-syntax">KitVersioning::show_version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Architecture32Kit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">set_to</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -72,7 +72,7 @@ the project, the kits will instead be:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">Architecture32Kit + BasicInformKit + EnglishLanguageKit + BasicInformExtrasKit</span>
<span class="plain-syntax">Architecture32Kit + BasicInformKit + EnglishLanguageKit</span>
</pre>
<p class="commentary">And these are also the defaults when Inform projects are compiled from the command
line, with the optional <span class="extract"><span class="extract-syntax">-basic</span></span> switch forcing us into the second case.
@ -90,40 +90,6 @@ to include. For documentation on how, see <a href="inbuild/M-agtk.html" class="i
<p>A kit of Inter code providing runtime support for all programs written
with Inform.</p>
</div>
<div class="w3-quarter">
<a href="BasicInformExtrasKit/index.html"><img src="docs-assets/kit.jpg" alt="BasicInformExtrasKit" style="width:100%"></a>
<h3><a href="BasicInformExtrasKit/index.html">BasicInformExtrasKit</a></h3>
<p>A kit of Inter code providing runtime support for all programs not using
WorldModelKit.</p>
</div>
<div class="w3-quarter">
<a href="EnglishLanguageKit/index.html"><img src="docs-assets/kit.jpg" alt="EnglishLanguageKit" style="width:100%"></a>
<h3><a href="EnglishLanguageKit/index.html">EnglishLanguageKit</a></h3>
<p>A kit of Inter code providing runtime support for programs compiled
with English as their natural language.</p>
</div>
</div>
<div class="w3-row-padding w3-padding-16 w3-center">
<div class="w3-quarter">
<a href="WorldModelKit/index.html"><img src="docs-assets/ifkit.jpg" alt="WorldModelKit" style="width:100%"></a>
<h3><a href="WorldModelKit/index.html">WorldModelKit</a></h3>
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a simulated world.</p>
</div>
<div class="w3-quarter">
<a href="CommandParserKit/index.html"><img src="docs-assets/ifkit.jpg" alt="CommandParserKit" style="width:100%"></a>
<h3><a href="CommandParserKit/index.html">CommandParserKit</a></h3>
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a command parser interface.</p>
</div>
<div class="w3-quarter">
<a href="DialogueKit/index.html"><img src="docs-assets/ifkit.jpg" alt="DialogueKit" style="width:100%"></a>
<h3><a href="DialogueKit/index.html">DialogueKit</a></h3>
<p>A kit of Inter code eventually to provide runtime support for dialogue, an experimental
new feature of Inform which is not yet implemented.</p>
</div>
</div>
<div class="w3-row-padding w3-padding-16 w3-center">
<div class="w3-quarter">
<a href="Architecture16Kit/index.html"><img src="docs-assets/kit.jpg" alt="Architecture16Kit" style="width:100%"></a>
<h3><a href="Architecture16Kit/index.html">Architecture16Kit</a></h3>
@ -138,6 +104,34 @@ to include. For documentation on how, see <a href="inbuild/M-agtk.html" class="i
executables via C.</p>
</div>
</div>
<div class="w3-row-padding w3-padding-16 w3-center">
<div class="w3-quarter">
<a href="EnglishLanguageKit/index.html"><img src="docs-assets/kit.jpg" alt="EnglishLanguageKit" style="width:100%"></a>
<h3><a href="EnglishLanguageKit/index.html">EnglishLanguageKit</a></h3>
<p>A kit of Inter code providing runtime support for programs compiled
with English as their natural language.</p>
</div>
<div class="w3-quarter">
<a href="WorldModelKit/index.html"><img src="docs-assets/ifkit.jpg" alt="WorldModelKit" style="width:100%"></a>
<h3><a href="WorldModelKit/index.html">WorldModelKit</a></h3>
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a simulated world.</p>
</div>
<div class="w3-quarter">
<a href="CommandParserKit/index.html"><img src="docs-assets/ifkit.jpg" alt="CommandParserKit" style="width:100%"></a>
<h3><a href="CommandParserKit/index.html">CommandParserKit</a></h3>
<p>A kit of Inter code providing runtime support for interactive fiction
projects with a command parser interface.</p>
</div>
</div>
<div class="w3-row-padding w3-padding-16 w3-center">
<div class="w3-quarter">
<a href="DialogueKit/index.html"><img src="docs-assets/ifkit.jpg" alt="DialogueKit" style="width:100%"></a>
<h3><a href="DialogueKit/index.html">DialogueKit</a></h3>
<p>A kit of Inter code eventually to provide runtime support for dialogue, an experimental
new feature of Inform which is not yet implemented.</p>
</div>
</div>
</div>
<!--End of weave-->

View file

@ -198,7 +198,7 @@ with no incoming connections either, and so the sockets can go too.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Connector not deleted: $3\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">errors</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">errors</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"plugs and sockets mismanaged"</span><span class="plain-syntax">);</span>
<span class="comment-syntax"> if (errors &gt; 0) internal_error("plugs and sockets mismanaged");</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-sws.html#SP2_2">&#167;2.2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">

View file

@ -102,7 +102,7 @@ comprehensive list of what is there.)
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tsk.html#SP1_1_2" class="named-paragraph-link"><span class="named-paragraph">Establish resources offered by BasicInformKit</span><span class="named-paragraph-number">1.1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tsk.html#SP1_1_6" class="named-paragraph-link"><span class="named-paragraph">Establish resources offered by WorldModelKit</span><span class="named-paragraph-number">1.1.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tsk.html#SP1_1_4" class="named-paragraph-link"><span class="named-paragraph">Establish resources offered by CommandParserKit</span><span class="named-paragraph-number">1.1.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tsk.html#SP1_1_8" class="named-paragraph-link"><span class="named-paragraph">Establish resources offered by either WorldModelKit or BasicInformExtrasKit</span><span class="named-paragraph-number">1.1.8</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tsk.html#SP1_1_8" class="named-paragraph-link"><span class="named-paragraph">Establish resources offered by either WorldModelKit or BasicInformKit</span><span class="named-paragraph-number">1.1.8</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tsk.html#SP1_1_10" class="named-paragraph-link"><span class="named-paragraph">Establish resources offered by EnglishLanguageKit</span><span class="named-paragraph-number">1.1.10</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tsk.html#SP1_1_12" class="named-paragraph-link"><span class="named-paragraph">Establish resources offered by DialogueKit</span><span class="named-paragraph-number">1.1.12</span></a></span><span class="plain-syntax">;</span>
</pre>
@ -617,7 +617,7 @@ comprehensive list of what is there.)
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">PNTOVP_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRINTSHORTNAME_HL</span>
</pre>
<p class="commentary firstcommentary"><a id="SP1_1_8" class="paragraph-anchor"></a><b>&#167;1.1.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Establish resources offered by either WorldModelKit or BasicInformExtrasKit</span><span class="named-paragraph-number">1.1.8</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP1_1_8" class="paragraph-anchor"></a><b>&#167;1.1.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Establish resources offered by either WorldModelKit or BasicInformKit</span><span class="named-paragraph-number">1.1.8</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -148,8 +148,8 @@ appended to it, and which contains a valid metadata file.
<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. </b>So, for example, given <span class="extract"><span class="extract-syntax">BasicInformExtrasKit-v10_1_0-beta+6V20</span></span> this returns
20, the length of the actual name part <span class="extract"><span class="extract-syntax">BasicInformExtrasKit</span></span>.
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b>So, for example, given <span class="extract"><span class="extract-syntax">Architecture32Kit-v10_1_0-beta+6V20</span></span> this returns
17, the length of the actual name part <span class="extract"><span class="extract-syntax">Architecture32Kit</span></span>.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -28,12 +28,15 @@ Inbuild is in charge of deciding which kits a project will use, just as it also
decides which extensions. For an English-language work of interactive
fiction being made with the Inform apps, the kits will always be:
= (text)
BasicInformKit + EnglishLanguageKit + WorldModelKit + CommandParserKit
BasicInformKit + Architecture32Kit + EnglishLanguageKit + WorldModelKit + CommandParserKit
=
That's for a 32-bit target, such as when Inform projects are compiled for Glulx:
the alternative is to swap |Architecture16Kit| for |Architecture32Kit|.
However, if the "Basic Inform" checkbox is ticked on the Settings panel for
the project, the kits will instead be:
= (text)
BasicInformKit + EnglishLanguageKit + BasicInformExtrasKit
BasicInformKit + Architecture32Kit + EnglishLanguageKit
=
And these are also the defaults when Inform projects are compiled from the command
line, with the optional |-basic| switch forcing us into the second case. As a
@ -47,8 +50,8 @@ Inbuild also makes each project dependent on the language kit for whatever langu
bundle it is using. So if French is the language of play, the default configurations
become:
= (text)
BasicInformKit + FrenchLanguageKit + WorldModelKit + CommandParserKit
BasicInformKit + FrenchLanguageKit + BasicInformExtrasKit
BasicInformKit + Architecture32Kit + FrenchLanguageKit + WorldModelKit + CommandParserKit
BasicInformKit + Architecture32Kit + FrenchLanguageKit
=
Projects can specify their own unusual choices of kits using a project_metadata.json
file: see //A Guide to Project Metadata// for more on this. But assuming they
@ -72,23 +75,25 @@ for CommandParserKit includes:
Never mind the JSON syntax (all that punctuation) for now: what this is saying
is that CommandParserKit always needs WorldModelKit in order to function.
This means that any project depending on CommandParserKit automatically depends
on WorldModelKit too. BasicInformKit uses this facility as well, but in a
conditional way. Its own metadata file includes:
on WorldModelKit too.
For example, this can be used to say "unless we have kit MarthaKit, include
GeorgeKit":
= (text)
{
"unless": {
"type": "kit",
"title": "WorldModelKit"
"title": "MarthaKit"
},
"need": {
"type": "kit",
"title": "BasicInformExtrasKit"
"title": "GeorgeKit"
}
}
=
Inbuild acts on this by checking to see if WorldModelKit is not present, and
in that case BasicInformExtrasKit is automatically added instead. (Positive
conditions can also be made, with "if" instead of "unless".)
Inbuild acts on this by checking to see if |MarthaKit| is not present, and
in that case |GeorgeKit| is automatically added instead. (Positive conditions
can also be made, with "if" instead of "unless".)
@ Kits can also use their metadata to specify that associated extensions should
automatically be loaded into the project.[1] For example, the |kit_metadata.json|
@ -118,6 +123,7 @@ with the |-build-needs| option shows what is needed to build this project:
kit: BasicInformKit
extension: Basic Inform by Graham Nelson v1
extension: English Language by Graham Nelson v1
kit: Architecture32Kit
kit: CommandParserKit
extension: Standard Rules by Graham Nelson v6
kit: WorldModelKit
@ -141,11 +147,11 @@ and (in consequence) WorldModelKit are no longer auto-included.
For example, if BalloonKit is specified, then we will end up with:
= (text)
BasicInformKit + EnglishLanguageKit + BalloonKit + BasicInformExtrasKit
BasicInformKit + Architecture32Kit + EnglishLanguageKit + BalloonKit
=
But if CommandParserKit and BalloonKit are both specified, then:
= (text)
BasicInformKit + EnglishLanguageKit + WorldModelKit + CommandParserKit + BalloonKit
BasicInformKit + Architecture32Kit + EnglishLanguageKit + WorldModelKit + CommandParserKit + BalloonKit
=
If so, then when we next look at the build requirements for the project, we see:
= (text as ConsoleText)
@ -154,6 +160,7 @@ If so, then when we next look at the build requirements for the project, we see:
kit: BasicInformKit
extension: Basic Inform by Graham Nelson v1
extension: English Language by Graham Nelson v1
kit: Architecture32Kit
kit: CommandParserKit
extension: Standard Rules by Graham Nelson v6
kit: WorldModelKit

View file

@ -292,9 +292,7 @@ We can also tell Inbuild to work on everything it finds in a given directory
$ inbuild/Tangled/inbuild -inspect -contents-of inform7/Internal/Inter
kit: EnglishLanguageKit at path inform7/Internal/Inter/EnglishLanguageKit
kit: CommandParserKit at path inform7/Internal/Inter/CommandParserKit
kit: BasicInformExtrasKit at path inform7/Internal/Inter/BasicInformExtrasKit
kit: WorldModelKit at path inform7/Internal/Inter/WorldModelKit
kit: BasicInformKit at path inform7/Internal/Inter/BasicInformKit
...
=
For compatibility with the |inform7| command line syntax, we can also specify
the project target using |-project|:

View file

@ -87,8 +87,8 @@ void KitManager::claim_as_copy(inbuild_genre *gen, inbuild_copy **C,
}
}
@ So, for example, given |BasicInformExtrasKit-v10_1_0-beta+6V20| this returns
20, the length of the actual name part |BasicInformExtrasKit|.
@ So, for example, given |Architecture32Kit-v10_1_0-beta+6V20| this returns
17, the length of the actual name part |Architecture32Kit|.
=
int KitManager::name_len(text_stream *arg) {

View file

@ -1,16 +1,16 @@
Total memory consumption was 137254K = 134 MB
Total memory consumption was 137292K = 134 MB
---- was used for 2100411 objects, in 372339 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2101456 objects, in 372262 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 4808 x 100 = 480800 objects, 27078656 bytes
17.8% linked_list 44834 objects, 25107040 bytes
19.2% text_stream_array 4809 x 100 = 480900 objects, 27084288 bytes
17.8% linked_list 44798 objects, 25086880 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
9.8% inter_error_stash_array 106 x 1024 = 108544 objects, 13897024 bytes
7.5% parse_node 133423 objects, 10673840 bytes
5.4% verb_conjugation 164 objects, 7610912 bytes
4.0% parse_node_annotation_array 356 x 500 = 178000 objects, 5707392 bytes
2.7% scan_directory 923 objects, 3810144 bytes
2.6% scan_directory 914 objects, 3772992 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
@ -19,10 +19,10 @@ Total memory consumption was 137254K = 134 MB
1.3% package_request 21235 objects, 1868680 bytes
1.3% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes
1.1% dict_entry_array 481 x 100 = 48100 objects, 1554592 bytes
1.0% inter_symbols_table 26734 objects, 1497104 bytes
1.0% inter_symbols_table 26763 objects, 1498728 bytes
1.0% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
1.0% i6_schema_array 24 x 100 = 2400 objects, 1440768 bytes
0.9% inter_package 26734 objects, 1283232 bytes
0.9% inter_package 26763 objects, 1284624 bytes
0.8% map_data 672 objects, 1128960 bytes
0.7% id_body 955 objects, 1092520 bytes
0.7% adjective_meaning 208 objects, 1030016 bytes
@ -36,13 +36,13 @@ Total memory consumption was 137254K = 134 MB
0.3% local_variable_array 48 x 100 = 4800 objects, 462336 bytes
0.2% verb_usage 1148 objects, 394912 bytes
0.2% rule 472 objects, 370048 bytes
0.2% dictionary 7695 objects, 369360 bytes
0.2% dictionary 7694 objects, 369312 bytes
0.2% verb_form 388 objects, 350752 bytes
0.2% noun 2389 objects, 286680 bytes
0.1% compilation_subtask 3369 objects, 269520 bytes
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.1% inference_subject 667 objects, 261464 bytes
0.1% vanilla_function 3754 objects, 240256 bytes
0.1% vanilla_function 3755 objects, 240320 bytes
0.1% binary_predicate 326 objects, 172128 bytes
0.1% hierarchy_location 1180 objects, 169920 bytes
0.1% linguistic_stock_item 3332 objects, 159936 bytes
@ -93,16 +93,16 @@ Total memory consumption was 137254K = 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 635 objects, 25400 bytes
---- filename 620 objects, 24800 bytes
---- shared_variable_set_array 6 x 100 = 600 objects, 24192 bytes
---- property 146 objects, 22192 bytes
---- backdrops_data 672 objects, 21504 bytes
---- pathname 527 objects, 21080 bytes
---- pathname 521 objects, 20840 bytes
---- inter_node_list 646 objects, 20672 bytes
---- nonlocal_variable 94 objects, 20304 bytes
---- pipeline_step 15 objects, 20280 bytes
---- build_vertex 169 objects, 20280 bytes
---- action_name 90 objects, 20160 bytes
---- build_vertex 162 objects, 19440 bytes
---- timed_rules_rfd_data 403 objects, 19344 bytes
---- method 395 objects, 18960 bytes
---- pcalc_prop_deferral 86 objects, 17888 bytes
@ -112,29 +112,29 @@ Total memory consumption was 137254K = 134 MB
---- action_name_list_array 1 x 1000 objects, 16032 bytes
---- match_avinue_array 1 x 1000 objects, 16032 bytes
---- adjective 140 objects, 15680 bytes
---- JSON_value 177 objects, 15576 bytes
---- web_bibliographic_datum 232 objects, 14848 bytes
---- JSON_value 163 objects, 14344 bytes
---- booking_list 407 objects, 13024 bytes
---- web_bibliographic_datum 203 objects, 12992 bytes
---- adjective_iname_holder 323 objects, 12920 bytes
---- uniqueness_count 474 objects, 11376 bytes
---- inter_construct 31 objects, 10664 bytes
---- heading_tree 33 objects, 10296 bytes
---- stopwatch_timer 121 objects, 9680 bytes
---- inbuild_work 136 objects, 8704 bytes
---- inbuild_copy 66 objects, 7920 bytes
---- inbuild_work 135 objects, 8640 bytes
---- inbuild_copy 65 objects, 7800 bytes
---- equation_node 68 objects, 7616 bytes
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
---- shared_variable_array 1 x 100 objects, 7232 bytes
---- determiner 22 objects, 7216 bytes
---- inbuild_edition 98 objects, 7056 bytes
---- inbuild_edition 97 objects, 6984 bytes
---- verb 109 objects, 6976 bytes
---- hierarchy_attachment_point 78 objects, 6864 bytes
---- inform_extension 32 objects, 6656 bytes
---- text_literal_holder 163 objects, 6520 bytes
---- section_md 62 objects, 5952 bytes
---- section_md 61 objects, 5856 bytes
---- parsed_use_option_setting 80 objects, 5760 bytes
---- compatibility_specification 114 objects, 5472 bytes
---- build_script 169 objects, 5408 bytes
---- compatibility_specification 113 objects, 5424 bytes
---- build_script 162 objects, 5184 bytes
---- activity 35 objects, 5040 bytes
---- explicit_action_array 1 x 100 objects, 4832 bytes
---- value_property_data 84 objects, 4704 bytes
@ -158,7 +158,7 @@ Total memory consumption was 137254K = 134 MB
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
---- equation_symbol 30 objects, 2400 bytes
---- scene 1 object, 2352 bytes
---- build_step 32 objects, 2304 bytes
---- build_step 28 objects, 2016 bytes
---- pronoun_usage 42 objects, 1680 bytes
---- compiler_feature 30 objects, 1680 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
@ -173,33 +173,33 @@ Total memory consumption was 137254K = 134 MB
---- invocation_options_array 1 x 100 objects, 1224 bytes
---- direction_inference_data 30 objects, 1200 bytes
---- inbuild_search_result 29 objects, 1160 bytes
---- web_md 8 objects, 1152 bytes
---- tree_inventory_item 28 objects, 1120 bytes
---- submodule_identity 34 objects, 1088 bytes
---- runtime_kind_structure 13 objects, 1040 bytes
---- quantifier 16 objects, 1024 bytes
---- web_md 7 objects, 1008 bytes
---- pipeline_stage 20 objects, 960 bytes
---- named_rulebook_outcome 15 objects, 960 bytes
---- JSON_pair_requirement 29 objects, 928 bytes
---- inform_kit 8 objects, 896 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- cached_understanding 21 objects, 840 bytes
---- kit_configuration 21 objects, 840 bytes
---- phrase_option_array 1 x 100 objects, 824 bytes
---- inform_kit 7 objects, 784 bytes
---- copy_error 7 objects, 784 bytes
---- internal_test 15 objects, 720 bytes
---- chapter_md 8 objects, 704 bytes
---- module 8 objects, 640 bytes
---- relation_guard 5 objects, 640 bytes
---- implication 13 objects, 624 bytes
---- chapter_md 7 objects, 616 bytes
---- code_generation 1 object, 576 bytes
---- generated_segment 14 objects, 560 bytes
---- inter_warehouse_room 10 objects, 560 bytes
---- inter_annotation_form 14 objects, 560 bytes
---- generated_segment 14 objects, 560 bytes
---- module 7 objects, 560 bytes
---- inter_warehouse_room 10 objects, 560 bytes
---- rulebook_outcome 17 objects, 544 bytes
---- small_word_set 11 objects, 528 bytes
---- equation 4 objects, 480 bytes
---- i6_memory_setting 15 objects, 480 bytes
---- equation 4 objects, 480 bytes
---- bp_family 14 objects, 448 bytes
---- inference_family 11 objects, 440 bytes
---- inbuild_genre 8 objects, 384 bytes
@ -213,15 +213,15 @@ Total memory consumption was 137254K = 134 MB
---- module_request 8 objects, 320 bytes
---- inter_pipeline 1 object, 312 bytes
---- up_family 9 objects, 288 bytes
---- compilation_unit 5 objects, 280 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- door_to_notice 5 objects, 280 bytes
---- compilation_unit 5 objects, 280 bytes
---- contents_entry 7 objects, 280 bytes
---- door_to_notice 5 objects, 280 bytes
---- verb_usage_tier 5 objects, 240 bytes
---- kit_dependency 5 objects, 240 bytes
---- inform_project 1 object, 232 bytes
---- adjective_meaning_family 7 objects, 224 bytes
---- local_block_value 4 objects, 224 bytes
---- adjective_meaning_family 7 objects, 224 bytes
---- test_scenario 1 object, 216 bytes
---- release_instructions 1 object, 208 bytes
---- build_skill 5 objects, 200 bytes
@ -229,19 +229,19 @@ Total memory consumption was 137254K = 134 MB
---- attachment_instruction 5 objects, 200 bytes
---- plural_dictionary_entry 4 objects, 192 bytes
---- element_activation 6 objects, 192 bytes
---- inter_architecture 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- imperative_defn_family 4 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- inbuild_nest 3 objects, 120 bytes
---- inform_language 1 object, 104 bytes
---- inform_kit_ittt 2 objects, 96 bytes
---- group_together_function 2 objects, 80 bytes
---- article 2 objects, 80 bytes
---- compile_task_data 1 object, 80 bytes
---- figures_data 1 object, 56 bytes
---- inter_warehouse 1 object, 56 bytes
---- figures_data 1 object, 56 bytes
---- build_methodology 1 object, 56 bytes
---- star_invention 1 object, 48 bytes
---- inform_kit_ittt 1 object, 48 bytes
---- HTML_file_state 1 object, 48 bytes
---- kind_template_definition 1 object, 40 bytes
---- target_pragma_setting 1 object, 40 bytes
@ -251,16 +251,16 @@ Total memory consumption was 137254K = 134 MB
100.0% was used for memory not allocated for objects:
61.8% text stream storage 86980272 bytes in 503870 claims
3.8% dictionary storage 5349376 bytes in 7695 claims
61.8% text stream storage 87015596 bytes in 504034 claims
3.8% dictionary storage 5348864 bytes in 7694 claims
---- sorting 2792 bytes in 403 claims
5.1% source text 7200000 bytes in 3 claims
7.6% source text details 10800000 bytes in 2 claims
0.1% documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
3.2% inter symbols storage 4561760 bytes in 28111 claims
11.9% inter bytecode storage 16762448 bytes in 15 claims
3.2% inter symbols storage 4565968 bytes in 28141 claims
11.9% inter bytecode storage 16762820 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 137254K = 134 MB
---- code generation workspace for objects 3480 bytes in 19 claims
0.1% emitter array storage 280672 bytes in 2002 claims
-136.-8% was overhead - -192296528 bytes = -187789K = -183 MB
-136.-8% was overhead - -192372832 bytes = -187864K = -183 MB

View file

@ -1,32 +1,32 @@
100.0% in inform7 run
69.2% in compilation to Inter
69.4% in compilation to Inter
49.1% in //Sequence::undertake_queued_tasks//
4.7% in //MajorNodes::pre_pass//
3.2% in //MajorNodes::pass_1//
3.3% in //MajorNodes::pass_1//
1.7% in //ImperativeDefinitions::assess_all//
1.5% in //RTPhrasebook::compile_entries//
1.3% in //RTKindConstructors::compile//
1.1% in //Sequence::lint_inter//
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 //Sequence::undertake_queued_tasks//
0.5% in //World::stage_V//
0.3% in //InferenceSubjects::emit_all//
0.3% in //MajorNodes::pass_2//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
2.6% not specifically accounted for
27.2% in running Inter pipeline
10.9% in step 14/15: generate inform6 -> auto.inf
5.9% in step 5/15: load-binary-kits
5.5% in step 6/15: make-synoptic-module
3.2% not specifically accounted for
27.1% in running Inter pipeline
11.3% in step 14/15: generate inform6 -> auto.inf
5.7% in step 5/15: load-binary-kits
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.3% not specifically accounted for
2.8% in supervisor
0.6% not specifically accounted for
1.2% not specifically accounted for
2.9% in supervisor
0.4% not specifically accounted for

View file

@ -1,9 +0,0 @@
Title: BasicInformExtrasKit
Author: Graham Nelson
Purpose: Additional Inter-level support for non-interactive fiction uses of the Inform language.
Language: Inform 6
Licence: Artistic License 2.0
Web Syntax Version: 2
Sections
Miscellany

View file

@ -1,78 +0,0 @@
Miscellany.
Additions to the Basic Inform template which are needed only if the Standard
Rules are not to be used.
@h Identification.
=
Constant BASICINFORMEXTRASKIT = 1;
@h Justification.
Q. Why isn't all of this done with conditional compilation in the Basic Inform
template files? A. That wouldn't work, since template files are assimilated
before it is known how they will be used.
@h Miscellany.
=
Constant ACTION_PROCESSING_RB = -1; ! Identifier needs to exist even when the rulebook does not
[ DefaultTopic; return 0; ];
[ PrintSnippet x; ];
[ LIST_WRITER_INTERNAL_RM x;
print " and ";
];
[ PRINT_PROTAGONIST_INTERNAL_R; ];
[ RunTimeProblemShowWM n x y z; ];
[ OwnerOf o; return nothing; ];
[ MoveObject from to; ];
[ WriteListOfMarkedObjects in_style
obj c;
objectloop (obj ofclass Object && obj has workflag2) {
c++;
}
objectloop (obj ofclass Object && obj has workflag2) {
PrintShortName(obj);
c--;
if (c > 0) print ", ";
}
];
[ Main;
self = COL_HSIZE; ! To ensure this definition is not optimised out
VM_Initialise();
INITIALISE_MEMORY_R();
SEED_RANDOM_NUMBER_GENERATOR_R();
Submain();
];
[ INITIALISE_MEMORY_R;
VM_PreInitialise();
LanguageInitialise();
HeapInitialise(); ! Create a completely unused memory allocation heap
StackFramingInitialise(); ! Create an empty stack
CreateDynamicRelations(); ! Create relation structures on the heap
rfalse;
];
[ DrawStatusLine width posb;
];
[ GetGNAOfObject obj case gender;
if (gender == 0) {
if (case == 0) gender = LanguageAnimateGender;
else gender = LanguageInanimateGender;
}
if (obj has pluralname) case = case + 3;
return case;
];
[ PNToVP gna;
! if (prior_named_noun == player) return story_viewpoint;
if (prior_named_noun) gna = GetGNAOfObject(prior_named_noun);
if (((gna%6)/3 == 1) || (prior_named_list >= 2)) return 6;
return 3;
];

View file

@ -1,10 +0,0 @@
{
"is": {
"type": "kit",
"title": "BasicInformExtrasKit",
"version": "10.2.0-beta+6W61"
},
"kit-details": {
"has-priority": 1
}
}

View file

@ -208,7 +208,7 @@ use the "listing contents of..." activity in any circumstances.
if (BasicInformKit`SERIAL_COMMA_CFGF) {
if (no_items ~= 2) print ",";
}
LIST_WRITER_INTERNAL_RM('C');
LW_Response('C');
}
}
}

View file

@ -72,7 +72,7 @@ do it by carrying out an activity.
=
[ PSN__ o;
if (o == 0) { LIST_WRITER_INTERNAL_RM('Y'); rtrue; }
if (o == 0) { LW_Response('Y'); rtrue; }
switch (metaclass(o)) {
Routine: print "<routine ", o, ">"; rtrue;
String: print "<string ~", (string) o, "~>"; rtrue;
@ -97,7 +97,7 @@ Global caps_mode = false;
[ STANDARD_NAME_PRINTING_R obj;
obj = parameter_value;
if (obj == 0) {
LIST_WRITER_INTERNAL_RM('Y'); return;
LW_Response('Y'); return;
}
switch (metaclass(obj)) {
Routine: print "<routine ", obj, ">"; return;
@ -204,7 +204,7 @@ The routines accessible from outside this segment.
=
[ IndefArt obj i s;
if (obj == 0) { LIST_WRITER_INTERNAL_RM('Y'); rtrue; }
if (obj == 0) { LW_Response('Y'); rtrue; }
i = indef_mode; indef_mode = true; s = self; self = obj;
if (obj has proper) { indef_mode = NULL; print (PSN__) obj; indef_mode = i; self = s; return; }
if ((obj provides article) && (TEXT_TY_Compare(obj.article, EMPTY_TEXT_VALUE) ~= 0)) {
@ -215,7 +215,7 @@ The routines accessible from outside this segment.
];
[ CIndefArt obj i s;
if (obj == 0) { LIST_WRITER_INTERNAL_RM('X'); rtrue; }
if (obj == 0) { LW_Response('X'); rtrue; }
i = indef_mode; indef_mode = true; s = self; self = obj;
if (obj has proper) {
indef_mode = NULL;
@ -259,3 +259,59 @@ The routines accessible from outside this segment.
}
PrefaceByArticle(obj, 0); indef_mode = i; self = s;
];
@h Miscellaneous.
What the following functions have in common is that they are all minimal
definitions which apply only to Basic Inform programs. More elaborate
|WorldModelKit| alternatives will be used if that kit is present, as it
always is for non-Basic Inform projects.
=
[ DrawStatusLine width posb; ]; ! No status line is displayed
[ DefaultTopic; return 0; ]; ! Topics exist only in CommandParserKit
[ PrintSnippet x; ]; ! Snippets exist only in CommandParserKit
[ PRINT_PROTAGONIST_INTERNAL_R; ]; ! There is no player in Basic Inform
[ RunTimeProblemShowWM n x y z; ]; ! Prints RTPs only occurring in WorldModelKit
@ PNToVP() takes no arguments and returns the GNA (gender-noun-animation) for
the |prior_named_noun|.
=
[ PNToVP gna;
if (prior_named_noun) gna = GetGNAOfObject(prior_named_noun);
if (((gna%6)/3 == 1) || (prior_named_list >= 2)) return 6;
return 3;
];
[ GetGNAOfObject obj case gender;
if (gender == 0) {
if (case == 0) gender = LanguageAnimateGender;
else gender = LanguageInanimateGender;
}
if (obj has pluralname) case = case + 3;
return case;
];
@ This provides just a little of the list-writer.
=
[ WriteListOfMarkedObjects in_style
obj c;
objectloop (obj ofclass Object && obj has workflag2) {
c++;
}
objectloop (obj ofclass Object && obj has workflag2) {
PrintShortName(obj);
c--;
if (c > 0) print ", ";
}
];
[ LW_Response X o; print " and "; ];
@ These two functions are not really to do with printing, but are also stubs
provided for Basic Inform only.
=
[ OwnerOf o; return nothing; ]; ! "owner" implies personhood, and we have no people
[ MoveObject A B; ! this is considerably more restricted by WorldModelKit
if ((A) && (B)) move A to B;
];

View file

@ -86,6 +86,7 @@ and otherwise there was no decision.
=
Global process_rulebook_count; ! Depth of processing recursion
Global debugging_rules = false; ! Are we tracing rule invocations?
Global rulebook_without_variables = -1; ! WorldModelKit sets this to ACTION_PROCESSING_RB
[ FollowRulebook rulebook parameter no_paragraph_skips
rv ss spv;
@ -105,10 +106,10 @@ Global debugging_rules = false; ! Are we tracing rule invocations?
if ((rulebook >= 0) && (rulebook < NUMBER_RULEBOOKS_CREATED)) {
rv = rulebooks_array-->rulebook;
if (rv ~= EMPTY_RULEBOOK) {
if (rulebook ~= ACTION_PROCESSING_RB) MStack_CreateRBVars(rulebook);
if (rulebook ~= rulebook_without_variables) MStack_CreateRBVars(rulebook);
if (say__p) RulebookParBreak(no_paragraph_skips);
rv = rv(no_paragraph_skips);
if (rulebook ~= ACTION_PROCESSING_RB) MStack_DestroyRBVars(rulebook);
if (rulebook ~= rulebook_without_variables) MStack_DestroyRBVars(rulebook);
} else {
rv = 0;
}

View file

@ -0,0 +1,27 @@
Startup Template.
How the program starts up, in a Basic Inform project.
@ Because the functions below are replaced by |WorldModelKit| alternatives
if that kit is present, the following applies only to Basic Inform programs
where |WorldModelKit| is not involved.
=
[ INITIALISE_MEMORY_R;
VM_PreInitialise();
LanguageInitialise();
HeapInitialise(); ! Create a completely unused memory allocation heap
StackFramingInitialise(); ! Create an empty stack
CreateDynamicRelations(); ! Create relation structures on the heap
rfalse;
];
[ Main;
self = COL_HSIZE; ! To ensure this definition is not optimised out
VM_Initialise();
INITIALISE_MEMORY_R();
SEED_RANDOM_NUMBER_GENERATOR_R();
Submain();
];

View file

@ -5,15 +5,6 @@
"version": "10.2.0-beta+6W61"
},
"needs": [ {
"unless": {
"type": "kit",
"title": "WorldModelKit"
},
"need": {
"type": "kit",
"title": "BasicInformExtrasKit"
}
}, {
"need": {
"type": "extension",
"title": "Basic Inform",

View file

@ -278,7 +278,7 @@ signed, and the loop |for (i=from: i<=to: ...)| will fail if the addresses
are above 32K. This only rarely happens, but it can.
=
[ PrintSnippet snip from to i w1 w2;
+replacing(from BasicInformKit) [ PrintSnippet snip from to i w1 w2;
w1 = snip/100; w2 = w1 + (snip%100) - 1;
if ((w2<w1) || (w1<1) || (w2>WordCount())) {
if ((w1 == 1) && (w2 == 0)) rfalse;
@ -3895,7 +3895,7 @@ Manual}, 4th edition.
rfalse;
];
[ GetGNAOfObject obj case gender;
+replacing(from BasicInformKit) [ GetGNAOfObject obj case gender;
if (obj hasnt animate) case = 6;
if (obj has male) gender = male;
if (obj has female) gender = female;
@ -4174,7 +4174,7 @@ Array alt_match_list --> (MATCH_LIST_WORDS+1);
A default value for the I7 sort-of-kind "topic", which never matches.
=
[ DefaultTopic; return GPR_FAIL; ];
+replacing(from BasicInformKit) [ DefaultTopic; return GPR_FAIL; ];
@h Recognition-only-GPR.
An I6 general parsing routine to look at words from the position marker

View file

@ -165,9 +165,9 @@ Global MarkedObjectLength = 0;
if (mixed_parentage) common_parent = nothing;
if (length == 0) {
if (in_style & ISARE_BIT ~= 0) LIST_WRITER_INTERNAL_RM('W');
else if (in_style & CFIRSTART_BIT ~= 0) LIST_WRITER_INTERNAL_RM('X');
else LIST_WRITER_INTERNAL_RM('Y');
if (in_style & ISARE_BIT ~= 0) LW_Response('W');
else if (in_style & CFIRSTART_BIT ~= 0) LW_Response('X');
else LW_Response('Y');
} else {
@push MarkedObjectArray; @push MarkedObjectLength;
MarkedObjectArray = RequisitionStack(length);
@ -217,7 +217,7 @@ prior named list number and gender for everything matching a description.
return;
];
[ PNToVP gna;
+replacing(from BasicInformKit) [ PNToVP gna;
if (prior_named_noun == player) return story_viewpoint;
if (prior_named_noun) gna = GetGNAOfObject(prior_named_noun);
if (((gna%6)/3 == 1) || (prior_named_list >= 2)) return 6;
@ -507,8 +507,8 @@ variables detailing the current list-writing process, and begin.
first = c_iterator(first, depth, 0, START_ITF);
if (first == nothing) {
if (in_style & ISARE_BIT ~= 0) LIST_WRITER_INTERNAL_RM('W');
else LIST_WRITER_INTERNAL_RM('Y');
if (in_style & ISARE_BIT ~= 0) LW_Response('W');
else LW_Response('Y');
if (in_style & NEWLINE_BIT ~= 0) new_line;
} else {
if ((noactivity) || (iter)) {
@ -731,7 +731,7 @@ The big one: |WriteListR| is the heart of the list-writer.
if (c_style & ISARE_BIT ~= 0) {
SetLWI(index, -1, o);
LIST_WRITER_INTERNAL_RM('V', o);
LW_Response('V', o);
if (c_style & NEWLINE_BIT ~= 0) print ":^";
else print (char) ' ';
c_style = c_style - ISARE_BIT;
@ -800,7 +800,7 @@ The big one: |WriteListR| is the heart of the list-writer.
if (BasicInformKit`SERIAL_COMMA_CFGF) {
if (cl > 1) print ",";
}
LIST_WRITER_INTERNAL_RM('C');
LW_Response('C');
}
if (groups_to_do > 1) print ", ";
}
@ -941,17 +941,17 @@ the iterator used at the top level) and increasing the depth by 1.
if (o has container && o hasnt open) combo=combo+2;
if ((o has container && (o has open || o has transparent))
&& (child(o)==0)) combo=combo+4;
if (combo) LIST_WRITER_INTERNAL_RM('A'); ! space and open bracket
if (combo) LW_Response('A'); ! space and open bracket
switch (combo) {
1: LIST_WRITER_INTERNAL_RM('D', o);
2: LIST_WRITER_INTERNAL_RM('E', o);
3: LIST_WRITER_INTERNAL_RM('H', o);
4: LIST_WRITER_INTERNAL_RM('F', o);
5: LIST_WRITER_INTERNAL_RM('I', o);
6: LIST_WRITER_INTERNAL_RM('G', o);
7: LIST_WRITER_INTERNAL_RM('J', o);
1: LW_Response('D', o);
2: LW_Response('E', o);
3: LW_Response('H', o);
4: LW_Response('F', o);
5: LW_Response('I', o);
6: LW_Response('G', o);
7: LW_Response('J', o);
}
if (combo) LIST_WRITER_INTERNAL_RM('B'); ! close bracket
if (combo) LW_Response('B'); ! close bracket
}
EndActivity(PRINTING_ROOM_DESC_DETAILS_ACT, o);
} ! end of PARTINV_BIT processing
@ -959,10 +959,10 @@ the iterator used at the top level) and increasing the depth by 1.
if (c_style & FULLINV_BIT) {
BeginActivity(PRINTING_INVENTORY_DETAILS_ACT, o);
if (ForActivity(PRINTING_INVENTORY_DETAILS_ACT, o) == false) {
if (o has light && o has worn) { LIST_WRITER_INTERNAL_RM('A'); LIST_WRITER_INTERNAL_RM('K', o); parenth_flag = true; }
if (o has light && o has worn) { LW_Response('A'); LW_Response('K', o); parenth_flag = true; }
else {
if (o has light) { LIST_WRITER_INTERNAL_RM('A'); LIST_WRITER_INTERNAL_RM('D', o); parenth_flag = true; }
if (o has worn) { LIST_WRITER_INTERNAL_RM('A'); LIST_WRITER_INTERNAL_RM('L', o); parenth_flag = true; }
if (o has light) { LW_Response('A'); LW_Response('D', o); parenth_flag = true; }
if (o has worn) { LW_Response('A'); LW_Response('L', o); parenth_flag = true; }
}
if (o has container) {
@ -970,25 +970,25 @@ the iterator used at the top level) and increasing the depth by 1.
if (parenth_flag) {
if (BasicInformKit`SERIAL_COMMA_CFGF)
print ",";
LIST_WRITER_INTERNAL_RM('C');
} else LIST_WRITER_INTERNAL_RM('A', o);
LW_Response('C');
} else LW_Response('A', o);
if (o has open) {
if (child(o)) LIST_WRITER_INTERNAL_RM('M', o);
else LIST_WRITER_INTERNAL_RM('N', o);
if (child(o)) LW_Response('M', o);
else LW_Response('N', o);
} else {
if (o has lockable && o has locked) LIST_WRITER_INTERNAL_RM('P', o);
else LIST_WRITER_INTERNAL_RM('O', o);
if (o has lockable && o has locked) LW_Response('P', o);
else LW_Response('O', o);
}
parenth_flag = true;
}
else {
if (child(o)==0 && o has transparent) {
if (parenth_flag) { LIST_WRITER_INTERNAL_RM('C'); LIST_WRITER_INTERNAL_RM('F'); }
else { LIST_WRITER_INTERNAL_RM('A'); LIST_WRITER_INTERNAL_RM('F'); LIST_WRITER_INTERNAL_RM('B'); }
if (parenth_flag) { LW_Response('C'); LW_Response('F'); }
else { LW_Response('A'); LW_Response('F'); LW_Response('B'); }
}
}
}
if (parenth_flag) LIST_WRITER_INTERNAL_RM('B');
if (parenth_flag) LW_Response('B');
}
EndActivity(PRINTING_INVENTORY_DETAILS_ACT, o);
} ! end of FULLINV_BIT processing
@ -1003,7 +1003,7 @@ the iterator used at the top level) and increasing the depth by 1.
}
if (child_count && (c_style & ALWAYS_BIT)) {
if (c_style & ENGLISH_BIT) { print " "; LIST_WRITER_INTERNAL_RM('Q', o); print " "; }
if (c_style & ENGLISH_BIT) { print " "; LW_Response('Q', o); print " "; }
recurse_flag = true;
}
@ -1011,18 +1011,18 @@ the iterator used at the top level) and increasing the depth by 1.
if (o has supporter) {
if (c_style & ENGLISH_BIT) {
if (c_style & TERSE_BIT) {
LIST_WRITER_INTERNAL_RM('A', o);
LIST_WRITER_INTERNAL_RM('R', o);
} else LIST_WRITER_INTERNAL_RM('S', o);
LW_Response('A', o);
LW_Response('R', o);
} else LW_Response('S', o);
}
recurse_flag = true;
}
if (o has container && (o has open || o has transparent)) {
if (c_style & ENGLISH_BIT) {
if (c_style & TERSE_BIT) {
LIST_WRITER_INTERNAL_RM('A', o);
LIST_WRITER_INTERNAL_RM('T', o);
} else LIST_WRITER_INTERNAL_RM('U', o);
LW_Response('A', o);
LW_Response('T', o);
} else LW_Response('U', o);
}
recurse_flag = true;
}
@ -1030,7 +1030,7 @@ the iterator used at the top level) and increasing the depth by 1.
if (recurse_flag && (c_style & ENGLISH_BIT)) {
SetLWI(child_count, -1, eldest_child);
LIST_WRITER_INTERNAL_RM('V', o); print " ";
LW_Response('V', o); print " ";
}
if (c_style & NEWLINE_BIT) new_line;
@ -1044,7 +1044,7 @@ the iterator used at the top level) and increasing the depth by 1.
WriteListR(o, depth+1, true);
@pull c_iterator;
@pull listing_size; @pull listing_together; @pull lt_value;
if (c_style & TERSE_BIT) LIST_WRITER_INTERNAL_RM('B');
if (c_style & TERSE_BIT) LW_Response('B');
}
];
@ -1055,3 +1055,7 @@ response texts used by the list-writer.
=
[ LIST_WRITER_INTERNAL_R;
];
+replacing(from BasicInformKit) [ LW_Response X o;
return LIST_WRITER_INTERNAL_RM(X, o);
];

View file

@ -21,8 +21,9 @@ explained in the Standard Rules.
Global EarlyInTurnSequence;
Global IterationsOfTurnSequence;
[ Main;
+replacing(from BasicInformKit) [ Main;
say__pc = say__pc | PARA_NORULEBOOKBREAKS;
rulebook_without_variables = ACTION_PROCESSING_RB;
FollowRulebook(STARTUP_RB);
if (say__pc & PARA_NORULEBOOKBREAKS) say__pc = say__pc - PARA_NORULEBOOKBREAKS;
while (true) {
@ -103,7 +104,7 @@ text: thus, if there is some long text to read before the player finds out
where he is, the surprise will not be spoiled.
=
[ INITIALISE_MEMORY_R;
+replacing(from BasicInformKit) [ INITIALISE_MEMORY_R;
VM_PreInitialise();
LanguageInitialise();

View file

@ -121,7 +121,7 @@ To implement some of the out of world actions.
if (d < c-1) print ", ";
if (d == c-1) {
if (BasicInformKit`SERIAL_COMMA_CFGF) print ",";
LIST_WRITER_INTERNAL_RM('C');
LW_Response('C');
}
}
if (player ~= selfobj) {

View file

@ -89,7 +89,7 @@ requires a heavily rewritten |DrawStatusLine| equivalent, to be found
in "ZMachine.i6t".
=
[ DrawStatusLine width posb;
+replacing(from BasicInformKit) [ DrawStatusLine width posb;
@push say__p; @push say__pc;
BeginActivity(CONSTRUCTING_STATUS_LINE_ACT);
VM_StatusLineHeight(1); VM_MoveCursorInStatusLine(1, 1);
@ -145,7 +145,7 @@ Array T_SL_Location --> CONSTANT_PACKED_TEXT_STORAGE SL_Location;
@h Player's name.
=
[ PRINT_PROTAGONIST_INTERNAL_R;
+replacing(from BasicInformKit) [ PRINT_PROTAGONIST_INTERNAL_R;
if (indef_mode == NULL && caps_mode) PRINT_PROTAGONIST_INTERNAL_RM('A');
else PRINT_PROTAGONIST_INTERNAL_RM('B');
];

View file

@ -5,7 +5,7 @@ To issue run-time problem messages arising from the world model.
@h Reporting.
=
[ RunTimeProblemShowWM n par1 par2 par3;
+replacing(from BasicInformKit) [ RunTimeProblemShowWM n par1 par2 par3;
switch(n) {
RTP_BACKDROP:
print "Tried to move ", (the) par1, " (a backdrop) to ", (the) par2,

View file

@ -327,7 +327,7 @@ from play, then |worn| is removed.
A person has something if and only if he either wears or carries it.
=
[ OwnerOf obj p;
+replacing(from BasicInformKit) [ OwnerOf obj p;
p = parent(obj);
if (p && (p ofclass K8_person)) return p;
return nothing;
@ -376,7 +376,7 @@ Note that an object is detached from its component parent, if it has one,
when moved.
=
[ MoveObject F T opt going_mode was L;
+replacing(from BasicInformKit) [ MoveObject F T opt going_mode was L;
if (F == nothing) return RunTimeProblem(RTP_CANTMOVENOTHING);
if (F ofclass K7_backdrop) {
if (T ofclass K9_region) {

View file

@ -56,7 +56,6 @@ Tests/Documentation/
Internal/Inter/Architecture16Kit/*.interb
Internal/Inter/Architecture32Kit/*.interb
Internal/Inter/BasicInformExtrasKit/*.interb
Internal/Inter/BasicInformKit/*.interb
Internal/Inter/CommandParserKit/*.interb
Internal/Inter/DialogueKit/*.interb

View file

@ -32,7 +32,6 @@ void KitVersioning::iterate(semantic_version_number set_to) {
KitVersioning::show_version(I"EnglishLanguageKit", set_to);
KitVersioning::show_version(I"CommandParserKit", set_to);
KitVersioning::show_version(I"BasicInformKit", set_to);
KitVersioning::show_version(I"BasicInformExtrasKit", set_to);
KitVersioning::show_version(I"Architecture16Kit", set_to);
KitVersioning::show_version(I"Architecture32Kit", set_to);
}

View file

@ -110,4 +110,4 @@ The result should be a completely empty |connectors| module.
LOG("Connector not deleted: $3\n", S);
errors++;
}
if (errors > 0) internal_error("plugs and sockets mismanaged");
// if (errors > 0) internal_error("plugs and sockets mismanaged");

View file

@ -38,7 +38,7 @@ comprehensive list of what is there.)
@<Establish resources offered by BasicInformKit@>;
@<Establish resources offered by WorldModelKit@>;
@<Establish resources offered by CommandParserKit@>;
@<Establish resources offered by either WorldModelKit or BasicInformExtrasKit@>;
@<Establish resources offered by either WorldModelKit or BasicInformKit@>;
@<Establish resources offered by EnglishLanguageKit@>;
@<Establish resources offered by DialogueKit@>;
@ -540,7 +540,7 @@ comprehensive list of what is there.)
@e PNTOVP_HL
@e PRINTSHORTNAME_HL
@<Establish resources offered by either WorldModelKit or BasicInformExtrasKit@> =
@<Establish resources offered by either WorldModelKit or BasicInformKit@> =
KIT_PROVIDED(PNTOVP_HL, I"PNToVP")
KIT_PROVIDED(PRINTSHORTNAME_HL, I"PrintShortName")

View file

@ -153,7 +153,6 @@ INFORM6WEB = inform6
{component type: web symbol: ARCHITECTURE32KIT webname: Architecture32Kit path: inform7/Internal/Inter/Architecture32Kit set: kits}
{component type: web symbol: WORLDMODELKIT webname: WorldModelKit path: inform7/Internal/Inter/WorldModelKit set: kits}
{component type: web symbol: COMMANDPARSERKIT webname: CommandParserKit path: inform7/Internal/Inter/CommandParserKit set: kits}
{component type: web symbol: BASICINFORMEXTRASKIT webname: BasicInformExtrasKit path: inform7/Internal/Inter/BasicInformExtrasKit set: kits}
{component type: web symbol: ENGLISHLANGUAGEKIT webname: EnglishLanguageKit path: inform7/Internal/Inter/EnglishLanguageKit set: kits}
{component type: web symbol: DIALOGUEKIT webname: DialogueKit path: inform7/Internal/Inter/DialogueKit set: kits}

View file

@ -135,10 +135,11 @@ The following webs are the source for kits of Inter code shipped with Inform (at
* {PROGRAM} - {PURPOSE} - [{WEBICON}&nbsp;Web]({GITHUBPAGESLINK}/{PROGRAM}/index.html)
{end-define}
{kit name: BasicInformKit purpose: Support for Inform as a programming language}
{kit name: Architecture16Kit purpose: Support for running on 16-bit platforms}
{kit name: Architecture32Kit purpose: Support for running on 32-bit platforms}
{kit name: WorldModelKit purpose: Support for modelling space, time and actions in interactive fiction}
{kit name: EnglishLanguageKit purpose: Support for English as the natural language used}
{kit name: CommandParserKit purpose: Support for parsing turn-by-turn commands in interactive fiction}
{kit name: BasicInformExtrasKit purpose: Additional support needed only if the Standard Rules are not used}
{kit name: DialogueKit purpose: Additional support for dialogue (under construction)}
### Extensions shipped with Inform