1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-14 23:55:40 +00:00

508 Commits

Author SHA1 Message Date
Adam Sampson
f5dfd38f16 Build STINK for ITS, fixing broken ITS/TENEX conditionals. 2018-04-25 09:32:25 +01:00
Adam Sampson
f5e54fd700 Define the right symbol at the start of a CONSTANTS area.
Linking Muddle showed various unresolved symbols of the form
"$   42". These are used by MIDAS when it wants to refer to something in
a CONSTANTS area, but doesn't know the location at assembly time (for
example, because it's the other side of a LOC X where X is a global).
At the start of a CONSTANTS area, MIDAS defines this symbol as .;
however, it was defining it with the wrong name.

There's a special case in RPWRD1 to output references to these symbols
as squoze rather than symbol table numbers, but the code in CNST2 that
defines the symbol was using PDEFPT, which always outputs the number.
Make it output the squoze instead.
2018-04-25 09:32:25 +01:00
Adam Sampson
1bb6ced04c Don't split two-word directives across blocks.
When:

- MIDAS is writing a "standard data" block to a REL file;
- it wants to write a 76 (local-to-global/rename/expunge) directive,
  which needs two words of data;
- and there's only one word of space left in the block;

it wrote the first one to the current block, and the second word to the
start of the next block. STINK 1/201 doesn't understand this, and treats
the second word as codebits for the next block, misinterpreting the
directives for that block; this results in missing symbols or junk being
loaded into memory.

For other two-word directives, MIDAS sets the IRCONT flag for all words
except the last one, to prevent the block from being flushed until the
directive is complete. Do the same for 76 directives.

Also fix CNSTA, which unset IRCONT *after* its last word; this was
probably harmless because it will be the first directive in a block so
can't be split.
2018-04-25 09:32:25 +01:00
Adam Sampson
c17ee29314 Understand XMOVEI.
MIDAS 323 doesn't know this opcode by default, but the Muddle source
uses it in ATOMHK and MAIN. Add it to the synonym table.
2018-04-25 09:32:25 +01:00
Lars Brinkhoff
bd0e4ace54 Fix .ALSO syntax, to build with current MIDAS. 2018-04-25 09:32:25 +01:00
Adam Sampson
fae6ae4b56 Import MIDAS 323.
It looks like Muddle was historically built with an early MIDAS: the
1973 Muddle source included a copy of MIDAS 73, and the MDL 106
source included a TENEX MIDAS binary of similar vintage.

Later versions of MIDAS have differences in their REL output which break
Muddle's low/high-segment linking. We don't have source for MIDAS 73.
MIDAS 323 is the latest version we have that supports this scheme
correctly, at least with Muddle's version of STINK.
2018-04-25 09:32:25 +01:00
Adam Sampson
c49c864a1d Encode the MUDSTR constant correctly for ITS evacuate format.
The string is padded with ^? characters, which are skipped when it's
printed.
2018-04-25 09:32:25 +01:00
Adam Sampson
a81db26a7a Rename to ITS conventions.
MIDAS and Muddle source get version numbers (as in the 1973 Muddle
source); the build files don't.
2018-04-25 09:32:25 +01:00
Adam Sampson
8eb73e1b95 Remove old versions of source files. 2018-04-25 09:32:25 +01:00
Adam Sampson
4704058f77 Remove TENEX binaries and temporary files.
Two things to note: the compiled Muddle was called MDL106.EXE, and the
MIDAS binary was earlier than MIDAS 76.

