--------- Changes that apply to all library code (Z-Code and Glulx): The definition of NULL has been moved to linklpa, because it's used as the default values of several common properties. (So that they'll be $ffff in Z-Code, and $ffffffff in Glulx.) Also added a constant WORD_HIGHBIT, equal to $8000 or $80000000. This is used in a few places, notably the timer/daemon code. Two instances of "@print_obj o" changed to "print (object) o". This generates the same code, except possibly for a zero-error test. All references to "2" as the wordsize (as in "obj.#prop/2") are changed to "WORDSIZE". This is a compiler-defined constant. The constant 120 (input buffer size) is changed to INPUT_BUFFER_LEN. A few pieces of code that referred to buffer->120 have been changed to the proper range (buffer->0 ... buffer->INPUT_BUFFER_LEN-1). (In particular, the two uses just below .DoOops.) --------- Changes that only apply to Glulx: The "style" command has been replaced with Glk style calls. These take advantage of Glk's more expressive list of styles: Header for the game banner, Subheader for room names, Alert for "You have died" messages, Note for score-changes, BlockQuote for box quotes. Should we really stick with #dict_par and byte values in the dict table? For the moment, yes. Added functions: PrintAnything, PrintAnyToArray, DecimalNumber, KeyCharPrimitive, StatusLineSize. Miscellany message 7 has been changed from ~Undo~ failed. [Not all interpreters provide it.] to [You cannot ~undo~ any further.] in the Glulx code, since if undo fails under Glulx, it is almost certainly because the player tried too many levels of multiple "undo". (The VM will have some way to test if undo is available at all, but this is not yet implemented.) The KeyboardPrimitive() function is now called in three circumstances: main command input, YesOrNo() input, and "Do you want to restart/ restore/quit?" input. (In Z-code, KeyboardPrimitive() is only called for main command input; the others are coded separately.) --------- Changes since 991113: If you "replay" a command file, the commands will be displayed in the window along with the results. Fixed a bug affecting an add_to_scope property that contained an object or array of objects (as opposed to a routine). Added a "glklist" debugging verb: list all Glk objects. Added the InitGlkWindow() entry point. Extended the HandleGlkEvent() entry point to let the game abort or continue player input. Added Evin Robertson's hooks to allow Nitfol debugging; define NITFOL_HOOKS to compile in this code.