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

Small reorganisation of web hierarchy

This commit is contained in:
Graham Nelson 2020-01-27 01:22:21 +00:00
parent 6cf78f2147
commit df224cfd40
159 changed files with 1914 additions and 2561 deletions

View file

@ -105,14 +105,18 @@ This repository is where development is done on the following executables:
* inrtps - A generator of HTML pages to show for run-time problem messages in Inform. - __version 2 'Benefactive'__ - [★ Web](docs/inrtps/index.html) - [▶ Documentation](docs/inrtps/P-ui.html)
* inter - For handling intermediate Inform code. - __version 1 'Axion'__ - [★ Web](docs/inter/index.html) - [▶ Documentation](docs/inter/P-ui.html)
* its modules [★ inter](docs/inter-module/index.html), [★ codegen](docs/codegen-module/index.html)
* basicinform - The Basic Inform extension, included in all projects. - __version 1__ - [★ Web](docs/basicinform/index.html)
* srules - The Standard Rules extension, included in all interactive fiction projects. - __version 6__ - [★ Web](docs/srules/index.html)
This repository also contains the webs for the Template (at the subtree inform7/Internal/Inter). These are libraries of low-level Inter code needed at run-time, whose source is written in Inform 6 notation:
Two webs give detailed expositions of the most important built-in Inform extensions (at the subtree inform7/extensions):
* basic_inform - Support for Inform as a programming language - [★ Web](docs/basic_inform/index.html)
* standard_rules - Support for Inform as an interactive fiction tool - [★ Web](docs/standard_rules/index.html)
* basic_inform_extras - Additional support needed only if the Standard Rules are not used - [★ Web](docs/basic_inform_extras/index.html)
* basic_inform - - __unversioned__ - [★ Web](docs/basic_inform/index.html)
* standard_rules - - __unversioned__ - [★ Web](docs/standard_rules/index.html)
This repository also contains kits of Inter code (at the subtree inform7/Internal/Inter). These are libraries of code needed at run-time, and whose source is written in Inform 6 notation:
* BasicInformKit - Support for Inform as a programming language - [★ Web](docs/BasicInformKit/index.html)
* WorldModelKit - Support for modelling space, time and actions in interactive fiction - [★ Web](docs/WorldModelKit/index.html)
* CommandParserKit - Support for parsing turn-by-turn commands in interactive fiction - [★ Web](docs/CommandParserKit/index.html)
* BasicInformExtrasKit - Additional support needed only if the Standard Rules are not used - [★ Web](docs/BasicInformExtrasKit/index.html)
The inform7 subtree further contains these primary resources:

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/bie</title>
<title>S/msc</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/at' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform_extras Template Library</a></li><li><b>Activities Template</b></li></ul><p class="purpose">To run the necessary rulebooks to carry out an activity.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformExtrasKit</a></li><li><b>Activities Template</b></li></ul><p class="purpose">To run the necessary rulebooks to carry out an activity.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. The Activities Stack</a></li><li><a href="#SP2">&#167;2. Rule Debugging Inhibition</a></li><li><a href="#SP3">&#167;3. Testing Activities</a></li><li><a href="#SP4">&#167;4. Emptiness</a></li><li><a href="#SP5">&#167;5. Process Activity Rulebook</a></li><li><a href="#SP6">&#167;6. Carrying Out Activities</a></li><li><a href="#SP7">&#167;7. Begin</a></li><li><a href="#SP8">&#167;8. For</a></li><li><a href="#SP9">&#167;9. End</a></li><li><a href="#SP10">&#167;10. Abandon</a></li></ul><hr class="tocbar">
@ -208,7 +208,7 @@ activity must be being run by calling the three stages individually, and
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-bie.html">Back to 'Basic Inform Extras'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-msc.html">Back to 'Miscellany'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -8,8 +8,8 @@
</head>
<body>
<!--Weave of 'S/bie' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform_extras Template Library</a></li><li><b>Basic Inform Extras</b></li></ul><p class="purpose">Additions to the Basic Inform template which are needed only if the Standard Rules are not to be used.</p>
<!--Weave of 'S/msc' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformExtrasKit</a></li><li><b>Miscellany</b></li></ul><p class="purpose">Additions to the Basic Inform template which are needed only if the Standard Rules are not to be used.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Justification</a></li><li><a href="#SP2">&#167;2. Miscellany</a></li><li><a href="#SP3">&#167;3. Veneer</a></li><li><a href="#SP4">&#167;4. Short Name Storage</a></li><li><a href="#SP5">&#167;5. Object Names I</a></li><li><a href="#SP6">&#167;6. Standard Name Printing Rule</a></li><li><a href="#SP7">&#167;7. Object Names II</a></li><li><a href="#SP8">&#167;8. Object Names III</a></li></ul><hr class="tocbar">
@ -409,8 +409,6 @@ indefinite singular depends on the text of the object's name.
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">case</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Activities</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">[ </span><span class="identifier">PNToVP</span><span class="plain"> </span><span class="identifier">gna</span><span class="plain">;</span>
<span class="comment">! if (prior_named_noun == player) return story_viewpoint;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prior_named_noun</span><span class="plain">) </span><span class="identifier">gna</span><span class="plain"> = </span><span class="identifier">GetGNAOfObject</span><span class="plain">(</span><span class="identifier">prior_named_noun</span><span class="plain">);</span>

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1,18 +1,18 @@
<html>
<head>
<title>basic_inform_extras Template Library </title>
<title>BasicInformExtrasKit </title>
<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>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>basic_inform_extras Template Library </b></li></ul>
<p class="purpose">I6T source for the basic_inform_extras library.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>BasicInformExtrasKit </b></li></ul>
<p class="purpose">Additional Inter-level support for non-interactive fiction uses of the Inform language.</p>
<hr>
<ul class="sectionlist">
<li>
<p><a href="S-bie.html"><spon class="sectiontitle">Basic Inform Extras</span></a> -
<p><a href="S-msc.html"><spon class="sectiontitle">Miscellany</span></a> -
<span class="purpose">Additions to the Basic Inform template which are needed only if the Standard Rules are not to be used.</span></p>
</li>
<li>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/bit</title>
<title>S/ft2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/bt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>BlockValues Template</b></li></ul><p class="purpose">Routines for copying, comparing, creating and destroying block values, and for reading and writing them as if they were arrays.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>BlockValues Template</b></li></ul><p class="purpose">Routines for copying, comparing, creating and destroying block values, and for reading and writing them as if they were arrays.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Overview</a></li><li><a href="#SP2">&#167;2. Short Block Format</a></li><li><a href="#SP3">&#167;3. Long Block Access</a></li><li><a href="#SP4">&#167;4. Weak Kind</a></li><li><a href="#SP5">&#167;5. Reference counting</a></li><li><a href="#SP6">&#167;6. Changing Reference Counts</a></li><li><a href="#SP7">&#167;7. Long Block Capacity</a></li><li><a href="#SP8">&#167;8. Long Block Array Access</a></li><li><a href="#SP9">&#167;9. First Zero Entry</a></li><li><a href="#SP10">&#167;10. Mass Copy Entries</a></li><li><a href="#SP11">&#167;11. Mass Copy From Array</a></li><li><a href="#SP12">&#167;12. KOVS Routines</a></li><li><a href="#SP13">&#167;13. Creation</a></li><li><a href="#SP14">&#167;14. Errors</a></li><li><a href="#SP15">&#167;15. Short Block Allocation</a></li><li><a href="#SP16">&#167;16. Block Values On Stack</a></li><li><a href="#SP17">&#167;17. Freeing</a></li><li><a href="#SP18">&#167;18. Quick Copy</a></li><li><a href="#SP19">&#167;19. Short Block Copy</a></li><li><a href="#SP20">&#167;20. Slow Copy</a></li><li><a href="#SP21">&#167;21. Copy</a></li><li><a href="#SP22">&#167;22. Destruction</a></li><li><a href="#SP23">&#167;23. Recycling</a></li><li><a href="#SP24">&#167;24. Mutability</a></li><li><a href="#SP25">&#167;25. Casting</a></li><li><a href="#SP26">&#167;26. Comparison</a></li><li><a href="#SP27">&#167;27. Hashing</a></li><li><a href="#SP28">&#167;28. Serialisation</a></li><li><a href="#SP29">&#167;29. Debugging</a></li><li><a href="#SP30">&#167;30. Printing Memory Addresses</a></li><li><a href="#SP31">&#167;31. Hexadecimal Printing</a></li></ul><hr class="tocbar">
@ -1312,7 +1312,7 @@ in memory between builds invalidating this required output.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-bit.html">Back to 'Basic Inform Template'</a></li><li><a href="S-ct.html">Continue with 'Char Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ft2.html">Back to 'Flex Template'</a></li><li><a href="S-tt2.html">Continue with 'Text Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/bt</title>
<title>S/ut2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/ct' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Char Template</b></li></ul><p class="purpose">To decide whether letters are upper or lower case, and convert between the two.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Char Template</b></li></ul><p class="purpose">To decide whether letters are upper or lower case, and convert between the two.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Char Is Of Case</a></li><li><a href="#SP2">&#167;2. Char To Case</a></li><li><a href="#SP3">&#167;3. Reversing Case</a></li><li><a href="#SP4">&#167;4. DigitToValue</a></li><li><a href="#SP5">&#167;5. Testing</a></li></ul><hr class="tocbar">
@ -180,7 +180,7 @@ or returns -1 if it isn't a digit.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-bt.html">Back to 'BlockValues Template'</a></li><li><a href="S-ct2.html">Continue with 'Combinations Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ut2.html">Back to 'UnicodeData Template'</a></li><li><a href="S-rt2.html">Continue with 'RegExp Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ct</title>
<title>S/lt2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/ct2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Combinations Template</b></li></ul><p class="purpose">Code to support the combination kind of value constructor.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Combinations Template</b></li></ul><p class="purpose">Code to support the combination kind of value constructor.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Block Format</a></li><li><a href="#SP2">&#167;2. KOV Support</a></li><li><a href="#SP3">&#167;3. Creation</a></li><li><a href="#SP4">&#167;4. Destruction</a></li><li><a href="#SP5">&#167;5. Copying</a></li><li><a href="#SP6">&#167;6. Comparison</a></li><li><a href="#SP7">&#167;7. Hashing</a></li><li><a href="#SP8">&#167;8. Printing</a></li></ul><hr class="tocbar">
@ -217,7 +217,7 @@ same kind.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ct.html">Back to 'Char Template'</a></li><li><a href="S-dt.html">Continue with 'Definitions Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-lt2.html">Back to 'Lists Template'</a></li><li><a href="S-rkt.html">Continue with 'Relation Kind Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ct2</title>
<title>Booklet Title</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/dt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</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="crumbs"><li><a href="../webs.html">&#9733;</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="#SP1">&#167;1. Z-Machine Definitions</a></li><li><a href="#SP2">&#167;2. Glulx Definitions</a></li><li><a href="#SP3">&#167;3. Powers of Two</a></li><li><a href="#SP4">&#167;4. Text Styles</a></li><li><a href="#SP5">&#167;5. Colour Numbers</a></li><li><a href="#SP6">&#167;6. Window Numbers</a></li><li><a href="#SP7">&#167;7. Paragraphing Flags</a></li><li><a href="#SP8">&#167;8. Descriptors in the Language of Play</a></li><li><a href="#SP9">&#167;9. Run-Time Problem Numbers</a></li><li><a href="#SP10">&#167;10. Template Activities</a></li><li><a href="#SP11">&#167;11. Template Rulebooks</a></li><li><a href="#SP12">&#167;12. Kind IDs</a></li><li><a href="#SP13">&#167;13. Parser Error Numbers</a></li><li><a href="#SP14">&#167;14. Scope Searching Reasons</a></li><li><a href="#SP15">&#167;15. Token Types</a></li><li><a href="#SP16">&#167;16. GPR Return Values</a></li><li><a href="#SP17">&#167;17. List Styles</a></li><li><a href="#SP18">&#167;18. Lengths Of Time</a></li><li><a href="#SP19">&#167;19. Empty Text</a></li><li><a href="#SP20">&#167;20. Empty Table</a></li><li><a href="#SP21">&#167;21. Empty Set</a></li><li><a href="#SP22">&#167;22. Template Attributes</a></li><li><a href="#SP23">&#167;23. Template Properties</a></li><li><a href="#SP24">&#167;24. Action Count</a></li><li><a href="#SP25">&#167;25. Fake Actions</a></li><li><a href="#SP26">&#167;26. Formal Parameters</a></li><li><a href="#SP27">&#167;27. Template Configuration</a></li></ul><hr class="tocbar">
@ -851,7 +851,7 @@ constant <code class="display"><span class="extract">TEMPLATE_CONFIGURATION_BITM
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ct2.html">Back to 'Combinations Template'</a></li><li><a href="S-ft.html">Continue with 'FileIO Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><i>(This section begins Sections.)</i></li><li><a href="S-ut.html">Continue with 'Utilities Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/dt</title>
<title>S/mt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/ft' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>FileIO Template</b></li></ul><p class="purpose">Reading and writing external files, in the Glulx virtual machine only.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>FileIO Template</b></li></ul><p class="purpose">Reading and writing external files, in the Glulx virtual machine only.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Language</a></li><li><a href="#SP2">&#167;2. Structure</a></li><li><a href="#SP3">&#167;3. Instances</a></li><li><a href="#SP4">&#167;4. Errors</a></li><li><a href="#SP5">&#167;5. Glulx Material</a></li><li><a href="#SP6">&#167;6. Existence</a></li><li><a href="#SP7">&#167;7. Readiness</a></li><li><a href="#SP8">&#167;8. Open File</a></li><li><a href="#SP9">&#167;9. Close File</a></li><li><a href="#SP10">&#167;10. Get Character</a></li><li><a href="#SP11">&#167;11. Put Character</a></li><li><a href="#SP12">&#167;12. Print Line</a></li><li><a href="#SP13">&#167;13. Print Contents</a></li><li><a href="#SP14">&#167;14. Print Text</a></li><li><a href="#SP15">&#167;15. Serialising Tables</a></li><li><a href="#SP16">&#167;16. Z-Machine Stubs</a></li><li><a href="#SP17">&#167;17. Back To Core</a></li></ul><hr class="tocbar">
@ -491,7 +491,7 @@ run-time problem when there is no alternative.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-dt.html">Back to 'Definitions Template'</a></li><li><a href="S-ft2.html">Continue with 'Flex Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-mt.html">Back to 'Mathematics Template'</a></li><li><a href="S-st.html">Continue with 'Sort Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ft</title>
<title>S/rt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/ft2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Flex Template</b></li></ul><p class="purpose">To allocate flexible-sized blocks of memory as needed to hold arbitrary-length strings of text, stored actions or other block values.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Flex Template</b></li></ul><p class="purpose">To allocate flexible-sized blocks of memory as needed to hold arbitrary-length strings of text, stored actions or other block values.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Blocks</a></li><li><a href="#SP2">&#167;2. Multiple Blocks</a></li><li><a href="#SP3">&#167;3. The Heap</a></li><li><a href="#SP4">&#167;4. Initialisation</a></li><li><a href="#SP5">&#167;5. Net Free Space</a></li><li><a href="#SP6">&#167;6. Make Space</a></li><li><a href="#SP7">&#167;7. Block Allocation</a></li><li><a href="#SP8">&#167;8. Errors</a></li><li><a href="#SP9">&#167;9. Merging</a></li><li><a href="#SP10">&#167;10. Recutting</a></li><li><a href="#SP11">&#167;11. Deallocation</a></li><li><a href="#SP12">&#167;12. Resizing</a></li><li><a href="#SP13">&#167;13. Block Size</a></li><li><a href="#SP14">&#167;14. Debugging Routines</a></li></ul><hr class="tocbar">
@ -721,7 +721,7 @@ only.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ft.html">Back to 'FileIO Template'</a></li><li><a href="S-gt.html">Continue with 'Glulx Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-rt.html">Back to 'Rulebooks Template'</a></li><li><a href="S-bt.html">Continue with 'BlockValues Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ft2</title>
<title>S/lt</title>
<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">
@ -9,11 +9,20 @@
<body>
<!--Weave of 'S/gt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Glulx Template</b></li></ul><p class="purpose">To start up the Glk interface for the Glulx virtual machine, and provide Glulx-specific printing functions.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Glulx Template</b></li></ul><p class="purpose">To start up the Glk interface for the Glulx virtual machine, and provide Glulx-specific printing functions.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Summary</a></li><li><a href="#SP2">&#167;2. Variables and Arrays</a></li><li><a href="#SP3">&#167;3. Infglk</a></li><li><a href="#SP4">&#167;4. Rocks</a></li><li><a href="#SP5">&#167;5. Stubs</a></li><li><a href="#SP6">&#167;6. Starting Up</a></li><li><a href="#SP7">&#167;7. Enable Acceleration</a></li><li><a href="#SP8">&#167;8. Release Number</a></li><li><a href="#SP9">&#167;9. Keyboard Input</a></li><li><a href="#SP10">&#167;10. Buffer Functions</a></li><li><a href="#SP11">&#167;11. Dictionary Functions</a></li><li><a href="#SP12">&#167;12. SHOWVERB support</a></li><li><a href="#SP13">&#167;13. Command Tables</a></li><li><a href="#SP14">&#167;14. Random Number Generator</a></li><li><a href="#SP15">&#167;15. Memory Allocation</a></li><li><a href="#SP16">&#167;16. Audiovisual Resources</a></li><li><a href="#SP17">&#167;17. Typography</a></li><li><a href="#SP18">&#167;18. Character Casing</a></li><li><a href="#SP19">&#167;19. Glulx-Only Printing Routines</a></li><li><a href="#SP20">&#167;20. The Screen</a></li><li><a href="#SP21">&#167;21. Window Colours</a></li><li><a href="#SP22">&#167;22. Main Window</a></li><li><a href="#SP23">&#167;23. Status Line</a></li><li><a href="#SP24">&#167;24. Quotation Boxes</a></li><li><a href="#SP25">&#167;25. Veneer</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Begin Glulx-only matter</a></li><li><a href="#SP2">&#167;2. Summary</a></li><li><a href="#SP3">&#167;3. Variables and Arrays</a></li><li><a href="#SP4">&#167;4. Infglk</a></li><li><a href="#SP5">&#167;5. Rocks</a></li><li><a href="#SP6">&#167;6. Stubs</a></li><li><a href="#SP7">&#167;7. Starting Up</a></li><li><a href="#SP8">&#167;8. Enable Acceleration</a></li><li><a href="#SP9">&#167;9. Release Number</a></li><li><a href="#SP10">&#167;10. Keyboard Input</a></li><li><a href="#SP11">&#167;11. Buffer Functions</a></li><li><a href="#SP12">&#167;12. Dictionary Functions</a></li><li><a href="#SP13">&#167;13. SHOWVERB support</a></li><li><a href="#SP14">&#167;14. Command Tables</a></li><li><a href="#SP15">&#167;15. Random Number Generator</a></li><li><a href="#SP16">&#167;16. Memory Allocation</a></li><li><a href="#SP17">&#167;17. Audiovisual Resources</a></li><li><a href="#SP18">&#167;18. Typography</a></li><li><a href="#SP19">&#167;19. Character Casing</a></li><li><a href="#SP20">&#167;20. Glulx-Only Printing Routines</a></li><li><a href="#SP21">&#167;21. The Screen</a></li><li><a href="#SP22">&#167;22. Window Colours</a></li><li><a href="#SP23">&#167;23. Main Window</a></li><li><a href="#SP24">&#167;24. Status Line</a></li><li><a href="#SP25">&#167;25. Quotation Boxes</a></li><li><a href="#SP26">&#167;26. Veneer</a></li><li><a href="#SP27">&#167;27. End Glulx-only matter</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Summary. </b>This segment closely parallels "ZMachine.i6t", which provides exactly
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Begin Glulx-only matter. </b></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>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Summary. </b>This segment closely parallels "ZMachine.i6t", which provides exactly
equivalent functionality (indeed, usually the same-named functions and in
the same order) for the Z-machine VM. This is intended to make the rest of the
template code independent of the choice of VM, although that is more of an
@ -23,7 +32,7 @@ the parser (for instance) to call VM-neutral routines to get the data it
wants out of these arrays.
</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Variables and Arrays. </b></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Variables and Arrays. </b></p>
<pre class="display">
@ -55,7 +64,7 @@ wants out of these arrays.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Infglk. </b>This section is a verbatim copy of an invaluable I6 header file originally
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Infglk. </b>This section is a verbatim copy of an invaluable I6 header file originally
put together by John Cater but now maintained by Andrew Plotkin. The routines
are convenient to have on hand, and also provide a canonical set of I6 names
for the many gestalt and other codes.
@ -928,7 +937,7 @@ for the many gestalt and other codes.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Rocks. </b>These are unique ID codes used to mark resources; think of them as inedible
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Rocks. </b>These are unique ID codes used to mark resources; think of them as inedible
cookies.
</p>
@ -948,7 +957,7 @@ cookies.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Stubs. </b>These are I6 library-style entry point routines, not used by I7, but retained
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Stubs. </b>These are I6 library-style entry point routines, not used by I7, but retained
in case I7 extensions want to do interesting things with Glulx.
</p>
@ -961,7 +970,7 @@ in case I7 extensions want to do interesting things with Glulx.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Starting Up. </b><code class="display"><span class="extract">VM_Initialise()</span></code> is almost the first routine called, except that the
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Starting Up. </b><code class="display"><span class="extract">VM_Initialise()</span></code> is almost the first routine called, except that the
"starting the virtual machine" activity is allowed to go first; and,
come to think of it, memory allocation has to be set up before even that,
and that in turn calls <code class="display"><span class="extract">VM_PreInitialise()</span></code> to do the absolute minimum.
@ -1147,7 +1156,7 @@ light to the Dark Room.")
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Enable Acceleration. </b>This enables use of March 2009 extension to Glulx which optimises the speed
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Enable Acceleration. </b>This enables use of March 2009 extension to Glulx which optimises the speed
of Inform-compiled story files by moving the work of I6 veneer routines into
the interpreter itself. It should have no effect on earlier versions of the
Glulx VM, which will lack the gestalt for this feature, but nor should it
@ -1184,7 +1193,7 @@ do any harm.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Release Number. </b>Like all software, IF story files have release numbers to mark revised
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Release Number. </b>Like all software, IF story files have release numbers to mark revised
versions being circulated: unlike most software, and partly for traditional
reasons, the version number is recorded not in some print statement or
variable but is branded on, so to speak, in a specific memory location
@ -1208,7 +1217,7 @@ of the story file header.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Keyboard Input. </b>The VM must provide three routines for keyboard input:
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Keyboard Input. </b>The VM must provide three routines for keyboard input:
</p>
<p class="inwebparagraph"></p>
@ -1387,7 +1396,7 @@ to document all of that.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Buffer Functions. </b>A "buffer", in this sense, is an array containing a stream of characters
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Buffer Functions. </b>A "buffer", in this sense, is an array containing a stream of characters
typed from the keyboard; a "parse buffer" is an array which resolves this
into individual words, pointing to the relevant entries in the dictionary
structure. Because each VM has its own format for each of these arrays (not
@ -1503,7 +1512,7 @@ languages of play, and is not called in the template.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Dictionary Functions. </b>Again, the dictionary structure is differently arranged on the different VMs.
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Dictionary Functions. </b>Again, the dictionary structure is differently arranged on the different VMs.
This is a data structure containing, in compressed form, the text of all the
words to be recognised by tokenisation (above). In I6 for Glulx, a dictionary
word is represented at run-time by its record's address in the dictionary.
@ -1544,7 +1553,7 @@ since, on Glulx, they are the same, these are each the identity function.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. SHOWVERB support. </b>Further VM-specific tables cover actions and attributes, and these are
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. SHOWVERB support. </b>Further VM-specific tables cover actions and attributes, and these are
used by the SHOWVERB testing command.
</p>
@ -1574,7 +1583,7 @@ used by the SHOWVERB testing command.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Command Tables. </b>The VM is also generated containing a data structure for the grammar
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Command Tables. </b>The VM is also generated containing a data structure for the grammar
produced by I6's <code class="display"><span class="extract">Verb</span></code> and <code class="display"><span class="extract">Extend</span></code> directives: this is essentially a
list of command verbs such as DROP or PUSH, together with a list of
synonyms, and then the grammar for the subsequent commands to be
@ -1600,7 +1609,7 @@ recognised by the parser.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Random Number Generator. </b>No routine is needed for extracting a random number, since I6's built-in
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Random Number Generator. </b>No routine is needed for extracting a random number, since I6's built-in
<code class="display"><span class="extract">random</span></code> function does that, but it's useful to abstract the process of
seeding the RNG so that it produces a repeatable sequence of "random"
numbers from here on: the necessary opcodes are different for the two VMs.
@ -1615,7 +1624,7 @@ numbers from here on: the necessary opcodes are different for the two VMs.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Memory Allocation. </b>This is dynamic memory allocation: something which is never practicable in
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Memory Allocation. </b>This is dynamic memory allocation: something which is never practicable in
the Z-machine, because the whole address range is already claimed, but which
is viable on recent revisions of Glulx.
</p>
@ -1638,7 +1647,7 @@ is viable on recent revisions of Glulx.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Audiovisual Resources. </b>The Z-machine only barely supports figures and sound effects, so Glulx is
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Audiovisual Resources. </b>The Z-machine only barely supports figures and sound effects, so Glulx is
the preferred VM to choose if they are wanted. Properly speaking, it's not
Glulx which supports these, but its I/O layer Glk, and implementations
of Glk are free to support them or not as they please: "cheapglk", a
@ -1667,7 +1676,7 @@ investigate the "gestalt" to find out.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Typography. </b>Glk makes an attempt to present typographic styles as being a matter of
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. Typography. </b>Glk makes an attempt to present typographic styles as being a matter of
semantic markup rather than controlling the actual appearance of text:
the idea is that the story file should want to print something in a
heading kind of way, and then the interpreter &mdash; guided by the player's
@ -1694,7 +1703,7 @@ not the place to discuss whether that was a wise decision for Glk to take
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. Character Casing. </b>The following are the equivalent of <code class="display"><span class="extract">tolower</span></code> and <code class="display"><span class="extract">toupper</span></code>, the traditional
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. Character Casing. </b>The following are the equivalent of <code class="display"><span class="extract">tolower</span></code> and <code class="display"><span class="extract">toupper</span></code>, the traditional
C library functions for forcing letters into lower and upper case form, for
the ZSCII character set. Note that Glulx can also use Unicode characters for
some purposes (Unicode was a relatively late addition to the Glulx standard),
@ -1709,7 +1718,7 @@ and we make good use of this when storing text.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. Glulx-Only Printing Routines. </b>Partly because of the smallness of the range of representable values in
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. Glulx-Only Printing Routines. </b>Partly because of the smallness of the range of representable values in
the Z-machine, there is little run-time type-checking that can be done:
for instance a dictionary address cannot be distinguished from a function
address because they are encoded differently, so that a function address
@ -1838,7 +1847,7 @@ set stored here is once again ZSCII, not Unicode.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. The Screen. </b>Our generic screen model is that the screen is made up of windows: we tend
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. The Screen. </b>Our generic screen model is that the screen is made up of windows: we tend
to refer only to two of these, the main window and the status line, but
others may also exist from time to time. Windows have unique ID numbers:
the special window ID -1 means "all windows" or "the entire screen",
@ -1879,7 +1888,7 @@ make little sense there.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. Window Colours. </b>Our generic screen model is that the screen is made up of windows, each of
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. Window Colours. </b>Our generic screen model is that the screen is made up of windows, each of
which can have its own foreground and background colours.
</p>
@ -1951,7 +1960,7 @@ which is greatly superior in this respect).
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. Main Window. </b>The part of the screen on which commands and responses are printed, which
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. Main Window. </b>The part of the screen on which commands and responses are printed, which
ordinarily occupies almost all of the screen area.
</p>
@ -1969,7 +1978,7 @@ status line, to the main window.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. Status Line. </b>Despite the name, the status line need not be a single line at the top of
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. Status Line. </b>Despite the name, the status line need not be a single line at the top of
the screen: that's only the conventional default arrangement. It can expand
to become the equivalent of an old-fashioned VT220 terminal, with menus
and grids and mazes displayed lovingly in character graphics, or it can
@ -2009,7 +2018,7 @@ line; line 2 is underneath, and so on; columns are similarly numbered from
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. Quotation Boxes. </b>On the Z-machine, quotation boxes are produced by stretching the status line,
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. Quotation Boxes. </b>On the Z-machine, quotation boxes are produced by stretching the status line,
but on Glulx they usually occupy windows of their own. If it isn't possible
to create such a window, so that <code class="display"><span class="extract">gg_quotewin</span></code> is zero below, the quotation
text just appears in the main window.
@ -2053,7 +2062,7 @@ text just appears in the main window.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. Veneer. </b></p>
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. Veneer. </b></p>
<pre class="display">
@ -2080,8 +2089,17 @@ text just appears in the main window.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP27"></a><b>&#167;27. End Glulx-only matter. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ft2.html">Back to 'Flex Template'</a></li><li><a href="S-lt.html">Continue with 'Language Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-lt.html">Back to 'Language Template'</a></li><li><a href="S-zt.html">Continue with 'ZMachine Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/gt</title>
<title>S/ut</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/lt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Language Template</b></li></ul><p class="purpose">The fundamental definitions needed by the parser and the verb library in order to specify the language of play -- that is, the language used for communications between the story file and the player.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Language Template</b></li></ul><p class="purpose">The fundamental definitions needed by the parser and the verb library in order to specify the language of play -- that is, the language used for communications between the story file and the player.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Vocabulary</a></li><li><a href="#SP2">&#167;2. Pronouns</a></li><li><a href="#SP3">&#167;3. Descriptors</a></li><li><a href="#SP4">&#167;4. Numbers</a></li><li><a href="#SP5">&#167;5. Time</a></li><li><a href="#SP6">&#167;6. Directions</a></li><li><a href="#SP7">&#167;7. Translation</a></li><li><a href="#SP8">&#167;8. Articles</a></li><li><a href="#SP9">&#167;9. Commands</a></li><li><a href="#SP10">&#167;10. Stubs</a></li></ul><hr class="tocbar">
@ -266,7 +266,7 @@ routines:
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-gt.html">Back to 'Glulx Template'</a></li><li><a href="S-lt2.html">Continue with 'Lists Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ut.html">Back to 'Utilities Template'</a></li><li><a href="S-gt.html">Continue with 'Glulx Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/lt</title>
<title>S/rt2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/lt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Lists Template</b></li></ul><p class="purpose">Code to support the list of... kind of value constructor.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Lists Template</b></li></ul><p class="purpose">Code to support the list of... kind of value constructor.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Block Format</a></li><li><a href="#SP2">&#167;2. KOV Support</a></li><li><a href="#SP3">&#167;3. Creation</a></li><li><a href="#SP4">&#167;4. Destruction</a></li><li><a href="#SP5">&#167;5. Copying</a></li><li><a href="#SP6">&#167;6. Comparison</a></li><li><a href="#SP7">&#167;7. Hashing</a></li><li><a href="#SP8">&#167;8. Printing</a></li><li><a href="#SP9">&#167;9. List From Description</a></li><li><a href="#SP10">&#167;10. Find Item</a></li><li><a href="#SP11">&#167;11. Insert Item</a></li><li><a href="#SP12">&#167;12. Append List</a></li><li><a href="#SP13">&#167;13. Remove Value</a></li><li><a href="#SP14">&#167;14. Remove Item Range</a></li><li><a href="#SP15">&#167;15. Remove List</a></li><li><a href="#SP16">&#167;16. Get Length</a></li><li><a href="#SP17">&#167;17. Set Length</a></li><li><a href="#SP18">&#167;18. Get Item</a></li><li><a href="#SP19">&#167;19. Write Item</a></li><li><a href="#SP20">&#167;20. Put Item</a></li><li><a href="#SP21">&#167;21. Reversing</a></li><li><a href="#SP22">&#167;22. Rotation</a></li><li><a href="#SP23">&#167;23. Sorting</a></li></ul><hr class="tocbar">
@ -850,7 +850,7 @@ we sort based not on the item values but on their values for the property
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-lt.html">Back to 'Language Template'</a></li><li><a href="S-mt.html">Continue with 'Mathematics Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-rt2.html">Back to 'RegExp Template'</a></li><li><a href="S-ct2.html">Continue with 'Combinations Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/lt2</title>
<title>S/prg</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/mt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Mathematics Template</b></li></ul><p class="purpose">Mathematical functions, especially for real numbers.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Mathematics Template</b></li></ul><p class="purpose">Mathematical functions, especially for real numbers.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Square Root</a></li><li><a href="#SP2">&#167;2. Cube Root</a></li><li><a href="#SP3">&#167;3. Absolute value</a></li><li><a href="#SP4">&#167;4. IntegerDivide</a></li><li><a href="#SP5">&#167;5. IntegerRemainder</a></li><li><a href="#SP6">&#167;6. UnsignedCompare</a></li><li><a href="#SP7">&#167;7. SignedCompare</a></li><li><a href="#SP8">&#167;8. Printing reals</a></li></ul><hr class="tocbar">
@ -743,7 +743,7 @@ cases used to check the floating-point extensions to Glulx.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-lt2.html">Back to 'Lists Template'</a></li><li><a href="S-mt2.html">Continue with 'MStack Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-prg.html">Back to 'Paragraphing'</a></li><li><a href="S-ft.html">Continue with 'FileIO Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/mt</title>
<title>S/tt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/mt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>MStack Template</b></li></ul><p class="purpose">To allocate space on the memory stack for frames of variables to be used by rulebooks, activities and actions.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>MStack Template</b></li></ul><p class="purpose">To allocate space on the memory stack for frames of variables to be used by rulebooks, activities and actions.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. The Memory Stack</a></li><li><a href="#SP2">&#167;2. Create Frame</a></li><li><a href="#SP3">&#167;3. Destroy Frame</a></li><li><a href="#SP4">&#167;4. Seek Frame</a></li><li><a href="#SP5">&#167;5. Backtrace</a></li><li><a href="#SP6">&#167;6. Access to Variables</a></li><li><a href="#SP7">&#167;7. Access to Nonexistent Variables</a></li><li><a href="#SP8">&#167;8. Rulebook Variables</a></li><li><a href="#SP9">&#167;9. Activity Variables</a></li></ul><hr class="tocbar">
@ -269,7 +269,7 @@ to see happening.)
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-mt.html">Back to 'Mathematics Template'</a></li><li><a href="S-prg.html">Continue with 'Paragraphing'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-tt.html">Back to 'Tables Template'</a></li><li><a href="S-rt.html">Continue with 'Rulebooks Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/mt2</title>
<title>S/zt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/prg' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Paragraphing</b></li></ul><p class="purpose">To manage the line skips which space paragraphs out.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Paragraphing</b></li></ul><p class="purpose">To manage the line skips which space paragraphs out.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Paragraph Control</a></li><li><a href="#SP2">&#167;2. State</a></li><li><a href="#SP3">&#167;3. Say Number</a></li><li><a href="#SP4">&#167;4. Print English Number</a></li></ul><hr class="tocbar">
@ -402,7 +402,7 @@ whatever is the current language of play.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-mt2.html">Back to 'MStack Template'</a></li><li><a href="S-rt.html">Continue with 'RegExp Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-zt.html">Back to 'ZMachine Template'</a></li><li><a href="S-mt.html">Continue with 'Mathematics Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/rt</title>
<title>S/ct2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/rkt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Relation Kind Template</b></li></ul><p class="purpose">Code to support the relation kind.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Relation Kind Template</b></li></ul><p class="purpose">Code to support the relation kind.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Block Format</a></li><li><a href="#SP2">&#167;2. KOV Support</a></li><li><a href="#SP3">&#167;3. Other Definitions</a></li><li><a href="#SP4">&#167;4. Tunable Parameters</a></li><li><a href="#SP5">&#167;5. Abstract Relations</a></li><li><a href="#SP6">&#167;6. Empty Relations</a></li><li><a href="#SP7">&#167;7. Creation</a></li><li><a href="#SP8">&#167;8. Destruction</a></li><li><a href="#SP9">&#167;9. Copying</a></li><li><a href="#SP10">&#167;10. Comparison</a></li><li><a href="#SP11">&#167;11. Printing</a></li><li><a href="#SP12">&#167;12. Naming</a></li><li><a href="#SP13">&#167;13. Choose Relation Handler</a></li><li><a href="#SP14">&#167;14. Valency</a></li><li><a href="#SP15">&#167;15. Double Hash Set Relation Handler</a></li><li><a href="#SP16">&#167;16. Hash List Relation Handler</a></li><li><a href="#SP17">&#167;17. Hash Table Relation Handler</a></li><li><a href="#SP18">&#167;18. Reversed Hash Table Relation Handler</a></li><li><a href="#SP19">&#167;19. Symmetric Relation Handlers</a></li><li><a href="#SP20">&#167;20. Hash Core Relation Handler</a></li><li><a href="#SP21">&#167;21. Equivalence Hash Table Relation Handler</a></li><li><a href="#SP22">&#167;22. Two-In-One Hash Table Relation Handler</a></li><li><a href="#SP23">&#167;23. Empty</a></li></ul><hr class="tocbar">
@ -2041,7 +2041,7 @@ relation to become non-empty, since that would require making up data.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-rt.html">Back to 'RegExp Template'</a></li><li><a href="S-rt2.html">Continue with 'Relations Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ct2.html">Back to 'Combinations Template'</a></li><li><a href="S-rt3.html">Continue with 'Relations Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,15 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/rt3</title>
<title>S/mt2</title>
<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>
<!--Weave of 'S/rt4' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Rulebooks Template</b></li></ul><p class="purpose">To work through the rules in a rulebook until a decision is made.</p>
<!--Weave of 'S/rt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Rulebooks Template</b></li></ul><p class="purpose">To work through the rules in a rulebook until a decision is made.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Latest Rule Result</a></li><li><a href="#SP2">&#167;2. Following</a></li><li><a href="#SP3">&#167;3. Specifying Outcomes</a></li><li><a href="#SP4">&#167;4. Discovering Outcomes</a></li><li><a href="#SP5">&#167;5. Printing Rule Names</a></li><li><a href="#SP6">&#167;6. Casting</a></li><li><a href="#SP7">&#167;7. Debugging</a></li><li><a href="#SP8">&#167;8. The Default Rule</a></li></ul><hr class="tocbar">
@ -314,7 +314,7 @@ occur, in so far as memory economy allows this.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-rt3.html">Back to 'RTP Template'</a></li><li><a href="S-st.html">Continue with 'Sort Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-mt2.html">Back to 'MStack Template'</a></li><li><a href="S-ft2.html">Continue with 'Flex Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,15 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/prg</title>
<title>S/ct</title>
<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>
<!--Weave of 'S/rt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>RegExp Template</b></li></ul><p class="purpose">Code to match and replace on regular expressions against indexed text strings.</p>
<!--Weave of 'S/rt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>RegExp Template</b></li></ul><p class="purpose">Code to match and replace on regular expressions against indexed text strings.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Debugging</a></li><li><a href="#SP2">&#167;2. Algorithm</a></li><li><a href="#SP3">&#167;3. Class Codes</a></li><li><a href="#SP4">&#167;4. Packets</a></li><li><a href="#SP5">&#167;5. Nodes</a></li><li><a href="#SP6">&#167;6. Match Variables</a></li><li><a href="#SP7">&#167;7. Markers</a></li><li><a href="#SP8">&#167;8. Debugging</a></li><li><a href="#SP9">&#167;9. Compiling Tree For Substring Search</a></li><li><a href="#SP10">&#167;10. Compiling Tree For Regexp Search</a></li><li><a href="#SP11">&#167;11. Parser</a></li><li><a href="#SP12">&#167;12. Parse At Position</a></li><li><a href="#SP13">&#167;13. Backtracking</a></li><li><a href="#SP14">&#167;14. Fail Subexpressions</a></li><li><a href="#SP15">&#167;15. Erasing Constraints</a></li><li><a href="#SP16">&#167;16. Matching Literal Text</a></li><li><a href="#SP17">&#167;17. Matching Character Range</a></li><li><a href="#SP18">&#167;18. Search And Replace</a></li><li><a href="#SP19">&#167;19. Concatenation</a></li></ul><hr class="tocbar">
@ -1884,7 +1884,7 @@ which handles the special syntaxes used in search-and-replace.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-prg.html">Back to 'Paragraphing'</a></li><li><a href="S-rkt.html">Continue with 'Relation Kind Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ct.html">Back to 'Char Template'</a></li><li><a href="S-lt2.html">Continue with 'Lists Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -8,8 +8,8 @@
</head>
<body>
<!--Weave of 'S/rt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Relations Template</b></li></ul><p class="purpose">To manage run-time storage for relations between objects, and to find routes through relations and the map.</p>
<!--Weave of 'S/rt3' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Relations Template</b></li></ul><p class="purpose">To manage run-time storage for relations between objects, and to find routes through relations and the map.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Relation Records</a></li><li><a href="#SP2">&#167;2. Valency Adjectives</a></li><li><a href="#SP3">&#167;3. One To One Relations</a></li><li><a href="#SP4">&#167;4. Symmetric One To One Relations</a></li><li><a href="#SP5">&#167;5. Various To Various Relations</a></li><li><a href="#SP6">&#167;6. Equivalence Relations</a></li><li><a href="#SP7">&#167;7. Show Various to Various</a></li><li><a href="#SP8">&#167;8. Show One to One</a></li><li><a href="#SP9">&#167;9. Show Reversed One to One</a></li><li><a href="#SP10">&#167;10. Show Equivalence</a></li><li><a href="#SP11">&#167;11. Relation Emptying</a></li><li><a href="#SP12">&#167;12. Relation Route-Finding</a></li><li><a href="#SP13">&#167;13. One To Various Route-Finding</a></li><li><a href="#SP14">&#167;14. Various To One Route-Finding</a></li><li><a href="#SP15">&#167;15. Slow Various To Various Route-Finding</a></li><li><a href="#SP16">&#167;16. Fast Various To Various Route-Finding</a></li><li><a href="#SP17">&#167;17. Iterating Relations</a></li></ul><hr class="tocbar">
@ -1100,7 +1100,7 @@ relation in turn. (Each right-way-round relation, at any rate.)
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-rkt.html">Back to 'Relation Kind Template'</a></li><li><a href="S-rt3.html">Continue with 'RTP Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-rkt.html">Back to 'Relation Kind Template'</a></li><li><a href="S-rt4.html">Continue with 'RTP Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,15 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/rt2</title>
<title>S/rt3</title>
<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>
<!--Weave of 'S/rt3' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>RTP Template</b></li></ul><p class="purpose">To issue run-time problem messages, and to perform some run-time type checking which may issue such messages.</p>
<!--Weave of 'S/rt4' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>RTP Template</b></li></ul><p class="purpose">To issue run-time problem messages, and to perform some run-time type checking which may issue such messages.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Reporting</a></li><li><a href="#SP2">&#167;2. Low-Level Errors</a></li><li><a href="#SP3">&#167;3. Argument Type Checking Failed</a></li><li><a href="#SP4">&#167;4. Return Type Checking Failed</a></li><li><a href="#SP5">&#167;5. Whether Provides</a></li><li><a href="#SP6">&#167;6. Scan Property Metadata</a></li><li><a href="#SP7">&#167;7. Get Either-Or Property</a></li><li><a href="#SP8">&#167;8. Set Either-Or Property</a></li><li><a href="#SP9">&#167;9. Value Property</a></li><li><a href="#SP10">&#167;10. Write Value Property</a></li><li><a href="#SP11">&#167;11. Printing Property Names</a></li></ul><hr class="tocbar">
@ -483,7 +483,7 @@ only as decimal numbers.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-rt2.html">Back to 'Relations Template'</a></li><li><a href="S-rt4.html">Continue with 'Rulebooks Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-rt3.html">Back to 'Relations Template'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/rt4</title>
<title>S/ft</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/st' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Sort Template</b></li></ul><p class="purpose">To sort arrays.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Sort Template</b></li></ul><p class="purpose">To sort arrays.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Storage</a></li><li><a href="#SP2">&#167;2. Front End</a></li><li><a href="#SP3">&#167;3. Sort Range</a></li><li><a href="#SP4">&#167;4. Comparison and Exchange</a></li><li><a href="#SP5">&#167;5. 4W37 Sort</a></li><li><a href="#SP6">&#167;6. Insertion Sort</a></li><li><a href="#SP7">&#167;7. In-Place Mergesort</a></li></ul><hr class="tocbar">
@ -253,7 +253,7 @@ implementation, which in turn follows the <code class="display"><span class="ext
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-rt4.html">Back to 'Rulebooks Template'</a></li><li><a href="S-tt.html">Continue with 'Tables Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ft.html">Back to 'FileIO Template'</a></li><li><a href="S-tt.html">Continue with 'Tables Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/tt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Tables Template</b></li></ul><p class="purpose">To read, write, search and allocate rows in the Table data structure.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Tables Template</b></li></ul><p class="purpose">To read, write, search and allocate rows in the Table data structure.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Format</a></li><li><a href="#SP2">&#167;2. Find Column</a></li><li><a href="#SP3">&#167;3. Number of Rows</a></li><li><a href="#SP4">&#167;4. Blanks</a></li><li><a href="#SP5">&#167;5. Masks</a></li><li><a href="#SP6">&#167;6. Testing Blankness</a></li><li><a href="#SP7">&#167;7. Force Entry Blank</a></li><li><a href="#SP8">&#167;8. Force Entry Non-Blank</a></li><li><a href="#SP9">&#167;9. Swapping Blank Bits</a></li><li><a href="#SP10">&#167;10. Moving Blank Bits Down</a></li><li><a href="#SP11">&#167;11. Table Row Corresponding</a></li><li><a href="#SP12">&#167;12. Table Look Up Corresponding Row</a></li><li><a href="#SP13">&#167;13. Table Look Up Entry</a></li><li><a href="#SP14">&#167;14. Blank Rows</a></li><li><a href="#SP15">&#167;15. Random Row</a></li><li><a href="#SP16">&#167;16. Swap Rows</a></li><li><a href="#SP17">&#167;17. Compare Rows</a></li><li><a href="#SP18">&#167;18. Move Row Down</a></li><li><a href="#SP19">&#167;19. Shuffle</a></li><li><a href="#SP20">&#167;20. Next Row</a></li><li><a href="#SP21">&#167;21. Move Blanks to Back</a></li><li><a href="#SP22">&#167;22. Sort</a></li><li><a href="#SP23">&#167;23. Print Table to File</a></li><li><a href="#SP24">&#167;24. Read Table from File</a></li><li><a href="#SP25">&#167;25. Debugging</a></li></ul><hr class="tocbar">
@ -1082,7 +1082,7 @@ is called.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-st.html">Back to 'Sort Template'</a></li><li><a href="S-tt2.html">Continue with 'Text Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-st.html">Back to 'Sort Template'</a></li><li><a href="S-mt2.html">Continue with 'MStack Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/tt</title>
<title>S/bt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/tt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Text Template</b></li></ul><p class="purpose">Code to support the text kind of value.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Text Template</b></li></ul><p class="purpose">Code to support the text kind of value.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Block Format</a></li><li><a href="#SP2">&#167;2. Extent Of Long Block</a></li><li><a href="#SP3">&#167;3. Character Set</a></li><li><a href="#SP4">&#167;4. KOV Support</a></li><li><a href="#SP5">&#167;5. Debugging</a></li><li><a href="#SP6">&#167;6. Creation</a></li><li><a href="#SP7">&#167;7. Copy Short Block</a></li><li><a href="#SP8">&#167;8. Transmutation</a></li><li><a href="#SP9">&#167;9. Mutability</a></li><li><a href="#SP10">&#167;10. Casting</a></li><li><a href="#SP11">&#167;11. Data Conversion</a></li><li><a href="#SP12">&#167;12. Z Version</a></li><li><a href="#SP13">&#167;13. Glulx Version</a></li><li><a href="#SP14">&#167;14. Comparison</a></li><li><a href="#SP15">&#167;15. Hashing</a></li><li><a href="#SP16">&#167;16. Printing</a></li><li><a href="#SP17">&#167;17. Capitalised printing</a></li><li><a href="#SP18">&#167;18. Serialisation</a></li><li><a href="#SP19">&#167;19. Unserialisation</a></li><li><a href="#SP20">&#167;20. Substitution</a></li><li><a href="#SP21">&#167;21. Perishability</a></li><li><a href="#SP22">&#167;22. Blobs</a></li><li><a href="#SP23">&#167;23. Blob Access</a></li><li><a href="#SP24">&#167;24. Get Blob</a></li><li><a href="#SP25">&#167;25. Replace Blob</a></li><li><a href="#SP26">&#167;26. Replace Text</a></li><li><a href="#SP27">&#167;27. Character Length</a></li><li><a href="#SP28">&#167;28. Get Character</a></li><li><a href="#SP29">&#167;29. Casing</a></li><li><a href="#SP30">&#167;30. Change Case</a></li><li><a href="#SP31">&#167;31. Concatenation</a></li></ul><hr class="tocbar">
@ -90,9 +90,6 @@ choosing the indexed-text character set.
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">TEXT_TY_Storage_Flags</span><span class="plain"> = </span><span class="identifier">BLK_FLAG_MULTIPLE</span><span class="plain"> + </span><span class="identifier">BLK_FLAG_16_BIT</span><span class="plain">;</span>
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">Large_Unicode_Tables</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">ENDIF</span><span class="plain">;</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">UnicodeData</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Char</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
@ -1155,7 +1152,7 @@ expression search-and-replace is going on: see "RegExp.i6t".
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-tt.html">Back to 'Tables Template'</a></li><li><a href="S-ut.html">Continue with 'UnicodeData Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-bt.html">Back to 'BlockValues Template'</a></li><li><a href="S-ut2.html">Continue with 'UnicodeData Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,19 +1,211 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ut</title>
<title>S/dt</title>
<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>
<!--Weave of 'S/ut2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Utilities Template</b></li></ul><p class="purpose">Miscellaneous utility routines for some fundamental I6 needs.</p>
<!--Weave of 'S/ut' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Utilities Template</b></li></ul><p class="purpose">Miscellaneous utility routines for some fundamental I6 needs.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Saying Phrases</a></li><li><a href="#SP2">&#167;2. Kinds</a></li><li><a href="#SP3">&#167;3. GenerateRandomNumber</a></li><li><a href="#SP4">&#167;4. PrintSpaces</a></li><li><a href="#SP5">&#167;5. SwapWorkflags</a></li><li><a href="#SP6">&#167;6. TestUseOption</a></li><li><a href="#SP7">&#167;7. ZRegion</a></li><li><a href="#SP8">&#167;8. Memcpy</a></li><li><a href="#SP9">&#167;9. Arrcpy</a></li><li><a href="#SP10">&#167;10. Verbs as Values</a></li><li><a href="#SP11">&#167;11. Seed Random Number Generator Rule</a></li><li><a href="#SP12">&#167;12. Extracting Verb Numbers</a></li><li><a href="#SP13">&#167;13. Say One Of</a></li><li><a href="#SP14">&#167;14. Rounding</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Miscellany</a></li><li><a href="#SP2">&#167;2. Language of Play</a></li><li><a href="#SP3">&#167;3. VM-Specific Code</a></li><li><a href="#SP4">&#167;4. More</a></li><li><a href="#SP5">&#167;5. Print Decimal Number</a></li><li><a href="#SP6">&#167;6. Print Text</a></li><li><a href="#SP7">&#167;7. Properties</a></li><li><a href="#SP8">&#167;8. Print Or Run</a></li><li><a href="#SP9">&#167;9. Saying Phrases</a></li><li><a href="#SP10">&#167;10. Kinds</a></li><li><a href="#SP11">&#167;11. GenerateRandomNumber</a></li><li><a href="#SP12">&#167;12. PrintSpaces</a></li><li><a href="#SP13">&#167;13. SwapWorkflags</a></li><li><a href="#SP14">&#167;14. TestUseOption</a></li><li><a href="#SP15">&#167;15. ZRegion</a></li><li><a href="#SP16">&#167;16. Memcpy</a></li><li><a href="#SP17">&#167;17. Arrcpy</a></li><li><a href="#SP18">&#167;18. Verbs as Values</a></li><li><a href="#SP19">&#167;19. Seed Random Number Generator Rule</a></li><li><a href="#SP20">&#167;20. Extracting Verb Numbers</a></li><li><a href="#SP21">&#167;21. Say One Of</a></li><li><a href="#SP22">&#167;22. Rounding</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Saying Phrases. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Miscellany. </b></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="reserved">Constant</span><span class="plain"> </span><span class="identifier">BLOCKV_STACK_SIZE</span><span class="plain"> = </span><span class="constant">224</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">ifnot</span><span class="plain">;</span>
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">BLOCKV_STACK_SIZE</span><span class="plain"> = </span><span class="identifier">DynamicMemoryAllocation</span><span class="plain">/4;</span>
<span class="plain">#</span><span class="identifier">endif</span><span class="plain">;</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">blockv_stack</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="identifier">BLOCKV_STACK_SIZE</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">I7SFRAME</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">TEXT_TY_RE_Err</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">prior_named_noun</span><span class="plain">; </span><span class="comment">! for adaptive text generation</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">prior_named_list</span><span class="plain">; </span><span class="comment">! ditto: length of list of items</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">prior_named_list_gender</span><span class="plain">; </span><span class="comment">! ditto: common gender of list of items, or -1</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">story_tense</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! ditto: present tense</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">story_viewpoint</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">; </span><span class="comment">! ditto: second person singular</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__pc</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__pc_save</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__n</span><span class="plain">; </span><span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__comp</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">los_rv</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">parameter_object</span><span class="plain">; </span><span class="comment">! = I7 "parameter-object" = I7 "container in question"</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">parameter_value</span><span class="plain">; </span><span class="comment">! not typesafe in I7</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">deferred_calling_list</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="constant">27</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">property_to_be_totalled</span><span class="plain">; </span><span class="comment">! used to implement "total P of..."</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">property_loop_sign</span><span class="plain">; </span><span class="comment">! $+1$ for increasing order, $-1$ for decreasing</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">suppress_scope_loops</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">temporary_value</span><span class="plain">; </span><span class="comment">! can be used anywhere side-effects can't occur</span>
<span class="comment">! [13]</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_fg</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! foreground colour</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_bg</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! background colour</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_fgstatus</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! foreground colour of statusline</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_bgstatus</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! background colour of statusline</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_on</span><span class="plain">; </span><span class="comment">! has colour been enabled by the player?</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">statuswin_current</span><span class="plain">; </span><span class="comment">! if writing to top window</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">suppress_text_substitution</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">deadflag</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="comment">! [14]</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">statuswin_cursize</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">statuswin_size</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="comment">! [16]</span>
<span class="comment">! Global debug_flag = 0;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">debug_rules</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">debug_rule_nesting</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">reason_the_action_failed</span><span class="plain">; </span><span class="comment">! = I7 "reason the action failed"</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">indef_mode</span><span class="plain">; </span><span class="comment">! "Indefinite" mode - ie, "take a brick"</span>
<span class="comment">! is in this mode</span>
<span class="comment">! [3]</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">standard_interpreter</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">LocalParking</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="constant">64</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Language of Play. </b>The equivalent of I6's language definition file, though here the idea is
that a translation should have an inclusion to replace the "Language.i6t"
segment, which contains the English definition.
</p>
<pre class="display">
<span class="identifier">Default</span><span class="plain"> </span><span class="identifier">LanguageCases</span><span class="plain"> </span><span class="constant">1</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. VM-Specific Code. </b>These sections of code contain different definitions of the same routines,
and in some cases the same arrays, to handle low-level functions in the
virtual machine &mdash; saving the game, performing UNDO, parsing typed text into
dictionary word addresses and so on.
</p>
<pre class="display">
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. More. </b></p>
<pre class="display">
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">Protect_I7_Arrays</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="constant">16339</span><span class="plain"> </span><span class="constant">12345</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Print Decimal Number. </b><code class="display"><span class="extract">DecimalNumber</span></code> is a trivial function which just prints a number, in decimal
digits. It is left over from the I6 library's support routines for Glulx,
where it was intended as a stub to pass to the Glulx <code class="display"><span class="extract">Glulx_PrintAnything</span></code> routine
(which I7 does not use). In I7, however, it's also used as the default
printing routine for new kinds of value.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">DecimalNumber</span><span class="plain"> </span><span class="identifier">num</span><span class="plain">; </span><span class="reserved">print</span><span class="plain"> </span><span class="identifier">num</span><span class="plain">; ];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Print Text. </b>The routine for printing an I7 "text" value, which might be text with or
without substitutions.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">PrintI6Text</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">String</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">x</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">Routine</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain">)();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain"> == </span><span class="identifier">EMPTY_TEXT_PACKED</span><span class="plain">) </span><span class="reserved">rfalse</span><span class="plain">;</span>
<span class="reserved">rtrue</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">I7_String</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">; </span><span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">x</span><span class="plain">); ]; </span><span class="comment">! An alternative name now used only by extensions</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Properties. </b>Some either/or properties are compiled to I6 attributes, which must be
predeclared, so we do that first. (All other properties can simply be
used without declaration.)
</p>
<p class="inwebparagraph">What then follows is a table of property metadata: in particular, specifying
which properties can be used with which I6 classes or objects. Policing
this at run-time costs a little speed, but traps many errors of programming,
and keeps everything typesafe. It is the price we pay for the relatively
lenient compile-time checking of I7's "object" kind of value. To make
it as efficient as possible, we calculate offsets into the metadata: this
has to be done (once) at run-time, with the routine compiled.
</p>
<pre class="display">
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">attributed_property_offsets_SIZE</span><span class="plain"> </span><span class="constant">48</span><span class="plain">;</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">attributed_property_offsets</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="identifier">attributed_property_offsets_SIZE</span><span class="plain">;</span>
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">valued_property_offsets_SIZE</span><span class="plain"> (100 + </span><span class="identifier">CCOUNT_PROPERTY</span><span class="plain"> + </span><span class="identifier">INDIV_PROP_START</span><span class="plain">-48);</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">valued_property_offsets</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="identifier">valued_property_offsets_SIZE</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Print Or Run. </b>This utility remains from the old I6 library: it essentially treats a
property as textual and prints it where possible. Where the <code class="display"><span class="extract">no_break</span></code>
flag is set, we expect the text to form only a small part of a paragraph,
and it's inappropriate to break here: for instance, for printing the
"printed name" of an object. Where the flag is clear, however, the text
is expected to form its own paragraph.
</p>
<p class="inwebparagraph">Where <code class="display"><span class="extract">PrintOrRun</span></code> is used in breaking mode, which is only for a very few
properties in I7 (indeed at present only <code class="display"><span class="extract">initial</span></code> and <code class="display"><span class="extract">description</span></code>),
the routine called is given the chance to decide whether to print or not.
It should return <code class="display"><span class="extract">true</span></code> or <code class="display"><span class="extract">false</span></code> according to whether it did so; this
allows us to divide the paragraph or not accordingly.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">PrintOrRun</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">prop</span><span class="plain"> </span><span class="identifier">no_break</span><span class="plain"> </span><span class="identifier">pv</span><span class="plain"> </span><span class="identifier">st</span><span class="plain"> </span><span class="identifier">routine_return_value</span><span class="plain">;</span>
<span class="plain">@</span><span class="identifier">push</span><span class="plain"> </span><span class="identifier">self</span><span class="plain">; </span><span class="identifier">self</span><span class="plain"> = </span><span class="identifier">obj</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prop</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) {</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">prop</span><span class="plain">; </span><span class="identifier">routine_return_value</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">routine_return_value</span><span class="plain"> = </span><span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">prop</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">@</span><span class="identifier">pull</span><span class="plain"> </span><span class="identifier">self</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine_return_value</span><span class="plain">) {</span>
<span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_break</span><span class="plain"> == </span><span class="reserved">false</span><span class="plain">) {</span>
<span class="reserved">new_line</span><span class="plain">;</span>
<span class="identifier">DivideParagraphPoint</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">routine_return_value</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">DA_Number</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">; </span><span class="reserved">print</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">; ];</span>
<span class="plain">[ </span><span class="identifier">DA_TruthState</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain">==0) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"false"</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"true"</span><span class="plain">; ];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Saying Phrases. </b></p>
<pre class="display">
@ -25,7 +217,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Kinds. </b></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Kinds. </b></p>
<pre class="display">
@ -47,7 +239,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. GenerateRandomNumber. </b>The following uses the virtual machine's RNG (via the I6 built-in function
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. GenerateRandomNumber. </b>The following uses the virtual machine's RNG (via the I6 built-in function
<code class="display"><span class="extract">random</span></code>) to produce a uniformly random integer in the range n to m
inclusive, where n and m are allowed to be either way around; so that
a random number between 17 and 4 is the same thing as a random number
@ -69,7 +261,7 @@ to an empty range of values.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. PrintSpaces. </b>Which prints a row of n spaces, for n&gt;= 0.
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. PrintSpaces. </b>Which prints a row of n spaces, for n&gt;= 0.
</p>
@ -84,7 +276,7 @@ to an empty range of values.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. SwapWorkflags. </b>Recall that we have two general-purpose temporary attributes for each object:
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. SwapWorkflags. </b>Recall that we have two general-purpose temporary attributes for each object:
<code class="display"><span class="extract">workflag</span></code> and <code class="display"><span class="extract">workflag2</span></code>. The following swaps their values over for every
object at once.
</p>
@ -105,12 +297,12 @@ object at once.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. TestUseOption. </b>This routine, compiled by NI, returns <code class="display"><span class="extract">true</span></code> if the supplied argument is the
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. TestUseOption. </b>This routine, compiled by NI, returns <code class="display"><span class="extract">true</span></code> if the supplied argument is the
number of a use option in force for the current run of NI, and <code class="display"><span class="extract">false</span></code>
otherwise.
</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. ZRegion. </b>I7 contains many relics from I6, but here's a relic from I5: a routine which
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. ZRegion. </b>I7 contains many relics from I6, but here's a relic from I5: a routine which
used to determine the metaclass of a value, before that concept was given a
name. In I6 code, it can be implemented simply using <code class="display"><span class="extract">metaclass</span></code>, as the
following shows. (The name is from "region of the Z-machine".)
@ -130,7 +322,7 @@ following shows. (The name is from "region of the Z-machine".)
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Memcpy. </b>This is equivalent to C's memcpy function, in good ways and bad.
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Memcpy. </b>This is equivalent to C's memcpy function, in good ways and bad.
</p>
@ -147,7 +339,7 @@ following shows. (The name is from "region of the Z-machine".)
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Arrcpy. </b>This is not quite so efficient, but not terrible.
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Arrcpy. </b>This is not quite so efficient, but not terrible.
</p>
@ -167,7 +359,7 @@ following shows. (The name is from "region of the Z-machine".)
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Verbs as Values. </b></p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. Verbs as Values. </b></p>
<pre class="display">
@ -189,7 +381,7 @@ following shows. (The name is from "region of the Z-machine".)
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Seed Random Number Generator Rule. </b>Unless a seed is provided by NI, and it won't be for released story files,
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. Seed Random Number Generator Rule. </b>Unless a seed is provided by NI, and it won't be for released story files,
the VM's interpreter is supposed to start up with a good seed in its random
number generator: something usually derived from, say, the milliseconds part
of the current time of day, which is unlikely to repeat or show any pattern
@ -214,7 +406,7 @@ of course, in a state of sin" (von Neumann).
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Extracting Verb Numbers. </b>A long tale of woe lies behind the following. Infocom games stored verb numbers
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. Extracting Verb Numbers. </b>A long tale of woe lies behind the following. Infocom games stored verb numbers
in a single byte in dictionary entries, but they did so counting downwards, so
that verb number 0 was stored as 255, 1 as 254, and so on. Inform followed
suit so that debugging of Inform 1 could be aided by using the then-available
@ -259,7 +451,7 @@ routine was added to concentrate lookups of this field in one place.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Say One Of. </b>These routines are described in the Extensions chapter of the Inform
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. Say One Of. </b>These routines are described in the Extensions chapter of the Inform
documentation.
</p>
@ -309,7 +501,7 @@ documentation.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Rounding. </b>The following rounds a numerical value <code class="display"><span class="extract">t1</span></code> to the nearest unit of <code class="display"><span class="extract">t2</span></code>;
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. Rounding. </b>The following rounds a numerical value <code class="display"><span class="extract">t1</span></code> to the nearest unit of <code class="display"><span class="extract">t2</span></code>;
for instance, if <code class="display"><span class="extract">t2</span></code> is 5 then it rounds to the nearest 5. The name is an
anachronism, as it's used for all kinds of value.
</p>
@ -327,7 +519,7 @@ anachronism, as it's used for all kinds of value.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ut.html">Back to 'UnicodeData Template'</a></li><li><a href="S-zt.html">Continue with 'ZMachine Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-dt.html">Back to 'Definitions Template'</a></li><li><a href="S-lt.html">Continue with 'Language Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -8,8 +8,8 @@
</head>
<body>
<!--Weave of 'S/ut' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>UnicodeData Template</b></li></ul><p class="purpose">To tabulate casings in the character set.</p>
<!--Weave of 'S/ut2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>UnicodeData Template</b></li></ul><p class="purpose">To tabulate casings in the character set.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Source</a></li><li><a href="#SP2">&#167;2. ZSCII Casing Tables</a></li><li><a href="#SP3">&#167;3. Small Unicode Casing Tables</a></li><li><a href="#SP4">&#167;4. Large Unicode Casing Tables</a></li></ul><hr class="tocbar">
@ -192,7 +192,7 @@ not included in the ranges below is not a letter.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-tt2.html">Back to 'Text Template'</a></li><li><a href="S-ut2.html">Continue with 'Utilities Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-tt2.html">Back to 'Text Template'</a></li><li><a href="S-ct.html">Continue with 'Char Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ut2</title>
<title>S/gt</title>
<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">
@ -9,11 +9,20 @@
<body>
<!--Weave of 'S/zt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>ZMachine Template</b></li></ul><p class="purpose">To provide routines handling low-level Z-machine facilities.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>ZMachine Template</b></li></ul><p class="purpose">To provide routines handling low-level Z-machine facilities.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Summary</a></li><li><a href="#SP2">&#167;2. Variables and Arrays</a></li><li><a href="#SP3">&#167;3. Enable Acceleration</a></li><li><a href="#SP4">&#167;4. Release Number</a></li><li><a href="#SP5">&#167;5. Keyboard Input</a></li><li><a href="#SP6">&#167;6. Buffer Functions</a></li><li><a href="#SP7">&#167;7. Dictionary Functions</a></li><li><a href="#SP8">&#167;8. Command Tables</a></li><li><a href="#SP9">&#167;9. SHOWVERB support</a></li><li><a href="#SP10">&#167;10. RNG</a></li><li><a href="#SP11">&#167;11. Memory Allocation</a></li><li><a href="#SP12">&#167;12. Audiovisual Resources</a></li><li><a href="#SP13">&#167;13. Typography</a></li><li><a href="#SP14">&#167;14. Character Casing</a></li><li><a href="#SP15">&#167;15. The Screen</a></li><li><a href="#SP16">&#167;16. Window Colours</a></li><li><a href="#SP17">&#167;17. Main Window</a></li><li><a href="#SP18">&#167;18. Status Line</a></li><li><a href="#SP19">&#167;19. Quotation Boxes</a></li><li><a href="#SP20">&#167;20. Undo</a></li><li><a href="#SP21">&#167;21. Veneer</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Begin Z-only matter</a></li><li><a href="#SP2">&#167;2. Summary</a></li><li><a href="#SP3">&#167;3. Variables and Arrays</a></li><li><a href="#SP4">&#167;4. Enable Acceleration</a></li><li><a href="#SP5">&#167;5. Release Number</a></li><li><a href="#SP6">&#167;6. Keyboard Input</a></li><li><a href="#SP7">&#167;7. Buffer Functions</a></li><li><a href="#SP8">&#167;8. Dictionary Functions</a></li><li><a href="#SP9">&#167;9. Command Tables</a></li><li><a href="#SP10">&#167;10. SHOWVERB support</a></li><li><a href="#SP11">&#167;11. RNG</a></li><li><a href="#SP12">&#167;12. Memory Allocation</a></li><li><a href="#SP13">&#167;13. Audiovisual Resources</a></li><li><a href="#SP14">&#167;14. Typography</a></li><li><a href="#SP15">&#167;15. Character Casing</a></li><li><a href="#SP16">&#167;16. The Screen</a></li><li><a href="#SP17">&#167;17. Window Colours</a></li><li><a href="#SP18">&#167;18. Main Window</a></li><li><a href="#SP19">&#167;19. Status Line</a></li><li><a href="#SP20">&#167;20. Quotation Boxes</a></li><li><a href="#SP21">&#167;21. Undo</a></li><li><a href="#SP22">&#167;22. Veneer</a></li><li><a href="#SP23">&#167;23. End Z-only matter</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Summary. </b>This segment closely parallels "Glulx.i6t", which provides exactly
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Begin Z-only matter. </b></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>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Summary. </b>This segment closely parallels "Glulx.i6t", which provides exactly
equivalent functionality (indeed, usually the same-named functions and in
the same order) for the Glulx VM. This is intended to make the rest of the
template code independent of the choice of VM, although that is more of an
@ -23,7 +32,7 @@ the parser (for instance) to call VM-neutral routines to get the data it
wants out of these arrays.
</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Variables and Arrays. </b></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Variables and Arrays. </b></p>
<pre class="display">
@ -46,7 +55,7 @@ wants out of these arrays.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Enable Acceleration. </b>This rule enables use of March 2009 extension to Glulx which optimises the speed
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Enable Acceleration. </b>This rule enables use of March 2009 extension to Glulx which optimises the speed
of Inform-compiled story files, so for the Z-machine it has no effect.
</p>
@ -59,7 +68,7 @@ of Inform-compiled story files, so for the Z-machine it has no effect.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Release Number. </b>Like all software, IF story files have release numbers to mark revised
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Release Number. </b>Like all software, IF story files have release numbers to mark revised
versions being circulated: unlike most software, and partly for traditional
reasons, the version number is recorded not in some print statement or
variable but is branded on, so to speak, in a specific memory location
@ -80,7 +89,7 @@ of the story file header.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Keyboard Input. </b>The VM must provide three routines for keyboard input:
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Keyboard Input. </b>The VM must provide three routines for keyboard input:
</p>
<p class="inwebparagraph"></p>
@ -122,7 +131,7 @@ to document all of that.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Buffer Functions. </b>A "buffer", in this sense, is an array containing a stream of characters
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Buffer Functions. </b>A "buffer", in this sense, is an array containing a stream of characters
typed from the keyboard; a "parse buffer" is an array which resolves this
into individual words, pointing to the relevant entries in the dictionary
structure. Because each VM has its own format for each of these arrays (not
@ -189,7 +198,7 @@ languages of play, and is not called in the template.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Dictionary Functions. </b>Again, the dictionary structure is differently arranged on the different VMs.
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Dictionary Functions. </b>Again, the dictionary structure is differently arranged on the different VMs.
This is a data structure containing, in compressed form, the text of all the
words to be recognised by tokenisation (above). In I6 for Z, a dictionary word
value is represented at run-time by its record number in the dictionary,
@ -219,7 +228,7 @@ convert between record numbers and dictionary addresses.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Command Tables. </b>The VM is also generated containing a data structure for the grammar
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Command Tables. </b>The VM is also generated containing a data structure for the grammar
produced by I6's <code class="display"><span class="extract">Verb</span></code> and <code class="display"><span class="extract">Extend</span></code> directives: this is essentially a
list of command verbs such as DROP or PUSH, together with a list of
synonyms, and then the grammar for the subsequent commands to be
@ -242,7 +251,7 @@ recognised by the parser.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. SHOWVERB support. </b>Further VM-specific tables cover actions and attributes, and these are
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. SHOWVERB support. </b>Further VM-specific tables cover actions and attributes, and these are
used by the SHOWVERB testing command.
</p>
@ -268,7 +277,7 @@ used by the SHOWVERB testing command.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. RNG. </b>No routine is needed for extracting a random number, since I6's built-in
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. RNG. </b>No routine is needed for extracting a random number, since I6's built-in
<code class="display"><span class="extract">random</span></code> function does that, but it's useful to abstract the process of
seeding the RNG so that it produces a repeatable sequence of "random"
numbers from here on: the necessary opcodes are different for the two VMs.
@ -284,7 +293,7 @@ numbers from here on: the necessary opcodes are different for the two VMs.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Memory Allocation. </b>This is dynamic memory allocation: something which is never practicable in
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Memory Allocation. </b>This is dynamic memory allocation: something which is never practicable in
the Z-machine, because the whole address range is already claimed, but which
is viable on recent revisions of Glulx.
</p>
@ -301,7 +310,7 @@ is viable on recent revisions of Glulx.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Audiovisual Resources. </b>The Z-machine only barely supports figures and sound effects, and only in
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Audiovisual Resources. </b>The Z-machine only barely supports figures and sound effects, and only in
version 6 of the Z-machine, which Inform 7 no longer supports. Sound effects
have a longer pedigree and Infocom used them on some version 5 and even some
version 3 works: really, though, from an Inform point of view we would prefer
@ -321,7 +330,7 @@ long-gone formats.)
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Typography. </b>Relatively few typographic effects are available on the Z-machine, so that
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Typography. </b>Relatively few typographic effects are available on the Z-machine, so that
many of the semantic markups for text which would be distinguishable on
Glulx are indistinguishable here.
</p>
@ -338,7 +347,7 @@ Glulx are indistinguishable here.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Character Casing. </b>The following are the equivalent of <code class="display"><span class="extract">tolower</span></code> and <code class="display"><span class="extract">toupper</span></code>, the traditional
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Character Casing. </b>The following are the equivalent of <code class="display"><span class="extract">tolower</span></code> and <code class="display"><span class="extract">toupper</span></code>, the traditional
C library functions for forcing letters into lower and upper case form, for
the ZSCII character set.
</p>
@ -398,7 +407,7 @@ the ZSCII character set.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. The Screen. </b>Our generic screen model is that the screen is made up of windows: we tend
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. The Screen. </b>Our generic screen model is that the screen is made up of windows: we tend
to refer only to two of these, the main window and the status line, but
others may also exist from time to time. Windows have unique ID numbers:
the special window ID -1 means "all windows" or "the entire screen",
@ -433,7 +442,7 @@ in order to keep it accurate.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Window Colours. </b>Each window can have its own foreground and background colours.
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Window Colours. </b>Each window can have its own foreground and background colours.
</p>
<p class="inwebparagraph">The colour of individual letters or words of type is not controllable in
@ -476,7 +485,7 @@ which is greatly superior in this respect).
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Main Window. </b>The part of the screen on which commands and responses are printed, which
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. Main Window. </b>The part of the screen on which commands and responses are printed, which
ordinarily occupies almost all of the screen area.
</p>
@ -499,7 +508,7 @@ emulates the Glulx model of window rather than text colours.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. Status Line. </b>Despite the name, the status line need not be a single line at the top of
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. Status Line. </b>Despite the name, the status line need not be a single line at the top of
the screen: that's only the conventional default arrangement. It can expand
to become the equivalent of an old-fashioned VT220 terminal, with menus
and grids and mazes displayed lovingly in character graphics, or it can
@ -544,11 +553,11 @@ line; line 2 is underneath, and so on; columns are similarly numbered from
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. Quotation Boxes. </b>No routine is needed to produce quotation boxes: the I6 <code class="display"><span class="extract">box</span></code> statement
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. Quotation Boxes. </b>No routine is needed to produce quotation boxes: the I6 <code class="display"><span class="extract">box</span></code> statement
generates the necessary Z-machine opcodes all by itself.
</p>
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. Undo. </b>These simply wrap the relevant opcodes.
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. Undo. </b>These simply wrap the relevant opcodes.
</p>
@ -566,7 +575,7 @@ generates the necessary Z-machine opcodes all by itself.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. Veneer. </b></p>
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. Veneer. </b></p>
<pre class="display">
@ -601,8 +610,17 @@ generates the necessary Z-machine opcodes all by itself.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. End Z-only matter. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">; </span><span class="comment">! TARGET_ZCODE</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ut2.html">Back to 'Utilities Template'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-gt.html">Back to 'Glulx Template'</a></li><li><a href="S-prg.html">Continue with 'Paragraphing'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1,111 @@
<html>
<head>
<title>BasicInformKit </title>
<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>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>BasicInformKit </b></li></ul>
<p class="purpose">Inter-level support for the fundamentals of the Inform language.</p>
<hr>
<ul class="sectionlist">
<li>
<p><a href="S-dt.html"><spon class="sectiontitle">Definitions Template</span></a> -
<span class="purpose">Miscellaneous constant definitions, usually providing symbolic names for otherwise inscrutable numbers, which are used throughout the template layer.</span></p>
</li>
<li>
<p><a href="S-ut.html"><spon class="sectiontitle">Utilities Template</span></a> -
<span class="purpose">Miscellaneous utility routines for some fundamental I6 needs.</span></p>
</li>
<li>
<p><a href="S-lt.html"><spon class="sectiontitle">Language Template</span></a> -
<span class="purpose">The fundamental definitions needed by the parser and the verb library in order to specify the language of play -- that is, the language used for communications between the story file and the player.</span></p>
</li>
<li>
<p><a href="S-gt.html"><spon class="sectiontitle">Glulx Template</span></a> -
<span class="purpose">To start up the Glk interface for the Glulx virtual machine, and provide Glulx-specific printing functions.</span></p>
</li>
<li>
<p><a href="S-zt.html"><spon class="sectiontitle">ZMachine Template</span></a> -
<span class="purpose">To provide routines handling low-level Z-machine facilities.</span></p>
</li>
<li>
<p><a href="S-prg.html"><spon class="sectiontitle">Paragraphing</span></a> -
<span class="purpose">To manage the line skips which space paragraphs out.</span></p>
</li>
<li>
<p><a href="S-mt.html"><spon class="sectiontitle">Mathematics Template</span></a> -
<span class="purpose">Mathematical functions, especially for real numbers.</span></p>
</li>
<li>
<p><a href="S-ft.html"><spon class="sectiontitle">FileIO Template</span></a> -
<span class="purpose">Reading and writing external files, in the Glulx virtual machine only.</span></p>
</li>
<li>
<p><a href="S-st.html"><spon class="sectiontitle">Sort Template</span></a> -
<span class="purpose">To sort arrays.</span></p>
</li>
<li>
<p><a href="S-tt.html"><spon class="sectiontitle">Tables Template</span></a> -
<span class="purpose">To read, write, search and allocate rows in the Table data structure.</span></p>
</li>
<li>
<p><a href="S-mt2.html"><spon class="sectiontitle">MStack Template</span></a> -
<span class="purpose">To allocate space on the memory stack for frames of variables to be used by rulebooks, activities and actions.</span></p>
</li>
<li>
<p><a href="S-rt.html"><spon class="sectiontitle">Rulebooks Template</span></a> -
<span class="purpose">To work through the rules in a rulebook until a decision is made.</span></p>
</li>
<li>
<p><a href="S-ft2.html"><spon class="sectiontitle">Flex Template</span></a> -
<span class="purpose">To allocate flexible-sized blocks of memory as needed to hold arbitrary-length strings of text, stored actions or other block values.</span></p>
</li>
<li>
<p><a href="S-bt.html"><spon class="sectiontitle">BlockValues Template</span></a> -
<span class="purpose">Routines for copying, comparing, creating and destroying block values, and for reading and writing them as if they were arrays.</span></p>
</li>
<li>
<p><a href="S-tt2.html"><spon class="sectiontitle">Text Template</span></a> -
<span class="purpose">Code to support the text kind of value.</span></p>
</li>
<li>
<p><a href="S-ut2.html"><spon class="sectiontitle">UnicodeData Template</span></a> -
<span class="purpose">To tabulate casings in the character set.</span></p>
</li>
<li>
<p><a href="S-ct.html"><spon class="sectiontitle">Char Template</span></a> -
<span class="purpose">To decide whether letters are upper or lower case, and convert between the two.</span></p>
</li>
<li>
<p><a href="S-rt2.html"><spon class="sectiontitle">RegExp Template</span></a> -
<span class="purpose">Code to match and replace on regular expressions against indexed text strings.</span></p>
</li>
<li>
<p><a href="S-lt2.html"><spon class="sectiontitle">Lists Template</span></a> -
<span class="purpose">Code to support the list of... kind of value constructor.</span></p>
</li>
<li>
<p><a href="S-ct2.html"><spon class="sectiontitle">Combinations Template</span></a> -
<span class="purpose">Code to support the combination kind of value constructor.</span></p>
</li>
<li>
<p><a href="S-rkt.html"><spon class="sectiontitle">Relation Kind Template</span></a> -
<span class="purpose">Code to support the relation kind.</span></p>
</li>
<li>
<p><a href="S-rt3.html"><spon class="sectiontitle">Relations Template</span></a> -
<span class="purpose">To manage run-time storage for relations between objects, and to find routes through relations and the map.</span></p>
</li>
<li>
<p><a href="S-rt4.html"><spon class="sectiontitle">RTP Template</span></a> -
<span class="purpose">To issue run-time problem messages, and to perform some run-time type checking which may issue such messages.</span></p>
</li>
</ul>
<hr>
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/mpr</title>
<title>S/pt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/nt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Number Template</b></li></ul><p class="purpose">Support for parsing integers.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">CommandParserKit</a></li><li><b>Number Template</b></li></ul><p class="purpose">Support for parsing integers.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Understanding</a></li><li><a href="#SP2">&#167;2. Truth states</a></li><li><a href="#SP3">&#167;3. Real numbers</a></li></ul><hr class="tocbar">
@ -184,7 +184,7 @@ out not to be.) I don't plan to worry about these cases.)
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-mpr.html">Back to 'MapRouteFinding'</a></li><li><a href="S-ot2.html">Continue with 'OrderOfPlay Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-pt.html">Back to 'Parser Template'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ot3</title>
<title>Booklet Title</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/pt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Parser Template</b></li></ul><p class="purpose">The parser for turning the text of the typed command into a proposed action by the player.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">CommandParserKit</a></li><li><b>Parser Template</b></li></ul><p class="purpose">The parser for turning the text of the typed command into a proposed action by the player.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Grammar Line Variables</a></li><li><a href="#SP2">&#167;2. Grammar Token Variables</a></li><li><a href="#SP3">&#167;3. Match List Variables</a></li><li><a href="#SP4">&#167;4. Words</a></li><li><a href="#SP5">&#167;5. Snippets</a></li><li><a href="#SP6">&#167;6. Unpacking Grammar Lines</a></li><li><a href="#SP7">&#167;7. Keyboard Primitive</a></li><li><a href="#SP8">&#167;8. Reading the Command</a></li><li><a href="#SP9">&#167;9. Parser Proper</a></li><li><a href="#SP10">&#167;10. Parser Letter A</a></li><li><a href="#SP11">&#167;11. Parser Letter B</a></li><li><a href="#SP12">&#167;12. Parser Letter C</a></li><li><a href="#SP13">&#167;13. Parser Letter D</a></li><li><a href="#SP14">&#167;14. Parser Letter E</a></li><li><a href="#SP15">&#167;15. Parser Letter F</a></li><li><a href="#SP16">&#167;16. Parser Letter G</a></li><li><a href="#SP17">&#167;17. Parser Letter H</a></li><li><a href="#SP18">&#167;18. Parser Letter I</a></li><li><a href="#SP19">&#167;19. Parser Letter J</a></li><li><a href="#SP20">&#167;20. Parser Letter K</a></li><li><a href="#SP21">&#167;21. End of Parser Proper</a></li><li><a href="#SP22">&#167;22. Internal Rule</a></li><li><a href="#SP23">&#167;23. Parse Token</a></li><li><a href="#SP24">&#167;24. Parse Token Letter A</a></li><li><a href="#SP25">&#167;25. Parse Token Letter B</a></li><li><a href="#SP26">&#167;26. Parse Token Letter C</a></li><li><a href="#SP27">&#167;27. Parse Token Letter D</a></li><li><a href="#SP28">&#167;28. Parse Token Letter E</a></li><li><a href="#SP29">&#167;29. Parse Token Letter F</a></li><li><a href="#SP30">&#167;30. Descriptors</a></li><li><a href="#SP31">&#167;31. Parsing Descriptors</a></li><li><a href="#SP32">&#167;32. Preposition Chain</a></li><li><a href="#SP33">&#167;33. Creature</a></li><li><a href="#SP34">&#167;34. Noun Domain</a></li><li><a href="#SP35">&#167;35. Adjudicate</a></li><li><a href="#SP36">&#167;36. ReviseMulti</a></li><li><a href="#SP37">&#167;37. Match List</a></li><li><a href="#SP38">&#167;38. ScoreMatchL</a></li><li><a href="#SP39">&#167;39. BestGuess</a></li><li><a href="#SP40">&#167;40. SingleBestGuess</a></li><li><a href="#SP41">&#167;41. Identical</a></li><li><a href="#SP42">&#167;42. Print Command</a></li><li><a href="#SP43">&#167;43. CantSee</a></li><li><a href="#SP44">&#167;44. Multiple Object List</a></li><li><a href="#SP45">&#167;45. Scope</a></li><li><a href="#SP46">&#167;46. Scope Level 0</a></li><li><a href="#SP47">&#167;47. SearchScope</a></li><li><a href="#SP48">&#167;48. ScopeWithin</a></li><li><a href="#SP49">&#167;49. DoScopeActionAndRecurse</a></li><li><a href="#SP50">&#167;50. DoScopeAction</a></li><li><a href="#SP51">&#167;51. Parsing Object Names</a></li><li><a href="#SP52">&#167;52. TryGivenObject</a></li><li><a href="#SP53">&#167;53. Refers</a></li><li><a href="#SP54">&#167;54. NounWord</a></li><li><a href="#SP55">&#167;55. TryNumber</a></li><li><a href="#SP56">&#167;56. Gender</a></li><li><a href="#SP57">&#167;57. Noticing Plurals</a></li><li><a href="#SP58">&#167;58. Pronoun Handling</a></li><li><a href="#SP59">&#167;59. Yes/No Questions</a></li><li><a href="#SP60">&#167;60. Number Words</a></li><li><a href="#SP61">&#167;61. Choose Objects</a></li><li><a href="#SP62">&#167;62. Default Topic</a></li><li><a href="#SP63">&#167;63. Recognition-only-GPR</a></li><li><a href="#SP64">&#167;64. RunRoutines</a></li><li><a href="#SP65">&#167;65. Setting the Player's Command</a></li><li><a href="#SP66">&#167;66. Multiple Object List</a></li></ul><hr class="tocbar">
@ -4472,7 +4472,7 @@ the list. The following converts it to a list structure.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ot3.html">Back to 'OutOfWorld Template'</a></li><li><a href="S-pt2.html">Continue with 'Printing Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><i>(This section begins Sections.)</i></li><li><a href="S-nt.html">Continue with 'Number Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1,27 @@
<html>
<head>
<title>CommandParserKit </title>
<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>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>CommandParserKit </b></li></ul>
<p class="purpose">Inter-level support for command parsing in interactive fiction.</p>
<hr>
<ul class="sectionlist">
<li>
<p><a href="S-pt.html"><spon class="sectiontitle">Parser Template</span></a> -
<span class="purpose">The parser for turning the text of the typed command into a proposed action by the player.</span></p>
</li>
<li>
<p><a href="S-nt.html"><spon class="sectiontitle">Number Template</span></a> -
<span class="purpose">Support for parsing integers.</span></p>
</li>
</ul>
<hr>
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ot</title>
<title>S/ot2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/at' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Actions Template</b></li></ul><p class="purpose">To try actions by people in the model world, processing the necessary rulebooks.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Actions Template</b></li></ul><p class="purpose">To try actions by people in the model world, processing the necessary rulebooks.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Summary</a></li><li><a href="#SP2">&#167;2. Action Data</a></li><li><a href="#SP3">&#167;3. Requirements Bitmap</a></li><li><a href="#SP4">&#167;4. Try Action</a></li><li><a href="#SP5">&#167;5. I6 Angle Brackets</a></li><li><a href="#SP6">&#167;6. Conversion</a></li><li><a href="#SP7">&#167;7. Implicit Take</a></li><li><a href="#SP8">&#167;8. Look After Going</a></li><li><a href="#SP9">&#167;9. Abbreviated Room Description</a></li><li><a href="#SP10">&#167;10. Begin Action</a></li><li><a href="#SP11">&#167;11. Action Primitive</a></li><li><a href="#SP12">&#167;12. Internal Rule</a></li><li><a href="#SP13">&#167;13. Type Safety</a></li><li><a href="#SP14">&#167;14. Basic Visibility Rule</a></li><li><a href="#SP15">&#167;15. Basic Accessibility Rule</a></li><li><a href="#SP16">&#167;16. Carrying Requirements Rule</a></li><li><a href="#SP17">&#167;17. Standard Implicit Taking Rule</a></li><li><a href="#SP18">&#167;18. Requested Actions Require Persuasion Rule</a></li><li><a href="#SP19">&#167;19. Carry Out Requested Actions Rule</a></li><li><a href="#SP20">&#167;20. Generic Verb Subroutine</a></li><li><a href="#SP21">&#167;21. Work Out Details Of Specific Action Rule</a></li><li><a href="#SP22">&#167;22. Actions Bitmap</a></li><li><a href="#SP23">&#167;23. Printing Actions</a></li></ul><hr class="tocbar">
@ -917,7 +917,7 @@ a whole action might produce "Henry taking the grapefruit".)
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ot.html">Back to 'Output Template'</a></li><li><a href="S-at2.html">Continue with 'Activities Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ot2.html">Back to 'OrderOfPlay Template'</a></li><li><a href="S-at2.html">Continue with 'Activities Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/at2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Activities Template</b></li></ul><p class="purpose">To run the necessary rulebooks to carry out an activity.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Activities Template</b></li></ul><p class="purpose">To run the necessary rulebooks to carry out an activity.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. The Activities Stack</a></li><li><a href="#SP2">&#167;2. Rule Debugging Inhibition</a></li><li><a href="#SP3">&#167;3. Testing Activities</a></li><li><a href="#SP4">&#167;4. Emptiness</a></li><li><a href="#SP5">&#167;5. Process Activity Rulebook</a></li><li><a href="#SP6">&#167;6. Carrying Out Activities</a></li><li><a href="#SP7">&#167;7. Begin</a></li><li><a href="#SP8">&#167;8. For</a></li><li><a href="#SP9">&#167;9. End</a></li><li><a href="#SP10">&#167;10. Abandon</a></li></ul><hr class="tocbar">
@ -222,7 +222,7 @@ activity must be being run by calling the three stages individually, and
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-at.html">Back to 'Actions Template'</a></li><li><a href="S-ct.html">Continue with 'Chronology Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-at.html">Back to 'Actions Template'</a></li><li><a href="S-ft.html">Continue with 'Figures Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/at2</title>
<title>S/tt2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/ct' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Chronology Template</b></li></ul><p class="purpose">To record information now which will be needed later, when a condition phrased in the perfect tense is tested.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Chronology Template</b></li></ul><p class="purpose">To record information now which will be needed later, when a condition phrased in the perfect tense is tested.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Scheme I</a></li><li><a href="#SP2">&#167;2. Present and Past</a></li><li><a href="#SP3">&#167;3. Chronology Point</a></li><li><a href="#SP4">&#167;4. Update Chronological Records Rule</a></li><li><a href="#SP5">&#167;5. Test Single Past State</a></li><li><a href="#SP6">&#167;6. Scheme II</a></li><li><a href="#SP7">&#167;7. Past Action Routines</a></li><li><a href="#SP8">&#167;8. Track Actions</a></li><li><a href="#SP9">&#167;9. Storage</a></li></ul><hr class="tocbar">
@ -318,7 +318,7 @@ can it zero the turns count for another action.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-at2.html">Back to 'Activities Template'</a></li><li><a href="S-ft.html">Continue with 'Figures Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-tt2.html">Back to 'Tests Template'</a></li><li><a href="S-st.html">Continue with 'StoredAction Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ct</title>
<title>S/at2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/ft' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Figures Template</b></li></ul><p class="purpose">To display figures and play sound effects.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Figures Template</b></li></ul><p class="purpose">To display figures and play sound effects.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Resource Usage</a></li><li><a href="#SP2">&#167;2. Figures</a></li><li><a href="#SP3">&#167;3. Sound Effects</a></li></ul><hr class="tocbar">
@ -62,7 +62,7 @@ value "figure of cover".
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ct.html">Back to 'Chronology Template'</a></li><li><a href="S-gt.html">Continue with 'Glulx Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-at2.html">Back to 'Activities Template'</a></li><li><a href="S-ot3.html">Continue with 'OutOfWorld Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ft</title>
<title>S/ot</title>
<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">
@ -9,11 +9,20 @@
<body>
<!--Weave of 'S/gt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Glulx Template</b></li></ul><p class="purpose">To provide Glulx-specific actions.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Glulx Template</b></li></ul><p class="purpose">To provide Glulx-specific actions.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. GlkList Command</a></li><li><a href="#SP2">&#167;2. Undo</a></li><li><a href="#SP3">&#167;3. Quit The Game Rule</a></li><li><a href="#SP4">&#167;4. Restart The Game Rule</a></li><li><a href="#SP5">&#167;5. Restore The Game Rule</a></li><li><a href="#SP6">&#167;6. Save The Game Rule</a></li><li><a href="#SP7">&#167;7. Verify The Story File Rule</a></li><li><a href="#SP8">&#167;8. Switch Transcript On Rule</a></li><li><a href="#SP9">&#167;9. Switch Transcript Off Rule</a></li><li><a href="#SP10">&#167;10. Announce Story File Version Rule</a></li><li><a href="#SP11">&#167;11. Descend To Specific Action Rule</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Begin Glulx-only matter</a></li><li><a href="#SP2">&#167;2. GlkList Command</a></li><li><a href="#SP3">&#167;3. Undo</a></li><li><a href="#SP4">&#167;4. Quit The Game Rule</a></li><li><a href="#SP5">&#167;5. Restart The Game Rule</a></li><li><a href="#SP6">&#167;6. Restore The Game Rule</a></li><li><a href="#SP7">&#167;7. Save The Game Rule</a></li><li><a href="#SP8">&#167;8. Verify The Story File Rule</a></li><li><a href="#SP9">&#167;9. Switch Transcript On Rule</a></li><li><a href="#SP10">&#167;10. Switch Transcript Off Rule</a></li><li><a href="#SP11">&#167;11. Announce Story File Version Rule</a></li><li><a href="#SP12">&#167;12. Descend To Specific Action Rule</a></li><li><a href="#SP13">&#167;13. End Glulx-only matter</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. GlkList Command. </b>GLKLIST is a testing command best used by those who understand Glulx and its
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Begin Glulx-only matter. </b></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>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. GlkList Command. </b>GLKLIST is a testing command best used by those who understand Glulx and its
ways: it isn't documented in the I7 manual, because it is pretty inscrutable
for "real" users, but it's probably worth keeping just the same.
</p>
@ -70,7 +79,7 @@ for "real" users, but it's probably worth keeping just the same.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Undo. </b>These are really emulations of the Z-machine's conventions on UNDO: Glulx's
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Undo. </b>These are really emulations of the Z-machine's conventions on UNDO: Glulx's
undo opcodes used different result codes while providing essentially the same
functionality, for reasons which are opaque, but no trouble is caused thereby.
</p>
@ -91,7 +100,7 @@ functionality, for reasons which are opaque, but no trouble is caused thereby.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Quit The Game Rule. </b></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Quit The Game Rule. </b></p>
<pre class="display">
@ -105,7 +114,7 @@ functionality, for reasons which are opaque, but no trouble is caused thereby.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Restart The Game Rule. </b></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Restart The Game Rule. </b></p>
<pre class="display">
@ -121,7 +130,7 @@ functionality, for reasons which are opaque, but no trouble is caused thereby.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Restore The Game Rule. </b></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Restore The Game Rule. </b></p>
<pre class="display">
@ -142,7 +151,7 @@ functionality, for reasons which are opaque, but no trouble is caused thereby.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Save The Game Rule. </b></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Save The Game Rule. </b></p>
<pre class="display">
@ -173,7 +182,7 @@ functionality, for reasons which are opaque, but no trouble is caused thereby.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Verify The Story File Rule. </b>This is a fossil now, really, but in the days of Infocom, the 110K story
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Verify The Story File Rule. </b>This is a fossil now, really, but in the days of Infocom, the 110K story
file occupying an entire disc was a huge data set: floppy discs were by no
means a reliable medium, and cheap hardware often used hit-and-miss
components, as on the notorious Commodore 64 disc controller. If somebody
@ -198,7 +207,7 @@ opcode, and so Glulx followed suit.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Switch Transcript On Rule. </b></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Switch Transcript On Rule. </b></p>
<pre class="display">
@ -223,7 +232,7 @@ opcode, and so Glulx followed suit.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Switch Transcript Off Rule. </b></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Switch Transcript Off Rule. </b></p>
<pre class="display">
@ -238,7 +247,7 @@ opcode, and so Glulx followed suit.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Announce Story File Version Rule. </b></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Announce Story File Version Rule. </b></p>
<pre class="display">
@ -260,7 +269,7 @@ opcode, and so Glulx followed suit.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Descend To Specific Action Rule. </b>There are 100 or so actions, typically, and this rule is for efficiency's
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Descend To Specific Action Rule. </b>There are 100 or so actions, typically, and this rule is for efficiency's
sake: rather than perform 100 or so comparisons to see which routine to
call, we indirect through a jump table. The routines called are the <code class="display"><span class="extract">-Sub</span></code>
routines: thus, for instance, if <code class="display"><span class="extract">action</span></code> is <code class="display"><span class="extract">##Wait</span></code> then <code class="display"><span class="extract">WaitSub</span></code> is
@ -283,8 +292,17 @@ compared to the Z-machine's: hence the <code class="display"><span class="extrac
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. End Glulx-only matter. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ft.html">Back to 'Figures Template'</a></li><li><a href="S-lt.html">Continue with 'Light Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ot.html">Back to 'Output Template'</a></li><li><a href="S-zt.html">Continue with 'ZMachine Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/gt</title>
<title>S/zt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/lt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Light Template</b></li></ul><p class="purpose">The determination of light, visibility and physical access.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Light Template</b></li></ul><p class="purpose">The determination of light, visibility and physical access.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Darkness</a></li><li><a href="#SP2">&#167;2. Light Measurement</a></li><li><a href="#SP3">&#167;3. Invariant</a></li><li><a href="#SP4">&#167;4. Adjust Light Rule</a></li><li><a href="#SP5">&#167;5. Silent Light Consideration</a></li><li><a href="#SP6">&#167;6. Translucency</a></li><li><a href="#SP7">&#167;7. Visibility Parent</a></li><li><a href="#SP8">&#167;8. Find Visibility Levels</a></li><li><a href="#SP9">&#167;9. Touchability Ceiling</a></li><li><a href="#SP10">&#167;10. Scope Ceiling</a></li><li><a href="#SP11">&#167;11. Object Is Untouchable</a></li><li><a href="#SP12">&#167;12. Access Through Barriers Rule</a></li><li><a href="#SP13">&#167;13. Can't Reach Inside Closed Containers Rule</a></li><li><a href="#SP14">&#167;14. Can't Reach Outside Closed Containers Rule</a></li><li><a href="#SP15">&#167;15. Can't Reach Inside Rooms Rule</a></li></ul><hr class="tocbar">
@ -479,7 +479,7 @@ improbable.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-gt.html">Back to 'Glulx Template'</a></li><li><a href="S-lt2.html">Continue with 'ListWriter Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-zt.html">Back to 'ZMachine Template'</a></li><li><a href="S-lt2.html">Continue with 'ListWriter Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/lt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>ListWriter Template</b></li></ul><p class="purpose">A flexible object-lister taking care of plurals, inventory information, various formats and so on.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>ListWriter Template</b></li></ul><p class="purpose">A flexible object-lister taking care of plurals, inventory information, various formats and so on.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Specification</a></li><li><a href="#SP2">&#167;2. Memory</a></li><li><a href="#SP3">&#167;3. WriteListOfMarkedObjects</a></li><li><a href="#SP4">&#167;4. List Number and Gender</a></li><li><a href="#SP5">&#167;5. List Writer Regard Storage</a></li><li><a href="#SP6">&#167;6. Response Printing</a></li><li><a href="#SP7">&#167;7. About Iterator Functions</a></li><li><a href="#SP8">&#167;8. Marked List Iterator</a></li><li><a href="#SP9">&#167;9. Concealment</a></li><li><a href="#SP10">&#167;10. Coalesce Marked List</a></li><li><a href="#SP11">&#167;11. Object Tree Iterator</a></li><li><a href="#SP12">&#167;12. Coalesce Object Tree</a></li><li><a href="#SP13">&#167;13. GroupChildren</a></li><li><a href="#SP14">&#167;14. WriteListFrom</a></li><li><a href="#SP15">&#167;15. Standard Contents Listing Rule</a></li><li><a href="#SP16">&#167;16. Partitioning</a></li><li><a href="#SP17">&#167;17. Partition List</a></li><li><a href="#SP18">&#167;18. Equivalence Relation</a></li><li><a href="#SP19">&#167;19. Grouping</a></li><li><a href="#SP20">&#167;20. Write List Recursively</a></li><li><a href="#SP21">&#167;21. Write Multiple Class Group</a></li><li><a href="#SP22">&#167;22. Write Single Class Group</a></li><li><a href="#SP23">&#167;23. Write After Entry</a></li><li><a href="#SP24">&#167;24. Internal Rule</a></li></ul><hr class="tocbar">
@ -1180,7 +1180,7 @@ response texts used by the list-writer.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-lt.html">Back to 'Light Template'</a></li><li><a href="S-mpr.html">Continue with 'MapRouteFinding'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-lt.html">Back to 'Light Template'</a></li><li><a href="S-ot2.html">Continue with 'OrderOfPlay Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/lt2</title>
<title>S/wt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/mpr' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>MapRouteFinding</b></li></ul><p class="purpose">Testing and changing the fundamental spatial relations.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>MapRouteFinding</b></li></ul><p class="purpose">Testing and changing the fundamental spatial relations.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Map Route-Finding</a></li><li><a href="#SP2">&#167;2. Cache Control</a></li><li><a href="#SP3">&#167;3. Fast Route-Finding</a></li><li><a href="#SP4">&#167;4. Slow Route-Finding</a></li></ul><hr class="tocbar">
@ -406,7 +406,7 @@ the direction of the shortest path from there to R_y.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-lt2.html">Back to 'ListWriter Template'</a></li><li><a href="S-nt.html">Continue with 'Number Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-wt.html">Back to 'WorldModel Template'</a></li><li><a href="S-rt.html">Continue with 'RTP Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -9,9 +9,9 @@
<body>
<!--Weave of 'S/ot' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Output Template</b></li></ul><p class="purpose">This is the superstructure of the file of I6 code output by NI: from ICL commands at the top down to the signing-off comments at the bottom.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Output Template</b></li></ul><p class="purpose">This is the superstructure of the file of I6 code output by NI: from ICL commands at the top down to the signing-off comments at the bottom.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. ICL Commands</a></li><li><a href="#SP2">&#167;2. Identification</a></li><li><a href="#SP3">&#167;3. Constants</a></li><li><a href="#SP4">&#167;4. Global Variables</a></li><li><a href="#SP5">&#167;5. Compass</a></li><li><a href="#SP6">&#167;6. VM-Specific Code</a></li><li><a href="#SP7">&#167;7. Score and Rankings Table</a></li><li><a href="#SP8">&#167;8. The Old Library</a></li><li><a href="#SP9">&#167;9. Parser</a></li><li><a href="#SP10">&#167;10. Order of Play</a></li><li><a href="#SP11">&#167;11. Activities</a></li><li><a href="#SP12">&#167;12. Object Tree</a></li><li><a href="#SP13">&#167;13. Tables</a></li><li><a href="#SP14">&#167;14. Equations</a></li><li><a href="#SP15">&#167;15. Actions</a></li><li><a href="#SP16">&#167;16. Phrases</a></li><li><a href="#SP17">&#167;17. Rulebooks</a></li><li><a href="#SP18">&#167;18. Scenes</a></li><li><a href="#SP19">&#167;19. The New Library</a></li><li><a href="#SP20">&#167;20. Parsing Tokens</a></li><li><a href="#SP21">&#167;21. Text generation</a></li><li><a href="#SP22">&#167;22. Testing commands</a></li><li><a href="#SP23">&#167;23. I6 Inclusions</a></li><li><a href="#SP24">&#167;24. Entries in constant lists</a></li><li><a href="#SP25">&#167;25. To Phrases</a></li><li><a href="#SP26">&#167;26. Chronology</a></li><li><a href="#SP27">&#167;27. Grammar</a></li><li><a href="#SP28">&#167;28. Deferred Propositions</a></li><li><a href="#SP29">&#167;29. Miscellaneous Loose Ends</a></li><li><a href="#SP30">&#167;30. Block Values</a></li><li><a href="#SP31">&#167;31. Signing off</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. ICL Commands</a></li><li><a href="#SP2">&#167;2. Identification</a></li><li><a href="#SP3">&#167;3. Constants</a></li><li><a href="#SP4">&#167;4. Global Variables</a></li><li><a href="#SP5">&#167;5. Compass</a></li><li><a href="#SP6">&#167;6. Score and Rankings Table</a></li><li><a href="#SP7">&#167;7. The Old Library</a></li><li><a href="#SP8">&#167;8. Parser</a></li><li><a href="#SP9">&#167;9. Order of Play</a></li><li><a href="#SP10">&#167;10. Activities</a></li><li><a href="#SP11">&#167;11. Object Tree</a></li><li><a href="#SP12">&#167;12. Tables</a></li><li><a href="#SP13">&#167;13. Equations</a></li><li><a href="#SP14">&#167;14. Actions</a></li><li><a href="#SP15">&#167;15. Phrases</a></li><li><a href="#SP16">&#167;16. Rulebooks</a></li><li><a href="#SP17">&#167;17. Scenes</a></li><li><a href="#SP18">&#167;18. The New Library</a></li><li><a href="#SP19">&#167;19. Parsing Tokens</a></li><li><a href="#SP20">&#167;20. Text generation</a></li><li><a href="#SP21">&#167;21. Testing commands</a></li><li><a href="#SP22">&#167;22. I6 Inclusions</a></li><li><a href="#SP23">&#167;23. Entries in constant lists</a></li><li><a href="#SP24">&#167;24. To Phrases</a></li><li><a href="#SP25">&#167;25. Chronology</a></li><li><a href="#SP26">&#167;26. Grammar</a></li><li><a href="#SP27">&#167;27. Deferred Propositions</a></li><li><a href="#SP28">&#167;28. Miscellaneous Loose Ends</a></li><li><a href="#SP29">&#167;29. Block Values</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. ICL Commands. </b>The Inform Control Language is a mini-language for controlling the I6 compiler,
able to set command-line switches, memory settings and so on. I6 ordinarily
@ -271,26 +271,7 @@ of language definitions, this needs to come first.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. VM-Specific Code. </b>These sections of code contain different definitions of the same routines,
and in some cases the same arrays, to handle low-level functions in the
virtual machine &mdash; saving the game, performing UNDO, parsing typed text into
dictionary word addresses and so on.
</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="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Glulx</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
<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="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">ZMachine</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Score and Rankings Table. </b>The following command tells NI to compile constant definitions for <code class="display"><span class="extract">INITIAL_MAX_SCORE</span></code>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Score and Rankings Table. </b>The following command tells NI to compile constant definitions for <code class="display"><span class="extract">INITIAL_MAX_SCORE</span></code>
and/or <code class="display"><span class="extract">RANKING_TABLE</span></code>, in cases where there are scores and rankings. If there's
no ranking table, <code class="display"><span class="extract">RANKING_TABLE</span></code> is left undefined, so that we can <code class="display"><span class="extract">#ifdef</span></code> this
possibility later.
@ -303,7 +284,7 @@ possibility later.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. The Old Library. </b>The I6 library consisted essentially of the parser, the verb routines, and
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. The Old Library. </b>The I6 library consisted essentially of the parser, the verb routines, and
a pile of utilities and world-modelling code, of which the biggest single
component was the list-writer. The parser lives on below; the verb routines
are gone, with the equivalent functionality having moved upstairs into
@ -313,13 +294,11 @@ lives here:
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Light</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">ListWriter</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Parser. </b>The largest single block of code in the traditional I6 library part of the
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Parser. </b>The largest single block of code in the traditional I6 library part of the
template layer is the parser.
</p>
@ -340,8 +319,6 @@ If it is ever discovered to contain the wrong data, the alarm sounds.
<pre class="display">
<span class="identifier">Object</span><span class="plain"> </span><span class="identifier">InformParser</span><span class="plain"> </span><span class="string">"(Inform Parser)"</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">proper</span><span class="plain">;</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Parser</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">[ </span><span class="identifier">ParserError</span><span class="plain"> </span><span class="identifier">error_type</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">error_type</span><span class="plain">) </span><span class="identifier">PrintSingleParagraph</span><span class="plain">(</span><span class="identifier">error_type</span><span class="plain">);</span>
<span class="reserved">rfalse</span><span class="plain">;</span>
@ -352,18 +329,17 @@ If it is ever discovered to contain the wrong data, the alarm sounds.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Order of Play. </b>The <code class="display"><span class="extract">Main</span></code> routine, where execution begins, and the primitive rules in the
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Order of Play. </b>The <code class="display"><span class="extract">Main</span></code> routine, where execution begins, and the primitive rules in the
principal rulebooks.
</p>
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">OrderOfPlay</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Activities. </b>These are numbered upwards from 0 in order of creation. The following arrays
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Activities. </b>These are numbered upwards from 0 in order of creation. The following arrays
taken together provide, for each activity number: (i) the rulebook numbers
for the before, for, and after stages of the activity, and (ii) a flag
indicating whether the activity is "future action"-capable, that is, is
@ -372,94 +348,79 @@ might result from the current grammar line being parsed. (This is called
the "action to be", hence "atb".)
</p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Object Tree. </b>The I6 object tree contains <code class="display"><span class="extract">Class</span></code> definitions as well as objects, but
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Object Tree. </b>The I6 object tree contains <code class="display"><span class="extract">Class</span></code> definitions as well as objects, but
we precede both with a pseudo-object called <code class="display"><span class="extract">property_numberspace_forcer</span></code>.
It does nothing except to ensure that properties are declared in I6 in the
same sequence as I7 (which need not otherwise happen); it plays no part
in play, and is not a valid I7 "object" value.
</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Tables. </b>The initial state of the I6 arrays corresponding to each I7 table: see
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Tables. </b>The initial state of the I6 arrays corresponding to each I7 table: see
"Tables.i6t" for details.
</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Equations. </b>Routines to evaluate from equations.
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Equations. </b>Routines to evaluate from equations.
</p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Actions. </b></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Actions. </b></p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Phrases. </b>The following innocent-looking commands tell NI to compile I6 definitions
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Phrases. </b>The following innocent-looking commands tell NI to compile I6 definitions
for all of the rules which are not I6-written primitives, and also for
adjective definitions, so it results in a fairly enormous cataract of code.
</p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Rulebooks. </b>The literally hundreds of rulebooks are set up here. (In the end a rulebook
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Rulebooks. </b>The literally hundreds of rulebooks are set up here. (In the end a rulebook
is only a (word) array of rule addresses, terminated with a <code class="display"><span class="extract">NULL</span></code>.)
</p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. Scenes. </b></p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Scenes. </b></p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. The New Library. </b>The gleaming, aluminium and glass extension to the library: almost all of it
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. The New Library. </b>The gleaming, aluminium and glass extension to the library: almost all of it
material new in I7 usage.
</p>
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Actions</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Activities</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Figures</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">OutOfWorld</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Printing</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">WorldModel</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">MapRouteFinding</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">RTP</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. Parsing Tokens. </b>GPRs, scope and noun filters to be used in grammar lines, but no actual
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. Parsing Tokens. </b>GPRs, scope and noun filters to be used in grammar lines, but no actual
grammar lines as yet.
</p>
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Number</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Time</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. Text generation. </b></p>
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. Text generation. </b></p>
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. Testing commands. </b></p>
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. Testing commands. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">IFDEF</span><span class="plain"> </span><span class="identifier">DEBUG</span><span class="plain">;</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Tests</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">#</span><span class="identifier">ENDIF</span><span class="plain">; </span><span class="comment">! DEBUG</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. I6 Inclusions. </b>This paragraph contains no code, by default: it's a hook on which to hang
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. I6 Inclusions. </b>This paragraph contains no code, by default: it's a hook on which to hang
verbatim I6 material.
</p>
<pre class="display">
<span class="comment">! "Include (- ... -)" inclusions with no specified position appear here.</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. Entries in constant lists. </b>Well: most of them, anyway. In particular, all of those which are lists of
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. Entries in constant lists. </b>Well: most of them, anyway. In particular, all of those which are lists of
texts with substitution will be swept up, which is important for timing
reasons. A second round later on will catch any later ones.
</p>
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. To Phrases. </b>We now compile all of the remaining code in the source text: the "To..."
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. To Phrases. </b>We now compile all of the remaining code in the source text: the "To..."
phrases and all of their attendant text routines, loop-over-scope routines
and so on.
</p>
@ -471,18 +432,17 @@ because a text substitution might contain references to the past, or involve
propositions which must be deferred into routines.
</p>
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. Chronology. </b>Similarly, this is where we wrap up all references to past tenses: after this
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. Chronology. </b>Similarly, this is where we wrap up all references to past tenses: after this
point, we cannot safely compile any I7 condition in the past tense.
</p>
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Chronology</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP27"></a><b>&#167;27. Grammar. </b>This is the trickiest matter of timing. We had to leave the grammar lines
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. Grammar. </b>This is the trickiest matter of timing. We had to leave the grammar lines
until now because the past-tense code above might have needed to investigate
whether the player's command matched a given pattern at some time in the
past (a case which arose naturally in one of the example games, so which
@ -509,7 +469,7 @@ needed.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP28"></a><b>&#167;28. Deferred Propositions. </b>Most conditions, such as "the score is 10", and descriptions, such as
<p class="inwebparagraph"><a id="SP27"></a><b>&#167;27. Deferred Propositions. </b>Most conditions, such as "the score is 10", and descriptions, such as
"open doors which are in lighted rooms", are translated by NI into
propositions in a form of predicate calculus. Sometimes these can be
compiled immediately to I6 code, but other times they involve complicated
@ -517,7 +477,7 @@ searches and have to be "deferred" into special routines which will
perform them. This is where we compile those routines.
</p>
<p class="inwebparagraph"><a id="SP29"></a><b>&#167;29. Miscellaneous Loose Ends. </b>And we still aren't done, because we still have:
<p class="inwebparagraph"><a id="SP28"></a><b>&#167;28. Miscellaneous Loose Ends. </b>And we still aren't done, because we still have:
</p>
<p class="inwebparagraph"></p>
@ -551,7 +511,7 @@ the counters, and therefore the amount of storage we need to allocate.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP30"></a><b>&#167;30. Block Values. </b>These are values which are pointers to more elaborate data on the memory heap,
<p class="inwebparagraph"><a id="SP29"></a><b>&#167;29. Block Values. </b>These are values which are pointers to more elaborate data on the memory heap,
rather than values in themselves: they point to "blocks". A section of code
handles the heap, and there is then one further section to support each of
the kinds of value in question.
@ -559,24 +519,12 @@ the kinds of value in question.
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">StoredAction</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP31"></a><b>&#167;31. Signing off. </b>And that's all, folks.
</p>
<pre class="display">
<span class="comment">! End of automatically generated I6 source</span>
<span class="comment">! --------------------------------------------------------------------------</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Sections.)</i></li><li><a href="S-at.html">Continue with 'Actions Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><i>(This section begins Sections.)</i></li><li><a href="S-gt.html">Continue with 'Glulx Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/nt</title>
<title>S/lt2</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/ot2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>OrderOfPlay Template</b></li></ul><p class="purpose">The sequence of events in play: the Main routine which runs the startup rulebook, the turn sequence rulebook and the shutdown rulebook; and most of the I6 definitions of primitive rules in those rulebooks.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>OrderOfPlay Template</b></li></ul><p class="purpose">The sequence of events in play: the Main routine which runs the startup rulebook, the turn sequence rulebook and the shutdown rulebook; and most of the I6 definitions of primitive rules in those rulebooks.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Main</a></li><li><a href="#SP2">&#167;2. Virtual Machine Startup Rule</a></li><li><a href="#SP3">&#167;3. Initial Situation</a></li><li><a href="#SP4">&#167;4. Initialise Memory Rule</a></li><li><a href="#SP5">&#167;5. Position Player In Model World Rule</a></li><li><a href="#SP6">&#167;6. Parse Command Rule</a></li><li><a href="#SP7">&#167;7. Treat Parser Results</a></li><li><a href="#SP8">&#167;8. Generate Action Rule</a></li><li><a href="#SP9">&#167;9. Generate Multiple Actions</a></li><li><a href="#SP10">&#167;10. Timed Events Rule</a></li><li><a href="#SP11">&#167;11. Setting Timed Events</a></li><li><a href="#SP12">&#167;12. Setting Time Of Day</a></li><li><a href="#SP13">&#167;13. Advance Time Rule</a></li><li><a href="#SP14">&#167;14. Note Object Acquisitions Rule</a></li><li><a href="#SP15">&#167;15. Resurrect Player If Asked Rule</a></li><li><a href="#SP16">&#167;16. Ask The Final Question Rule</a></li><li><a href="#SP17">&#167;17. Read The Final Answer Rule</a></li><li><a href="#SP18">&#167;18. Immediately Restart VM Rule</a></li><li><a href="#SP19">&#167;19. Immediately Restore Saved Game Rule</a></li><li><a href="#SP20">&#167;20. Immediately Quit Rule</a></li><li><a href="#SP21">&#167;21. Immediately Undo Rule</a></li><li><a href="#SP22">&#167;22. Print Obituary Headline Rule</a></li><li><a href="#SP23">&#167;23. Print Final Score Rule</a></li><li><a href="#SP24">&#167;24. Display Final Status Line Rule</a></li></ul><hr class="tocbar">
@ -801,7 +801,7 @@ obituary" activity.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-nt.html">Back to 'Number Template'</a></li><li><a href="S-ot3.html">Continue with 'OutOfWorld Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-lt2.html">Back to 'ListWriter Template'</a></li><li><a href="S-at.html">Continue with 'Actions Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/ot2</title>
<title>S/ft</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/ot3' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>OutOfWorld Template</b></li></ul><p class="purpose">To implement some of the out of world actions.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>OutOfWorld Template</b></li></ul><p class="purpose">To implement some of the out of world actions.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Perform Undo</a></li><li><a href="#SP2">&#167;2. Announce Score Rule</a></li><li><a href="#SP3">&#167;3. Switch Score Notification On Rule</a></li><li><a href="#SP4">&#167;4. Standard Report Switching Score Notification On Rule</a></li><li><a href="#SP5">&#167;5. Switch Score Notification Off Rule</a></li><li><a href="#SP6">&#167;6. Standard Report Switching Score Notification Off Rule</a></li><li><a href="#SP7">&#167;7. Prefer Sometimes Abbreviated Room Descriptions Rule</a></li><li><a href="#SP8">&#167;8. Standard Report Prefer Sometimes Abbreviated Room Descriptions Rule</a></li><li><a href="#SP9">&#167;9. Prefer Unabbreviated Room Descriptions Rule</a></li><li><a href="#SP10">&#167;10. Standard Report Prefer Unabbreviated Room Descriptions Rule</a></li><li><a href="#SP11">&#167;11. Prefer Abbreviated Room Descriptions Rule</a></li><li><a href="#SP12">&#167;12. Standard Report Prefer Abbreviated Room Descriptions Rule</a></li><li><a href="#SP13">&#167;13. Announce Pronoun Meanings Rule</a></li></ul><hr class="tocbar">
@ -209,7 +209,7 @@
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-ot2.html">Back to 'OrderOfPlay Template'</a></li><li><a href="S-pt.html">Continue with 'Parser Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ft.html">Back to 'Figures Template'</a></li><li><a href="S-pt.html">Continue with 'Printing Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,15 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/pt</title>
<title>S/ot3</title>
<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>
<!--Weave of 'S/pt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Printing Template</b></li></ul><p class="purpose">To manage the line skips which space paragraphs out, and to handle the printing of names of objects, pieces of text and numbers.</p>
<!--Weave of 'S/pt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Printing Template</b></li></ul><p class="purpose">To manage the line skips which space paragraphs out, and to handle the printing of names of objects, pieces of text and numbers.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Prompt</a></li><li><a href="#SP2">&#167;2. Boxed Quotations</a></li><li><a href="#SP3">&#167;3. Score Notification</a></li><li><a href="#SP4">&#167;4. Print Rank</a></li><li><a href="#SP5">&#167;5. Status Line</a></li><li><a href="#SP6">&#167;6. Status Line Utilities</a></li><li><a href="#SP7">&#167;7. Banner</a></li><li><a href="#SP8">&#167;8. Short Name Storage</a></li><li><a href="#SP9">&#167;9. Object Names I</a></li><li><a href="#SP10">&#167;10. Standard Name Printing Rule</a></li><li><a href="#SP11">&#167;11. Internal Rule</a></li><li><a href="#SP12">&#167;12. Object Names II</a></li><li><a href="#SP13">&#167;13. Object Names III</a></li><li><a href="#SP14">&#167;14. Standard Response Issuing Rule</a></li></ul><hr class="tocbar">
@ -504,7 +504,7 @@ is the default "for" rule for that activity:
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-pt.html">Back to 'Parser Template'</a></li><li><a href="S-rt.html">Continue with 'RTP Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ot3.html">Back to 'OutOfWorld Template'</a></li><li><a href="S-wt.html">Continue with 'WorldModel Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/pt2</title>
<title>S/mpr</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/rt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>RTP Template</b></li></ul><p class="purpose">To issue run-time problem messages arising from the world model.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>RTP Template</b></li></ul><p class="purpose">To issue run-time problem messages arising from the world model.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Reporting</a></li></ul><hr class="tocbar">
@ -88,7 +88,7 @@
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-pt2.html">Back to 'Printing Template'</a></li><li><a href="S-st.html">Continue with 'StoredAction Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-mpr.html">Back to 'MapRouteFinding'</a></li><li><a href="S-tt.html">Continue with 'Time Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/rt</title>
<title>S/ct</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/st' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>StoredAction Template</b></li></ul><p class="purpose">Code to support the stored action kind of value.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>StoredAction Template</b></li></ul><p class="purpose">Code to support the stored action kind of value.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Block Format</a></li><li><a href="#SP2">&#167;2. KOV Support</a></li><li><a href="#SP3">&#167;3. Creation</a></li><li><a href="#SP4">&#167;4. Setting Up</a></li><li><a href="#SP5">&#167;5. Destruction</a></li><li><a href="#SP6">&#167;6. Copying</a></li><li><a href="#SP7">&#167;7. Comparison</a></li><li><a href="#SP8">&#167;8. Hashing</a></li><li><a href="#SP9">&#167;9. Printing</a></li><li><a href="#SP10">&#167;10. Involvement</a></li><li><a href="#SP11">&#167;11. Nouns</a></li><li><a href="#SP12">&#167;12. Pattern Matching</a></li><li><a href="#SP13">&#167;13. Current Action</a></li><li><a href="#SP14">&#167;14. Trying</a></li></ul><hr class="tocbar">
@ -452,7 +452,7 @@ either silently or not.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-rt.html">Back to 'RTP Template'</a></li><li><a href="S-tt.html">Continue with 'Tests Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ct.html">Back to 'Chronology Template'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,15 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/tt</title>
<title>S/rt</title>
<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>
<!--Weave of 'S/tt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Time Template</b></li></ul><p class="purpose">Support for parsing and printing times of day.</p>
<!--Weave of 'S/tt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Time Template</b></li></ul><p class="purpose">Support for parsing and printing times of day.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Conversion To Number</a></li><li><a href="#SP2">&#167;2. Digital Printing</a></li><li><a href="#SP3">&#167;3. Analogue Printing</a></li><li><a href="#SP4">&#167;4. Understanding</a></li><li><a href="#SP5">&#167;5. Relative Time Token</a></li><li><a href="#SP6">&#167;6. Scene Change Machinery Rule</a></li><li><a href="#SP7">&#167;7. During Scene Matching</a></li><li><a href="#SP8">&#167;8. Scene Questions</a></li></ul><hr class="tocbar">
@ -259,7 +259,7 @@ only absolute times; we need the following for relative ones.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-tt.html">Back to 'Tests Template'</a></li><li><a href="S-wt.html">Continue with 'WorldModel Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-rt.html">Back to 'RTP Template'</a></li><li><a href="S-tt2.html">Continue with 'Tests Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,19 +1,28 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/st</title>
<title>S/tt</title>
<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>
<!--Weave of 'S/tt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>Tests Template</b></li></ul><p class="purpose">The command grammar and I6 implementation for testing commands such as TEST, ACTIONS and PURLOIN.</p>
<!--Weave of 'S/tt2' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Tests Template</b></li></ul><p class="purpose">The command grammar and I6 implementation for testing commands such as TEST, ACTIONS and PURLOIN.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Abstract Command</a></li><li><a href="#SP2">&#167;2. Actions Command</a></li><li><a href="#SP3">&#167;3. Gonear Command</a></li><li><a href="#SP4">&#167;4. Purloin Command</a></li><li><a href="#SP5">&#167;5. Random Command</a></li><li><a href="#SP6">&#167;6. Relations Command</a></li><li><a href="#SP7">&#167;7. Responses Command</a></li><li><a href="#SP8">&#167;8. Rules Command</a></li><li><a href="#SP9">&#167;9. Scenes Command</a></li><li><a href="#SP10">&#167;10. Scope Command</a></li><li><a href="#SP11">&#167;11. Showheap Command</a></li><li><a href="#SP12">&#167;12. ShowMe Command</a></li><li><a href="#SP13">&#167;13. Showverb Command</a></li><li><a href="#SP14">&#167;14. Test Command</a></li><li><a href="#SP15">&#167;15. Trace Command</a></li><li><a href="#SP16">&#167;16. Tree Command</a></li><li><a href="#SP17">&#167;17. Grammar</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. All testy</a></li><li><a href="#SP2">&#167;2. Abstract Command</a></li><li><a href="#SP3">&#167;3. Actions Command</a></li><li><a href="#SP4">&#167;4. Gonear Command</a></li><li><a href="#SP5">&#167;5. Purloin Command</a></li><li><a href="#SP6">&#167;6. Random Command</a></li><li><a href="#SP7">&#167;7. Relations Command</a></li><li><a href="#SP8">&#167;8. Responses Command</a></li><li><a href="#SP9">&#167;9. Rules Command</a></li><li><a href="#SP10">&#167;10. Scenes Command</a></li><li><a href="#SP11">&#167;11. Scope Command</a></li><li><a href="#SP12">&#167;12. Showheap Command</a></li><li><a href="#SP13">&#167;13. ShowMe Command</a></li><li><a href="#SP14">&#167;14. Showverb Command</a></li><li><a href="#SP15">&#167;15. Test Command</a></li><li><a href="#SP16">&#167;16. Trace Command</a></li><li><a href="#SP17">&#167;17. Tree Command</a></li><li><a href="#SP18">&#167;18. Grammar</a></li><li><a href="#SP19">&#167;19. End testy</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Abstract Command. </b>The code below is compiled only if the symbol <code class="display"><span class="extract">DEBUG</span></code> is defined, which it
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. All testy. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">Ifdef</span><span class="plain"> </span><span class="identifier">DEBUG</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Abstract Command. </b>The code below is compiled only if the symbol <code class="display"><span class="extract">DEBUG</span></code> is defined, which it
always is for normal runs in the Inform user interface, but not for Release
runs.
</p>
@ -50,7 +59,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Actions Command. </b>ACTIONS turns tracing of actions on.
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Actions Command. </b>ACTIONS turns tracing of actions on.
</p>
@ -61,7 +70,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Gonear Command. </b>GONEAR teleports the player to the vicinity of some named item.
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Gonear Command. </b>GONEAR teleports the player to the vicinity of some named item.
</p>
@ -73,7 +82,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Purloin Command. </b>To PURLOIN is to acquire something without reference to any rules on accessibility.
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Purloin Command. </b>To PURLOIN is to acquire something without reference to any rules on accessibility.
</p>
@ -88,7 +97,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Random Command. </b>RANDOM forces the random-number generator to a predictable seed value.
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Random Command. </b>RANDOM forces the random-number generator to a predictable seed value.
</p>
@ -102,7 +111,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Relations Command. </b>RELATIONS lists the current state of the mutable relations.
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Relations Command. </b>RELATIONS lists the current state of the mutable relations.
</p>
@ -120,7 +129,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Responses Command. </b>RESPONSES lists the known responses.
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Responses Command. </b>RESPONSES lists the known responses.
</p>
@ -189,7 +198,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Rules Command. </b>RULES changes the level of rule tracing.
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Rules Command. </b>RULES changes the level of rule tracing.
</p>
@ -211,7 +220,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Scenes Command. </b>SCENES switches scene-change tracing on or off, and also shows the current position.
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Scenes Command. </b>SCENES switches scene-change tracing on or off, and also shows the current position.
</p>
@ -229,7 +238,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Scope Command. </b>SCOPE prints a numbered list of all objects in scope to the player.
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Scope Command. </b>SCOPE prints a numbered list of all objects in scope to the player.
</p>
@ -245,7 +254,7 @@ moves an object to a new position in the object tree.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Showheap Command. </b>SHOWHEAP is for debugging the memory heap, and is intended for Inform
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Showheap Command. </b>SHOWHEAP is for debugging the memory heap, and is intended for Inform
maintainers rather than users.
</p>
@ -258,7 +267,7 @@ maintainers rather than users.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. ShowMe Command. </b>SHOWME is probably the most useful testing command: it shows the state of the
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. ShowMe Command. </b>SHOWME is probably the most useful testing command: it shows the state of the
current room, or a named item.
</p>
@ -338,7 +347,7 @@ current room, or a named item.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Showverb Command. </b>SHOWVERB is a holdover from old I6 days, but still quite useful. It writes
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Showverb Command. </b>SHOWVERB is a holdover from old I6 days, but still quite useful. It writes
out the I6 command verb grammar for the supplied command.
</p>
@ -410,7 +419,7 @@ out the I6 command verb grammar for the supplied command.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Test Command. </b>TEST runs a short script of commands from the source text.
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Test Command. </b>TEST runs a short script of commands from the source text.
</p>
@ -491,7 +500,7 @@ out the I6 command verb grammar for the supplied command.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Trace Command. </b>Another holdover from I6: TRACE sets the level of parser tracing, on a scale
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Trace Command. </b>Another holdover from I6: TRACE sets the level of parser tracing, on a scale
of 0 (off, the default) to 5.
</p>
@ -509,7 +518,7 @@ of 0 (off, the default) to 5.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Tree Command. </b>TREE prints out the I6 object tree, though this is not always very helpful
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Tree Command. </b>TREE prints out the I6 object tree, though this is not always very helpful
in I7 terms. It should arguably be withdrawn, but doesn't seem to do any harm.
</p>
@ -539,7 +548,7 @@ in I7 terms. It should arguably be withdrawn, but doesn't seem to do any harm.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. Grammar. </b>In the old I6 parser, testing commands had their own scope hardwired in to the
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. Grammar. </b>In the old I6 parser, testing commands had their own scope hardwired in to the
code: this worked by comparing the verb command word directly against <code class="display"><span class="extract">'scope'</span></code>
and the like. That would go wrong if the testing commands were translated into
other languages, and was a crude design at best. The following scope token is
@ -613,8 +622,17 @@ not picked up) and able to accept multiple objects.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. End testy. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-st.html">Back to 'StoredAction Template'</a></li><li><a href="S-tt2.html">Continue with 'Time Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-tt.html">Back to 'Time Template'</a></li><li><a href="S-ct.html">Continue with 'Chronology Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/tt2</title>
<title>S/pt</title>
<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">
@ -9,7 +9,7 @@
<body>
<!--Weave of 'S/wt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>WorldModel Template</b></li></ul><p class="purpose">Testing and changing the fundamental spatial relations.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>WorldModel Template</b></li></ul><p class="purpose">Testing and changing the fundamental spatial relations.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. The Core Tree</a></li><li><a href="#SP2">&#167;2. Climbing the Core Tree</a></li><li><a href="#SP3">&#167;3. To Decide Whether In</a></li><li><a href="#SP4">&#167;4. Containment Relation</a></li><li><a href="#SP5">&#167;5. Support Relation</a></li><li><a href="#SP6">&#167;6. Carrying Relation</a></li><li><a href="#SP7">&#167;7. Wearing Relation</a></li><li><a href="#SP8">&#167;8. Having Relation</a></li><li><a href="#SP9">&#167;9. Making Parts</a></li><li><a href="#SP10">&#167;10. Movements</a></li><li><a href="#SP11">&#167;11. On Stage</a></li><li><a href="#SP12">&#167;12. Moving the Player</a></li><li><a href="#SP13">&#167;13. Move During Going</a></li><li><a href="#SP14">&#167;14. Being Everywhere</a></li><li><a href="#SP15">&#167;15. Testing Everywhere</a></li><li><a href="#SP16">&#167;16. Changing the Player</a></li><li><a href="#SP17">&#167;17. Floating Objects</a></li><li><a href="#SP18">&#167;18. Backdrop Location</a></li><li><a href="#SP19">&#167;19. Wearing Clothes</a></li><li><a href="#SP20">&#167;20. Map Connections</a></li><li><a href="#SP21">&#167;21. Adjacency Relation</a></li><li><a href="#SP22">&#167;22. Regional Containment Relation</a></li><li><a href="#SP23">&#167;23. Doors</a></li><li><a href="#SP24">&#167;24. Visibility Relation</a></li><li><a href="#SP25">&#167;25. Touchability Relation</a></li><li><a href="#SP26">&#167;26. Concealment Relation</a></li></ul><hr class="tocbar">
@ -915,7 +915,7 @@ which cannot be asserted true or false.
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-tt2.html">Back to 'Time Template'</a></li><li><a href="S-zt.html">Continue with 'ZMachine Template'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-pt.html">Back to 'Printing Template'</a></li><li><a href="S-mpr.html">Continue with 'MapRouteFinding'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>S/wt</title>
<title>S/gt</title>
<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">
@ -9,11 +9,20 @@
<body>
<!--Weave of 'S/zt' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">standard_rules Template Library</a></li><li><b>ZMachine Template</b></li></ul><p class="purpose">To provide Z-specific actions.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>ZMachine Template</b></li></ul><p class="purpose">To provide Z-specific actions.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Veneer</a></li><li><a href="#SP2">&#167;2. Quit The Game Rule</a></li><li><a href="#SP3">&#167;3. Restart The Game Rule</a></li><li><a href="#SP4">&#167;4. Restore The Game Rule</a></li><li><a href="#SP5">&#167;5. Save The Game Rule</a></li><li><a href="#SP6">&#167;6. Verify The Story File Rule</a></li><li><a href="#SP7">&#167;7. Switch Transcript On Rule</a></li><li><a href="#SP8">&#167;8. Switch Transcript Off Rule</a></li><li><a href="#SP9">&#167;9. Announce Story File Version Rule</a></li><li><a href="#SP10">&#167;10. Descend To Specific Action Rule</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Begin Z-only matter</a></li><li><a href="#SP2">&#167;2. Veneer</a></li><li><a href="#SP3">&#167;3. Quit The Game Rule</a></li><li><a href="#SP4">&#167;4. Restart The Game Rule</a></li><li><a href="#SP5">&#167;5. Restore The Game Rule</a></li><li><a href="#SP6">&#167;6. Save The Game Rule</a></li><li><a href="#SP7">&#167;7. Verify The Story File Rule</a></li><li><a href="#SP8">&#167;8. Switch Transcript On Rule</a></li><li><a href="#SP9">&#167;9. Switch Transcript Off Rule</a></li><li><a href="#SP10">&#167;10. Announce Story File Version Rule</a></li><li><a href="#SP11">&#167;11. Descend To Specific Action Rule</a></li><li><a href="#SP12">&#167;12. End Z-only matter</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Veneer. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Begin Z-only matter. </b></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>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Veneer. </b></p>
<pre class="display">
@ -104,7 +113,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Quit The Game Rule. </b></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Quit The Game Rule. </b></p>
<pre class="display">
@ -117,7 +126,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Restart The Game Rule. </b></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Restart The Game Rule. </b></p>
<pre class="display">
@ -133,7 +142,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Restore The Game Rule. </b></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Restore The Game Rule. </b></p>
<pre class="display">
@ -148,7 +157,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Save The Game Rule. </b></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Save The Game Rule. </b></p>
<pre class="display">
@ -165,7 +174,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Verify The Story File Rule. </b>This is a fossil now, really, but in the days of Infocom, the 110K story
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Verify The Story File Rule. </b>This is a fossil now, really, but in the days of Infocom, the 110K story
file occupying an entire disc was a huge data set: floppy discs were by no
means a reliable medium, and cheap hardware often used hit-and-miss
components, as on the notorious Commodore 64 disc controller. If somebody
@ -192,7 +201,7 @@ opcode, and so Glulx followed suit.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Switch Transcript On Rule. </b></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Switch Transcript On Rule. </b></p>
<pre class="display">
@ -209,7 +218,7 @@ opcode, and so Glulx followed suit.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Switch Transcript Off Rule. </b></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Switch Transcript Off Rule. </b></p>
<pre class="display">
@ -226,7 +235,7 @@ opcode, and so Glulx followed suit.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Announce Story File Version Rule. </b></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Announce Story File Version Rule. </b></p>
<pre class="display">
@ -255,7 +264,7 @@ opcode, and so Glulx followed suit.
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Descend To Specific Action Rule. </b>There are 100 or so actions, typically, and this rule is for efficiency's
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Descend To Specific Action Rule. </b>There are 100 or so actions, typically, and this rule is for efficiency's
sake: rather than perform 100 or so comparisons to see which routine to
call, we indirect through a jump table. The routines called are the <code class="display"><span class="extract">-Sub</span></code>
routines: thus, for instance, if <code class="display"><span class="extract">action</span></code> is <code class="display"><span class="extract">##Wait</span></code> then <code class="display"><span class="extract">WaitSub</span></code> is
@ -278,8 +287,17 @@ compared to the Z-machine's: hence the <code class="display"><span class="extrac
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. End Z-only matter. </b></p>
<pre class="display">
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">; </span><span class="comment">! TARGET_ZCODE</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><a href="S-wt.html">Back to 'WorldModel Template'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-gt.html">Back to 'Glulx Template'</a></li><li><a href="S-lt.html">Continue with 'Light Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1,91 @@
<html>
<head>
<title>WorldModelKit </title>
<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>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>WorldModelKit </b></li></ul>
<p class="purpose">Inter-level support for modelling space, time and actions in interactive fiction.</p>
<hr>
<ul class="sectionlist">
<li>
<p><a href="S-ot.html"><spon class="sectiontitle">Output Template</span></a> -
<span class="purpose">This is the superstructure of the file of I6 code output by NI: from ICL commands at the top down to the signing-off comments at the bottom.</span></p>
</li>
<li>
<p><a href="S-gt.html"><spon class="sectiontitle">Glulx Template</span></a> -
<span class="purpose">To provide Glulx-specific actions.</span></p>
</li>
<li>
<p><a href="S-zt.html"><spon class="sectiontitle">ZMachine Template</span></a> -
<span class="purpose">To provide Z-specific actions.</span></p>
</li>
<li>
<p><a href="S-lt.html"><spon class="sectiontitle">Light Template</span></a> -
<span class="purpose">The determination of light, visibility and physical access.</span></p>
</li>
<li>
<p><a href="S-lt2.html"><spon class="sectiontitle">ListWriter Template</span></a> -
<span class="purpose">A flexible object-lister taking care of plurals, inventory information, various formats and so on.</span></p>
</li>
<li>
<p><a href="S-ot2.html"><spon class="sectiontitle">OrderOfPlay Template</span></a> -
<span class="purpose">The sequence of events in play: the Main routine which runs the startup rulebook, the turn sequence rulebook and the shutdown rulebook; and most of the I6 definitions of primitive rules in those rulebooks.</span></p>
</li>
<li>
<p><a href="S-at.html"><spon class="sectiontitle">Actions Template</span></a> -
<span class="purpose">To try actions by people in the model world, processing the necessary rulebooks.</span></p>
</li>
<li>
<p><a href="S-at2.html"><spon class="sectiontitle">Activities Template</span></a> -
<span class="purpose">To run the necessary rulebooks to carry out an activity.</span></p>
</li>
<li>
<p><a href="S-ft.html"><spon class="sectiontitle">Figures Template</span></a> -
<span class="purpose">To display figures and play sound effects.</span></p>
</li>
<li>
<p><a href="S-ot3.html"><spon class="sectiontitle">OutOfWorld Template</span></a> -
<span class="purpose">To implement some of the out of world actions.</span></p>
</li>
<li>
<p><a href="S-pt.html"><spon class="sectiontitle">Printing Template</span></a> -
<span class="purpose">To manage the line skips which space paragraphs out, and to handle the printing of names of objects, pieces of text and numbers.</span></p>
</li>
<li>
<p><a href="S-wt.html"><spon class="sectiontitle">WorldModel Template</span></a> -
<span class="purpose">Testing and changing the fundamental spatial relations.</span></p>
</li>
<li>
<p><a href="S-mpr.html"><spon class="sectiontitle">MapRouteFinding</span></a> -
<span class="purpose">Testing and changing the fundamental spatial relations.</span></p>
</li>
<li>
<p><a href="S-rt.html"><spon class="sectiontitle">RTP Template</span></a> -
<span class="purpose">To issue run-time problem messages arising from the world model.</span></p>
</li>
<li>
<p><a href="S-tt.html"><spon class="sectiontitle">Time Template</span></a> -
<span class="purpose">Support for parsing and printing times of day.</span></p>
</li>
<li>
<p><a href="S-tt2.html"><spon class="sectiontitle">Tests Template</span></a> -
<span class="purpose">The command grammar and I6 implementation for testing commands such as TEST, ACTIONS and PURLOIN.</span></p>
</li>
<li>
<p><a href="S-ct.html"><spon class="sectiontitle">Chronology Template</span></a> -
<span class="purpose">To record information now which will be needed later, when a condition phrased in the perfect tense is tested.</span></p>
</li>
<li>
<p><a href="S-st.html"><spon class="sectiontitle">StoredAction Template</span></a> -
<span class="purpose">Code to support the stored action kind of value.</span></p>
</li>
</ul>
<hr>
</body>
</html>

View file

@ -0,0 +1,288 @@
/* This is a CSS file for pages woven by the literate programming tool inweb */
/* We'll start with syntax colouring, since everyone likes to toy with this: */
.cwebmacrotext { color: #000000; font-weight: bold; } /* The name of a web macro */
.functiontext { color: #C00000; } /* When a C function is being defined */
.string { color: #408040; } /* A double-quoted C literal string */
.character { color: #204020; } /* A single-quoted C literal character */
.constant { color: #204020; } /* A named constant */
.element { color: #40407f; } /* A C structure element */
.identifier { color: #4040ff; } /* An identifier */
.reserved { color: #600000; } /* A reserved word */
/* Comments at the end of lines are rendered like so: */
.comment {
font: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
color: #404040;
font-style:italic;
}
/* The name of a web macro when being used: */
.cwebmacro {
font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
text-decoration: none;
color: #000000; font-weight: bold;
}
.cwebmacronumber {
font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
font-size: 80%;
text-decoration: none;
color: #000000;
}
/* And when being defined: */
.cwebmacrodefn {
font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
text-decoration: none;
color: #000000; font-weight: bold;
font-weight:bold;
}
/* Now some generalities: */
body {
background-color: #ffffff;
margin: 8px;
font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
font-size: 16px;
line-height: 24px;
background-color: transparent;
-webkit-font-smoothing: antialiased;
}
/* Forms of paragraph: */
p {
margin: 0;
padding-top: 5px;
padding-bottom: 5px;
clear: both;
}
/* Where an inweb paragraph begins: */
p.inwebparagraph {
width: 60em;
line-height: 150%;
padding-top: 15px;
padding-bottom: 5px;
}
/* If a web macro definition begins in its own paragraph, this is it: */
p.macrodefinition {
padding-top: 0px;
padding-bottom: 0px;
margin-left: 30px;
}
/* The endnotes at the foot of code: "The function foo_bar is used in ..." */
p.endnote {
font-size: 0.8em;
padding-top: 0px;
padding-bottom: 0px;
margin-left: 30px;
text-decoration:none;
color: #000000;
}
/* The Purpose slug: */
p.purpose {
width: 60em;
line-height: 150%;
font-size: 1em;
font-style:italic;
margin-left: 15px;
}
/* Blocks of code appear in these */
pre {
font-family: Monaco, monospace;
}
pre.display {
padding: 3px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 30px;
margin-right: 10px;
background: #f8f8f8;
border-width: 1px;
border-style: solid solid solid solid;
border-color: #ccc;
word-wrap: break-word;
white-space: pre-wrap;
}
pre.displaydefn {
padding: 3px;
margin-top: 0px;
margin-bottom: 0px;
margin-left: 0px;
margin-right: 10px;
background: #f8f8f8;
border-width: 1px;
border-style: solid solid solid solid;
border-color: #ccc;
word-wrap: break-word;
white-space: pre-wrap;
}
pre.definitions {
padding-top: 0px;
margin-top: 0px;
margin-left: 0px;
margin-right: 10px;
word-wrap: break-word;
white-space: pre-wrap;
}
/* The following are for breadcrumbs of links: */
ul, li {
list-style-type:none;
padding:0;
margin:0;
}
.crumbs {
border:1px solid #dedede;
height:3.45em;
}
.crumbs li {
float:left;
line-height:2.3em;
padding-left:.75em;
color:#333;
font-size: 1.5em;
}
.crumbs li a {
display:block;
padding:0 15px 0 0;
background:url(crumbs.gif) no-repeat right center;
}
.crumbs li a:link, #crumbs li a:visited {
text-decoration:none;
color:#333;
}
.crumbs li a:hover, #crumbs li a:focus {
color:#dd2c0d;
}
/* This is for items in lists from inweb source: */
ul.items {
margin-top: 3px;
margin-bottom: 3px;
}
ul.items li {
margin-top: 1px;
margin-bottom: 1px;
margin-left: 15px;
}
/* And this is for each section's table of contents: */
ul.toc {
margin-top: 3px;
margin-bottom: 3px;
}
ul.toc li {
float:left;
margin-left: 15px;
color:#000;
}
ul.toc li a {
display:block;
}
ul.toc li a:link, ul.toc li a:visited {
text-decoration:none;
color:#000;
}
ul.toc li a:hover, ul.toc li a:focus {
color:#dd2c0d;
}
hr.tocbar {
clear: both;
margin-top:3px;
margin-bottom:3px;
color:#333;
border:0
background-color:#333;
}
/* This is for cross-reference links ("This code is used in ...") */
p.endnote:link, p.endnote:visited, p.endnote:hover, p.endnote:focus {
text-decoration:none;
color:#000;
}
p.endnote a:link, p.endnote a:visited {
text-decoration:none;
color:#000;
}
p.endnote a:hover, p.endnote a:focus {
text-decoration:none;
color:#dd2c0d;
}
/* Now for the index page */
p.heading {
margin-top: 2px;
margin-bottom: 2px;
font-size: 20
}
p.chapter {
font-size: 14
}
p.tight {
font-size: 12
}
p.tightin {
padding-left: 25px;
font-size: 12
}
.chapterlist li {
padding-top: 8px;
padding-left: 16px;
}
.chaptertitle {
font-weight: bold;
}
.chapterlist .sectionlist li {
padding-left: 48px;
}
span.definitionkeyword {
color:#801010;
font-weight:bold;
}
span.extract {
font-size: 15px;
border: 1px solid #e8e8e8;
border-radius: 3px;
background-color: #eef;
width: 100%;
padding: 3px;
}

View file

@ -1,240 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Booklet Title</title>
<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>
<!--Weave of 'S/bit' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">basic_inform Template Library</a></li><li><b>Basic Inform Template</b></li></ul><p class="purpose">Support for the language alone.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Contents</a></li><li><a href="#SP2">&#167;2. Language of Play</a></li><li><a href="#SP3">&#167;3. VM-Specific Code</a></li><li><a href="#SP4">&#167;4. More</a></li><li><a href="#SP5">&#167;5. Print Decimal Number</a></li><li><a href="#SP6">&#167;6. Print Text</a></li><li><a href="#SP7">&#167;7. Properties</a></li><li><a href="#SP8">&#167;8. Print Or Run</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Contents. </b></p>
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Definitions</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<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="reserved">Constant</span><span class="plain"> </span><span class="identifier">BLOCKV_STACK_SIZE</span><span class="plain"> = </span><span class="constant">224</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">ifnot</span><span class="plain">;</span>
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">BLOCKV_STACK_SIZE</span><span class="plain"> = </span><span class="identifier">DynamicMemoryAllocation</span><span class="plain">/4;</span>
<span class="plain">#</span><span class="identifier">endif</span><span class="plain">;</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">blockv_stack</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="identifier">BLOCKV_STACK_SIZE</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">I7SFRAME</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">TEXT_TY_RE_Err</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">prior_named_noun</span><span class="plain">; </span><span class="comment">! for adaptive text generation</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">prior_named_list</span><span class="plain">; </span><span class="comment">! ditto: length of list of items</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">prior_named_list_gender</span><span class="plain">; </span><span class="comment">! ditto: common gender of list of items, or -1</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">story_tense</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! ditto: present tense</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">story_viewpoint</span><span class="plain"> = </span><span class="constant">2</span><span class="plain">; </span><span class="comment">! ditto: second person singular</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__pc</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__pc_save</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__n</span><span class="plain">; </span><span class="identifier">Global</span><span class="plain"> </span><span class="identifier">say__comp</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">los_rv</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">parameter_object</span><span class="plain">; </span><span class="comment">! = I7 "parameter-object" = I7 "container in question"</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">parameter_value</span><span class="plain">; </span><span class="comment">! not typesafe in I7</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">deferred_calling_list</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="constant">27</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">property_to_be_totalled</span><span class="plain">; </span><span class="comment">! used to implement "total P of..."</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">property_loop_sign</span><span class="plain">; </span><span class="comment">! $+1$ for increasing order, $-1$ for decreasing</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">suppress_scope_loops</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">temporary_value</span><span class="plain">; </span><span class="comment">! can be used anywhere side-effects can't occur</span>
<span class="comment">! [13]</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_fg</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! foreground colour</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_bg</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! background colour</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_fgstatus</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! foreground colour of statusline</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_bgstatus</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; </span><span class="comment">! background colour of statusline</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">clr_on</span><span class="plain">; </span><span class="comment">! has colour been enabled by the player?</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">statuswin_current</span><span class="plain">; </span><span class="comment">! if writing to top window</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">suppress_text_substitution</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">deadflag</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="comment">! [14]</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">statuswin_cursize</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">statuswin_size</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="comment">! [16]</span>
<span class="comment">! Global debug_flag = 0;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">debug_rules</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">debug_rule_nesting</span><span class="plain">;</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">reason_the_action_failed</span><span class="plain">; </span><span class="comment">! = I7 "reason the action failed"</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">indef_mode</span><span class="plain">; </span><span class="comment">! "Indefinite" mode - ie, "take a brick"</span>
<span class="comment">! is in this mode</span>
<span class="comment">! [3]</span>
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">standard_interpreter</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">LocalParking</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="constant">64</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Language of Play. </b>The equivalent of I6's language definition file, though here the idea is
that a translation should have an inclusion to replace the "Language.i6t"
segment, which contains the English definition.
</p>
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Language</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="identifier">Default</span><span class="plain"> </span><span class="identifier">LanguageCases</span><span class="plain"> </span><span class="constant">1</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. VM-Specific Code. </b>These sections of code contain different definitions of the same routines,
and in some cases the same arrays, to handle low-level functions in the
virtual machine &mdash; saving the game, performing UNDO, parsing typed text into
dictionary word addresses and so on.
</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="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Glulx</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
<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="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">ZMachine</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. More. </b></p>
<pre class="display">
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Paragraphing</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Mathematics</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">FileIO</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Sort</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Tables</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">MStack</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Rulebooks</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Flex</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">BlockValues</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Text</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">RegExp</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Lists</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Combinations</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">RelationKind</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Relations</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">RTP</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="plain">{-</span><span class="identifier">segment</span><span class="plain">:</span><span class="identifier">Utilities</span><span class="plain">.</span><span class="identifier">i6t</span><span class="plain">}</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">Protect_I7_Arrays</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="constant">16339</span><span class="plain"> </span><span class="constant">12345</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Print Decimal Number. </b><code class="display"><span class="extract">DecimalNumber</span></code> is a trivial function which just prints a number, in decimal
digits. It is left over from the I6 library's support routines for Glulx,
where it was intended as a stub to pass to the Glulx <code class="display"><span class="extract">Glulx_PrintAnything</span></code> routine
(which I7 does not use). In I7, however, it's also used as the default
printing routine for new kinds of value.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">DecimalNumber</span><span class="plain"> </span><span class="identifier">num</span><span class="plain">; </span><span class="reserved">print</span><span class="plain"> </span><span class="identifier">num</span><span class="plain">; ];</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Print Text. </b>The routine for printing an I7 "text" value, which might be text with or
without substitutions.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">PrintI6Text</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">String</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">x</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">Routine</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain">)();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain"> == </span><span class="identifier">EMPTY_TEXT_PACKED</span><span class="plain">) </span><span class="reserved">rfalse</span><span class="plain">;</span>
<span class="reserved">rtrue</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">I7_String</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">; </span><span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">x</span><span class="plain">); ]; </span><span class="comment">! An alternative name now used only by extensions</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Properties. </b>Some either/or properties are compiled to I6 attributes, which must be
predeclared, so we do that first. (All other properties can simply be
used without declaration.)
</p>
<p class="inwebparagraph">What then follows is a table of property metadata: in particular, specifying
which properties can be used with which I6 classes or objects. Policing
this at run-time costs a little speed, but traps many errors of programming,
and keeps everything typesafe. It is the price we pay for the relatively
lenient compile-time checking of I7's "object" kind of value. To make
it as efficient as possible, we calculate offsets into the metadata: this
has to be done (once) at run-time, with the routine compiled.
</p>
<pre class="display">
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">attributed_property_offsets_SIZE</span><span class="plain"> </span><span class="constant">48</span><span class="plain">;</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">attributed_property_offsets</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="identifier">attributed_property_offsets_SIZE</span><span class="plain">;</span>
<span class="reserved">Constant</span><span class="plain"> </span><span class="identifier">valued_property_offsets_SIZE</span><span class="plain"> (100 + </span><span class="identifier">CCOUNT_PROPERTY</span><span class="plain"> + </span><span class="identifier">INDIV_PROP_START</span><span class="plain">-48);</span>
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">valued_property_offsets</span><span class="plain"> </span><span class="constant">--</span><span class="plain">&gt; </span><span class="identifier">valued_property_offsets_SIZE</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Print Or Run. </b>This utility remains from the old I6 library: it essentially treats a
property as textual and prints it where possible. Where the <code class="display"><span class="extract">no_break</span></code>
flag is set, we expect the text to form only a small part of a paragraph,
and it's inappropriate to break here: for instance, for printing the
"printed name" of an object. Where the flag is clear, however, the text
is expected to form its own paragraph.
</p>
<p class="inwebparagraph">Where <code class="display"><span class="extract">PrintOrRun</span></code> is used in breaking mode, which is only for a very few
properties in I7 (indeed at present only <code class="display"><span class="extract">initial</span></code> and <code class="display"><span class="extract">description</span></code>),
the routine called is given the chance to decide whether to print or not.
It should return <code class="display"><span class="extract">true</span></code> or <code class="display"><span class="extract">false</span></code> according to whether it did so; this
allows us to divide the paragraph or not accordingly.
</p>
<pre class="display">
<span class="plain">[ </span><span class="identifier">PrintOrRun</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">prop</span><span class="plain"> </span><span class="identifier">no_break</span><span class="plain"> </span><span class="identifier">pv</span><span class="plain"> </span><span class="identifier">st</span><span class="plain"> </span><span class="identifier">routine_return_value</span><span class="plain">;</span>
<span class="plain">@</span><span class="identifier">push</span><span class="plain"> </span><span class="identifier">self</span><span class="plain">; </span><span class="identifier">self</span><span class="plain"> = </span><span class="identifier">obj</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prop</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) {</span>
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">prop</span><span class="plain">; </span><span class="identifier">routine_return_value</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">routine_return_value</span><span class="plain"> = </span><span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">prop</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">@</span><span class="identifier">pull</span><span class="plain"> </span><span class="identifier">self</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine_return_value</span><span class="plain">) {</span>
<span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_break</span><span class="plain"> == </span><span class="reserved">false</span><span class="plain">) {</span>
<span class="reserved">new_line</span><span class="plain">;</span>
<span class="identifier">DivideParagraphPoint</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">routine_return_value</span><span class="plain">;</span>
<span class="plain">];</span>
<span class="plain">[ </span><span class="identifier">DA_Number</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">; </span><span class="reserved">print</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">; ];</span>
<span class="plain">[ </span><span class="identifier">DA_TruthState</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain">==0) </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"false"</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"true"</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-bt.html">Continue with 'BlockValues Template'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -104,8 +104,8 @@ escape notations, see the core Inform source code.
<p class="inwebparagraph">The global variable <code class="display"><span class="extract">say__n</span></code> tracks the last number printed. For the "in
words" definition, we need to set it by hand, since Inform doesn't otherwise
realise that number-printing is what we are doing here. For definitions of
functions such as <code class="display"><span class="extract">STextSubstitution</span></code>, see the source for the <code class="display"><span class="extract">basic_inform</span></code>
template library, which is also where <code class="display"><span class="extract">say__n</span></code> is defined.
functions such as <code class="display"><span class="extract">STextSubstitution</span></code>, see the source for <code class="display"><span class="extract">BasicInformKit</span></code>,
which is also where <code class="display"><span class="extract">say__n</span></code> is defined.
</p>
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Say</span></code>.

View file

@ -203,19 +203,7 @@ want to avoid it whenever possible.)
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. </b>Inform source text has a core of basic computational abilities, and then
a whole set of additional elements to handle IF. We want all of those to be
used, so:
</p>
<pre class="display">
<span class="plain">Use interactive fiction language elements. Use multimedia language elements.</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. </b>Some Inform 7 projects are rather heavy-duty by the expectations of the
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. </b>Some Inform 7 projects are rather heavy-duty by the expectations of the
Inform 6 compiler (which it uses as a code-generator): I6 was written fifteen
years earlier, when computers were unimaginably smaller and slower. So many
of its default memory settings need to be raised to higher maxima.

View file

@ -1,111 +1,31 @@
<html>
<head>
<title>basic_inform Template Library </title>
<title>basicinform 1</title>
<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>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>basic_inform Template Library </b></li></ul>
<p class="purpose">I6T source for the basic_inform library.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>basicinform 1</b></li></ul>
<p class="purpose">The Basic Inform extension, included in all projects.</p>
<hr>
<ul class="sectionlist">
<li>
<p><a href="S-bit.html"><spon class="sectiontitle">Basic Inform Template</span></a> -
<span class="purpose">Support for the language alone.</span></p>
<p><a href="S-prm.html"><spon class="sectiontitle">Preamble</span></a> -
<span class="purpose">Basic Inform is like a boot program for a computer that is starting up: it sets up the compiler to implement the familiar language, beginning with basic verbs and use options.</span></p>
</li>
<li>
<p><a href="S-bt.html"><spon class="sectiontitle">BlockValues Template</span></a> -
<span class="purpose">Routines for copying, comparing, creating and destroying block values, and for reading and writing them as if they were arrays.</span></p>
<p><a href="S-md.html"><spon class="sectiontitle">Miscellaneous Definitions</span></a> -
<span class="purpose">A miscellany of properties, variables, rulebooks and activities. Whereas the Standard Rules for interactive fiction are luxuriant in providing these, the Basic Inform kernel is as small as it sensibly can be, with just a few of each.</span></p>
</li>
<li>
<p><a href="S-ct.html"><spon class="sectiontitle">Char Template</span></a> -
<span class="purpose">To decide whether letters are upper or lower case, and convert between the two.</span></p>
<p><a href="S-pd.html"><spon class="sectiontitle">Phrase Definitions</span></a> -
<span class="purpose">The phrases making up the basic Inform language, and in terms of which all other phrases and rules are defined.</span></p>
</li>
<li>
<p><a href="S-ct2.html"><spon class="sectiontitle">Combinations Template</span></a> -
<span class="purpose">Code to support the combination kind of value constructor.</span></p>
</li>
<li>
<p><a href="S-dt.html"><spon class="sectiontitle">Definitions Template</span></a> -
<span class="purpose">Miscellaneous constant definitions, usually providing symbolic names for otherwise inscrutable numbers, which are used throughout the template layer.</span></p>
</li>
<li>
<p><a href="S-ft.html"><spon class="sectiontitle">FileIO Template</span></a> -
<span class="purpose">Reading and writing external files, in the Glulx virtual machine only.</span></p>
</li>
<li>
<p><a href="S-ft2.html"><spon class="sectiontitle">Flex Template</span></a> -
<span class="purpose">To allocate flexible-sized blocks of memory as needed to hold arbitrary-length strings of text, stored actions or other block values.</span></p>
</li>
<li>
<p><a href="S-gt.html"><spon class="sectiontitle">Glulx Template</span></a> -
<span class="purpose">To start up the Glk interface for the Glulx virtual machine, and provide Glulx-specific printing functions.</span></p>
</li>
<li>
<p><a href="S-lt.html"><spon class="sectiontitle">Language Template</span></a> -
<span class="purpose">The fundamental definitions needed by the parser and the verb library in order to specify the language of play -- that is, the language used for communications between the story file and the player.</span></p>
</li>
<li>
<p><a href="S-lt2.html"><spon class="sectiontitle">Lists Template</span></a> -
<span class="purpose">Code to support the list of... kind of value constructor.</span></p>
</li>
<li>
<p><a href="S-mt.html"><spon class="sectiontitle">Mathematics Template</span></a> -
<span class="purpose">Mathematical functions, especially for real numbers.</span></p>
</li>
<li>
<p><a href="S-mt2.html"><spon class="sectiontitle">MStack Template</span></a> -
<span class="purpose">To allocate space on the memory stack for frames of variables to be used by rulebooks, activities and actions.</span></p>
</li>
<li>
<p><a href="S-prg.html"><spon class="sectiontitle">Paragraphing</span></a> -
<span class="purpose">To manage the line skips which space paragraphs out.</span></p>
</li>
<li>
<p><a href="S-rt.html"><spon class="sectiontitle">RegExp Template</span></a> -
<span class="purpose">Code to match and replace on regular expressions against indexed text strings.</span></p>
</li>
<li>
<p><a href="S-rkt.html"><spon class="sectiontitle">Relation Kind Template</span></a> -
<span class="purpose">Code to support the relation kind.</span></p>
</li>
<li>
<p><a href="S-rt2.html"><spon class="sectiontitle">Relations Template</span></a> -
<span class="purpose">To manage run-time storage for relations between objects, and to find routes through relations and the map.</span></p>
</li>
<li>
<p><a href="S-rt3.html"><spon class="sectiontitle">RTP Template</span></a> -
<span class="purpose">To issue run-time problem messages, and to perform some run-time type checking which may issue such messages.</span></p>
</li>
<li>
<p><a href="S-rt4.html"><spon class="sectiontitle">Rulebooks Template</span></a> -
<span class="purpose">To work through the rules in a rulebook until a decision is made.</span></p>
</li>
<li>
<p><a href="S-st.html"><spon class="sectiontitle">Sort Template</span></a> -
<span class="purpose">To sort arrays.</span></p>
</li>
<li>
<p><a href="S-tt.html"><spon class="sectiontitle">Tables Template</span></a> -
<span class="purpose">To read, write, search and allocate rows in the Table data structure.</span></p>
</li>
<li>
<p><a href="S-tt2.html"><spon class="sectiontitle">Text Template</span></a> -
<span class="purpose">Code to support the text kind of value.</span></p>
</li>
<li>
<p><a href="S-ut.html"><spon class="sectiontitle">UnicodeData Template</span></a> -
<span class="purpose">To tabulate casings in the character set.</span></p>
</li>
<li>
<p><a href="S-ut2.html"><spon class="sectiontitle">Utilities Template</span></a> -
<span class="purpose">Miscellaneous utility routines for some fundamental I6 needs.</span></p>
</li>
<li>
<p><a href="S-zt.html"><spon class="sectiontitle">ZMachine Template</span></a> -
<span class="purpose">To provide routines handling low-level Z-machine facilities.</span></p>
<p><a href="S-ad.html"><spon class="sectiontitle">Adjectival Definitions</span></a> -
<span class="purpose">All the built-in adjectives on Basic Inform, from even and odd (for numbers) to symmetric (for relations).</span></p>
</li>
</ul>
<hr>

View file

@ -1,35 +0,0 @@
<html>
<head>
<title>basicinform 1</title>
<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>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>basicinform 1</b></li></ul>
<p class="purpose">The Basic Inform extension, included in all projects.</p>
<hr>
<ul class="sectionlist">
<li>
<p><a href="S-prm.html"><spon class="sectiontitle">Preamble</span></a> -
<span class="purpose">Basic Inform is like a boot program for a computer that is starting up: it sets up the compiler to implement the familiar language, beginning with basic verbs and use options.</span></p>
</li>
<li>
<p><a href="S-md.html"><spon class="sectiontitle">Miscellaneous Definitions</span></a> -
<span class="purpose">A miscellany of properties, variables, rulebooks and activities. Whereas the Standard Rules for interactive fiction are luxuriant in providing these, the Basic Inform kernel is as small as it sensibly can be, with just a few of each.</span></p>
</li>
<li>
<p><a href="S-pd.html"><spon class="sectiontitle">Phrase Definitions</span></a> -
<span class="purpose">The phrases making up the basic Inform language, and in terms of which all other phrases and rules are defined.</span></p>
</li>
<li>
<p><a href="S-ad.html"><spon class="sectiontitle">Adjectival Definitions</span></a> -
<span class="purpose">All the built-in adjectives on Basic Inform, from even and odd (for numbers) to symmetric (for relations).</span></p>
</li>
</ul>
<hr>
</body>
</html>

View file

@ -26,15 +26,21 @@
<span class="reserved">inter_library</span><span class="plain"> *</span><span class="functiontext">CodeGen::Libraries::new</span><span class="plain">(</span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">inter_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_library</span><span class="plain">);</span>
<span class="identifier">lib</span><span class="plain">-</span><span class="element">&gt;location</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">lib</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"library_metadata.txt"</span><span class="plain">);</span>
<span class="identifier">TextFiles::read</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="functiontext">CodeGen::Libraries::read_metadata</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">lib</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lib</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">Errors::nowhere</span><span class="plain">(</span><span class="string">"library metadata file failed to set attachment point"</span><span class="plain">);</span>
<span class="identifier">lib</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">lib</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain">, </span><span class="string">"/main/%S"</span><span class="plain">, </span><span class="identifier">Pathnames::directory_name</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">));</span>
<span class="comment">filename *F = Filenames::in_folder(P, I"kit_metadata.txt");</span>
<span class="comment">TextFiles::read(F, FALSE,</span>
<span class="comment">NULL, FALSE, CodeGen::Libraries::read_metadata, NULL, (void *) lib);</span>
<span class="comment">if (lib-&gt;attachment_point == NULL)</span>
<span class="comment">Errors::nowhere("library metadata file failed to set attachment point");</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">lib</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="functiontext">CodeGen::Libraries::location</span><span class="plain">(</span><span class="reserved">inter_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lib</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no library"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">lib</span><span class="plain">-</span><span class="element">&gt;location</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">CodeGen::Libraries::URL</span><span class="plain">(</span><span class="reserved">inter_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lib</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">lib</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain">;</span>
@ -57,7 +63,7 @@
<span class="reserved">inter_library</span><span class="plain"> *</span><span class="functiontext">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">pathname</span><span class="plain"> **</span><span class="identifier">PP</span><span class="plain">) {</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">N</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">PP</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">], </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"library_metadata.txt"</span><span class="plain">);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kit_metadata.txt"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">TextFiles::exists</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">CodeGen::Libraries::new</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
@ -68,6 +74,8 @@
<p class="endnote">The function CodeGen::Libraries::new appears nowhere else.</p>
<p class="endnote">The function CodeGen::Libraries::location appears nowhere else.</p>
<p class="endnote">The function CodeGen::Libraries::URL appears nowhere else.</p>
<p class="endnote">The function CodeGen::Libraries::read_metadata appears nowhere else.</p>

View file

@ -11,7 +11,7 @@
<!--Weave of '2/itr' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">codegen</a></li><li><a href="index.html#2">Chapter 2: Miscellaneous Pipeline Stages</a></li><li><b>I6 Template Reader</b></li></ul><p class="purpose">Inform 6 meta-language is the language used by template files (with extension |.i6t|); we need tp be able to read it here in order to assimilate template code.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Interventions</a></li><li><a href="#SP5">&#167;5. I6T kits</a></li><li><a href="#SP8">&#167;8. Syntax of I6T files</a></li><li><a href="#SP10_2_4_3">&#167;10.2.4.3. Acting on I6T commands</a></li><li><a href="#SP11">&#167;11. Template errors</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Interventions</a></li><li><a href="#SP5">&#167;5. I6T kits</a></li><li><a href="#SP8">&#167;8. Syntax of I6T files</a></li><li><a href="#SP10_2_4_3">&#167;10.2.4.3. Acting on I6T commands</a></li><li><a href="#SP11">&#167;11. Contents section</a></li><li><a href="#SP12">&#167;12. Template errors</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Interventions. </b>The user (or an extension used by the user) is allowed to register gobbets
of I6T code to be used before, instead of, or after any whole segment or
@ -269,8 +269,32 @@ and therefore no interventions will have happened.)
<span class="plain">(*(</span><span class="identifier">kit</span><span class="plain">-</span><span class="element">&gt;raw_callback</span><span class="plain">))(</span><span class="identifier">SP</span><span class="plain">, </span><span class="identifier">kit</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">contents_section_state</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">sects</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">text_stream</span></code></span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">active</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">contents_section_state</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">TemplateReader::interpret</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">sf</span><span class="plain">,</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">segment_name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">N_escape</span><span class="plain">, </span><span class="reserved">I6T_kit</span><span class="plain"> *</span><span class="identifier">kit</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">segment_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"all"</span><span class="plain">)) {</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">area</span><span class="plain">=0; </span><span class="identifier">area</span><span class="plain">&lt;</span><span class="identifier">kit</span><span class="plain">-</span><span class="element">&gt;no_i6t_file_areas</span><span class="plain">; </span><span class="identifier">area</span><span class="plain">++) {</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Pathnames::up</span><span class="plain">(</span><span class="identifier">kit</span><span class="plain">-</span><span class="element">&gt;i6t_files</span><span class="plain">[</span><span class="identifier">area</span><span class="plain">]);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Contents.w"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">TextFiles::exists</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">)) {</span>
<span class="reserved">contents_section_state</span><span class="plain"> </span><span class="identifier">CSS</span><span class="plain">;</span>
<span class="identifier">CSS</span><span class="element">.active</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">CSS</span><span class="element">.sects</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain">);</span>
<span class="identifier">TextFiles::read</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="functiontext">TemplateReader::read_contents</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) &amp;</span><span class="identifier">CSS</span><span class="plain">);</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">segment</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">segment</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">CSS</span><span class="element">.sects</span><span class="plain">)</span>
<span class="functiontext">TemplateReader::interpret</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">sf</span><span class="plain">, </span><span class="identifier">segment</span><span class="plain">, </span><span class="identifier">N_escape</span><span class="plain">, </span><span class="identifier">kit</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="functiontext">TemplateReader::error</span><span class="plain">(</span><span class="string">"unable to find a contents section to read 'all'"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Contents.w"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">FILE</span><span class="plain"> *</span><span class="identifier">Input_File</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">heading_name</span><span class="plain">);</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">skip_part</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
@ -307,6 +331,8 @@ and therefore no interventions will have happened.)
<p class="endnote">The function TemplateReader::interpret is used in <a href="#SP3">&#167;3</a>, <a href="#SP10_2_4_3_1">&#167;10.2.4.3.1</a>.</p>
<p class="endnote">The structure contents_section_state is private to this section.</p>
<p class="inwebparagraph"><a id="SP10_1"></a><b>&#167;10.1. </b>We look for the <code class="display"><span class="extract">.i6t</span></code> files in a list of possible locations supplied as
part of the I6T kit.
</p>
@ -654,7 +680,28 @@ safely between <code class="display"><span class="extract">{-open-index}</span><
<p class="endnote">This code is used in <a href="#SP10_2_4_3">&#167;10.2.4.3</a>.</p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Template errors. </b>Errors here used to be basically failed assertions, but inevitably people
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Contents section. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">TemplateReader::read_contents</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">text_file_position</span><span class="plain"> *</span><span class="identifier">tfp</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
<span class="reserved">contents_section_state</span><span class="plain"> *</span><span class="identifier">CSS</span><span class="plain"> = (</span><span class="reserved">contents_section_state</span><span class="plain"> *) </span><span class="identifier">state</span><span class="plain">;</span>
<span class="identifier">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="identifier">Regexp::create_mr</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Sections"</span><span class="plain">))</span>
<span class="identifier">CSS</span><span class="plain">-</span><span class="element">&gt;active</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">" (%c+)"</span><span class="plain">)) &amp;&amp; (</span><span class="identifier">CSS</span><span class="plain">-</span><span class="element">&gt;active</span><span class="plain">)) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="string">".i6t"</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]), </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">CSS</span><span class="plain">-</span><span class="element">&gt;sects</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function TemplateReader::read_contents is used in <a href="#SP10">&#167;10</a>.</p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Template errors. </b>Errors here used to be basically failed assertions, but inevitably people
reported that as a bug (0001596). It was never intended that I6T coding
be part of the outside-facing language, but for a handful of people
using template-hacking there are a handful of cases that can't be avoided, so...
@ -686,7 +733,7 @@ using template-hacking there are a handful of cases that can't be avoided, so...
<p class="inwebparagraph"></p>
<p class="endnote">The function TemplateReader::error is used in <a href="#SP4">&#167;4</a>, <a href="#SP10_1">&#167;10.1</a>, <a href="#SP10_2_2">&#167;10.2.2</a>, <a href="#SP10_2_3">&#167;10.2.3</a>, <a href="#SP10_2_4_2">&#167;10.2.4.2</a>, 2/lnk (<a href="2-lnk.html#SP2">&#167;2</a>), 2/rcc (<a href="2-rcc.html#SP2">&#167;2</a>, <a href="2-rcc.html#SP2_4">&#167;2.4</a>, <a href="2-rcc.html#SP2_2_2">&#167;2.2.2</a>, <a href="2-rcc.html#SP2_5">&#167;2.5</a>, <a href="2-rcc.html#SP2_6">&#167;2.6</a>), 2/alm (<a href="2-alm.html#SP2_1_2">&#167;2.1.2</a>, <a href="2-alm.html#SP2_2_1">&#167;2.2.1</a>).</p>
<p class="endnote">The function TemplateReader::error is used in <a href="#SP4">&#167;4</a>, <a href="#SP10">&#167;10</a>, <a href="#SP10_1">&#167;10.1</a>, <a href="#SP10_2_2">&#167;10.2.2</a>, <a href="#SP10_2_3">&#167;10.2.3</a>, <a href="#SP10_2_4_2">&#167;10.2.4.2</a>, 2/lnk (<a href="2-lnk.html#SP2">&#167;2</a>), 2/rcc (<a href="2-rcc.html#SP2">&#167;2</a>, <a href="2-rcc.html#SP2_4">&#167;2.4</a>, <a href="2-rcc.html#SP2_2_2">&#167;2.2.2</a>, <a href="2-rcc.html#SP2_5">&#167;2.5</a>, <a href="2-rcc.html#SP2_6">&#167;2.6</a>), 2/alm (<a href="2-alm.html#SP2_1_2">&#167;2.1.2</a>, <a href="2-alm.html#SP2_2_1">&#167;2.2.1</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="2-lnk.html">Back to 'Linker'</a></li><li><a href="2-plm.html">Continue with 'Parse Linked Matter'</a></li></ul><hr class="tocbar">

