1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-02 23:14:57 +03:00

syncing from upstream

This commit is contained in:
Zed Lopez 2023-07-02 12:40:31 -07:00
commit 5ac954db3f
31 changed files with 177 additions and 169 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
[Version](notes/versioning.md): 10.2.0-beta+6W67 'Krypton' (26 June 2023)
[Version](notes/versioning.md): 10.2.0-beta+6W68 'Krypton' (28 June 2023)
## About Inform

View file

@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 26 June 2023
Build Number: 6W67
Build Date: 28 June 2023
Build Number: 6W68

View file

@ -460,12 +460,7 @@ and "17" can be equal as texts if X is 17.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. Printing. </b>Unicode is not the native character set on Glulx: it came along as a late
addition to Glulx's specification. The deal is that we have to explicitly
tell the Glk interface layer to perform certain operations in a Unicode way;
if we simply perform <span class="extract"><span class="extract-syntax">print (char) ch;</span></span> then the character <span class="extract"><span class="extract-syntax">ch</span></span> will be
printed in ZSCII rather than Unicode.
</p>
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. Printing. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">TEXT_TY_Say</span><span class="plain-syntax"> </span><span class="identifier-syntax">txt</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">dsize</span><span class="plain-syntax">;</span>

View file

@ -2368,7 +2368,7 @@ available", using the following, which creates a socket. Again, see
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available</span></span>:<br/>Noun Identifiers - <a href="2-ni.html#SP4">&#167;4</a><br/>The Heap - <a href="2-th.html#SP2">&#167;2</a><br/>Kind Declarations - <a href="2-kd.html#SP6">&#167;6</a>, <a href="2-kd.html#SP8">&#167;8</a><br/>Short Names - <a href="2-sn.html#SP1">&#167;1</a>, <a href="2-sn.html#SP2">&#167;2</a><br/>Completion Module - <a href="3-cm.html#SP1_1">&#167;1.1</a>, <a href="3-cm.html#SP1_2">&#167;1.2</a>, <a href="3-cm.html#SP1_6">&#167;1.6</a>, <a href="3-cm.html#SP1_7">&#167;1.7</a><br/>Use Options - <a href="3-uo.html#SP3">&#167;3</a><br/>Activities - <a href="5-act.html#SP3">&#167;3</a><br/>Conjugations - <a href="5-cnj.html#SP1">&#167;1</a><br/>Instances - <a href="5-ins.html#SP4_1">&#167;4.1</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP8">&#167;8</a><br/>Rulebooks - <a href="5-rlb.html#SP3">&#167;3</a>, <a href="5-rlb.html#SP15_3">&#167;15.3</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a>, <a href="5-vrb.html#SP14_1">&#167;14.1</a><br/>Properties - <a href="5-prp.html#SP5">&#167;5</a>, <a href="5-prp.html#SP6">&#167;6</a><br/>Relations - <a href="5-rlt.html#SP1">&#167;1</a>, <a href="5-rlt.html#SP4">&#167;4</a><br/>Kind Constructors - <a href="5-kc.html#SP4">&#167;4</a>, <a href="5-kc.html#SP12">&#167;12</a>, <a href="5-kc.html#SP17_2">&#167;17.2</a>, <a href="5-kc.html#SP30_1_1">&#167;30.1.1</a>, <a href="5-kc.html#SP30_3_2">&#167;30.3.2</a>, <a href="5-kc.html#SP30_3_3">&#167;30.3.3</a>, <a href="5-kc.html#SP30_3_4">&#167;30.3.4</a>, <a href="5-kc.html#SP30_3_5">&#167;30.3.5</a><br/>Actions - <a href="5-act2.html#SP7">&#167;7</a>, <a href="5-act2.html#SP8_2">&#167;8.2</a><br/>Bibliographic Data - <a href="6-bd.html#SP1_1">&#167;1.1</a>, <a href="6-bd.html#SP1_2">&#167;1.2</a>, <a href="6-bd.html#SP1_3">&#167;1.3</a>, <a href="6-bd.html#SP1_4">&#167;1.4</a>, <a href="6-bd.html#SP1_5">&#167;1.5</a>, <a href="6-bd.html#SP2">&#167;2</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP1">&#167;1</a><br/>Command Grammars - <a href="7-cg.html#SP3">&#167;3</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">&#167;9</a><br/>Kind GPRs - <a href="7-kg.html#SP1">&#167;1</a>, <a href="7-kg.html#SP2">&#167;2</a>, <a href="7-kg.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available</span></span>:<br/>Noun Identifiers - <a href="2-ni.html#SP4">&#167;4</a><br/>The Heap - <a href="2-th.html#SP2">&#167;2</a><br/>Kind Declarations - <a href="2-kd.html#SP6">&#167;6</a>, <a href="2-kd.html#SP8">&#167;8</a><br/>Short Names - <a href="2-sn.html#SP1">&#167;1</a>, <a href="2-sn.html#SP2">&#167;2</a><br/>Completion Module - <a href="3-cm.html#SP1_1">&#167;1.1</a>, <a href="3-cm.html#SP1_2">&#167;1.2</a>, <a href="3-cm.html#SP1_6">&#167;1.6</a>, <a href="3-cm.html#SP1_7">&#167;1.7</a><br/>Use Options - <a href="3-uo.html#SP3">&#167;3</a><br/>Activities - <a href="5-act.html#SP3">&#167;3</a><br/>Conjugations - <a href="5-cnj.html#SP1">&#167;1</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP8">&#167;8</a><br/>Rulebooks - <a href="5-rlb.html#SP3">&#167;3</a>, <a href="5-rlb.html#SP15_3">&#167;15.3</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a>, <a href="5-vrb.html#SP14_1">&#167;14.1</a><br/>Properties - <a href="5-prp.html#SP5">&#167;5</a>, <a href="5-prp.html#SP6">&#167;6</a><br/>Relations - <a href="5-rlt.html#SP1">&#167;1</a>, <a href="5-rlt.html#SP4">&#167;4</a><br/>Kind Constructors - <a href="5-kc.html#SP4">&#167;4</a>, <a href="5-kc.html#SP12">&#167;12</a>, <a href="5-kc.html#SP17_2">&#167;17.2</a>, <a href="5-kc.html#SP30_1_1">&#167;30.1.1</a>, <a href="5-kc.html#SP30_3_2">&#167;30.3.2</a>, <a href="5-kc.html#SP30_3_3">&#167;30.3.3</a>, <a href="5-kc.html#SP30_3_4">&#167;30.3.4</a>, <a href="5-kc.html#SP30_3_5">&#167;30.3.5</a><br/>Actions - <a href="5-act2.html#SP7">&#167;7</a>, <a href="5-act2.html#SP8_2">&#167;8.2</a><br/>Bibliographic Data - <a href="6-bd.html#SP1_1">&#167;1.1</a>, <a href="6-bd.html#SP1_2">&#167;1.2</a>, <a href="6-bd.html#SP1_3">&#167;1.3</a>, <a href="6-bd.html#SP1_4">&#167;1.4</a>, <a href="6-bd.html#SP1_5">&#167;1.5</a>, <a href="6-bd.html#SP2">&#167;2</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP1">&#167;1</a><br/>Command Grammars - <a href="7-cg.html#SP3">&#167;3</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">&#167;9</a><br/>Kind GPRs - <a href="7-kg.html#SP1">&#167;1</a>, <a href="7-kg.html#SP2">&#167;2</a>, <a href="7-kg.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::get_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::package_type</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
@ -2376,7 +2376,7 @@ available", using the following, which creates a socket. Again, see
<span class="plain-syntax"> </span><span class="identifier-syntax">Wiring::socket</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span></span>:<br/>Instances - <a href="5-ins.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span></span>:<br/>Instances - <a href="5-ins.html#SP1">&#167;1</a>, <a href="5-ins.html#SP4_1">&#167;4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::get_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::package_type</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>