I've left the TENEX build scripts and TENEX-specific files in place;
the TENEX/ITS code is conditional, so it should be possible to build the
code on TENEX/TOPS-20 in the future.
2018-04-25 09:32:25 +01:00
Lars Brinkhoff
30ab750df7 Twenex MDL 106 files. 2018-04-25 09:32:25 +01:00
Lars Brinkhoff
54ac385cb8 LSRPRT - print information about user groups. 2018-04-22 11:41:44 -07:00
Lars Brinkhoff
a6c79ce707 Use TM10B in the newly assembled ITS. 2018-04-16 07:10:00 -07:00
Lars Brinkhoff
ded1e0e18c RABBIT output rejected by COMPLR; disable for now. 2018-04-13 19:59:48 +02:00
Lars Brinkhoff
a400a22ec6 Move SCHINT to QUUX like RABBIT expects. 2018-04-13 19:59:48 +02:00
Lars Brinkhoff
2e58d420dc RABBIT takes a long time to compile. 2018-04-13 19:59:48 +02:00
Lars Brinkhoff
d84c52edb5 Split off parts of build script. Only build basics if BASICS is yes.
There are now separate scripts for: EMACS, LISP (and MACSYMA), SCHEME,
and miscellaneous unessential programs.
2018-04-13 19:59:48 +02:00
Eric Swenson
23f770418e Added SCRMBL/UNSCR. Resolves #802. 2018-04-12 16:21:44 +02:00
Lars Brinkhoff
037ed40c4d Add some LIFE data files. 2018-04-12 06:38:24 +02:00
Adam Sampson
48beabe575 Make FACTOR's help match its behaviour.
The help code is adjusted to handle the new ^G key that FACTOR 26
introduced, and to match case-insensitively when searching FACTOR ORDER.
2018-04-11 14:45:54 +01:00
Adam Sampson
d9169dd71c Fix the inner loop when run from 100.
FACTOR 26 modified the inner loop to run from 100 rather than from the
ACs, with a comment indicating that this was faster on the KL10.

But it didn't have the intended effect; the code modifies itself using
TRC and HRRI, which only have a 4-bit AC field, so the inner loop's step
size wasn't being changed. The factoring algorithm still worked by
chance, because the step size is initialised to 2 and the TRC/HRRI
harmlessly changed A instead, but it had to consider every odd number as
a possible factor.

When the code isn't running from the ACs, there are plenty of spare ACs,
so keep the step size in AC 7 instead for the KL version.
2018-04-11 14:45:54 +01:00
Adam Sampson
5e908804ce Re-add comments from disassembly, and use register names.
Register 5 has names E and DV -- I've used DV where it's being used on
its own as a potential divisor, and E where it's being used as part of
the pair DE for a number.
2018-04-11 14:45:54 +01:00
Adam Sampson
6984267e18 Import RZ;FACTOR 26 source.
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.
2018-04-11 14:45:54 +01:00
Adam Sampson
d1b101b3eb Reformat FACTOR disassembly to match RZ;FACTOR 26.
@larsbrinkhoff found the source for a slightly later version of FACTOR.
This produces the same binary as my original disassembly, but matches
RZ's source where possible, for easier comparison.
2018-04-11 14:45:54 +01:00
Lars Brinkhoff
93879ee82f Zork source code from 1981. From Bob Supnik. 2018-04-10 07:42:53 -07:00
Lars Brinkhoff
1b555896eb Zork source code from 1979. 2018-04-10 07:42:53 -07:00
Lars Brinkhoff
c67abaded0 Build KA ITS with DECtape support and channel 1 multiplexing. 2018-04-10 07:40:40 -07:00
Lars Brinkhoff
282829039f Use separate simulator config file for running newly built ITS.
This enables using a bootstrap ITS with a diffent configuration, such
as device support or channel 1 multiplexing, from the new ITS.
2018-04-10 07:40:40 -07:00
Adam Sampson
c836707a70 Reconstructed source for JOTTO.
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.
2018-04-08 19:37:35 +01:00
Adam Sampson
c257c56f5d WAITS Jotto source from SAILDART.
This is FAIL source, but it started life as MIDAS code for ITS; see in
particular the IFN-d out code for reading the dictionary file (BEG2),
and the RNG initialisation (ERASE). The dictionary is identical to the
one compiled into MC's TS JOTTO.

SAILDART has this source file with the following dates:
1972-11-18 17:58	JOTTO[S,RPH]
1973-06-17 03:54	JOTTO[CSP,SYS]

And the dictionary file with these dates:
1972-10-24 22:50	JOTTO.DIC[S,RPH]
1972-10-25 07:15	JT.DIC[SW,REG]
1973-06-17 03:54	JOTTO.DIC[CSP,SYS]
1987-03-18 08:21	JOTTO.DIC[GRF,DEK]