View file

@ -114,6 +114,9 @@
<span class="definitionkeyword">enum</span> <span class="constant">value_holster_array_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">adjective_iname_holder_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">label_namespace_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">inform_kit_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">inform_kit_ittt_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">element_activation_MT</span>
</pre>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Deep breath, then: the following macros define several hundred functions.
</p>
@ -188,6 +191,9 @@
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">runtime_kind_structure</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">adjective_iname_holder</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">label_namespace</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inform_kit</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inform_kit_ittt</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">element_activation</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
@ -544,7 +550,7 @@ we need to use the equivalent of traditional <code class="display"><span class="
<p class="endnote">The function CoreModule::end appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-mr.html">Back to 'Main Routine'</a></li><li><a href="1-pp.html">Continue with 'Progress Percentages'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="1-mr.html">Back to 'Main Routine'</a></li><li><a href="1-kts.html">Continue with 'Kits'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

314
docs/core-module/1-kts.html Normal file
View file

@ -0,0 +1,314 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>1/cm</title>
<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>
<!--Weave of '1/kts' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>Kits</b></li></ul><p class="purpose">A kit is a combination of Inter code with an Inform 7 extension.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Kits</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Kits. </b></p>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inform_kit</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">early_source</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">ittt</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">inform_kit_ittt</span></code></span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">kind_definitions</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">text_stream</span></code></span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">extensions</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">text_stream</span></code></span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">activations</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">element_activation</span></code></span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">index_template</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">defines_Main</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">priority</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">inform_kit</span><span class="plain">;</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inform_kit_ittt</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">if_name</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">if_included</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">then_name</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">inform_kit_ittt</span><span class="plain">;</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">element_activation</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">element_name</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">activate</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">element_activation</span><span class="plain">;</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="functiontext">Kits::load</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inform_kit</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain"> = </span><span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"Cannot find kit '%S'\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"Unable to find one of the Inform support kits"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;early_source</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;priority</span><span class="plain"> = 10;</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;ittt</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">inform_kit_ittt</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;kind_definitions</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;extensions</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;activations</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">element_activation</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;defines_Main</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;index_template</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">CodeGen::Libraries::location</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain">);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kit_metadata.txt"</span><span class="plain">);</span>
<span class="identifier">TextFiles::read</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="functiontext">Kits::read_metadata</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">K</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::dependency</span><span class="plain">(</span><span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">if_text</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">inc</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">then_text</span><span class="plain">) {</span>
<span class="reserved">inform_kit_ittt</span><span class="plain"> *</span><span class="identifier">ITTT</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inform_kit_ittt</span><span class="plain">);</span>
<span class="identifier">ITTT</span><span class="plain">-</span><span class="element">&gt;if_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">if_text</span><span class="plain">);</span>
<span class="identifier">ITTT</span><span class="plain">-</span><span class="element">&gt;if_included</span><span class="plain"> = </span><span class="identifier">inc</span><span class="plain">;</span>
<span class="identifier">ITTT</span><span class="plain">-</span><span class="element">&gt;then_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">then_text</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">ITTT</span><span class="plain">, </span><span class="reserved">inform_kit_ittt</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;ittt</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::activation</span><span class="plain">(</span><span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">act</span><span class="plain">) {</span>
<span class="reserved">element_activation</span><span class="plain"> *</span><span class="identifier">EA</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">element_activation</span><span class="plain">);</span>
<span class="identifier">EA</span><span class="plain">-</span><span class="element">&gt;element_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">EA</span><span class="plain">-</span><span class="element">&gt;activate</span><span class="plain"> = </span><span class="identifier">act</span><span class="plain">;</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">EA</span><span class="plain">, </span><span class="reserved">element_activation</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;activations</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::read_metadata</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">text_file_position</span><span class="plain"> *</span><span class="identifier">tfp</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = (</span><span class="reserved">inform_kit</span><span class="plain"> *) </span><span class="identifier">state</span><span class="plain">;</span>
<span class="identifier">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="identifier">Regexp::create_mr</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::is_whitespace</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">)) || (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">" *#%c*"</span><span class="plain">))) {</span>
<span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"defines Main: yes"</span><span class="plain">)) {</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;defines_Main</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"defines Main: no"</span><span class="plain">)) {</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;defines_Main</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"insert: (%c*)"</span><span class="plain">)) {</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;early_source</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;early_source</span><span class="plain">, </span><span class="string">"\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"priority: (%d*)"</span><span class="plain">)) {</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;priority</span><span class="plain"> = </span><span class="identifier">Str::atoi</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], 0);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"kinds: (%C+)"</span><span class="plain">)) {</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]), </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;kind_definitions</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"extension: (%c+)"</span><span class="plain">)) {</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]), </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;extensions</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"activate: (%c+)"</span><span class="plain">)) {</span>
<span class="functiontext">Kits::activation</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="identifier">TRUE</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"deactivate: (%c+)"</span><span class="plain">)) {</span>
<span class="functiontext">Kits::activation</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"dependency: if (%C+) then (%C+)"</span><span class="plain">)) {</span>
<span class="functiontext">Kits::dependency</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"dependency: if not (%C+) then (%C+)"</span><span class="plain">)) {</span>
<span class="functiontext">Kits::dependency</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"index from: (%c*)"</span><span class="plain">)) {</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;index_template</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">Errors::in_text_file</span><span class="plain">(</span><span class="string">"illegible line in kit metadata file"</span><span class="plain">, </span><span class="identifier">tfp</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"'%S'\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Kits::loaded</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">))</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::perform_ittt</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">changes_made</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">changes_made</span><span class="plain">) {</span>
<span class="identifier">changes_made</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">) {</span>
<span class="reserved">inform_kit_ittt</span><span class="plain"> *</span><span class="identifier">ITTT</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">ITTT</span><span class="plain">, </span><span class="reserved">inform_kit_ittt</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;ittt</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Kits::loaded</span><span class="plain">(</span><span class="identifier">ITTT</span><span class="plain">-</span><span class="element">&gt;then_name</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) &amp;&amp;</span>
<span class="plain">(</span><span class="functiontext">Kits::loaded</span><span class="plain">(</span><span class="identifier">ITTT</span><span class="plain">-</span><span class="element">&gt;if_name</span><span class="plain">) == </span><span class="identifier">ITTT</span><span class="plain">-</span><span class="element">&gt;if_included</span><span class="plain">)) {</span>
<span class="functiontext">Kits::load</span><span class="plain">(</span><span class="identifier">ITTT</span><span class="plain">-</span><span class="element">&gt;then_name</span><span class="plain">);</span>
<span class="identifier">changes_made</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">kits_requested</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">kits_to_include</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::request</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">kits_requested</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">kits_requested</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain">);</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">kit_name</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">kit_name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">kits_requested</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">kit_name</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">))</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">), </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">kits_requested</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::determine</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">kits_requested</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="functiontext">Kits::request</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"CommandParserKit"</span><span class="plain">);</span>
<span class="functiontext">Kits::request</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"BasicInformKit"</span><span class="plain">);</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">kit_name</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">kit_name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">kits_requested</span><span class="plain">)</span>
<span class="functiontext">Kits::load</span><span class="plain">(</span><span class="identifier">kit_name</span><span class="plain">);</span>
<span class="functiontext">Kits::perform_ittt</span><span class="plain">();</span>
<span class="identifier">kits_to_include</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">inform_kit</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">p</span><span class="plain">=0; </span><span class="identifier">p</span><span class="plain">&lt;100; </span><span class="identifier">p</span><span class="plain">++) {</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;priority</span><span class="plain"> == </span><span class="identifier">p</span><span class="plain">)</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">)</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Using Inform kit '%S' (priority %d).\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;priority</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::load_types</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">) {</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">segment</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">segment</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;kind_definitions</span><span class="plain">) {</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">CodeGen::Libraries::location</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain">);</span>
<span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kinds"</span><span class="plain">);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">segment</span><span class="plain">);</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Loading kinds definitions from %f\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">);</span>
<span class="functiontext">I6T::interpret_kindt</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::activate_plugins</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Activate plugins...\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
<span class="functiontext">Plugins::Manage::activate</span><span class="plain">(</span><span class="constant">CORE_PLUGIN_NAME</span><span class="plain">);</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">) {</span>
<span class="reserved">element_activation</span><span class="plain"> *</span><span class="identifier">EA</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">EA</span><span class="plain">, </span><span class="reserved">element_activation</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;activations</span><span class="plain">) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">Plugins::Manage::parse</span><span class="plain">(</span><span class="identifier">EA</span><span class="plain">-</span><span class="element">&gt;element_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == -1)</span>
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
<span class="string">"one of the Inform kits made reference to a language segment which does not exist"</span><span class="plain">,</span>
<span class="string">"which strongly suggests that Inform is not properly installed."</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> &gt;= 0) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">EA</span><span class="plain">-</span><span class="element">&gt;activate</span><span class="plain">) </span><span class="functiontext">Plugins::Manage::activate</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">Plugins::Manage::deactivate</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="functiontext">Plugins::Manage::show</span><span class="plain">(</span><span class="identifier">DL</span><span class="plain">, </span><span class="string">"Included"</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
<span class="functiontext">Plugins::Manage::show</span><span class="plain">(</span><span class="identifier">DL</span><span class="plain">, </span><span class="string">"Excluded"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Kits::Main_defined</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;defines_Main</span><span class="plain">)</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Kits::index_template</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;index_template</span><span class="plain">)</span>
<span class="identifier">I</span><span class="plain"> = </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;index_template</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">I</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Kits::load appears nowhere else.</p>
<p class="endnote">The function Kits::dependency appears nowhere else.</p>
<p class="endnote">The function Kits::activation appears nowhere else.</p>
<p class="endnote">The function Kits::read_metadata appears nowhere else.</p>
<p class="endnote">The function Kits::loaded appears nowhere else.</p>
<p class="endnote">The function Kits::perform_ittt appears nowhere else.</p>
<p class="endnote">The function Kits::request is used in 1/mr (<a href="1-mr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Kits::determine is used in 1/mr (<a href="1-mr.html#SP4_8">&#167;4.8</a>).</p>
<p class="endnote">The function Kits::load_types is used in 1/mr (<a href="1-mr.html#SP4_10">&#167;4.10</a>).</p>
<p class="endnote">The function Kits::activate_plugins is used in 1/mr (<a href="1-mr.html#SP4_10">&#167;4.10</a>).</p>
<p class="endnote">The function Kits::Main_defined is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Kits::index_template is used in 1/mr (<a href="1-mr.html#SP4_17">&#167;4.17</a>).</p>
<p class="endnote">The structure inform_kit is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure inform_kit_ittt is private to this section.</p>
<p class="endnote">The structure element_activation is accessed in 5/lp and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>In particular, every source text read into Inform is automatically prefixed by
the following eight words &mdash; if Inform were a computer, this would be the BIOS
which boots up its operating system. (In that the rest of the creation of the
I7 world model is handled by source text in the Standard Rules.)
</p>
<p class="inwebparagraph">Because of this mandatory insertion, one extension, the Standard Rules, is
compulsorily included in every run. So there will certainly be at least two
files of source text to be read, and quite possibly more.
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">MANDATORY_INSERTED_TEXT</span><span class="plain"> </span><span class="identifier">L</span><span class="string">"Include Basic Inform by Graham Nelson. Include the Standard Rules by Graham Nelson.\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span>
<span class="definitionkeyword">define</span> <span class="constant">BASIC_MODE_INSERTED_TEXT</span><span class="plain"> </span><span class="identifier">L</span><span class="string">"Include Basic Inform by Graham Nelson.\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span>
</pre>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::feed_early_source_text</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">) {</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">) {</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">X</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">X</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;extensions</span><span class="plain">)</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Include %S.\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">X</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;early_source</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;early_source</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="functiontext">Kits::list_of_inter_libraries</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">inter_library</span><span class="plain">);</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">)</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain">, </span><span class="identifier">inter_library</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">requirements_list</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Kits::feed_early_source_text is used in 3/rst (<a href="3-rst.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Kits::list_of_inter_libraries is used in 1/mr (<a href="1-mr.html#SP4_16">&#167;4.16</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-cm.html">Back to 'Core Module'</a></li><li><a href="1-pp.html">Continue with 'Progress Percentages'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -38,7 +38,6 @@ command-line option.
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">this_is_a_release_compile</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Omit sections of source text marked not for release</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">existing_story_file</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Ignore source text to blorb existing story file?</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rng_seed_at_start_of_play</span><span class="plain"> = 0; </span> <span class="comment">The seed value, or 0 if not seeded</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">basic_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Inform running as a pared-down, non-IF language</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">census_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Inform running only to update extension documentation</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">story_filename_extension</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span> <span class="comment">What story file we will eventually have</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">show_progress_indicator</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span> <span class="comment">Produce percentage of progress messages</span>
@ -107,20 +106,21 @@ Inform 6 code is complete.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">census_mode</span><span class="plain">)</span>
<span class="functiontext">Extensions::Files::handle_census_mode</span><span class="plain">();</span>
<span class="reserved">else</span><span class="plain"> {</span>
&lt;<span class="cwebmacro">Perform lexical analysis</span> <span class="cwebmacronumber">4.8</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Perform semantic analysis</span> <span class="cwebmacronumber">4.9</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Read the assertions in two passes</span> <span class="cwebmacronumber">4.10</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Make the model world</span> <span class="cwebmacronumber">4.11</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Tables and grammar</span> <span class="cwebmacronumber">4.12</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Phrases and rules</span> <span class="cwebmacronumber">4.13</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Generate inter</span> <span class="cwebmacronumber">4.14</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Convert inter to Inform 6</span> <span class="cwebmacronumber">4.15</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Generate metadata</span> <span class="cwebmacronumber">4.16</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Post mortem logging</span> <span class="cwebmacronumber">4.17</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Work out our kit requirements</span> <span class="cwebmacronumber">4.8</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Perform lexical analysis</span> <span class="cwebmacronumber">4.9</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Perform semantic analysis</span> <span class="cwebmacronumber">4.10</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Read the assertions in two passes</span> <span class="cwebmacronumber">4.11</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Make the model world</span> <span class="cwebmacronumber">4.12</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Tables and grammar</span> <span class="cwebmacronumber">4.13</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Phrases and rules</span> <span class="cwebmacronumber">4.14</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Generate inter</span> <span class="cwebmacronumber">4.15</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Convert inter to Inform 6</span> <span class="cwebmacronumber">4.16</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Generate metadata</span> <span class="cwebmacronumber">4.17</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Post mortem logging</span> <span class="cwebmacronumber">4.18</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">clock_t</span><span class="plain"> </span><span class="identifier">end</span><span class="plain"> = </span><span class="identifier">clock</span><span class="plain">();</span>
&lt;<span class="cwebmacro">Shutdown and rennab</span> <span class="cwebmacronumber">4.18</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Shutdown and rennab</span> <span class="cwebmacronumber">4.19</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> &gt; 0) </span><span class="identifier">Problems::Fatal::exit</span><span class="plain">(1);</span>
<span class="reserved">return</span><span class="plain"> 0;</span>
<span class="plain">}</span>
@ -159,7 +159,6 @@ list is not exhaustive.
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">BASIC_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">CASE_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">CENSUS_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">CLOCK_CLSW</span>
@ -168,6 +167,7 @@ list is not exhaustive.
<span class="definitionkeyword">enum</span> <span class="constant">FORMAT_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">CRASHALL_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">INTERNAL_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIT_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">NOINDEX_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">NOPROGRESS_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">PROJECT_CLSW</span>
@ -192,8 +192,6 @@ list is not exhaustive.
<span class="identifier">CommandLine::declare_textual_switch</span><span class="plain">(</span><span class="constant">FORMAT_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"format"</span><span class="plain">, 1,</span>
<span class="identifier">L</span><span class="string">"compile I6 code suitable for the virtual machine X"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">BASIC_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"basic"</span><span class="plain">, 1,</span>
<span class="identifier">L</span><span class="string">"run a basic non-IF version of the Inform language"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">CENSUS_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"census"</span><span class="plain">, 1,</span>
<span class="identifier">L</span><span class="string">"perform an extensions census (rather than compile)"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">CLOCK_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"clock"</span><span class="plain">, 1,</span>
@ -218,6 +216,8 @@ list is not exhaustive.
<span class="identifier">L</span><span class="string">"return 0 unless exactly this Problem message is generated (for testing)"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">PIPELINE_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"pipeline"</span><span class="plain">, 2,</span>
<span class="identifier">L</span><span class="string">"specify code-generation pipeline"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">KIT_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"kit"</span><span class="plain">, 2,</span>
<span class="identifier">L</span><span class="string">"load the Inform kit called X"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">PIPELINE_FILE_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"pipeline-file"</span><span class="plain">, 2,</span>
<span class="identifier">L</span><span class="string">"specify code-generation pipeline from file X"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">PIPELINE_VARIABLE_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"variable"</span><span class="plain">, 2,</span>
@ -297,6 +297,14 @@ list is not exhaustive.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cs</span><span class="plain"> &gt; 0) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">".... "</span><span class="plain"> #</span><span class="identifier">routine</span><span class="plain"> </span><span class="string">"() took %dcs\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">cs</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="definitionkeyword">define</span> <span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="reserved">plugin</span><span class="plain">, </span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">mark</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">problem_count</span><span class="plain"> == 0) &amp;&amp; (</span><span class="functiontext">Plugins::Manage::plugged_in</span><span class="plain">(</span><span class="reserved">plugin</span><span class="plain">))) {</span>
<span class="identifier">clock_t</span><span class="plain"> </span><span class="identifier">now</span><span class="plain"> = </span><span class="identifier">clock</span><span class="plain">();</span>
<span class="identifier">routine</span><span class="plain">();</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cs</span><span class="plain"> = ((</span><span class="reserved">int</span><span class="plain">) (</span><span class="identifier">clock</span><span class="plain">() - </span><span class="identifier">now</span><span class="plain">)) / (</span><span class="identifier">CLOCKS_PER_SEC</span><span class="plain">/100);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cs</span><span class="plain"> &gt; 0) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">".... "</span><span class="plain"> #</span><span class="identifier">routine</span><span class="plain"> </span><span class="string">"() took %dcs\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">cs</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Boot up the compiler</span> <span class="cwebmacronumber">4.7</span>&gt; =
@ -317,7 +325,20 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_8"></a><b>&#167;4.8. </b><code class="display">
&lt;<span class="cwebmacrodefn">Perform lexical analysis</span> <span class="cwebmacronumber">4.8</span>&gt; =
&lt;<span class="cwebmacrodefn">Work out our kit requirements</span> <span class="cwebmacronumber">4.8</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kits::determine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kits::determine"</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_9"></a><b>&#167;4.9. </b><code class="display">
&lt;<span class="cwebmacrodefn">Perform lexical analysis</span> <span class="cwebmacronumber">4.9</span>&gt; =
</code></p>
@ -332,21 +353,23 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_9"></a><b>&#167;4.9. </b><code class="display">
&lt;<span class="cwebmacrodefn">Perform semantic analysis</span> <span class="cwebmacronumber">4.9</span>&gt; =
<p class="inwebparagraph"><a id="SP4_10"></a><b>&#167;4.10. </b><code class="display">
&lt;<span class="cwebmacrodefn">Perform semantic analysis</span> <span class="cwebmacronumber">4.10</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="functiontext">ProgressBar::update_progress_bar</span><span class="plain">(1, 0);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Semantic analysis Ia"</span><span class="plain">);</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kits::activate_plugins</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kits::activate_plugins"</span><span class="plain">);</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">ParseTreeUsage::plant_parse_tree</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ParseTreeUsage::plant_parse_tree"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">StructuralSentences::break_source</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"StructuralSentences::break_source"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Extensions::Inclusion::traverse</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Extensions::Inclusion::traverse"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::satisfy_dependencies</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::Headings::satisfy_dependencies"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Initialise language semantics"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">Plugins::Manage::load_types</span><span class="plain">();</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Plugins::Manage::start_plugins</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Plugins::Manage::start_plugins"</span><span class="plain">);</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kits::load_types</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kits::load_types"</span><span class="plain">);</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">BinaryPredicates::make_built_in</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"BinaryPredicates::make_built_in"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">NewVerbs::add_inequalities</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"NewVerbs::add_inequalities"</span><span class="plain">)</span>
@ -376,8 +399,8 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_10"></a><b>&#167;4.10. </b><code class="display">
&lt;<span class="cwebmacrodefn">Read the assertions in two passes</span> <span class="cwebmacronumber">4.10</span>&gt; =
<p class="inwebparagraph"><a id="SP4_11"></a><b>&#167;4.11. </b><code class="display">
&lt;<span class="cwebmacrodefn">Read the assertions in two passes</span> <span class="cwebmacronumber">4.11</span>&gt; =
</code></p>
@ -395,8 +418,8 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_11"></a><b>&#167;4.11. </b><code class="display">
&lt;<span class="cwebmacrodefn">Make the model world</span> <span class="cwebmacronumber">4.11</span>&gt; =
<p class="inwebparagraph"><a id="SP4_12"></a><b>&#167;4.12. </b><code class="display">
&lt;<span class="cwebmacrodefn">Make the model world</span> <span class="cwebmacronumber">4.12</span>&gt; =
</code></p>
@ -420,8 +443,8 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_12"></a><b>&#167;4.12. </b><code class="display">
&lt;<span class="cwebmacrodefn">Tables and grammar</span> <span class="cwebmacronumber">4.12</span>&gt; =
<p class="inwebparagraph"><a id="SP4_13"></a><b>&#167;4.13. </b><code class="display">
&lt;<span class="cwebmacrodefn">Tables and grammar</span> <span class="cwebmacronumber">4.13</span>&gt; =
</code></p>
@ -437,8 +460,8 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_13"></a><b>&#167;4.13. </b><code class="display">
&lt;<span class="cwebmacrodefn">Phrases and rules</span> <span class="cwebmacronumber">4.13</span>&gt; =
<p class="inwebparagraph"><a id="SP4_14"></a><b>&#167;4.14. </b><code class="display">
&lt;<span class="cwebmacrodefn">Phrases and rules</span> <span class="cwebmacronumber">4.14</span>&gt; =
</code></p>
@ -462,14 +485,14 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_14"></a><b>&#167;4.14. </b>This is where we hand over to regular template files &mdash; containing code
<p class="inwebparagraph"><a id="SP4_15"></a><b>&#167;4.15. </b>This is where we hand over to regular template files &mdash; containing code
passed through as I6 source, as well as a few further commands &mdash; starting
with "Output.i6t".
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Generate inter</span> <span class="cwebmacronumber">4.14</span>&gt; =
&lt;<span class="cwebmacrodefn">Generate inter</span> <span class="cwebmacronumber">4.15</span>&gt; =
</code></p>
@ -478,13 +501,10 @@ list is not exhaustive.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Generating inter"</span><span class="plain">);</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">UseOptions::compile_icl_commands</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"UseOptions::compile_icl_commands"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">VirtualMachines::compile_build_number</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"VirtualMachines::compile_build_number"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Plugins::Manage::define_IFDEF_symbols</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Plugins::Manage::define_IFDEF_symbols"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Bibliographic::compile_constants</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Bibliographic::compile_constants"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Extensions::Files::ShowExtensionVersions_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Extensions::Files::ShowExtensionVersions_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">Kinds::Constructors::compile_I6_constants</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::Constructors::compile_I6_constants"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Score::compile_max_score</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Score::compile_max_score"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">scoring_plugin</span><span class="plain">, </span><span class="identifier">PL::Score::compile_max_score</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Score::compile_max_score"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">UseOptions::TestUseOption_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"UseOptions::TestUseOption_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::compile_activity_constants</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::compile_activity_constants"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::Activity_before_rulebooks_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::Activity_before_rulebooks_array"</span><span class="plain">)</span>
@ -495,62 +515,51 @@ list is not exhaustive.
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::compile_data_type_support_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::RunTime::compile_data_type_support_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::I7_Kind_Name_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::RunTime::I7_Kind_Name_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">World::Compile::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"World::Compile::compile"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Backdrops::write_found_in_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Backdrops::write_found_in_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Map::write_door_dir_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Map::write_door_dir_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Map::write_door_to_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Map::write_door_to_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::General::write_parse_name_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::General::write_parse_name_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Regions::write_regional_found_in_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Regions::write_regional_found_in_routines"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">backdrops_plugin</span><span class="plain">, </span><span class="identifier">PL::Backdrops::write_found_in_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Backdrops::write_found_in_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">map_plugin</span><span class="plain">, </span><span class="identifier">PL::Map::write_door_dir_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Map::write_door_dir_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">map_plugin</span><span class="plain">, </span><span class="identifier">PL::Map::write_door_to_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Map::write_door_to_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Tokens::General::write_parse_name_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::General::write_parse_name_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">regions_plugin</span><span class="plain">, </span><span class="identifier">PL::Regions::write_regional_found_in_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Regions::write_regional_found_in_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::complete</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::complete"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::Support::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::Support::compile"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Equations::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Equations::compile"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::Patterns::Named::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::Patterns::Named::compile"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::ActionData</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionData"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::ActionCoding_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionCoding_array"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::ActionHappened</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionHappened"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::compile_action_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::compile_action_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Lines::MistakeActionSub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Lines::MistakeActionSub_routine"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">actions_plugin</span><span class="plain">, </span><span class="identifier">PL::Actions::Patterns::Named::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::Patterns::Named::compile"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">actions_plugin</span><span class="plain">, </span><span class="identifier">PL::Actions::ActionData</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionData"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">actions_plugin</span><span class="plain">, </span><span class="identifier">PL::Actions::ActionCoding_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionCoding_array"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">actions_plugin</span><span class="plain">, </span><span class="identifier">PL::Actions::ActionHappened</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionHappened"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">actions_plugin</span><span class="plain">, </span><span class="identifier">PL::Actions::compile_action_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::compile_action_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Lines::MistakeActionSub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Lines::MistakeActionSub_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::compile_first_block</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::compile_first_block"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::compile_rulebooks</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::compile_rulebooks"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::rulebooks_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::rulebooks_array"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Scenes::DetectSceneChange_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Scenes::DetectSceneChange_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Scenes::ShowSceneStatus_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Scenes::ShowSceneStatus_routine"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">scenes_plugin</span><span class="plain">, </span><span class="identifier">PL::Scenes::DetectSceneChange_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Scenes::DetectSceneChange_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">scenes_plugin</span><span class="plain">, </span><span class="identifier">PL::Scenes::ShowSceneStatus_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Scenes::ShowSceneStatus_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Files::arrays</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Files::arrays"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Rulebooks::rulebook_var_creators</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Rulebooks::rulebook_var_creators"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::activity_var_creators</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::activity_var_creators"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Relations::IterateRelations</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Relations::IterateRelations"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::RulebookNames_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::RulebookNames_array"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::RulePrintingRule_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::RulePrintingRule_routine"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Verbs::prepare</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::prepare"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Verbs::compile_conditions</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::compile_conditions"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Values::number</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::number"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Values::truth_state</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::truth_state"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Values::time</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::time"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Values::compile_type_gprs</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::compile_type_gprs"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Verbs::prepare</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::prepare"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Verbs::compile_conditions</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::compile_conditions"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Tokens::Values::number</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::number"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Tokens::Values::truth_state</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::truth_state"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Tokens::Values::time</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::time"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Tokens::Values::compile_type_gprs</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::compile_type_gprs"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">NewVerbs::ConjugateVerb</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"NewVerbs::ConjugateVerb"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Adjectives::Meanings::agreements</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Adjectives::Meanings::agreements"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">this_is_a_release_compile</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">this_is_a_debug_compile</span><span class="plain">)) {</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">PL::Parsing::TestScripts::write_text</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::write_text"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">PL::Parsing::TestScripts::TestScriptSub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::TestScriptSub_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">PL::Parsing::TestScripts::InternalTestCases_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::InternalTestCases_routine"</span><span class="plain">)</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">PL::Parsing::TestScripts::TestScriptSub_stub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::TestScriptSub_stub_routine"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">this_is_a_release_compile</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">this_is_a_debug_compile</span><span class="plain">)) {</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="functiontext">PL::Parsing::TestScripts::write_text</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::write_text"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="functiontext">PL::Parsing::TestScripts::TestScriptSub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::TestScriptSub_routine"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="functiontext">PL::Parsing::TestScripts::InternalTestCases_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::InternalTestCases_routine"</span><span class="plain">)</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="functiontext">PL::Parsing::TestScripts::TestScriptSub_stub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::TestScriptSub_stub_routine"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::check</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::check"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::compile"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Kits::Main_defined</span><span class="plain">() == </span><span class="identifier">FALSE</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::invoke_to_begin</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::invoke_to_begin"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::compile_as_needed</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::compile_as_needed"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Strings::compile_responses</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Strings::compile_responses"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::check</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::check"</span><span class="plain">)</span>
@ -558,15 +567,13 @@ list is not exhaustive.
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Relations::compile_defined_relations</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Relations::compile_defined_relations"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::compile_as_needed</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::compile_as_needed"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Strings::TextSubstitutions::allow_no_further_text_subs</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Strings::TextSubstitutions::allow_no_further_text_subs"</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Filters::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Filters::compile"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Chronology::past_actions_i6_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::past_actions_i6_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Chronology::chronology_extents_i6_escape</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::chronology_extents_i6_escape"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Chronology::past_tenses_i6_escape</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::past_tenses_i6_escape"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Chronology::allow_no_further_past_tenses</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::allow_no_further_past_tenses"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Verbs::compile_all</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::compile_all"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Filters::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Filters::compile"</span><span class="plain">)</span>
<span class="plain">}</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Tokens::Filters::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Filters::compile"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">actions_plugin</span><span class="plain">, </span><span class="functiontext">Chronology::past_actions_i6_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::past_actions_i6_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">chronology_plugin</span><span class="plain">, </span><span class="functiontext">Chronology::chronology_extents_i6_escape</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::chronology_extents_i6_escape"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">chronology_plugin</span><span class="plain">, </span><span class="functiontext">Chronology::past_tenses_i6_escape</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::past_tenses_i6_escape"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">chronology_plugin</span><span class="plain">, </span><span class="functiontext">Chronology::allow_no_further_past_tenses</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::allow_no_further_past_tenses"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Verbs::compile_all</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::compile_all"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP_IF</span><span class="plain">(</span><span class="identifier">parsing_plugin</span><span class="plain">, </span><span class="identifier">PL::Parsing::Tokens::Filters::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Filters::compile"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Properties::Measurement::compile_MADJ_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Properties::Measurement::compile_MADJ_routines"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Calculus::Propositions::Deferred::compile_remaining_deferred</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Calculus::Propositions::Deferred::compile_remaining_deferred"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Calculus::Deferrals::allow_no_further_deferrals</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Calculus::Deferrals::allow_no_further_deferrals"</span><span class="plain">)</span>
@ -590,8 +597,8 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_15"></a><b>&#167;4.15. </b><code class="display">
&lt;<span class="cwebmacrodefn">Convert inter to Inform 6</span> <span class="cwebmacronumber">4.15</span>&gt; =
<p class="inwebparagraph"><a id="SP4_16"></a><b>&#167;4.16. </b><code class="display">
&lt;<span class="cwebmacrodefn">Convert inter to Inform 6</span> <span class="cwebmacronumber">4.16</span>&gt; =
</code></p>
@ -612,7 +619,7 @@ list is not exhaustive.
<span class="reserved">else</span>
<span class="identifier">CodeGen::Architecture::set</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"32"</span><span class="plain">);</span>
<span class="plain">}</span>
&lt;<span class="cwebmacro">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.15.1</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.16.1</span>&gt;<span class="plain">;</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*in"</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"*memory"</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*out"</span><span class="plain">), </span><span class="identifier">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">filename_of_compiled_i6_code</span><span class="plain">));</span>
<span class="identifier">codegen_pipeline</span><span class="plain"> *</span><span class="identifier">SS</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
@ -633,27 +640,8 @@ list is not exhaustive.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">SS</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The Inter pipeline description contained errors"</span><span class="plain">);</span>
<span class="identifier">CodeGen::Pipeline::set_repository</span><span class="plain">(</span><span class="identifier">SS</span><span class="plain">, </span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">inter_library</span><span class="plain">);</span>
<span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">bi</span><span class="plain"> =</span>
<span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"basic_inform"</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">bi</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The Basic Inform inter library cannot be found"</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">bi</span><span class="plain">, </span><span class="identifier">inter_library</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">stdr</span><span class="plain"> =</span>
<span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"standard_rules"</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">stdr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The Standard Rules inter library cannot be found"</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">stdr</span><span class="plain">, </span><span class="identifier">inter_library</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">bix</span><span class="plain"> =</span>
<span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"basic_inform_extras"</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">bix</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The The Basic Inform (extras) inter library cannot be found"</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">bix</span><span class="plain">, </span><span class="identifier">inter_library</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">CodeGen::Pipeline::run</span><span class="plain">(</span><span class="identifier">Filenames::get_path_to</span><span class="plain">(</span><span class="identifier">filename_of_compiled_i6_code</span><span class="plain">),</span>
<span class="identifier">SS</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
<span class="identifier">SS</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">, </span><span class="functiontext">Kits::list_of_inter_libraries</span><span class="plain">());</span>
<span class="plain">}</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Back end elapsed time: %dcs\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, ((</span><span class="reserved">int</span><span class="plain">) (</span><span class="identifier">clock</span><span class="plain">() - </span><span class="identifier">front_end</span><span class="plain">)) / (</span><span class="identifier">CLOCKS_PER_SEC</span><span class="plain">/100));</span>
<span class="plain">}</span>
@ -666,8 +654,8 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_15_1"></a><b>&#167;4.15.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.15.1</span>&gt; =
<p class="inwebparagraph"><a id="SP4_16_1"></a><b>&#167;4.16.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.16.1</span>&gt; =
</code></p>
@ -679,25 +667,25 @@ list is not exhaustive.
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4_15">&#167;4.15</a>, <a href="#SP6">&#167;6</a>.</p>
<p class="endnote">This code is used in <a href="#SP4_16">&#167;4.16</a>, <a href="#SP6">&#167;6</a>.</p>
<p class="inwebparagraph"><a id="SP4_16"></a><b>&#167;4.16. </b>Metadata.
<p class="inwebparagraph"><a id="SP4_17"></a><b>&#167;4.17. </b>Metadata.
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Generate metadata</span> <span class="cwebmacronumber">4.16</span>&gt; =
&lt;<span class="cwebmacrodefn">Generate metadata</span> <span class="cwebmacronumber">4.17</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Plugins::Manage::plugged_in</span><span class="plain">(</span><span class="identifier">bibliographic_plugin</span><span class="plain">))</span>
<span class="identifier">PL::Bibliographic::Release::write_ifiction_and_blurb</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
<span class="reserved">natural_language</span><span class="plain"> *</span><span class="identifier">nl</span><span class="plain"> = </span><span class="functiontext">NaturalLanguages::English</span><span class="plain">();</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">index_template</span><span class="plain"> =</span>
<span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">nl</span><span class="plain">-</span><span class="element">&gt;nl_bundle_path</span><span class="plain">,</span>
<span class="plain">(</span><span class="identifier">basic_mode</span><span class="plain">)?(</span><span class="identifier">I</span><span class="string">"Basic.indext"</span><span class="plain">):(</span><span class="identifier">I</span><span class="string">"Standard.indext"</span><span class="plain">));</span>
<span class="functiontext">Kits::index_template</span><span class="plain">());</span>
<span class="functiontext">I6T::interpret_indext</span><span class="plain">(</span><span class="identifier">index_template</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
@ -706,8 +694,8 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_17"></a><b>&#167;4.17. </b><code class="display">
&lt;<span class="cwebmacrodefn">Post mortem logging</span> <span class="cwebmacronumber">4.17</span>&gt; =
<p class="inwebparagraph"><a id="SP4_18"></a><b>&#167;4.18. </b><code class="display">
&lt;<span class="cwebmacrodefn">Post mortem logging</span> <span class="cwebmacronumber">4.18</span>&gt; =
</code></p>
@ -726,8 +714,8 @@ list is not exhaustive.
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_18"></a><b>&#167;4.18. </b><code class="display">
&lt;<span class="cwebmacrodefn">Shutdown and rennab</span> <span class="cwebmacronumber">4.18</span>&gt; =
<p class="inwebparagraph"><a id="SP4_19"></a><b>&#167;4.19. </b><code class="display">
&lt;<span class="cwebmacrodefn">Shutdown and rennab</span> <span class="cwebmacronumber">4.19</span>&gt; =
</code></p>
@ -768,7 +756,7 @@ list is not exhaustive.
<p class="inwebparagraph"></p>
<p class="endnote">The function CoreMain::go_to_log_phase is used in <a href="#SP4_8">&#167;4.8</a>, <a href="#SP4_9">&#167;4.9</a>, <a href="#SP4_10">&#167;4.10</a>, <a href="#SP4_11">&#167;4.11</a>, <a href="#SP4_12">&#167;4.12</a>, <a href="#SP4_13">&#167;4.13</a>, <a href="#SP4_14">&#167;4.14</a>, <a href="#SP4_15">&#167;4.15</a>.</p>
<p class="endnote">The function CoreMain::go_to_log_phase is used in <a href="#SP4_9">&#167;4.9</a>, <a href="#SP4_10">&#167;4.10</a>, <a href="#SP4_11">&#167;4.11</a>, <a href="#SP4_12">&#167;4.12</a>, <a href="#SP4_13">&#167;4.13</a>, <a href="#SP4_14">&#167;4.14</a>, <a href="#SP4_15">&#167;4.15</a>, <a href="#SP4_16">&#167;4.16</a>.</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b></p>
@ -777,7 +765,6 @@ list is not exhaustive.
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::switch</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">arg</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">id</span><span class="plain">) {</span>
<span class="comment">Miscellaneous boolean settings</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">BASIC_CLSW</span><span class="plain">: </span><span class="identifier">basic_mode</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CENSUS_CLSW</span><span class="plain">: </span><span class="identifier">census_mode</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CLOCK_CLSW</span><span class="plain">: </span><span class="identifier">report_clock_time</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CRASHALL_CLSW</span><span class="plain">: </span><span class="identifier">debugger_mode</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="identifier">crash_on_all_errors</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
@ -794,6 +781,7 @@ list is not exhaustive.
<span class="comment">Other settings</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">FORMAT_CLSW</span><span class="plain">: </span><span class="identifier">story_filename_extension</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CASE_CLSW</span><span class="plain">: </span><span class="identifier">HTMLFiles::set_source_link_case</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">KIT_CLSW</span><span class="plain">: </span><span class="functiontext">Kits::request</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">REQUIRE_PROBLEM_CLSW</span><span class="plain">: </span><span class="identifier">Problems::Fatal::require</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PIPELINE_CLSW</span><span class="plain">: </span><span class="identifier">inter_processing_pipeline</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PIPELINE_FILE_CLSW</span><span class="plain">: </span><span class="identifier">inter_processing_file</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
@ -803,7 +791,7 @@ list is not exhaustive.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::get_first_char</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">) != </span><span class="character">'*'</span><span class="plain">) {</span>
<span class="identifier">Errors::fatal</span><span class="plain">(</span><span class="string">"-variable names must begin with '*'"</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
&lt;<span class="cwebmacro">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.15.1</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.16.1</span>&gt;<span class="plain">;</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]), </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]);</span>
<span class="plain">}</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
@ -815,7 +803,7 @@ list is not exhaustive.
<span class="comment">Useful pathnames</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PROJECT_CLSW</span><span class="plain">:</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::includes</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"#2oetMiq9bqxoxY"</span><span class="plain">)) </span><span class="identifier">basic_mode</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::includes</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"#2oetMiq9bqxoxY"</span><span class="plain">)) </span><span class="functiontext">Kits::request</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"BasicInformKit"</span><span class="plain">);</span>
<span class="functiontext">Locations::set_project</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INTERNAL_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_internal</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EXTERNAL_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_external</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
@ -841,10 +829,6 @@ list is not exhaustive.
<span class="identifier">Str::delete_last_character</span><span class="plain">(</span><span class="identifier">inter_processing_pipeline</span><span class="plain">);</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Setting pipeline %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">inter_processing_pipeline</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CoreMain::basic_mode</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">basic_mode</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
@ -857,8 +841,6 @@ list is not exhaustive.
<p class="endnote">The function CoreMain::set_inter_pipeline is used in 26/uo (<a href="26-uo.html#SP11_2">&#167;11.2</a>).</p>
<p class="endnote">The function CoreMain::basic_mode appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 1: Configuration and Control.)</i></li><li><a href="1-cm.html">Continue with 'Core Module'</a></li></ul><hr class="tocbar">
<!--End of weave-->

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>1/cm</title>
<title>1/kts</title>
<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">
@ -64,7 +64,7 @@ progress bar with a rubric beneath it.
<p class="inwebparagraph"></p>
<p class="endnote">The function ProgressBar::update_progress_bar is used in 1/mr (<a href="1-mr.html#SP4_8">&#167;4.8</a>, <a href="1-mr.html#SP4_9">&#167;4.9</a>, <a href="1-mr.html#SP4_10">&#167;4.10</a>, <a href="1-mr.html#SP4_13">&#167;4.13</a>, <a href="1-mr.html#SP4_14">&#167;4.14</a>), 22/cs (<a href="22-cs.html#SP4">&#167;4</a>), 22/ph (<a href="22-ph.html#SP12_1">&#167;12.1</a>).</p>
<p class="endnote">The function ProgressBar::update_progress_bar is used in 1/mr (<a href="1-mr.html#SP4_9">&#167;4.9</a>, <a href="1-mr.html#SP4_10">&#167;4.10</a>, <a href="1-mr.html#SP4_11">&#167;4.11</a>, <a href="1-mr.html#SP4_14">&#167;4.14</a>, <a href="1-mr.html#SP4_15">&#167;4.15</a>), 22/cs (<a href="22-cs.html#SP4">&#167;4</a>), 22/ph (<a href="22-ph.html#SP12_1">&#167;12.1</a>).</p>
<p class="endnote">The function ProgressBar::final_state_of_progress_bar is used in 2/up (<a href="2-up.html#SP2_3">&#167;2.3</a>).</p>
@ -94,7 +94,7 @@ a final status indicator.
<p class="endnote">The function ProgressBar::end_outcome is used in 2/up (<a href="2-up.html#SP2_2">&#167;2.2</a>, <a href="2-up.html#SP2_3">&#167;2.3</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-cm.html">Back to 'Core Module'</a></li><li><a href="1-wel.html">Continue with 'Where Everything Lives'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="1-kts.html">Back to 'Kits'</a></li><li><a href="1-wel.html">Continue with 'Where Everything Lives'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -79,7 +79,7 @@ which create routines which... and so on.
<p class="inwebparagraph"></p>
<p class="endnote">The function Calculus::Propositions::Deferred::compile_remaining_deferred is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Calculus::Propositions::Deferred::compile_remaining_deferred is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Calculus::Propositions::Deferred::compilation_coroutine is used in 22/cs (<a href="22-cs.html#SP14">&#167;14</a>).</p>

View file

@ -68,7 +68,7 @@ all deferral requests are redeemed &mdash; they would then never be reached.
<p class="inwebparagraph"></p>
<p class="endnote">The function Calculus::Deferrals::allow_no_further_deferrals is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Calculus::Deferrals::allow_no_further_deferrals is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Deferral requests. </b>The following fills out the paperwork to request a deferred proposition.
</p>

View file

@ -855,7 +855,7 @@ K, we have also seen its bases.
<p class="inwebparagraph"></p>
<p class="endnote">The function Kinds::RunTime::compile_structures is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Kinds::RunTime::compile_structures is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP16_1"></a><b>&#167;16.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Compile the runtime ID structure for this kind</span> <span class="cwebmacronumber">16.1</span>&gt; =
@ -1057,7 +1057,7 @@ property values, table entries, list items) of pointer-value kinds:
<p class="inwebparagraph"></p>
<p class="endnote">The function Kinds::RunTime::compile_heap_allocator is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Kinds::RunTime::compile_heap_allocator is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP18_1"></a><b>&#167;18.1. </b>By now, we know that we need at least <code class="display"><span class="extract">total_heap_allocation</span></code> bytes on the
heap, but the initial heap size has to be a power of 2, so we compute the
@ -1528,13 +1528,13 @@ each such kind, and needed at run-time.
<p class="endnote">The function Kinds::RunTime::emit appears nowhere else.</p>
<p class="endnote">The function Kinds::RunTime::kind_declarations is used in 1/mr (<a href="1-mr.html#SP4_10">&#167;4.10</a>).</p>
<p class="endnote">The function Kinds::RunTime::kind_declarations is used in 1/mr (<a href="1-mr.html#SP4_11">&#167;4.11</a>).</p>
<p class="endnote">The function Kinds::RunTime::compile_nnci is used in <a href="#SP18_1">&#167;18.1</a>.</p>
<p class="endnote">The function Kinds::RunTime::compile_instance_counts is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Kinds::RunTime::compile_instance_counts is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Kinds::RunTime::compile_data_type_support_routines is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Kinds::RunTime::compile_data_type_support_routines is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP24_1"></a><b>&#167;24.1. </b>A slightly bogus case first. If the source text declares a kind but never
gives any enumerated values or literal patterns, then such values will never
@ -2409,7 +2409,7 @@ Z-machine array space.
<p class="inwebparagraph"></p>
<p class="endnote">The function Kinds::RunTime::I7_Kind_Name_routine is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Kinds::RunTime::I7_Kind_Name_routine is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. </b></p>

View file

@ -293,7 +293,7 @@ For now, though, we make a parallel decision here.
<p class="inwebparagraph"></p>
<p class="endnote">The function Properties::Emit::allocate_attributes is used in 1/mr (<a href="1-mr.html#SP4_11">&#167;4.11</a>).</p>
<p class="endnote">The function Properties::Emit::allocate_attributes is used in 1/mr (<a href="1-mr.html#SP4_12">&#167;4.12</a>).</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Any either/or property which some value can hold is ineligible</span> <span class="cwebmacronumber">3.1</span>&gt; =

View file

@ -183,7 +183,7 @@ definition structure stands incomplete for a while. Filling it in is called
<p class="inwebparagraph"></p>
<p class="endnote">The function Properties::Measurement::validate_definitions is used in 1/mr (<a href="1-mr.html#SP4_11">&#167;4.11</a>).</p>
<p class="endnote">The function Properties::Measurement::validate_definitions is used in 1/mr (<a href="1-mr.html#SP4_12">&#167;4.12</a>).</p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b>Where:
</p>
@ -661,7 +661,7 @@ can't normally be unravelled at compile time.
<p class="inwebparagraph"></p>
<p class="endnote">The function Properties::Measurement::compile_MADJ_routines is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Properties::Measurement::compile_MADJ_routines is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Comparative forms. </b>For timing reasons, these are made all at once, and later than when the headword
adjectives and superlatives are made.

View file

@ -87,7 +87,7 @@ a value with the owner; it isn't that either/or properties are unloved.)
<p class="inwebparagraph"></p>
<p class="endnote">The structure property is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/rv, 14/lv, 14/ds2, 15/ep, 15/vp, 15/cp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure property is accessed in 1/kts, 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/rv, 14/lv, 14/ds2, 15/ep, 15/vp, 15/cp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 25/cii, 26/uo, 26/ts and here.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>The only four properties which have special significance to core Inform
(though plugins are interested in many others):
@ -1084,11 +1084,11 @@ we find it, we compile it and return <code class="display"><span class="extract"
<p class="endnote">The function Properties::emit_single is used in 27/ei (<a href="27-ei.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Properties::emit is used in 1/mr (<a href="1-mr.html#SP4_11">&#167;4.11</a>).</p>
<p class="endnote">The function Properties::emit is used in 1/mr (<a href="1-mr.html#SP4_12">&#167;4.12</a>).</p>
<p class="endnote">The function Properties::emit_default_values appears nowhere else.</p>
<p class="endnote">The function Properties::annotate_attributes is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Properties::annotate_attributes is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Properties::emit_instance_permissions is used in 5/ins (<a href="5-ins.html#SP34">&#167;34</a>).</p>

View file

@ -71,7 +71,7 @@ aren't allowed to add I7-accessible properties.)
<p class="inwebparagraph"></p>
<p class="endnote">The function World::complete is used in 1/mr (<a href="1-mr.html#SP4_11">&#167;4.11</a>).</p>
<p class="endnote">The function World::complete is used in 1/mr (<a href="1-mr.html#SP4_12">&#167;4.12</a>).</p>
<p class="inwebparagraph"><a id="SP1_1"></a><b>&#167;1.1. </b>The model world is a broth with many cooks. On the one hand, we have the
various different INFSs, with their different needs &mdash; a various-to-various
@ -311,7 +311,7 @@ about the Portal, to stand.
<p class="inwebparagraph"></p>
<p class="endnote">The function World::complete_additions is used in 1/mr (<a href="1-mr.html#SP4_12">&#167;4.12</a>).</p>
<p class="endnote">The function World::complete_additions is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="16-in.html">Back to 'Inferences'</a></li><li><a href="16-cmw2.html">Continue with 'Compile Model World'</a></li></ul><hr class="tocbar">

View file

@ -60,7 +60,7 @@ to write anything, then put the same question to the subjects.
<p class="inwebparagraph"></p>
<p class="endnote">The function World::Compile::compile is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function World::Compile::compile is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="16-cmw.html">Back to 'Complete Model World'</a></li><li><a href="16-ic.html">Continue with 'Instance Counting'</a></li></ul><hr class="tocbar">

View file

@ -398,7 +398,7 @@ track of the content of each response.
<p class="inwebparagraph"></p>
<p class="endnote">The function Strings::compile_responses is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Strings::compile_responses is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP7_1"></a><b>&#167;7.1. </b>Note that each rule is allowed to tell us that it already has a better
text for the response than the one we first created.

View file

@ -437,7 +437,7 @@ number <code class="display"><span class="extract">-1</span></code>).
<p class="inwebparagraph"></p>
<p class="endnote">The function Strings::TextLiterals::compile is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Strings::TextLiterals::compile is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Strings::TextLiterals::traverse_lts appears nowhere else.</p>

View file

@ -162,7 +162,7 @@ to do but panic.
<p class="inwebparagraph"></p>
<p class="endnote">The function Strings::TextSubstitutions::allow_no_further_text_subs is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Strings::TextSubstitutions::allow_no_further_text_subs is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b>For some years these were compiled to routines verbosely called
<code class="display"><span class="extract">text_routine_1</span></code> and so on, but no longer:

View file

@ -378,7 +378,7 @@ problem messages out into the open &mdash;
<p class="inwebparagraph"></p>
<p class="endnote">The function Lists::check is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Lists::check is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. </b>That leaves just the compilation of lists at run-time. This used to be a
complex dance with initialisation code interleaved with heap construction,
@ -439,7 +439,7 @@ so there was once a two-page explanation here, but it is now blessedly simple.
<p class="inwebparagraph"></p>
<p class="endnote">The function Lists::compile is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Lists::compile is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP12_1"></a><b>&#167;12.1. </b>These are I6 word arrays, with the contents:
</p>

View file

@ -28,7 +28,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Tables::Support::compile is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Tables::Support::compile is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP1_1"></a><b>&#167;1.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Compile the data structures for entry storage</span> <span class="cwebmacronumber">1.1</span>&gt; =
@ -515,7 +515,7 @@ table values and prints the (title-cased) name of the one which matches.
<p class="inwebparagraph"></p>
<p class="endnote">The function Tables::Support::compile_print_table_names is used in 1/mr (<a href="1-mr.html#SP4_12">&#167;4.12</a>).</p>
<p class="endnote">The function Tables::Support::compile_print_table_names is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="19-tb.html">Back to 'Tables'</a></li><li><a href="19-tod.html">Continue with 'Tables of Definitions'</a></li></ul><hr class="tocbar">

View file

@ -121,7 +121,7 @@ established names of tables and columns:
<p class="inwebparagraph"></p>
<p class="endnote">The function Tables::traverse_to_create is used in 1/mr (<a href="1-mr.html#SP4_9">&#167;4.9</a>).</p>
<p class="endnote">The function Tables::traverse_to_create is used in 1/mr (<a href="1-mr.html#SP4_10">&#167;4.10</a>).</p>
<p class="endnote">The function Tables::visit_to_create appears nowhere else.</p>
@ -148,7 +148,7 @@ see below.
<p class="inwebparagraph"></p>
<p class="endnote">The function Tables::traverse_to_stock is used in 1/mr (<a href="1-mr.html#SP4_10">&#167;4.10</a>, <a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Tables::traverse_to_stock is used in 1/mr (<a href="1-mr.html#SP4_11">&#167;4.11</a>, <a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b>Last and least: a traverse existing just to issue a problem message in a
case which Inform can often cope with, but which the experience of users
@ -177,7 +177,7 @@ suggests is never a good idea.
<p class="inwebparagraph"></p>
<p class="endnote">The function Tables::check_tables_for_kind_clashes is used in 1/mr (<a href="1-mr.html#SP4_12">&#167;4.12</a>).</p>
<p class="endnote">The function Tables::check_tables_for_kind_clashes is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Table basics. </b>The following makes a blank structure for a table, but it isn't valid until
some of these fields have been properly filled in.
@ -1590,7 +1590,7 @@ people &mdash; it needs to be "yourself" instead, since "player" is a variable.
<p class="inwebparagraph"></p>
<p class="endnote">The function Tables::complete is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Tables::complete is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP26_1"></a><b>&#167;26.1. </b>For the actual code, see below.
</p>

View file

@ -46,7 +46,7 @@ predicate associated with each possible table column C.
<p class="inwebparagraph"></p>
<p class="endnote">The structure table_column is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure table_column is accessed in 1/kts, 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>When a column appears in a particular table, this is recorded with the
following structure. Note that it's possible for a kind to be named explicitly,

View file

@ -70,7 +70,7 @@ instance has its own <code class="display"><span class="extract">equation_symbol
<p class="inwebparagraph"></p>
<p class="endnote">The structure equation_symbol is accessed in 2/sq, 2/si, 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 5/nv, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 8/ec, 8/ed, 8/ed2, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/pk, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/pr, 15/ep, 15/vp, 15/cp, 15/spr, 16/is, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
<p class="endnote">The structure equation_symbol is accessed in 1/kts, 2/sq, 2/si, 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 5/nv, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 8/ec, 8/ed, 8/ed2, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/pk, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/pr, 15/ep, 15/vp, 15/cp, 15/spr, 16/is, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>In addition, there are some standing symbols used by all equations: the
constant "pi", for example. They're stored in this linked list:
@ -183,7 +183,7 @@ value <code class="display"><span class="extract">pi</span></code>.
<p class="inwebparagraph"></p>
<p class="endnote">The function Equations::traverse_to_create is used in 1/mr (<a href="1-mr.html#SP4_9">&#167;4.9</a>).</p>
<p class="endnote">The function Equations::traverse_to_create is used in 1/mr (<a href="1-mr.html#SP4_10">&#167;4.10</a>).</p>
<p class="endnote">The function Equations::visit_to_create appears nowhere else.</p>
@ -419,7 +419,7 @@ source text:
<p class="inwebparagraph"></p>
<p class="endnote">The function Equations::traverse_to_stock is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Equations::traverse_to_stock is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b>And, as with creation, <code class="display"><span class="extract">Equations::examine</span></code> is called explicitly in the meaning
list converter when an equation is found inline. So in all cases, we call the
@ -2197,7 +2197,7 @@ for equations a value; they are never called.
<p class="inwebparagraph"></p>
<p class="endnote">The function Equations::compile is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Equations::compile is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP44"></a><b>&#167;44. </b>These identifiers are used to compile equation names as values, so:
</p>

View file

@ -48,7 +48,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure activity is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure activity is accessed in 1/kts, 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure activity_list is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 8/ec, 8/ed, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
@ -461,7 +461,7 @@ noun for it; for example, the "announcing activity".
<p class="endnote">The function Activities::add_variable is used in 9/ma (<a href="9-ma.html#SP3_3_25_1">&#167;3.3.25.1</a>).</p>
<p class="endnote">The function Activities::activity_var_creators is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Activities::activity_var_creators is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Activity indexing. </b></p>
@ -907,15 +907,15 @@ values, of the kind to which the activity applies.
<p class="endnote">The function Activities::emit_activity_list is used in 22/prcd (<a href="22-prcd.html#SP10_5">&#167;10.5</a>).</p>
<p class="endnote">The function Activities::compile_activity_constants is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Activities::compile_activity_constants is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Activities::Activity_before_rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Activities::Activity_before_rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Activities::Activity_for_rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Activities::Activity_for_rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Activities::Activity_after_rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Activities::Activity_after_rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Activities::Activity_atb_rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Activities::Activity_atb_rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Activities::annotate_list_for_cross_references is used in 22/prcd (<a href="22-prcd.html#SP10_5">&#167;10.5</a>).</p>

View file

@ -117,7 +117,7 @@ its outcomes.
<p class="inwebparagraph"></p>
<p class="endnote">The structure named_rulebook_outcome is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/rv, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure named_rulebook_outcome is accessed in 1/kts, 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/rv, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure rulebook_outcome is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 8/ec, 8/ed, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>
@ -608,7 +608,7 @@ can be used in a void context as a sort of return-from-rule phrase.
<p class="endnote">The function Rulebooks::Outcomes::index_outcomes is used in 21/rl2 (<a href="21-rl2.html#SP15">&#167;15</a>).</p>
<p class="endnote">The function Rulebooks::Outcomes::RulebookOutcomePrintingRule is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Rulebooks::Outcomes::RulebookOutcomePrintingRule is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Rulebooks::Outcomes::get_default_value is used in 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>).</p>

View file

@ -85,7 +85,7 @@ see below.
<p class="inwebparagraph"></p>
<p class="endnote">The structure rule is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/prcd, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure rule is accessed in 1/kts, 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/prcd, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
@ -275,8 +275,10 @@ kind is considered to be action-based and resulting in nothing.
<span class="identifier">kind</span><span class="plain"> *</span><span class="functiontext">Rules::to_kind</span><span class="plain">(</span><span class="reserved">rule</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;kind_of_rule</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">basic_mode</span><span class="plain">) </span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">Kinds::binary_construction</span><span class="plain">(</span><span class="identifier">CON_rule</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">Kinds::binary_construction</span><span class="plain">(</span><span class="identifier">CON_rule</span><span class="plain">, </span><span class="identifier">K_action_name</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Plugins::Manage::plugged_in</span><span class="plain">(</span><span class="identifier">actions_plugin</span><span class="plain">))</span>
<span class="identifier">K</span><span class="plain"> = </span><span class="identifier">Kinds::binary_construction</span><span class="plain">(</span><span class="identifier">CON_rule</span><span class="plain">, </span><span class="identifier">K_action_name</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="identifier">K</span><span class="plain"> = </span><span class="identifier">Kinds::binary_construction</span><span class="plain">(</span><span class="identifier">CON_rule</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">;</span>
<span class="plain">}</span>
@ -1371,7 +1373,7 @@ I wonder how useful this really is, but it was much requested at one time.
<p class="endnote">The function Rules::rule_defines_response is used in 17/ts (<a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP4">&#167;4</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>, <a href="17-rs.html#SP7_3_1">&#167;7.3.1</a>, <a href="17-rs.html#SP12_1_1">&#167;12.1.1</a>).</p>
<p class="endnote">The function Rules::check_response_usages is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Rules::check_response_usages is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Rules::now_rule_defines_response is used in 17/rs (<a href="17-rs.html#SP12_1_1">&#167;12.1.1</a>), 26/tti (<a href="26-tti.html#SP7">&#167;7</a>).</p>

View file

@ -673,7 +673,7 @@ built (for instance, scene endings).
<p class="endnote">The function Rulebooks::get_stv_creator_iname is used in <a href="#SP14_1">&#167;14.1</a>.</p>
<p class="endnote">The function Rulebooks::rulebook_var_creators is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Rulebooks::rulebook_var_creators is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP14_1"></a><b>&#167;14.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Make slow lookup routine</span> <span class="cwebmacronumber">14.1</span>&gt; =

View file

@ -50,7 +50,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure stacked_variable is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure stacked_variable is accessed in 1/kts, 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure stacked_variable_list is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ss, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 8/ec, 8/ed, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.</p>

View file

@ -89,7 +89,7 @@ name of a new constant.
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::traverse_for_names is used in 1/mr (<a href="1-mr.html#SP4_9">&#167;4.9</a>).</p>
<p class="endnote">The function Phrases::Manager::traverse_for_names is used in 1/mr (<a href="1-mr.html#SP4_10">&#167;4.10</a>).</p>
<p class="endnote">The function Phrases::Manager::visit_for_names appears nowhere else.</p>
@ -200,7 +200,7 @@ placement later on.
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::traverse is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Phrases::Manager::traverse is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Manager::visit_to_count appears nowhere else.</p>
@ -227,7 +227,7 @@ counting local variables, whose names only exist fleetingly).
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::register_meanings is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Phrases::Manager::register_meanings is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Noon. </b>When the final phrase is registered, the hour chimes. From this point
onwards, there's no longer any text which can't be parsed because some
@ -276,7 +276,7 @@ correctly refer to the most recently mentioned action.
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::parse_rule_parameters is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Phrases::Manager::parse_rule_parameters is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b>We can finally make the automatic placements of rules into rulebooks: so
our "fire alarm rule" will at last be placed in the "Instead" rulebook. The
@ -296,7 +296,7 @@ PHRCDs are used to make sure it appears in the right position.
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::add_rules_to_rulebooks is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Phrases::Manager::add_rules_to_rulebooks is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b>It might seem as if the rulebooks are now complete, but this is not true,
because we still have to take care of manual placements like:
@ -333,7 +333,7 @@ only conditionally, or substituted by other rules.
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::parse_rule_placements is used in 1/mr (<a href="1-mr.html#SP4_13">&#167;4.13</a>).</p>
<p class="endnote">The function Phrases::Manager::parse_rule_placements is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Manager::visit_to_parse_placements appears nowhere else.</p>
@ -363,7 +363,7 @@ adjective definitions.
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::compile_first_block is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Manager::compile_first_block is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP10_1"></a><b>&#167;10.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Count up the scale of the task</span> <span class="cwebmacronumber">10.1</span>&gt; =
@ -549,8 +549,7 @@ points", say). This is where we do it:
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Late Afternoon. </b>Rules are pretty well sorted out now, but we still need to compile some I6
to show how they fit together. These miscellaneous function calls can happen
in any order, as suits the needs of the <code class="display"><span class="extract">Main.i6t</span></code> script, so long as they
all occur in the late afternoon.
in any order, so long as they all occur in the late afternoon.
</p>
<p class="inwebparagraph">First, rules set to go off at a particular time need to have their timings
@ -599,11 +598,11 @@ noted down:
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Manager::rulebooks_array is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Phrases::Manager::compile_rulebooks is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Manager::compile_rulebooks is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="endnote">The function Phrases::Manager::RulebookNames_array is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Manager::RulebookNames_array is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b>And finally, just as the sun slips below the horizon, we compile the code
which prints out values of the kind "rule" at run-time &mdash; for example, taking
@ -621,7 +620,7 @@ printing out "fire alarm rule".
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::RulePrintingRule_routine is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Manager::RulePrintingRule_routine is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Evening. </b>The twilight gathers, but our work is far from done. Recall that we have
accumulated compilation requests for "To..." phrases, but haven't actually
@ -693,7 +692,7 @@ can be called multiple times in the course of the evening.)
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Manager::compile_as_needed is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Manager::compile_as_needed is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="22-itp.html">Back to 'Introduction to Phrases'</a></li><li><a href="22-ph.html">Continue with 'Phrases'</a></li></ul><hr class="tocbar">

View file

@ -41,7 +41,7 @@ own right, a functional-programming sort of device. For example:
<p class="inwebparagraph"></p>
<p class="endnote">The structure constant_phrase is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure constant_phrase is accessed in 1/kts, 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 25/cii, 26/uo, 26/ts and here.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Here we create a new named phrase ("doubling", say):
</p>
@ -188,7 +188,7 @@ an I6 routine name, but no: it compiles to a small array called a "closure".
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Constants::compile_closures is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Constants::compile_closures is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP8_1"></a><b>&#167;8.1. </b>The closure array consists of three words: the strong kind ID, the address
of the routine, and the text of the name. (The latter enables us to print

View file

@ -693,7 +693,7 @@ response to "requests". All other phrases are compiled just once.
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::invoke_to_begin is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::invoke_to_begin is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="22-cs.html">Back to 'Construction Sequence'</a></li><li><a href="22-pu.html">Continue with 'Phrase Usage'</a></li></ul><hr class="tocbar">

View file

@ -59,7 +59,7 @@ valid as values, since a condition is not also a value in Inform 7.
<p class="inwebparagraph"></p>
<p class="endnote">The structure phrase_option is accessed in 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="endnote">The structure phrase_option is accessed in 1/kts, 2/sq, 2/si, 5/ins, 5/nv, 8/ed2, 9/ma, 9/pk, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/pav, 25/cii, 26/uo, 26/ts and here.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Creation. </b>By default, a phrase has no options.
</p>

View file

@ -464,7 +464,7 @@ effects &mdash; see below.)
<span class="string">"the idea is to create new relations.)"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">basic_mode</span><span class="plain">) &amp;&amp; (&lt;</span><span class="identifier">begin</span><span class="plain">-</span><span class="reserved">phrase</span><span class="plain">-</span><span class="identifier">preamble</span><span class="plain">&gt;(</span><span class="identifier">W</span><span class="plain">))) {</span>
<span class="reserved">if</span><span class="plain"> (&lt;</span><span class="identifier">begin</span><span class="plain">-</span><span class="reserved">phrase</span><span class="plain">-</span><span class="identifier">preamble</span><span class="plain">&gt;(</span><span class="identifier">W</span><span class="plain">)) {</span>
<span class="identifier">phud</span><span class="element">.to_begin</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>

View file

@ -91,9 +91,9 @@ defined as "At 9:00 AM: ..." But two values are special:
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Timed::TimedEventsTable is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>), 22/cs (<a href="22-cs.html#SP11">&#167;11</a>).</p>
<p class="endnote">The function Phrases::Timed::TimedEventsTable is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>), 22/cs (<a href="22-cs.html#SP11">&#167;11</a>).</p>
<p class="endnote">The function Phrases::Timed::TimedEventTimesTable is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>), 22/cs (<a href="22-cs.html#SP11">&#167;11</a>).</p>
<p class="endnote">The function Phrases::Timed::TimedEventTimesTable is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>), 22/cs (<a href="22-cs.html#SP11">&#167;11</a>).</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>That's it, really: everything else is just indexing.
</p>
@ -144,7 +144,7 @@ arguably shouldn't block compilation. Then again...
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Timed::check_for_unused is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Phrases::Timed::check_for_unused is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b>And here's the actual index segment.
</p>

View file

@ -182,7 +182,7 @@ the doubled use of colons is unfortunate.)
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::Adjectives::traverse is used in 1/mr (<a href="1-mr.html#SP4_9">&#167;4.9</a>).</p>
<p class="endnote">The function Phrases::Adjectives::traverse is used in 1/mr (<a href="1-mr.html#SP4_10">&#167;4.10</a>).</p>
<p class="endnote">The function Phrases::Adjectives::look_for_headers appears nowhere else.</p>

View file

@ -325,7 +325,7 @@ late to create any further past tense references, so:
<p class="inwebparagraph"></p>
<p class="endnote">The function Chronology::allow_no_further_past_tenses is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Chronology::allow_no_further_past_tenses is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b>The <code class="display"><span class="extract">{-A}</span></code> ("past actions") escape.
A series of <code class="display"><span class="extract">if</span></code> statements checking whether each past-tense action is now
@ -404,7 +404,7 @@ ever tampered with.
<p class="inwebparagraph"></p>
<p class="endnote">The function Chronology::past_actions_i6_routines is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Chronology::past_actions_i6_routines is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b></p>
@ -454,7 +454,7 @@ ever tampered with.
<p class="inwebparagraph"></p>
<p class="endnote">The function Chronology::past_tenses_i6_escape is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Chronology::past_tenses_i6_escape is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<p class="inwebparagraph"><a id="SP7_1"></a><b>&#167;7.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Unpack the past</span> <span class="cwebmacronumber">7.1</span>&gt; =
@ -931,7 +931,7 @@ times".
<p class="inwebparagraph"></p>
<p class="endnote">The function Chronology::chronology_extents_i6_escape is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Chronology::chronology_extents_i6_escape is used in 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="24-sf.html">Back to 'Stack Frames'</a></li><li><i>(This section ends Chapter 24: Compilation Context.)</i></li></ul><hr class="tocbar">

Some files were not shown because too many files have changed in this diff Show more