Since we're interacting with ITS through the system console, one cause
of build failures is the messages the system job prints to the console
at unpredictable times -- for example, periodic timestamps and
notifications of changes to files in system directories. If one of these
gets printed while we're expecting something else, it's hard for the
Expect script to recover.
Avoid this by patching STYO, the system job's character-printing
routine, to return without doing anything if this system is up.
Adjust the pdset routine so it's matching PDSET's output rather than the
system job's to tell when the time has been set.
Doing expect_after before a child process has been spawned causes Expect
to try reading from stdin. If stdin is /dev/null, it gets an EOF from
the read, assumes it's been closed... and closes stdout too, so we don't
see any more of the child process interaction.
Resolves#1125. This reverts the compilation of TRANSS and uses the
FASL file from MC. I'll have to figure out what is wrong with the
source/compilation in another ticket.
Trying to match the list output from these functions, without also
matching the "; Loading" messages from Lisp, is difficult to do reliably
in expect (as demonstrated by a series of test builds on a slowish VM).
Instead, use a marker ("=Build=") that won't appear in the output.
The DB and KA configurations have different console terminal widths, and
format these lists differently: DB puts a space after the right bracket,
and KA doesn't, so the build was hanging here on KA.
Modifying some of the sources has changed these from the values
previously in lisp.tcl and build.tcl; it now matches any string of
numbers on a line by itself (optionally with "." and spaces afterwards).
After typing (todo) or (todoi), wait for the string ") \r" to appear.
This signals the end of of a list printed right before reading new
input from the console.
The MDL 54/104 and 55/105 manuals give the name SYS:TS MDL for the
interpreter, and a comment in MAIN says it was TS MUDDLE, so install
links for both.
Differences from AI's TS FACTOR:
- KL10 define to put the TEST inner loop code at 100 rather than in the
registers -- ";;KL10 RUNS SLOWER IN ACS".
- Lookup table for commands, including uppercase and lowercase.
- A new "quit" command.
- Mixed-case messages.
- System calls modernised a bit; .CALL /OPEN/ rather than .SUSET/.OPEN,
and not opening the TTY in DDT mode.
Differences from the WAITS code:
- Converted back to MIDAS syntax.
- Reconstructed the ITS I/O code. Like WUMPUS, this originally opened
the TTY with the 20 flag set to convert input to uppercase, and was
later binary-patched to do the conversion itself (and convert output
to lowercase). The program had a PATCH area originally, so I've
included the patches in the source.
- The ITS version BLTs the jot-counting code into the registers and runs
it from there. The WAITS version has the BLT commented out and just
runs it from the BLTLOC buffer directly.
The TS JOTTO binary on AI/MC (dated 1990-08-14, although it's probably
much older than that) has been dumped after loading the dictionary. When
re-entered at BEG0, the original code asks for a DECtape number to read
the dictionary from, and constructs a UTx device name based on that in
UTNAME. However, in TS JOTTO, UTNAME contains DSK, so it must have been
dumped by patching that device name in directly; I've reproduced this in
build.tcl.
After the dump process, this produces a binary identical to TS JOTTO
except for the contents of the game variables. For the record, when
MC's version was last played before dumping, the computer chose the word
PETAL.
Fixes#789.
This is based on a disassembly of the binary AI:SYS1;TS FACTOR; the
binary and its help file .INFO.;FACTOR ORDER are both dated 1977-09-27.
MC had an identical copy with a later date.
This assembles into a binary that's identical to the original, except
that the original version has all its symbols marked as global, and no
assembly info.
Fixes#96.
AI:SYS1;TS WUMPUS was last modified 1977-04-12 18:16. It's closely
related to SRI-NIC's version, but it's unclear which is newer, or
whether they both derive from a common source.
This assembles into a binary that's identical to TS WUMPUS, except for
jumps from GETLF and MOVE2 to two binary patches at 50 and 55 which make
input case-insensitive.
(Note that EXPL ends with a bare \r, which is encoded as \356 here for
itstar's benefit.)
Fixes#108.