View file

@ -414,7 +414,7 @@ an instance with an unexpected runtime value is called "out of place".
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::value_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::set_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::clear_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">MAKE_NAME_UNIQUE_ISYMF</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>&#167;4.2. </b>When names are abbreviated for use on the World Index map (for instance,

View file

@ -31,7 +31,7 @@ GLKMAKEFILE = Make.cheapglk
CC = cc
#CC = gcc
OPTIONS = -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-unused -DOS_UNIX
OPTIONS = -g -Wall -Wmissing-prototypes -Wno-unused -DOS_UNIX
# Locate the libxml2 library. You only need these lines if you are using
# the VM_DEBUGGER option. If so, uncomment these and set appropriately.

View file

@ -124,9 +124,9 @@ void execute_loop()
first. They have to be unsigned values, too, otherwise the
0x80000000 case goes wonky. */
if (vals0 < 0) {
val0 = (-vals0);
val0 = (-(glui32)vals0);
if (vals1 < 0) {
val1 = (-vals1);
val1 = (-(glui32)vals1);
value = val0 / val1;
}
else {
@ -137,7 +137,7 @@ void execute_loop()
else {
val0 = vals0;
if (vals1 < 0) {
val1 = (-vals1);
val1 = (-(glui32)vals1);
value = -(val0 / val1);
}
else {
@ -153,13 +153,13 @@ void execute_loop()
if (vals1 == 0)
fatal_error("Division by zero doing remainder.");
if (vals1 < 0) {
val1 = -vals1;
val1 = -(glui32)vals1;
}
else {
val1 = vals1;
}
if (vals0 < 0) {
val0 = (-vals0);
val0 = (-(glui32)vals0);
value = -(val0 % val1);
}
else {
@ -170,7 +170,7 @@ void execute_loop()
break;
case op_neg:
vals0 = inst[0].value;
value = (-vals0);
value = (-(glui32)vals0);
store_operand(inst[1].desttype, inst[1].value, value);
break;
@ -527,7 +527,7 @@ void execute_loop()
vals1 = (vals0) - vals1;
}
else {
vals1 = (-vals1) % vals0;
vals1 = (-(glui32)vals1) % vals0;
}
if (vals1 == 0)
break;
@ -663,7 +663,7 @@ void execute_loop()
else if (vals0 >= 1)
value = glulx_random() % (glui32)(vals0);
else
value = -(glulx_random() % (glui32)(-vals0));
value = -(glulx_random() % (glui32)(-(glui32)vals0));
store_operand(inst[1].desttype, inst[1].value, value);
break;
case op_setrandom:

View file

@ -81,10 +81,10 @@ typedef int16_t glsi16;
/* Some macros to read and write integers to memory, always in big-endian
format. */
#define Read4(ptr) \
( (glui32)(((unsigned char *)(ptr))[0] << 24) \
| (glui32)(((unsigned char *)(ptr))[1] << 16) \
| (glui32)(((unsigned char *)(ptr))[2] << 8) \
| (glui32)(((unsigned char *)(ptr))[3]))
( (glui32)((glui32)((unsigned char *)(ptr))[0] << 24) \
| (glui32)((glui32)((unsigned char *)(ptr))[1] << 16) \
| (glui32)((glui32)((unsigned char *)(ptr))[2] << 8) \
| (glui32)((glui32)((unsigned char *)(ptr))[3]))
#define Read2(ptr) \
( (glui16)(((unsigned char *)(ptr))[0] << 8) \
| (glui16)(((unsigned char *)(ptr))[1]))
@ -195,6 +195,7 @@ extern void (*stream_char_handler)(unsigned char ch);
extern void (*stream_unichar_handler)(glui32 ch);
/* main.c */
extern glui32 init_rng_seed;
extern void set_library_start_hook(void (*)(void));
extern void set_library_autorestore_hook(void (*)(void));
extern void fatal_error_handler(char *str, char *arg, int useval, glsi32 val) GLK_ATTRIBUTE_NORETURN;

View file

@ -14,6 +14,8 @@ glui32 gamefile_len = 0; /* The length within the stream. */
char *init_err = NULL;
char *init_err2 = NULL;
glui32 init_rng_seed = 0;
/* The library_start_hook is called at the beginning of glk_main. This
is not normally necessary -- the library can do all its setup work
before calling glk_main -- but iosglk has some weird cases which
@ -49,7 +51,7 @@ void glk_main()
return;
}
glulx_setrandom(0);
glulx_setrandom(init_rng_seed);
#ifdef FLOAT_SUPPORT
if (!init_float()) {
return;

View file

@ -14,6 +14,19 @@
symbol. Code contributions welcome.
*/
/* Always use Glulxe's random number generator for MacOS and Windows.
For Unix and anything else, it is optional: define
COMPILE_RANDOM_CODE to use it.
*/
#if (defined(OS_MAC) || defined (WIN32)) && !defined(COMPILE_RANDOM_CODE)
#define COMPILE_RANDOM_CODE
#endif
#ifdef COMPILE_RANDOM_CODE
static glui32 lo_random(void);
static void lo_seed_random(glui32 seed);
#endif
#ifdef OS_UNIX
#include <time.h>
@ -45,13 +58,21 @@ void glulx_setrandom(glui32 seed)
{
if (seed == 0)
seed = time(NULL);
#ifdef COMPILE_RANDOM_CODE
lo_seed_random(seed);
#else
srandom(seed);
#endif
}
/* Return a random number in the range 0 to 2^32-1. */
glui32 glulx_random()
{
#ifdef COMPILE_RANDOM_CODE
return (lo_random() << 16) ^ lo_random();
#else
return (random() << 16) ^ random();
#endif
}
#endif /* OS_UNIX */
@ -81,10 +102,6 @@ void glulx_free(void *ptr)
free(ptr);
}
#define COMPILE_RANDOM_CODE
static glui32 lo_random(void);
static void lo_seed_random(glui32 seed);
/* Return a random number in the range 0 to 2^32-1. */
glui32 glulx_random()
{
@ -127,10 +144,6 @@ void glulx_free(void *ptr)
free(ptr);
}
#define COMPILE_RANDOM_CODE
static glui32 lo_random(void);
static void lo_seed_random(glui32 seed);
/* Return a random number in the range 0 to 2^32-1. */
glui32 glulx_random()
{

View file

@ -142,7 +142,7 @@ void stream_num(glsi32 val, int inmiddle, int charnum)
}
else {
if (val < 0)
ival = -val;
ival = -(glui32)val;
else
ival = val;

View file

@ -34,6 +34,7 @@ static void glkunix_game_autorestore(void);
glkunix_argumentlist_t glkunix_arguments[] = {
{ "--undo", glkunix_arg_ValueFollows, "Number of undo states to store." },
{ "--rngseed", glkunix_arg_ValueFollows, "Fix initial RNG if nonzero." },
#if GLKUNIX_AUTOSAVE_FEATURES
{ "--autosave", glkunix_arg_NoValue, "Autosave every turn." },
@ -82,8 +83,9 @@ int glkunix_startup_code(glkunix_startup_t *data)
if (!strcmp(data->argv[ix], "--undo")) {
ix++;
if (ix<data->argc) {
int val = atoi(data->argv[ix]);
if (val <= 0) {
char *endptr = NULL;
int val = strtol(data->argv[ix], &endptr, 10);
if (*endptr) {
init_err = "--undo must be a number.";
return TRUE;
}
@ -92,6 +94,20 @@ int glkunix_startup_code(glkunix_startup_t *data)
continue;
}
if (!strcmp(data->argv[ix], "--rngseed")) {
ix++;
if (ix<data->argc) {
char *endptr = NULL;
int val = strtol(data->argv[ix], &endptr, 10);
if (*endptr) {
init_err = "--rngseed must be a number.";
return TRUE;
}
init_rng_seed = val;
}
continue;
}
#if GLKUNIX_AUTOSAVE_FEATURES
if (!strcmp(data->argv[ix], "--autosave")) {
pref_autosave = TRUE;

View file

@ -75,20 +75,6 @@ interpreters: $(INTERPRETERS)/dumb-frotz/dumb-frotz $(INTERPRETERS)/dumb-glulx/g
# that story files in Z format perform as intended. It's written in old C,
# and is dumb in the sense that it uses a dumb terminal.
GLKLIB = libcheapglk.a
GLKINCLUDEDIR = ../cheapglk
GLKLIBDIR = ../cheapglk
GLKMAKEFILE = Make.cheapglk
CHEAPGLK_OBJS = \
cgfref.o cggestal.o cgmisc.o cgstream.o cgstyle.o cgwindow.o cgschan.o \
cgunicod.o main.o gi_dispa.o gi_blorb.o cgblorb.o
GLULXE_OBJS = main.o files.o vm.o exec.o float.o funcs.o operand.o string.o glkop.o \
heap.o serial.o search.o gestalt.o osdepend.o unixstrt.o accel.o profile.o
CHEAPGLK_HEADERS = cheapglk.h gi_dispa.h
$(INTERPRETERS)/dumb-frotz/dumb-frotz: \
$(INTERPRETERS)/dumb-frotz/*.c \
$(INTERPRETERS)/dumb-frotz/*.h
@ -127,7 +113,7 @@ $(INTERPRETERS)/dumb-glulx/glulxe/glulxe: \
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make clean
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make
cd $(INTERPRETERS)/dumb-glulx/glulxe; make clean
cd $(INTERPRETERS)/dumb-glulx/glulxe; make
cd $(INTERPRETERS)/dumb-glulx/glulxe; make OPTIONS=-g\ -Wall\ -Wno-unused\ -DOS_UNIX\ -UWIN32\ -DCOMPILE_RANDOM_CODE
# Cleaning up:
@ -138,9 +124,9 @@ clean:
.PHONY: purge
purge:
$(call clean-up)
rm -f $(ME)/Tangled/$(ME)
rm -f $(INTERPRETERS)/dumb-frotz/dumb-frotz
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
rm -f $(ME)/Tangled/$(ME)$(EXEEXTENSION)
rm -f $(INTERPRETERS)/dumb-frotz/dumb-frotz$(EXEEXTENSION)
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/glulxe$(EXEEXTENSION)
define clean-up
rm -f $(SANDBOX)/*.o

View file

@ -1,29 +1,29 @@
100.0% in inform7 run
67.6% in compilation to Inter
45.7% in //Sequence::undertake_queued_tasks//
4.6% in //MajorNodes::pre_pass//
3.8% in //MajorNodes::pass_1//
1.5% in //ImperativeDefinitions::assess_all//
1.5% in //RTKindConstructors::compile//
1.1% in //RTPhrasebook::compile_entries//
1.1% in //Sequence::lint_inter//
68.8% in compilation to Inter
46.3% in //Sequence::undertake_queued_tasks//
5.0% in //MajorNodes::pre_pass//
3.6% in //MajorNodes::pass_1//
1.8% in //ImperativeDefinitions::assess_all//
1.4% in //RTKindConstructors::compile//
1.4% in //RTPhrasebook::compile_entries//
1.0% in //Sequence::lint_inter//
0.7% in //ImperativeDefinitions::compile_first_block//
0.7% in //MajorNodes::pass_2//
0.7% in //World::stage_V//
0.3% in //CompletionModule::compile//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //MajorNodes::pass_2//
0.3% in //RTKindConstructors::compile_permissions//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //World::stage_V//
5.3% not specifically accounted for
28.0% in running Inter pipeline
9.6% in step 14/15: generate inform6 -> auto.inf
7.3% in step 5/15: load-binary-kits
5.7% in step 6/15: make-synoptic-module
1.9% in step 9/15: make-identifiers-unique
4.4% not specifically accounted for
26.8% in running Inter pipeline
9.0% in step 14/15: generate inform6 -> auto.inf
6.8% in step 5/15: load-binary-kits
5.4% in step 6/15: make-synoptic-module
1.8% in step 9/15: make-identifiers-unique
0.3% in step 12/15: eliminate-redundant-operations
0.3% in step 4/15: compile-splats
0.3% in step 7/15: shorten-wiring
0.3% in step 8/15: detect-indirect-calls
1.9% not specifically accounted for
3.4% in supervisor
0.8% not specifically accounted for
2.2% not specifically accounted for
3.9% in supervisor
0.4% not specifically accounted for

View file

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

View file

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

View file

@ -404,11 +404,6 @@ This calculates a hash value for the string, using Bernstein's algorithm.
];
@h Printing.
Unicode is not the native character set on Glulx: it came along as a late
addition to Glulx's specification. The deal is that we have to explicitly
tell the Glk interface layer to perform certain operations in a Unicode way;
if we simply perform |print (char) ch;| then the character |ch| will be
printed in ZSCII rather than Unicode.
=
[ TEXT_TY_Say txt ch i dsize;

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformKit",
"version": "10.2.0-beta+6W67"
"version": "10.2.0-beta+6W68"
},
"needs": [ {
"need": {

View file

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

View file

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

View file

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

View file

@ -4,7 +4,7 @@ L sorts to {-7, -7, 0, 2, 3, 5, 11, 16}.
L then reverses to {16, 11, 5, 3, 2, 0, -7, -7}.
L then rotates to {-7, 16, 11, 5, 3, 2, 0, -7}.
L then rotates backwards to {16, 11, 5, 3, 2, 0, -7, -7}.
L sorts randomly to {3, 5, 11, 2, 16, -7, -7, 0}.
L sorts randomly to {3, 16, 2, 11, -7, -7, 0, 5}.
L sorts in reverse order to {16, 11, 5, 3, 2, 0, -7, -7}.
"F" = list of fruits: {apple, pear, orange}
F sorts in size order to {orange, pear, apple}.

View file

@ -1,26 +1,26 @@
"a random fruit" = fruit: yuzu
"a random fruit" = fruit: apple
"a random fruit" = fruit: yuzu
"a random fruit" = fruit: pear
"a random fruit" = fruit: yuzu
"a random fruit between pear and yuzu" = fruit: yuzu
"a random fruit" = fruit: persimmon
"a random fruit between pear and yuzu" = fruit: persimmon
"a random fruit from pear to yuzu" = fruit: yuzu
"a random fruit from pear to yuzu" = fruit: yuzu
"a random number between 10 and 19" = number: 19
"a random fruit between pear and yuzu" = fruit: pear
"a random fruit from pear to yuzu" = fruit: pear
"a random fruit from pear to yuzu" = fruit: pear
"a random number between 10 and 19" = number: 17
"a random number between 10 and 19" = number: 16
"a random number between 10 and 19" = number: 13
"a random number from 10 to 19" = number: 10
"a random number from 10 to 19" = number: 14
"a random number from 10 to 19" = number: 11
"a random number from 10 to 19" = number: 13
"a random number from 10 to 19" = number: 13
"a random number from 10 to 19" = number: 12
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
"whether or not a random chance of 1 in 3 succeeds" = truth state: true
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
"a random number between 1 and 100" = number: 2
"a random number between 1 and 100" = number: 54
"a random number between 1 and 100" = number: 36
"a random number between 1 and 100" = number: 2
"a random number between 1 and 100" = number: 54
"a random number between 1 and 100" = number: 36
"whether or not a random chance of 1 in 3 succeeds" = truth state: true
"a random number between 1 and 100" = number: 26
"a random number between 1 and 100" = number: 66
"a random number between 1 and 100" = number: 75
"a random number between 1 and 100" = number: 26
"a random number between 1 and 100" = number: 66
"a random number between 1 and 100" = number: 75

View file

@ -11,90 +11,90 @@ This is Summer.
This is Autumn.
This is Winter.
This is Spring.
This is a rainy day.
This is a rainy day.
This is a scorching hot day.
This is a cloudy day.
This is a cloudy day.
This is a cloudy day.
This is a cloudy day.
This is a cloudy day.
This is a cloudy day.
This is a cloudy day.
This is a cloudy day.
This is a cloudy day.
This is a rainy day.
This is a cloudy day.
This is a rainy day.
This is a rainy day.
This is a sunny day.
This is a cloudy day.
This is a rainy day.
This is a cloudy day.
This is a rainy day.
This is a scorching hot day.
This is a rainy day.
This is a sunny day.
This is a rainy day.
This is a cloudy day.
This is a cloudy day.
This is a rainy day.
This is a cloudy day.
Clearly it's Epitaph.
Clearly it's Level Five.
Clearly it's Nuages.
Clearly it's Lizard.
Clearly it's Starless.
Clearly it's Level Five.
Clearly it's Fracture.
Clearly it's Lizard.
Clearly it's Level Five.
Clearly it's Starless.
Clearly it's Level Five.
Clearly it's Lizard.
Clearly it's Epitaph.
Clearly it's Fracture.
Clearly it's Lizard.
Clearly it's Epitaph.
Clearly it's Lizard.
Clearly it's Nuages.
Clearly it's Lizard.
Clearly it's Epitaph.
Clearly it's Starless.
Clearly it's Epitaph.
Clearly it's Nuages.
Clearly it's Epitaph.
The digit is 2.
Clearly it's Starless.
Clearly it's Epitaph.
Clearly it's Lizard.
Clearly it's Fracture.
Clearly it's Lizard.
Clearly it's Nuages.
The digit is 3.
The digit is 1.
The digit is 5.
The digit is 2.
The digit is 4.
The digit is 4.
The digit is 1.
The digit is 3.
The digit is 1.
The digit is 4.
The digit is 3.
The digit is 2.
The digit is 5.
The letter is A.
The letter is A.
The letter is A.
The letter is A.
The light changes randomly again; now it's red.
The light changes randomly again; now it's green.
The light changes randomly again; now it's red.
The letter is B.
The letter is B.
The letter is B.
The letter is B.
The light changes randomly again; now it's green.
The light changes randomly again; now it's amber.
The light changes randomly again; now it's green.
The light changes randomly again; now it's amber.
The light changes randomly again; now it's green.
The coin comes up tails.
The coin comes up tails.
The coin comes up heads.
The coin comes up heads.
The coin comes up tails.
The coin comes up heads.
The coin comes up tails.
The coin comes up heads.
Maybe the murderer is Colonel Mustard.
Maybe the murderer is Professor Plum.
Maybe the murderer is Cardinal Cerise.
Maybe the murderer is Colonel Mustard.
Maybe the murderer is Cardinal Cerise.
Maybe the murderer is Professor Plum.
Maybe the murderer is Cardinal Cerise.
Maybe the murderer is Professor Plum.
Maybe the murderer is Colonel Mustard.
Maybe the murderer is Cardinal Cerise.
Maybe the murderer is Professor Plum.
Maybe the murderer is Colonel Mustard.
Maybe the murderer is Cardinal Cerise.
Maybe the murderer is Colonel Mustard.
Maybe the murderer is Professor Plum.
Maybe the victim is Colonel Mustard.
Maybe the victim is Professor Plum.
Maybe the victim is Cardinal Cerise.
Maybe the victim is Colonel Mustard.
Maybe the victim is Cardinal Cerise.
Maybe the victim is Professor Plum.
Maybe the victim is Professor Plum.
Maybe the victim is Cardinal Cerise.
Maybe the victim is Colonel Mustard.
Maybe the victim is Professor Plum.
Maybe the victim is Cardinal Cerise.
Maybe the victim is Cardinal Cerise.
Maybe the victim is Cardinal Cerise.
Maybe the victim is Professor Plum.
Maybe the victim is Cardinal Cerise.
Maybe the victim is Colonel Mustard.
The screen door squeaks surprisingly loudly.

View file

@ -491,10 +491,10 @@ Table of Zoggle
(row 4) | 4.4 |
Table of Selected Numbers
(row 1) | 9 | nine |
(row 2) | 154 | one hundred and fifty-four |
(row 3) | 3 | three |
(row 4) | 4 | four |
(row 5) | 27 | twenty-seven |
(row 2) | 27 | twenty-seven |
(row 3) | 4 | four |
(row 4) | 3 | three |
(row 5) | 154 | one hundred and fifty-four |
(row 6) | -- --
(row 7) | -- --
(row 8) | -- --

View file

@ -1 +1 @@
-dataresourcetext '3:inform7/Tests/Test Filings/_internal_files/Nettles.txt'
-dataresourcetext "3:inform7/Tests/Test Filings/_internal_files/Nettles.txt"

View file

@ -345,7 +345,7 @@ void RTInstances::set_translation(instance *I, text_stream *identifier) {
inter_name *iname = RTInstances::value_iname(I);
InterNames::set_translation(iname, identifier);
InterNames::clear_flag(iname, MAKE_NAME_UNIQUE_ISYMF);
Hierarchy::make_available(iname);
Hierarchy::make_available_one_per_name_only(iname);
}
@ When names are abbreviated for use on the World Index map (for instance,

View file

@ -82,7 +82,7 @@
show: $A
match text: $A $I
match platform text: $A $I
or: 'produced incorrect output'
-end
@ -110,10 +110,10 @@
show: $A
match text: $AA $IA
match platform text: $AA $IA
or: 'produced incorrect output on A'
match text: $AB $IB
match platform text: $AB $IB
or: 'produced incorrect output on B'
-end

View file

@ -6,14 +6,14 @@ Gelato's Syndrome. It's struck, and it's struck hard. In these sticky summer mon
Patient Zero
An Interactive Fiction
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
Alfred Cralle Pool Hall
The town's most popular gathering-place, the pool hall is decorated in honor of the inventor of the ice cream scoop.
An air conditioner sits in the corner, unhappily inert.
You can see Lewis and Linnea here.
You can see Lewis and Linnea here. The latter looks as though dipped in french vanilla.
>(Testing.)
@ -58,7 +58,7 @@ Vanessa watches serenely as the metal door slides automatically back in place, s
>[6] ask vanessa for french vanilla
"Do you have a coupon?" Vanessa demands. You admit you do not. "No french vanilla for you!"
Antony trades in the coupon and receives a chocolate chip ice cream cone from Vanessa.
Antony trades in the coupon and receives a blackberry sorbet ice cream cone from Vanessa.
>[7] ask vanessa for chocolate
"Do you have a coupon?" Vanessa demands. You admit you do not. "No chocolate for you!"
@ -77,6 +77,6 @@ Vanessa watches serenely as the metal door slides automatically back in place, s
>[9] ask vanessa for chocolate chocolate chip
"Do you have a coupon?" Vanessa demands. You admit you do not. "No chocolate chocolate chip for you!"
Martin trades in the coupon and receives a dulce de leche ice cream cone from Vanessa.
Martin trades in the coupon and receives a rocky road ice cream cone from Vanessa.
>Are you sure you want to quit?

View file

@ -4,7 +4,7 @@
The Speed of Thought
An Interactive Fiction
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
Science Journalism Desk
From here you, the Science Anchor, have the privilege of reporting the latest and most fascinating stories to an eager public.
@ -14,19 +14,19 @@ Currently you have to report on the International Space Station. Your story coul
>(Testing.)
>[1] report experiment module
You turn to the camera and speak: "The experiment module has a length of about 7.34211 bathtubs."
You turn to the camera and speak: "The experiment module has a length of roughly 7.34211 bathtubs."
>[2] report logistics
"The logistics module has a length of roughly 2.76974 bathtubs." Right now the station will be cutting over to a visual of that.
"The logistics module has a length of approximately 2.76974 bathtubs." Right now the station will be cutting over to a visual of that.
>[3] report height
Turning to another camera angle, you add: "The station orbits at heights between about 627.53949 Empire State buildings and 1038.37476 Empire State buildings above the earth."
Turning to another camera angle, you add: "The station orbits at heights between around 627.53949 Empire State buildings and 1038.37476 Empire State buildings above the earth."
>[4] report array
"The solar array has a length of around 1.16 Olympic swimming pools and an area of about 125.0 queen-sized mattresses." Pity the kids in audiovisual who have to scare that image together in a hurry.
"The solar array has a length of approximately 1.16 Olympic swimming pools and an area of about 125.0 queen-sized mattresses." Pity the kids in audiovisual who have to scare that image together in a hurry.
>[5] report solar cell
"The individual solar cell has an area of roughly 0.17391 credit cards." You smile brightly.
"The individual solar cell has an area of approximately 0.17391 credit cards." You smile brightly.
And that's all! The channel cuts to weather.

View file

@ -4,7 +4,7 @@
M. Melmoth's Duel
An Interactive Fiction
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
Saint-Germain-des-Prés
Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haunted sort, you once again find yourself outside M. Melmoth's hotel. Today crowds of vulgar children play chase around the lampposts, and you long to be indoors.
@ -16,7 +16,7 @@ Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haun
Hôtel d'Alsace
Typical. Oscar writes you a letter announcing his own imminent demise - "My wallpaper and I are fighting a duel to the death. One or other of us has got to go." - and then you get there and he's out, no doubt procuring paint the colour of absinthe, if he isn't procuring the painter.
In this light, the wallpaper has a distinctly aquamarine wash.
In this light, the wallpaper has a distinctly darkish purple wash. You particularly dislike purple.
>[2] out
You leave, shaking your head. But within twenty-four hours, you are back, as you always knew you would be.
@ -30,7 +30,7 @@ Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haun
Hôtel d'Alsace
Typical. Oscar writes you a letter announcing his own imminent demise - "My wallpaper and I are fighting a duel to the death. One or other of us has got to go." - and then you get there and he's out, no doubt procuring paint the colour of absinthe, if he isn't procuring the painter.
In this light, the wallpaper has a distinctly green wash.
In this light, the wallpaper has a distinctly aquamarine wash.
>[5] out
You leave, shaking your head. But within twenty-four hours, you are back, as you always knew you would be.