So it looks like it was ported to WAITS in October/November 1972,
perhaps by Dick Helliwell.
2018-04-08 19:37:35 +01:00
Lars Brinkhoff
322f414d8e Update information about chess programs. 2018-04-06 21:49:41 +02:00
Lars Brinkhoff
6b8457b392 Build PEEK with 340 support.
Prepare for building MAGDMP with 340 support, though it doesn't work yet.
2018-04-03 21:05:28 +02:00
Lars Brinkhoff
c55f3a19a4 Build ITS with 340 support. 2018-04-03 21:05:28 +02:00
Lars Brinkhoff
295cb0a550 Update KA10 simulator with 340 bug fix. 2018-04-03 21:05:28 +02:00
Adam Sampson
dc35210e66 Add FACTOR to list of programs. 2018-04-01 16:20:28 -07:00
Adam Sampson
f3d9ccbb62 Reconstruct source code for FACTOR.
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.
2018-04-01 17:07:13 +01:00
Eric Swenson
880744beca Added build of LIBLSP; VSAID FASL and LIBLSP; TTYVAR FASL.
Resolves #756 and #758.
2018-03-29 08:35:44 -07:00
Lars Brinkhoff
bbc2beba8f Init and update submodule contents if they are empty. 2018-03-27 13:57:15 -07:00
Lars Brinkhoff
9c7c40e19a CHAOS ARPA/NCP/TCP - gateway from Chaosnet to Arpanet/Internet. 2018-03-27 07:05:40 -07:00
Lars Brinkhoff
26e77a8317 SRDATE - set file reference date. 2018-03-27 07:02:07 -07:00
Adam Sampson
15fc94ec81 Remove obsolete mode bit when opening TTY.
@larsbrinkhoff spotted that TS3TTY has a comment listing TTY input open
mode bits which includes:

;3.5 => CONVERT LOWER TO UPPER CASE

This mode bit isn't documented in the similar lists in BITS or CALLS
(they skip from 3.4 to 3.6), and doesn't appear to be implemented
anywhere. However, ITS 785 (circa 1973) has a test for this bit in
TTYO4:

	TRNE D,10	;SKIP ON OLD MODE OFF
	IOR J,[000400,,0]	;OLD MODE INPUT -> CONVERT LOWER CASE TO UPPER

So it looks like when WUMPUS was first written, this bit was how it
handled lower-case input; at some point, ITS stopped supporting this
bit, and WUMPUS was binary-patched to handle lower-case input explicitly
instead.
2018-03-27 11:47:50 +01:00
Lars Brinkhoff
0c4bc45cda Update RABBIT, and compile it with itself.
RABBIT 570 has a (DECLARE (NEWIO T)) form which doesn't go over well
with the latest Maclisp compiler.  The fix is to just delete the
declaration.
2018-03-26 12:36:28 -07:00
Lars Brinkhoff
fa667bf64c RABBIT Scheme compiler, latest MIT version 570 dated June 30 1980.
This version was found in ALAN.  Version 569 in QUUX has timestamp
May 17 1978.
2018-03-26 12:36:28 -07:00
Lars Brinkhoff
de2b2e8439 Build the NSCHSY interpreter. 2018-03-26 12:36:28 -07:00
Lars Brinkhoff
61687e22f0 Update contribution guidelines.
- Add new programs to programs.md.
- Explain that people may make branches in this repository.
- Wait for approval before merging a pull request.
2018-03-26 15:51:19 +02:00
Adam Sampson
9e869769cf Accept "y" and "s" as well as "Y" and "S".
This is equivalent to the binary patch that was applied to
AI:SYS1;TS WUMPUS; the original patch was:

	.IOT TTYI,A	; at 50; jumped to from GETLF
	CAIL A,"a-1
	 SUBI A,"a-"A
	JUMPA T,GETLF+1
	JUMPA T,GETLF+2
	CAIE T,"s	; at 55; jumped to from MOVE2
	 CAIN T,"S
	  JUMPA T,MOVE2+1
	JUMPA T,MOVE2+2
PATCH:			; at 61; not used
2018-03-26 14:09:13 +01:00
Adam Sampson
7d42c5b2f9 Reconstructed source for WUMPUS.
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.
2018-03-26 14:09:13 +01:00
Adam Sampson
e07c3d428a TOPS-20 Hunt the Wumpus source from SRI-NIC.
SRC:<UTILITIES>WUMPUS.MID.2 is dated 1977-09-04 08:55:35 in the source,
and last modified 1979-07-11 20:32 according to the DUMPER logs.
2018-03-26 14:09:13 +01:00
Adam Sampson
f6fa96c6a2 Fix typo in emulator interrupt key. 2018-03-26 13:42:49 +01:00
Eric Swenson
7516530c3d Added several more LSPLIB packages.
Resolves #713.
2018-03-25 10:47:49 +02:00