mirror of
https://github.com/ganelson/inform.git
synced 2024-07-16 22:14:23 +03:00
871 lines
109 KiB
HTML
871 lines
109 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Definitions Template</title>
|
|
<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="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
|
|
</head>
|
|
<body>
|
|
<nav role="navigation">
|
|
<h1><a href="../index.html">
|
|
<img src="../docs-src/Figures/Inform.png" height=72">
|
|
</a></h1>
|
|
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
|
<li><a href="../other.html">other tools</a></li>
|
|
<li><a href="../extensions.html">extensions and kits</a></li>
|
|
<li><a href="../units.html">unit test tools</a></li>
|
|
</ul><h2>Extensions</h2><ul>
|
|
<li><a href="../basic_inform/index.html">basic_inform</a></li>
|
|
<li><a href="../standard_rules/index.html">standard_rules</a></li>
|
|
</ul><h2>Kits</h2><ul>
|
|
<li><a href="index.html"><span class="selectedlink">BasicInformKit</span></a></li>
|
|
<li><a href="../BasicInformExtrasKit/index.html">BasicInformExtrasKit</a></li>
|
|
<li><a href="../CommandParserKit/index.html">CommandParserKit</a></li>
|
|
<li><a href="../EnglishLanguageKit/index.html">EnglishLanguageKit</a></li>
|
|
<li><a href="../WorldModelKit/index.html">WorldModelKit</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
<main role="main">
|
|
|
|
<!--Weave of 'Definitions Template' generated by 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>Definitions Template</b></li></ul><p class="purpose">Miscellaneous constant definitions, usually providing symbolic names for otherwise inscrutable numbers, which are used throughout the template layer.</p>
|
|
|
|
<ul class="toc"><li><a href="S-dfn.html#SP1">§1. Z-Machine Definitions</a></li><li><a href="S-dfn.html#SP2">§2. Glulx Definitions</a></li><li><a href="S-dfn.html#SP3">§3. Powers of Two</a></li><li><a href="S-dfn.html#SP4">§4. Text Styles</a></li><li><a href="S-dfn.html#SP5">§5. Colour Numbers</a></li><li><a href="S-dfn.html#SP6">§6. Window Numbers</a></li><li><a href="S-dfn.html#SP7">§7. Paragraphing Flags</a></li><li><a href="S-dfn.html#SP8">§8. Descriptors in the Language of Play</a></li><li><a href="S-dfn.html#SP9">§9. Run-Time Problem Numbers</a></li><li><a href="S-dfn.html#SP10">§10. Template Activities</a></li><li><a href="S-dfn.html#SP11">§11. Template Rulebooks</a></li><li><a href="S-dfn.html#SP12">§12. Kind IDs</a></li><li><a href="S-dfn.html#SP13">§13. Parser Error Numbers</a></li><li><a href="S-dfn.html#SP14">§14. Scope Searching Reasons</a></li><li><a href="S-dfn.html#SP15">§15. Token Types</a></li><li><a href="S-dfn.html#SP16">§16. GPR Return Values</a></li><li><a href="S-dfn.html#SP17">§17. List Styles</a></li><li><a href="S-dfn.html#SP18">§18. Lengths Of Time</a></li><li><a href="S-dfn.html#SP19">§19. Empty Text</a></li><li><a href="S-dfn.html#SP20">§20. Empty Table</a></li><li><a href="S-dfn.html#SP21">§21. Empty Set</a></li><li><a href="S-dfn.html#SP22">§22. Template Attributes</a></li><li><a href="S-dfn.html#SP23">§23. Template Properties</a></li><li><a href="S-dfn.html#SP24">§24. Action Count</a></li><li><a href="S-dfn.html#SP25">§25. Fake Actions</a></li><li><a href="S-dfn.html#SP26">§26. Formal Parameters</a></li><li><a href="S-dfn.html#SP27">§27. Template Configuration</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Z-Machine Definitions. </b>The Z-machine contains certain special constants and variables at fixed
|
|
position in its "header"; the addresses of these are given below. See
|
|
{\it The Z-Machine Standards Document}, version 1.0, for details.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><code class="display"><span class="extract">INDIV_PROP_START</span></code> is the lowest number of any "individual property",
|
|
an I6 internal quantity defined by the compiler when the target is Glulx
|
|
but not for Z.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">#</span><span class="identifier">Ifdef</span><span class="plain"> </span><span class="identifier">TARGET_ZCODE</span><span class="plain">;</span>
|
|
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">max_z_object</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">INDIV_PROP_START</span><span class="plain"> </span><span class="constant">64</span><span class="plain">;</span>
|
|
|
|
<span class="comment">Offsets into Z-machine header:</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_ZCODEVERSION</span><span class="plain"> = </span><span class="constant">$00</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_TERPFLAGS</span><span class="plain"> = </span><span class="constant">$01</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_GAMERELEASE</span><span class="plain"> = </span><span class="constant">$02</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_HIGHMEMORY</span><span class="plain"> = </span><span class="constant">$04</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_INITIALPC</span><span class="plain"> = </span><span class="constant">$06</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_DICTIONARY</span><span class="plain"> = </span><span class="constant">$08</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_OBJECTS</span><span class="plain"> = </span><span class="constant">$0A</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_GLOBALS</span><span class="plain"> = </span><span class="constant">$0C</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_STATICMEMORY</span><span class="plain"> = </span><span class="constant">$0E</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_GAMEFLAGS</span><span class="plain"> = </span><span class="constant">$10</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_GAMESERIAL</span><span class="plain"> = </span><span class="constant">$12</span><span class="plain">; </span><span class="comment">six ASCII characters</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_ABBREVIATIONS</span><span class="plain"> = </span><span class="constant">$18</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_FILELENGTH</span><span class="plain"> = </span><span class="constant">$1A</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_CHECKSUM</span><span class="plain"> = </span><span class="constant">$1C</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_TERPNUMBER</span><span class="plain"> = </span><span class="constant">$1E</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_TERPVERSION</span><span class="plain"> = </span><span class="constant">$1F</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_SCREENHLINES</span><span class="plain"> = </span><span class="constant">$20</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_SCREENWCHARS</span><span class="plain"> = </span><span class="constant">$21</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_SCREENWUNITS</span><span class="plain"> = </span><span class="constant">$22</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_SCREENHUNITS</span><span class="plain"> = </span><span class="constant">$24</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_FONTWUNITS</span><span class="plain"> = </span><span class="constant">$26</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_FONTHUNITS</span><span class="plain"> = </span><span class="constant">$27</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_ROUTINEOFFSET</span><span class="plain"> = </span><span class="constant">$28</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_STRINGOFFSET</span><span class="plain"> = </span><span class="constant">$2A</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_BGCOLOUR</span><span class="plain"> = </span><span class="constant">$2C</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_FGCOLOUR</span><span class="plain"> = </span><span class="constant">$2D</span><span class="plain">; </span><span class="comment">byte</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_TERMCHARS</span><span class="plain"> = </span><span class="constant">$2E</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_PIXELSTO3</span><span class="plain"> = </span><span class="constant">$30</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_TERPSTANDARD</span><span class="plain"> = </span><span class="constant">$32</span><span class="plain">; </span><span class="comment">two bytes</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_ALPHABET</span><span class="plain"> = </span><span class="constant">$34</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_EXTENSION</span><span class="plain"> = </span><span class="constant">$36</span><span class="plain">; </span><span class="comment">word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_UNUSED</span><span class="plain"> = </span><span class="constant">$38</span><span class="plain">; </span><span class="comment">two words</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_INFORMVERSION</span><span class="plain"> = </span><span class="constant">$3C</span><span class="plain">; </span><span class="comment">four ASCII characters</span>
|
|
|
|
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Glulx Definitions. </b>We make similar header definitions for Glulx. Extensive further
|
|
definitions, of constants needed to handle the Glk I/O layer, can be found
|
|
in the "Infglk" section of "Glulx.i6t"; they are not used in the rest
|
|
of the template layer, and would only get in the way here.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">#</span><span class="identifier">IFDEF</span><span class="plain"> </span><span class="identifier">TARGET_GLULX</span><span class="plain">;</span>
|
|
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">unicode_gestalt_ok</span><span class="plain">; </span><span class="comment">Set if interpreter supports Unicode</span>
|
|
|
|
<span class="comment">Offsets into Glulx header and start of ROM:</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_MAGICNUMBER</span><span class="plain"> = </span><span class="constant">$00</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_GLULXVERSION</span><span class="plain"> = </span><span class="constant">$04</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_RAMSTART</span><span class="plain"> = </span><span class="constant">$08</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_EXTSTART</span><span class="plain"> = </span><span class="constant">$0C</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_ENDMEM</span><span class="plain"> = </span><span class="constant">$10</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_STACKSIZE</span><span class="plain"> = </span><span class="constant">$14</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_STARTFUNC</span><span class="plain"> = </span><span class="constant">$18</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_DECODINGTBL</span><span class="plain"> = </span><span class="constant">$1C</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HDR_CHECKSUM</span><span class="plain"> = </span><span class="constant">$20</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ROM_INFO</span><span class="plain"> = </span><span class="constant">$24</span><span class="plain">; </span><span class="comment">four ASCII characters</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ROM_MEMORYLAYOUT</span><span class="plain"> = </span><span class="constant">$28</span><span class="plain">; </span><span class="comment">long word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ROM_INFORMVERSION</span><span class="plain"> = </span><span class="constant">$2C</span><span class="plain">; </span><span class="comment">four ASCII characters</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ROM_COMPVERSION</span><span class="plain"> = </span><span class="constant">$30</span><span class="plain">; </span><span class="comment">four ASCII characters</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ROM_GAMERELEASE</span><span class="plain"> = </span><span class="constant">$34</span><span class="plain">; </span><span class="comment">short word</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ROM_GAMESERIAL</span><span class="plain"> = </span><span class="constant">$36</span><span class="plain">; </span><span class="comment">six ASCII characters</span>
|
|
|
|
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. Powers of Two. </b>I6 lacks support for logical shifts, and the Z-machine opcodes which bear
|
|
on this are not always well supported, so the I6 library has traditionally
|
|
used a lookup table for the values of \(2^{15-n}\) where \(0\leq n \leq 11\).
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">PowersOfTwo_TB</span>
|
|
<span class="plain"> --> </span><span class="constant">$$100000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$010000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$001000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$000100000000</span>
|
|
<span class="plain"> </span><span class="constant">$$000010000000</span>
|
|
<span class="plain"> </span><span class="constant">$$000001000000</span>
|
|
<span class="plain"> </span><span class="constant">$$000000100000</span>
|
|
<span class="plain"> </span><span class="constant">$$000000010000</span>
|
|
<span class="plain"> </span><span class="constant">$$000000001000</span>
|
|
<span class="plain"> </span><span class="constant">$$000000000100</span>
|
|
<span class="plain"> </span><span class="constant">$$000000000010</span>
|
|
<span class="plain"> </span><span class="constant">$$000000000001</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">IncreasingPowersOfTwo_TB</span>
|
|
<span class="plain"> --> </span><span class="constant">$$0000000000000001</span>
|
|
<span class="plain"> </span><span class="constant">$$0000000000000010</span>
|
|
<span class="plain"> </span><span class="constant">$$0000000000000100</span>
|
|
<span class="plain"> </span><span class="constant">$$0000000000001000</span>
|
|
<span class="plain"> </span><span class="constant">$$0000000000010000</span>
|
|
<span class="plain"> </span><span class="constant">$$0000000000100000</span>
|
|
<span class="plain"> </span><span class="constant">$$0000000001000000</span>
|
|
<span class="plain"> </span><span class="constant">$$0000000010000000</span>
|
|
<span class="plain"> </span><span class="constant">$$0000000100000000</span>
|
|
<span class="plain"> </span><span class="constant">$$0000001000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$0000010000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$0000100000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$0001000000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$0010000000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$0100000000000000</span>
|
|
<span class="plain"> </span><span class="constant">$$1000000000000000</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Text Styles. </b>These are the styles of text distinguished by the template layer, though
|
|
they are not required to look different from each other on any given VM.
|
|
The codes are independent of the VM targetted, though in fact they are
|
|
equal to Glulx style numbers as conventionally used. (The Z-machine renders
|
|
some as roman, some as bold, but for instance makes <code class="display"><span class="extract">HEADER_VMSTY</span></code> and
|
|
<code class="display"><span class="extract">SUBHEADER_VMSTY</span></code> indistinguishable to the eye.) Glulx's system of styles
|
|
is one of its weakest points from an IF author's perspective, since it is
|
|
all but impossible to achieve the text effects one might want — boldface,
|
|
for instance, or red text — and text rendering is almost the only area
|
|
in which it is clearly inferior to the Z-machine, which it was designed
|
|
to replace. Still, using these styles when we can will get the most out of
|
|
it, and for unornamental works Glulx is fine in practice.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NORMAL_VMSTY</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HEADER_VMSTY</span><span class="plain"> = </span><span class="constant">3</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SUBHEADER_VMSTY</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ALERT_VMSTY</span><span class="plain"> = </span><span class="constant">5</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NOTE_VMSTY</span><span class="plain"> = </span><span class="constant">6</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">BLOCKQUOTE_VMSTY</span><span class="plain"> = </span><span class="constant">7</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">INPUT_VMSTY</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. Colour Numbers. </b>These are traditional colour names: quite who it was who thought that azure
|
|
was the same colour as cyan is now unclear. Colour is, again, not easy to
|
|
arrange on Glulx, but there is some workaround code.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_DEFAULT</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_BLACK</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_RED</span><span class="plain"> = </span><span class="constant">3</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_GREEN</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_YELLOW</span><span class="plain"> = </span><span class="constant">5</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_BLUE</span><span class="plain"> = </span><span class="constant">6</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_MAGENTA</span><span class="plain"> = </span><span class="constant">7</span><span class="plain">; </span><span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_PURPLE</span><span class="plain"> = </span><span class="constant">7</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_CYAN</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">; </span><span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_AZURE</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLR_WHITE</span><span class="plain"> = </span><span class="constant">9</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. Window Numbers. </b>Although Glulx can support elaborate tessalations of windows on screen (if
|
|
the complexity of handling this can be mastered), the Z-machine has much
|
|
more limited resources in general, so the template layer assumes a simple
|
|
screen model: there are just two screen areas, the scrolling main window
|
|
in which commands are typed and responses printed, and the fixed status
|
|
line bar at the top of the screen.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WIN_ALL</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="comment">Both windows at once</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WIN_STATUS</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WIN_MAIN</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Paragraphing Flags. </b>I am not sure many dictionaries would countenance "to paragraph" as a
|
|
verb, but never mind: the reference here is to the algorithm used to place
|
|
paragraph breaks within text, which uses bitmaps composed of the following.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PARA_COMPLETED</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PARA_PROMPTSKIP</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PARA_SUPPRESSPROMPTSKIP</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PARA_NORULEBOOKBREAKS</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PARA_CONTENTEXPECTED</span><span class="plain"> = </span><span class="constant">16</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. Descriptors in the Language of Play. </b>The following constants, which must be different in value from the number
|
|
of any I6 attribute, are used in the <code class="display"><span class="extract">LanguageDescriptors</span></code> table found
|
|
in the definition of the language of play.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">POSSESS_PK</span><span class="plain"> = </span><span class="constant">$100</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">DEFART_PK</span><span class="plain"> = </span><span class="constant">$101</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">INDEFART_PK</span><span class="plain"> = </span><span class="constant">$102</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. Run-Time Problem Numbers. </b>The enumeration sequence here must correspond to that in the file of RTP
|
|
texts, which is used to generate the HTML pages displayed by the Inform
|
|
user interface when a run-time problem has occurred. (For instance, the
|
|
file of RTP texts includes the heading "P17 - Can't divide by zero",
|
|
equivalent to <code class="display"><span class="extract">RTP_DIVZERO</span></code> being 17 below.) There is no significance to
|
|
the sequence, which is simply the historical order in which they were added
|
|
to I7.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_BACKDROP</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_EXITDOOR</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_NOEXIT</span><span class="plain"> = </span><span class="constant">3</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTCHANGE</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_IMPREL</span><span class="plain"> = </span><span class="constant">5</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_RULESTACK</span><span class="plain"> = </span><span class="constant">6</span><span class="plain">; </span><span class="comment">Now out of use</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TOOMANYRULEBOOKS</span><span class="plain"> = </span><span class="constant">7</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TOOMANYEVENTS</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_BADPROPERTY</span><span class="plain"> = </span><span class="constant">9</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_UNPROVIDED</span><span class="plain"> = </span><span class="constant">10</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_UNSET</span><span class="plain"> = </span><span class="constant">11</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TOOMANYACTS</span><span class="plain"> = </span><span class="constant">12</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTABANDON</span><span class="plain"> = </span><span class="constant">13</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTEND</span><span class="plain"> = </span><span class="constant">14</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTMOVENOTHING</span><span class="plain"> = </span><span class="constant">15</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTREMOVENOTHING</span><span class="plain"> = </span><span class="constant">16</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_DIVZERO</span><span class="plain"> = </span><span class="constant">17</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_BADVALUEPROPERTY</span><span class="plain"> = </span><span class="constant">18</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_NOTBACKDROP</span><span class="plain"> = </span><span class="constant">19</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_NOCOL</span><span class="plain"> = </span><span class="constant">20</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_NOCORR</span><span class="plain"> = </span><span class="constant">21</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_NOROW</span><span class="plain"> = </span><span class="constant">22</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_NOENTRY</span><span class="plain"> = </span><span class="constant">23</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_NOTABLE</span><span class="plain"> = </span><span class="constant">24</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_NOMOREBLANKS</span><span class="plain"> = </span><span class="constant">25</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_NOROWS</span><span class="plain"> = </span><span class="constant">26</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_CANTSORT</span><span class="plain"> = </span><span class="constant">27</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_NOTINAROOM</span><span class="plain"> = </span><span class="constant">28</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_BADTOPIC</span><span class="plain"> = </span><span class="constant">29</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_ROUTELESS</span><span class="plain"> = </span><span class="constant">30</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_PROPOFNOTHING</span><span class="plain"> = </span><span class="constant">31</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_DECIDEONWRONGKIND</span><span class="plain"> = </span><span class="constant">32</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_DECIDEONNOTHING</span><span class="plain"> = </span><span class="constant">33</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_CANTSAVE</span><span class="plain"> = </span><span class="constant">34</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_WONTFIT</span><span class="plain"> = </span><span class="constant">35</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_BADFILE</span><span class="plain"> = </span><span class="constant">36</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_LOWLEVELERROR</span><span class="plain"> = </span><span class="constant">37</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_DONTIGNORETURNSEQUENCE</span><span class="plain"> = </span><span class="constant">38</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_SAYINVALIDSNIPPET</span><span class="plain"> = </span><span class="constant">39</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_SPLICEINVALIDSNIPPET</span><span class="plain"> = </span><span class="constant">40</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_INCLUDEINVALIDSNIPPET</span><span class="plain"> = </span><span class="constant">41</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_LISTWRITERMEMORY</span><span class="plain"> = </span><span class="constant">42</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTREMOVEPLAYER</span><span class="plain"> = </span><span class="constant">43</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTREMOVEDOORS</span><span class="plain"> = </span><span class="constant">44</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTCHANGEOFFSTAGE</span><span class="plain"> = </span><span class="constant">45</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_MSTACKMEMORY</span><span class="plain"> = </span><span class="constant">46</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TYPECHECK</span><span class="plain"> = </span><span class="constant">47</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_FILEIOERROR</span><span class="plain"> = </span><span class="constant">48</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_HEAPERROR</span><span class="plain"> = </span><span class="constant">49</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_LISTRANGEERROR</span><span class="plain"> = </span><span class="constant">50</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_REGEXPSYNTAXERROR</span><span class="plain"> = </span><span class="constant">51</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_NOGLULXUNICODE</span><span class="plain"> = </span><span class="constant">52</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_BACKDROPONLY</span><span class="plain"> = </span><span class="constant">53</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_NOTTHING</span><span class="plain"> = </span><span class="constant">54</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_SCENEHASNTSTARTED</span><span class="plain"> = </span><span class="constant">55</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_SCENEHASNTENDED</span><span class="plain"> = </span><span class="constant">56</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_NEGATIVEROOT</span><span class="plain"> = </span><span class="constant">57</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_CANTRUNTHROUGH</span><span class="plain"> = </span><span class="constant">58</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTITERATE</span><span class="plain"> = </span><span class="constant">59</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_WRONGASSIGNEDKIND</span><span class="plain"> = </span><span class="constant">60</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTBEOFFSTAGE</span><span class="plain"> = </span><span class="constant">61</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_RELKINDVIOLATION</span><span class="plain"> = </span><span class="constant">62</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_CANTMAKEPART</span><span class="plain"> = </span><span class="constant">63</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TEXTTOKENTOOHARD</span><span class="plain"> = </span><span class="constant">64</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_TABLE_NOTABLE2</span><span class="plain"> = </span><span class="constant">65</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_RELATIONCHANGEIMPOSSIBLE</span><span class="plain"> = </span><span class="constant">66</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_RELMINIMAL</span><span class="plain"> = </span><span class="constant">67</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_LISTSIZENEGATIVE</span><span class="plain"> = </span><span class="constant">68</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RTP_REGIONSNOTADJACENT</span><span class="plain"> = </span><span class="constant">69</span><span class="plain">;</span>
|
|
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. Template Activities. </b>These are the activities defined in the Standard Rules. Most, though not
|
|
all, are carried out by explicit function calls in the template layer,
|
|
which is why we need their ID numbers: note that Inform assigns each activity a
|
|
unique ID number on creation, counting upwards from 0, and that it
|
|
processes the Standard Rules before any other source text. (These numbers
|
|
must correspond {\it both} to those in the source of Inform, {\it and} to the
|
|
creation sequence in the Standard Rules.)
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">STARTING_VIRTUAL_MACHINE_ACT</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_THE_NAME_ACT</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_THE_PLURAL_NAME_ACT</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_RESPONSE_ACT</span><span class="plain"> = </span><span class="constant">3</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_A_NUMBER_OF_ACT</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_ROOM_DESC_DETAILS_ACT</span><span class="plain"> = </span><span class="constant">5</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_INVENTORY_DETAILS_ACT</span><span class="plain"> = </span><span class="constant">6</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">LISTING_CONTENTS_ACT</span><span class="plain"> = </span><span class="constant">7</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GROUPING_TOGETHER_ACT</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WRITING_A_PARAGRAPH_ABOUT_ACT</span><span class="plain"> = </span><span class="constant">9</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">LISTING_NONDESCRIPT_ITEMS_ACT</span><span class="plain"> = </span><span class="constant">10</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_NAME_OF_DARK_ROOM_ACT</span><span class="plain"> = </span><span class="constant">11</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_DESC_OF_DARK_ROOM_ACT</span><span class="plain"> = </span><span class="constant">12</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_NEWS_OF_DARKNESS_ACT</span><span class="plain"> = </span><span class="constant">13</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_NEWS_OF_LIGHT_ACT</span><span class="plain"> = </span><span class="constant">14</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">REFUSAL_TO_ACT_IN_DARK_ACT</span><span class="plain"> = </span><span class="constant">15</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CONSTRUCTING_STATUS_LINE_ACT</span><span class="plain"> = </span><span class="constant">16</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_BANNER_TEXT_ACT</span><span class="plain"> = </span><span class="constant">17</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">READING_A_COMMAND_ACT</span><span class="plain"> = </span><span class="constant">18</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">DECIDING_SCOPE_ACT</span><span class="plain"> = </span><span class="constant">19</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">DECIDING_CONCEALED_POSSESS_ACT</span><span class="plain"> = </span><span class="constant">20</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">DECIDING_WHETHER_ALL_INC_ACT</span><span class="plain"> = </span><span class="constant">21</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CLARIFYING_PARSERS_CHOICE_ACT</span><span class="plain"> = </span><span class="constant">22</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ASKING_WHICH_DO_YOU_MEAN_ACT</span><span class="plain"> = </span><span class="constant">23</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_A_PARSER_ERROR_ACT</span><span class="plain"> = </span><span class="constant">24</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SUPPLYING_A_MISSING_NOUN_ACT</span><span class="plain"> = </span><span class="constant">25</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SUPPLYING_A_MISSING_SECOND_ACT</span><span class="plain"> = </span><span class="constant">26</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">IMPLICITLY_TAKING_ACT</span><span class="plain"> = </span><span class="constant">27</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">AMUSING_A_VICTORIOUS_PLAYER_ACT</span><span class="plain"> = </span><span class="constant">28</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_PLAYERS_OBITUARY_ACT</span><span class="plain"> = </span><span class="constant">29</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">DEALING_WITH_FINAL_QUESTION_ACT</span><span class="plain"> = </span><span class="constant">30</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_LOCALE_DESCRIPTION_ACT</span><span class="plain"> = </span><span class="constant">31</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CHOOSING_NOTABLE_LOCALE_OBJ_ACT</span><span class="plain"> = </span><span class="constant">32</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PRINTING_LOCALE_PARAGRAPH_ACT</span><span class="plain"> = </span><span class="constant">33</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. Template Rulebooks. </b>Rulebooks are created in a similar way, and again are numbered upwards from
|
|
0 in order of creation. These are the ones used in the template layer.
|
|
(These numbers must correspond {\it both} to those in the source of Inform,
|
|
{\it and} to the creation sequence in the Standard Rules.)
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">STARTUP_RB</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SHUTDOWN_RB</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
|
|
<span class="comment">2, 3, 4 are used by the "Printing the name of something" activity</span>
|
|
<span class="comment">5, 6, 7 are used by the "Printing the plural name of something" activity</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TURN_SEQUENCE_RB</span><span class="plain"> = </span><span class="constant">11</span><span class="plain">;</span>
|
|
|
|
<span class="comment">9 is the Scene changing rules</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WHEN_PLAY_BEGINS_RB</span><span class="plain"> = </span><span class="constant">13</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WHEN_PLAY_ENDS_RB</span><span class="plain"> = </span><span class="constant">14</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WHEN_SCENE_BEGINS_RB</span><span class="plain"> = </span><span class="constant">15</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WHEN_SCENE_ENDS_RB</span><span class="plain"> = </span><span class="constant">16</span><span class="plain">;</span>
|
|
|
|
<span class="comment">14 is Every turn</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ACTION_PROCESSING_RB</span><span class="plain"> = </span><span class="constant">18</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SETTING_ACTION_VARIABLES_RB</span><span class="plain"> = </span><span class="constant">19</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SPECIFIC_ACTION_PROCESSING_RB</span><span class="plain"> = </span><span class="constant">20</span><span class="plain">;</span>
|
|
|
|
<span class="comment">18 is player's action awareness rules</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ACCESSIBILITY_RB</span><span class="plain"> = </span><span class="constant">22</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">REACHING_INSIDE_RB</span><span class="plain"> = </span><span class="constant">23</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">REACHING_OUTSIDE_RB</span><span class="plain"> = </span><span class="constant">24</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">VISIBLE_RB</span><span class="plain"> = </span><span class="constant">25</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PERSUADE_RB</span><span class="plain"> = </span><span class="constant">26</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">UNSUCCESSFUL_ATTEMPT_RB</span><span class="plain"> = </span><span class="constant">27</span><span class="plain">;</span>
|
|
|
|
<span class="comment">25 is before, 26 is instead, 27 is check, 28 is carry out</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">AFTER_RB</span><span class="plain"> = </span><span class="constant">32</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">REPORT_RB</span><span class="plain"> = </span><span class="constant">33</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">DOES_THE_PLAYER_MEAN_RB</span><span class="plain"> = </span><span class="constant">34</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">MULTIPLE_ACTION_PROCESSING_RB</span><span class="plain"> = </span><span class="constant">35</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12"></a><b>§12. Kind IDs. </b>These are filled in automatically by Inform, and have the same names as are used
|
|
in the Inform source (and in the Load-.i6t sections): for instance <code class="display"><span class="extract">NUMBER_TY</span></code>.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP13"></a><b>§13. Parser Error Numbers. </b>The traditional ways in which the I6 library's parser, which we adopt here
|
|
more or less intact, can give up on a player's command. See the {\it Inform
|
|
Designer's Manual}, 4th edition, for details.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">STUCK_PE</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">UPTO_PE</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NUMBER_PE</span><span class="plain"> = </span><span class="constant">3</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ANIMA_PE</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CANTSEE_PE</span><span class="plain"> = </span><span class="constant">5</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TOOLIT_PE</span><span class="plain"> = </span><span class="constant">6</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NOTHELD_PE</span><span class="plain"> = </span><span class="constant">7</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">MULTI_PE</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">MMULTI_PE</span><span class="plain"> = </span><span class="constant">9</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">VAGUE_PE</span><span class="plain"> = </span><span class="constant">10</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">EXCEPT_PE</span><span class="plain"> = </span><span class="constant">11</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">VERB_PE</span><span class="plain"> = </span><span class="constant">12</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SCENERY_PE</span><span class="plain"> = </span><span class="constant">13</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ITGONE_PE</span><span class="plain"> = </span><span class="constant">14</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">JUNKAFTER_PE</span><span class="plain"> = </span><span class="constant">15</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TOOFEW_PE</span><span class="plain"> = </span><span class="constant">16</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NOTHING_PE</span><span class="plain"> = </span><span class="constant">17</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ASKSCOPE_PE</span><span class="plain"> = </span><span class="constant">18</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NOTINCONTEXT_PE</span><span class="plain"> = </span><span class="constant">19</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">BLANKLINE_PE</span><span class="plain"> = </span><span class="constant">20</span><span class="plain">; </span><span class="comment">Not formally a parser error, but used by I7 as if</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ANIMAAGAIN_PE</span><span class="plain"> = </span><span class="constant">21</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">COMMABEGIN_PE</span><span class="plain"> = </span><span class="constant">22</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">MISSINGPERSON_PE</span><span class="plain"> = </span><span class="constant">23</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ANIMALISTEN_PE</span><span class="plain"> = </span><span class="constant">24</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TOTALK_PE</span><span class="plain"> = </span><span class="constant">25</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14"></a><b>§14. Scope Searching Reasons. </b>The parser makes use of a mechanism for searching through the objects currently
|
|
"in scope", which basically means visible to the actor who would perform the
|
|
action envisaged by the command being parsed. It is sometimes useful to
|
|
behave differently depending on why this scope searching is being done, so
|
|
the following constants enumerate the possibilities.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">I6's <code class="display"><span class="extract">EACH_TURN_REASON</span></code>, <code class="display"><span class="extract">REACT_BEFORE_REASON</span></code> and <code class="display"><span class="extract">REACT_AFTER_REASON</span></code>
|
|
have been removed from this list as no longer meaningful; hence the lacuna
|
|
in numbering.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PARSING_REASON</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TALKING_REASON</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">EACH_TURN_REASON</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">LOOPOVERSCOPE_REASON</span><span class="plain"> = </span><span class="constant">5</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TESTSCOPE_REASON</span><span class="plain"> = </span><span class="constant">6</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP15"></a><b>§15. Token Types. </b>Tokens are the indecomposable pieces of a grammar line making up a possible
|
|
reading of a command; some are literal words, others stand for "any named
|
|
object in scope", and so on. The following codes identify the possibilities.
|
|
The <code class="display"><span class="extract">*_TOKEN</span></code> constants must not be altered without modifying the I6 compiler
|
|
to match (so, basically, they must not be altered at all).
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ILLEGAL_TT</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="comment">Types of grammar token: illegal</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ELEMENTARY_TT</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment"> (one of those below)</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PREPOSITION_TT</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">; </span><span class="comment"> e.g. 'into'</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ROUTINE_FILTER_TT</span><span class="plain"> = </span><span class="constant">3</span><span class="plain">; </span><span class="comment"> e.g. noun=CagedCreature</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ATTR_FILTER_TT</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">; </span><span class="comment"> e.g. edible</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SCOPE_TT</span><span class="plain"> = </span><span class="constant">5</span><span class="plain">; </span><span class="comment"> e.g. scope=Spells</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_TT</span><span class="plain"> = </span><span class="constant">6</span><span class="plain">; </span><span class="comment"> a general parsing routine</span>
|
|
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NOUN_TOKEN</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="comment">The elementary grammar tokens, and</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HELD_TOKEN</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">the numbers compiled by I6 to</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">MULTI_TOKEN</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">; </span><span class="comment">encode them</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">MULTIHELD_TOKEN</span><span class="plain"> = </span><span class="constant">3</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">MULTIEXCEPT_TOKEN</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">MULTIINSIDE_TOKEN</span><span class="plain"> = </span><span class="constant">5</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CREATURE_TOKEN</span><span class="plain"> = </span><span class="constant">6</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SPECIAL_TOKEN</span><span class="plain"> = </span><span class="constant">7</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NUMBER_TOKEN</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TOPIC_TOKEN</span><span class="plain"> = </span><span class="constant">9</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ENDIT_TOKEN</span><span class="plain"> = </span><span class="constant">15</span><span class="plain">; </span><span class="comment">Value used to mean "end of grammar line"</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP16"></a><b>§16. GPR Return Values. </b>GRP stands for "General Parsing Routine", an I6 routine which acts as a
|
|
grammar token: again, see the {\it Inform Designer's Manual}, 4th edition,
|
|
for details.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">In Library 6/11, <code class="display"><span class="extract">GPR_NOUN</span></code> is defined as <code class="display"><span class="extract">$ff00</span></code>, but this would fail on
|
|
Glulx: it needs to be <code class="display"><span class="extract">$ffffff00</span></code> on 32-bit virtual machines. It appears that
|
|
<code class="display"><span class="extract">GPR_NOUN</span></code> to <code class="display"><span class="extract">GPR_CREATURE</span></code>, though documented in the old {\it Inform
|
|
Translator's Manual}, were omitted when this was consolidated into the DM4,
|
|
so that they effectively disappeared from view. But they might still be
|
|
useful for implementing inflected forms of nouns, so we have retained them
|
|
here regardless.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_FAIL</span><span class="plain"> = -1; </span><span class="comment">Return values from General Parsing</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_PREPOSITION</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="comment">Routines</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_NUMBER</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_MULTIPLE</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_REPARSE</span><span class="plain"> = </span><span class="identifier">REPARSE_CODE</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_NOUN</span><span class="plain"> = -256; </span><span class="comment">Reparse, but as <code class="display"><span class="extract">NOUN_TOKEN</span></code> this time</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_HELD</span><span class="plain"> = </span><span class="identifier">GPR_NOUN</span><span class="plain"> + </span><span class="constant">1</span><span class="plain">; </span><span class="comment">And so on</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_MULTI</span><span class="plain"> = </span><span class="identifier">GPR_NOUN</span><span class="plain"> + </span><span class="constant">2</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_MULTIHELD</span><span class="plain"> = </span><span class="identifier">GPR_NOUN</span><span class="plain"> + </span><span class="constant">3</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_MULTIEXCEPT</span><span class="plain"> = </span><span class="identifier">GPR_NOUN</span><span class="plain"> + </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_MULTIINSIDE</span><span class="plain"> = </span><span class="identifier">GPR_NOUN</span><span class="plain"> + </span><span class="constant">5</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">GPR_CREATURE</span><span class="plain"> = </span><span class="identifier">GPR_NOUN</span><span class="plain"> + </span><span class="constant">6</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP17"></a><b>§17. List Styles. </b>These constants make up bitmaps of the options in use when listing objects.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NEWLINE_BIT</span><span class="plain"> = </span><span class="constant">$$0000000000000001</span><span class="plain">; </span><span class="comment">New-line after each entry</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">INDENT_BIT</span><span class="plain"> = </span><span class="constant">$$0000000000000010</span><span class="plain">; </span><span class="comment">Indent each entry by depth</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">FULLINV_BIT</span><span class="plain"> = </span><span class="constant">$$0000000000000100</span><span class="plain">; </span><span class="comment">Full inventory information after entry</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ENGLISH_BIT</span><span class="plain"> = </span><span class="constant">$$0000000000001000</span><span class="plain">; </span><span class="comment">English sentence style, with commas and and</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RECURSE_BIT</span><span class="plain"> = </span><span class="constant">$$0000000000010000</span><span class="plain">; </span><span class="comment">Recurse downwards with usual rules</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ALWAYS_BIT</span><span class="plain"> = </span><span class="constant">$$0000000000100000</span><span class="plain">; </span><span class="comment">Always recurse downwards</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TERSE_BIT</span><span class="plain"> = </span><span class="constant">$$0000000001000000</span><span class="plain">; </span><span class="comment">More terse English style</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PARTINV_BIT</span><span class="plain"> = </span><span class="constant">$$0000000010000000</span><span class="plain">; </span><span class="comment">Only brief inventory information after entry</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">DEFART_BIT</span><span class="plain"> = </span><span class="constant">$$0000000100000000</span><span class="plain">; </span><span class="comment">Use the definite article in list</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">WORKFLAG_BIT</span><span class="plain"> = </span><span class="constant">$$0000001000000000</span><span class="plain">; </span><span class="comment">At top level (only), only list objects</span>
|
|
<span class="plain"> </span><span class="comment">which have the "workflag" attribute</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ISARE_BIT</span><span class="plain"> = </span><span class="constant">$$0000010000000000</span><span class="plain">; </span><span class="comment">Print " is" or " are" before list</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CONCEAL_BIT</span><span class="plain"> = </span><span class="constant">$$0000100000000000</span><span class="plain">; </span><span class="comment">Omit objects with "concealed" or "scenery":</span>
|
|
<span class="plain"> </span><span class="comment">if WORKFLAG_BIT also set, then does not</span>
|
|
<span class="plain"> </span><span class="comment">apply at top level, but does lower down</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NOARTICLE_BIT</span><span class="plain"> = </span><span class="constant">$$0001000000000000</span><span class="plain">; </span><span class="comment">Print no articles, definite or not</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">EXTRAINDENT_BIT</span><span class="plain"> = </span><span class="constant">$$0010000000000000</span><span class="plain">; </span><span class="comment">New in I7: extra indentation of 1 level</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">CFIRSTART_BIT</span><span class="plain"> = </span><span class="constant">$$0100000000000000</span><span class="plain">; </span><span class="comment">Capitalise first article in list</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP18"></a><b>§18. Lengths Of Time. </b>Inform measures time in minutes.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">QUARTER_HOUR</span><span class="plain"> = </span><span class="constant">15</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">HALF_HOUR</span><span class="plain"> = </span><span class="constant">30</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ONE_HOUR</span><span class="plain"> = </span><span class="constant">60</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TWELVE_HOURS</span><span class="plain"> = </span><span class="constant">720</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TWENTY_FOUR_HOURS</span><span class="plain"> = </span><span class="constant">1440</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP19"></a><b>§19. Empty Text. </b>The I6 compiler does not optimise string compilation: if it needs to compile
|
|
the (packed, read-only) string <code class="display"><span class="extract">"exemplum"</span></code> twice, it will compile two copies.
|
|
This is slightly wasteful on memory, though in practice the loss is not
|
|
enough for us to care. But we do want to avoid this in I7 because, to make
|
|
string-sorting algorithms more efficient, we want direct numerical comparison
|
|
of packed addresses to be equivalent to string comparison: and that means
|
|
the text "exemplum" has to be compiled once and once only. There's a
|
|
general mechanism for this in Inform, but the single case most often needed
|
|
is the empty text, since this is the default value for text variables
|
|
and properties: we give it a name as follows.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">EMPTY_TEXT_PACKED</span><span class="plain"> </span><span class="string">""</span><span class="plain">;</span>
|
|
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">EMPTY_TEXT_VALUE</span><span class="plain"> --> </span><span class="identifier">CONSTANT_PACKED_TEXT_STORAGE</span><span class="plain"> </span><span class="identifier">EMPTY_TEXT_PACKED</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP20"></a><b>§20. Empty Table. </b>Similarly: the default value for the "table" kind of value, a Table
|
|
containing no rows and no columns.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">TheEmptyTable</span><span class="plain"> --> </span><span class="constant">0</span><span class="plain"> </span><span class="constant">0</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP21"></a><b>§21. Empty Set. </b>The falsity proposition describes the empty set of objects, and is the
|
|
zero value for the "description" kind of value.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">Prop_Falsity</span><span class="plain"> </span><span class="identifier">reason</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain">; </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">0</span><span class="plain">; ];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP22"></a><b>§22. Template Attributes. </b>An I6 attribute is equivalent to an I7 "either/or property", though the
|
|
latter are not always translated into I6 attributes because the Z-machine
|
|
has only a limited number of attributes to use. Here, we define attributes
|
|
used by the template.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Many concepts in I6 correspond directly to their successors in I7, even if
|
|
details may vary. (Value properties are a case in point.) Attributes are
|
|
the opposite of this: indeed, no I6 concept is more fragmented in its I7
|
|
equivalents. All but one of the old I6 library attributes are still used
|
|
(the <code class="display"><span class="extract">general</span></code> attribute, for miscellaneous use, has been removed: it more
|
|
often invited abuse than use); and a few new attributes have been added.
|
|
But they are used for a variety of purposes. Some do correspond exactly to
|
|
either/or properties in I7, but others are a sort of signature for I7
|
|
kinds. (So that for I7 use they are read-only.) Others still are used by
|
|
the template layer as part of the implementation of services for I7, but
|
|
are not visible to I7 source text as storage.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">absent</span><span class="plain">; </span><span class="comment">Used to mark objects removed from play</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">animate</span><span class="plain">; </span><span class="comment">I6-level marker for I7 kind "person"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">clothing</span><span class="plain">; </span><span class="comment">= I7 "wearable"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">concealed</span><span class="plain">; </span><span class="comment">= I7 "undescribed"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">container</span><span class="plain">; </span><span class="comment">I6-level marker for I7 kind "container"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">door</span><span class="plain">; </span><span class="comment">I6-level marker for I7 kind "door"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">edible</span><span class="plain">; </span><span class="comment">= I7 "edible" vs "inedible"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">enterable</span><span class="plain">; </span><span class="comment">= I7 "enterable"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">light</span><span class="plain">; </span><span class="comment">= I7 "lighted" vs "dark"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">lockable</span><span class="plain">; </span><span class="comment">= I7 "lockable"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">locked</span><span class="plain">; </span><span class="comment">= I7 "locked"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">moved</span><span class="plain">; </span><span class="comment">= I7 "handled"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">on</span><span class="plain">; </span><span class="comment">= I7 "switched on" vs "switched off"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">open</span><span class="plain">; </span><span class="comment">= I7 "open" vs "closed"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">openable</span><span class="plain">; </span><span class="comment">= I7 "openable"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">scenery</span><span class="plain">; </span><span class="comment">= I7 "scenery"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">static</span><span class="plain">; </span><span class="comment">= I7 "fixed in place" vs "portable"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">supporter</span><span class="plain">; </span><span class="comment">I6-level marker for I7 kind "supporter"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">switchable</span><span class="plain">; </span><span class="comment">I6-level marker for I7 kind "device"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">talkable</span><span class="plain">; </span><span class="comment">Not currently used by I7, but retained for possible future use</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">transparent</span><span class="plain">; </span><span class="comment">= I7 "transparent" vs "opaque"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">visited</span><span class="plain">; </span><span class="comment">= I7 "visited"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">worn</span><span class="plain">; </span><span class="comment">marks that an object tree edge represents wearing</span>
|
|
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">male</span><span class="plain">; </span><span class="comment">not directly used by I7, but available for languages with genders</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">female</span><span class="plain">; </span><span class="comment">= I7 "female" vs "male"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">neuter</span><span class="plain">; </span><span class="comment">= I7 "neuter"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">pluralname</span><span class="plain">; </span><span class="comment">= I7 "plural-named"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">ambigpluralname</span><span class="plain">; </span><span class="comment">= I7 "ambiguously plural"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">proper</span><span class="plain">; </span><span class="comment">= I7 "proper-named"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">remove_proper</span><span class="plain">; </span><span class="comment">remember to remove proper again when using ChangePlayer next</span>
|
|
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">privately_named</span><span class="plain">; </span><span class="comment">New in I7</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">mentioned</span><span class="plain">; </span><span class="comment">New in I7</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">pushable</span><span class="plain">; </span><span class="comment">New in I7</span>
|
|
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">mark_as_room</span><span class="plain">; </span><span class="comment">Used in I7 to speed up testing "ofclass K1_room"</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">mark_as_thing</span><span class="plain">; </span><span class="comment">Used in I7 to speed up testing "ofclass K2_thing"</span>
|
|
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">workflag</span><span class="plain">; </span><span class="comment">= I7 "marked for listing", but basically temporary workspace</span>
|
|
<span class="identifier">Attribute</span><span class="plain"> </span><span class="identifier">workflag2</span><span class="plain">; </span><span class="comment">new in I7 and also temporary workspace</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">list_filter_permits</span><span class="plain"> = </span><span class="identifier">privately_named</span><span class="plain">; </span><span class="comment">another I7 listwriter convenience</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP23"></a><b>§23. Template Properties. </b>As remarked above, these more often correspond to value properties in I7.
|
|
To an experienced I6 user, though, the death toll of abolished I6
|
|
properties in I7 is breathtaking: in alphabetical order, <code class="display"><span class="extract">after</span></code>,
|
|
<code class="display"><span class="extract">cant_go</span></code>, <code class="display"><span class="extract">daemon</span></code>, <code class="display"><span class="extract">each_turn</span></code>, <code class="display"><span class="extract">invent</span></code>, <code class="display"><span class="extract">life</span></code>, <code class="display"><span class="extract">number</span></code>, <code class="display"><span class="extract">orders</span></code>,
|
|
<code class="display"><span class="extract">react_after</span></code>, <code class="display"><span class="extract">react_before</span></code>, <code class="display"><span class="extract">time_left</span></code>, <code class="display"><span class="extract">time_out</span></code>, <code class="display"><span class="extract">when_closed</span></code>,
|
|
<code class="display"><span class="extract">when_off</span></code>, <code class="display"><span class="extract">when_on</span></code>, <code class="display"><span class="extract">when_open</span></code>. In May 2008, the direction properties
|
|
<code class="display"><span class="extract">n_to</span></code>, <code class="display"><span class="extract">s_to</span></code>, <code class="display"><span class="extract">e_to</span></code>, ..., <code class="display"><span class="extract">out_to</span></code> joined the list of the missing.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The losses are numerous because of the shift from I6's object orientation
|
|
to I7's rule orientation: information about the behaviour of objects is no
|
|
longer thought of as data attached to them. At that, it could have been
|
|
worse: a few unused I6 library properties have been retained for possible
|
|
future use.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">add_to_scope</span><span class="plain">; </span><span class="comment">used as in I6 to place component parts in scope</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">article</span><span class="plain"> </span><span class="string">"a"</span><span class="plain">; </span><span class="comment">used as in I6 to implement articles</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">capacity</span><span class="plain"> </span><span class="constant">100</span><span class="plain">; </span><span class="comment">= I7 "carrying capacity"</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">component_child</span><span class="plain">; </span><span class="comment">new in I7: forest structure holding "part of" relation</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">component_parent</span><span class="plain">; </span><span class="comment">new in I7</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">component_sibling</span><span class="plain">; </span><span class="comment">new in I7</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">description</span><span class="plain">; </span><span class="comment">= I7 "description"</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">door_dir</span><span class="plain">; </span><span class="comment">used to implement two-sided doors, but holds direction object, not a property</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">door_to</span><span class="plain">; </span><span class="comment">used as in I6 to implement two-sided doors</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">found_in</span><span class="plain">; </span><span class="comment">used as in I6 to implement two-sided doors and backdrops</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">initial</span><span class="plain">; </span><span class="comment">= I7 "initial description"</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">list_together</span><span class="plain">; </span><span class="comment">used as in I6 to implement "grouping together" activity</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">map_region</span><span class="plain">; </span><span class="comment">new in I7</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">parse_name</span><span class="plain"> </span><span class="constant">0</span><span class="plain">; </span><span class="comment">used as in I6 to implement "Understand... as..." grammars</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">plural</span><span class="plain">; </span><span class="comment">used as in I6 to implement plural names for duplicate objects</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">regional_found_in</span><span class="plain">; </span><span class="comment">new in I7</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">room_index</span><span class="plain">; </span><span class="comment">new in I7: storage for route-finding</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">short_name</span><span class="plain"> </span><span class="constant">0</span><span class="plain">; </span><span class="comment">= I7 "printed name"</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">vector</span><span class="plain">; </span><span class="comment">new in I7: storage for route-finding</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">with_key</span><span class="plain">; </span><span class="comment">= I7 "matching key"</span>
|
|
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">KD_Count</span><span class="plain">; </span><span class="comment">Instance count of the kind of the current object</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK1_Count</span><span class="plain">; </span><span class="comment">These are instance counts within kinds K1, K2, ...</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK2_Count</span><span class="plain">; </span><span class="comment">and it is efficient to declare the common ones with Property</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK4_Count</span><span class="plain">; </span><span class="comment">since this results in a slightly smaller story file</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK5_Count</span><span class="plain">;</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK6_Count</span><span class="plain">;</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK8_Count</span><span class="plain">;</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK3_Count</span><span class="plain">;</span>
|
|
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK1_link</span><span class="plain">; </span><span class="comment">These are for linked lists used to make searches faster</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK2_link</span><span class="plain">; </span><span class="comment">and again it's memory-efficient to declare the common ones</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK5_link</span><span class="plain">; </span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK6_link</span><span class="plain">; </span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">IK8_link</span><span class="plain">; </span>
|
|
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">articles</span><span class="plain">; </span><span class="comment">not used by I7, but an interesting hook in the parser</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">grammar</span><span class="plain">; </span><span class="comment">not used by I7, but an interesting hook in the parser</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">inside_description</span><span class="plain">; </span><span class="comment">not used by I7, but an interesting hook in the locale code</span>
|
|
<span class="identifier">Property</span><span class="plain"> </span><span class="identifier">short_name_indef</span><span class="plain"> </span><span class="constant">0</span><span class="plain">; </span><span class="comment">not used by I7, but an interesting hook in the listmaker</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP24"></a><b>§24. Action Count. </b>The number of valid I7 actions in existence.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ActionCount</span><span class="plain"> = </span><span class="identifier">CCOUNT_ACTION_NAME</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP25"></a><b>§25. Fake Actions. </b>Though sometimes useful for I6 coding tricks, fake actions — action numbers
|
|
not corresponding to any action, but different from those of valid actions,
|
|
and useable with a number of action syntaxes — are not conceptually present
|
|
in I7 source text. They can only really exist at the I6 level because I6 is
|
|
typeless; in I7 terms, there is no convenient kind of value which could
|
|
represent both actions and fake actions while protecting each from confusion
|
|
with the other.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See the {\it Inform Designer's Manual}, 4th edition, for what these are
|
|
used for.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The following fake actions from the I6 library have been dropped here:
|
|
<code class="display"><span class="extract">##LetGo</span></code>, <code class="display"><span class="extract">##Receive</span></code>, <code class="display"><span class="extract">##ThrownAt</span></code>, <code class="display"><span class="extract">##Prompt</span></code>, <code class="display"><span class="extract">##Places</span></code>, <code class="display"><span class="extract">##Objects</span></code>,
|
|
<code class="display"><span class="extract">##Order</span></code>, <code class="display"><span class="extract">##NotUnderstood</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Fake_Action</span><span class="plain"> </span><span class="identifier">ListMiscellany</span><span class="plain">;</span>
|
|
<span class="identifier">Fake_Action</span><span class="plain"> </span><span class="identifier">Miscellany</span><span class="plain">;</span>
|
|
<span class="identifier">Fake_Action</span><span class="plain"> </span><span class="identifier">PluralFound</span><span class="plain">;</span>
|
|
<span class="identifier">Fake_Action</span><span class="plain"> </span><span class="identifier">TheSame</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP26"></a><b>§26. Formal Parameters. </b>These are needed for efficient run-time ambiguity resolution.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_rv</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_par0</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_par1</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_par2</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_par3</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_par4</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_par5</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_par6</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">formal_par7</span><span class="plain">;</span>
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">unicode_temp</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27"></a><b>§27. Template Configuration. </b>To minimise the need for conditional compilation in the template, the
|
|
constant <code class="display"><span class="extract">TEMPLATE_CONFIGURATION_BITMAP</span></code> must be generated by the user
|
|
(i.e., by I7). It's made up of these bits:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">USE_SCORING_TCBIT</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PREVENT_UNDO_TCBIT</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">SERIAL_COMMA_TCBIT</span><span class="plain"> = </span><span class="constant">4</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">PROGRAMMING_EXPONENTS_TCBIT</span><span class="plain"> = </span><span class="constant">8</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">FIX_RNG_TCBIT</span><span class="plain"> = </span><span class="constant">16</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">ECHO_COMMANDS_TCBIT</span><span class="plain"> = </span><span class="constant">32</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">NO_VERB_VERB_DEFINED_TCBIT</span><span class="plain"> = </span><span class="constant">64</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">DIALECT_US_TCBIT</span><span class="plain"> = </span><span class="constant">128</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">STORY_AUTHOR_TCBIT</span><span class="plain"> = </span><span class="constant">256</span><span class="plain">;</span>
|
|
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">RANKING_TABLE_TCBIT</span><span class="plain"> = </span><span class="constant">512</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><i>(This section begins Sections.)</i></li><li><a href="S-utl.html">Continue with 'Utilities Template'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
<script>
|
|
MathJax = {
|
|
tex: {
|
|
inlineMath: '$', '$'], ['\\(', '\\)'
|
|
},
|
|
svg: {
|
|
fontCache: 'global'
|
|
}
|
|
};
|
|
</script>
|
|
<script type="text/javascript" id="MathJax-script" async
|
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
|
|
</script>
|
|
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|