pdp10-muddle.git
6 years agoPrint instructions to dump TS MUDDLE. ats/its
Adam Sampson [Sun, 22 Apr 2018 22:16:45 +0000 (23:16 +0100)]
Print instructions to dump TS MUDDLE.

The initialisation process now runs to completion, and VALRETs back to
DDT; if you dump a new executable now, it'll pick up at START and give
you a REPL.

6 years agoDisable the "purify high core" CORBLK (dubious).
Adam Sampson [Sun, 22 Apr 2018 22:15:23 +0000 (23:15 +0100)]
Disable the "purify high core" CORBLK (dubious).

It still fails, so leave the pages writable for now.

6 years agoDon't try to purify pages that don't exist (dubious).
Adam Sampson [Sun, 22 Apr 2018 22:12:14 +0000 (23:12 +0100)]
Don't try to purify pages that don't exist (dubious).

This CORBLK call fails. It's trying to make all pages from BOT to the
end of memory read-only; this change should make it only do this to
pages that actually exist. It doesn't work, though.

6 years agoStart the pure segment at 600000, rather than 700000.
Adam Sampson [Sun, 22 Apr 2018 17:56:03 +0000 (18:56 +0100)]
Start the pure segment at 600000, rather than 700000.

There isn't quite enough space for INITM's ILOOP to complete if it's at
700000 (it runs over by about 2000 words, maybe because we've got more
pure code/data in ITS than the TENEX version did). The notes in MUDDLE
suggest it used to be at 600000, so put it there for now, which gives us
plenty of room.

6 years agoMore complete build process in XFILE MUDDLE.
Adam Sampson [Sun, 22 Apr 2018 17:53:29 +0000 (18:53 +0100)]
More complete build process in XFILE MUDDLE.

Build MIDAS and STINK first.

Print STINK/DDT commands to dump the right type of MUDDLE executable at
the end.

6 years agoDon't include SEGAGC.
Adam Sampson [Sun, 22 Apr 2018 17:36:53 +0000 (18:36 +0100)]
Don't include SEGAGC.

It really is for Tenex only, and it defines a bunch of unhelpful global
names.

6 years agoFix .CALL arguments in TTYOPE.
Adam Sampson [Sun, 22 Apr 2018 13:12:42 +0000 (14:12 +0100)]
Fix .CALL arguments in TTYOPE.

There were some extra brackets here that broke it; I guess whoever wrote
it was thinking of the DOTCAL macro.

6 years agoSilence the ENS message I added.
Adam Sampson [Sat, 21 Apr 2018 23:45:28 +0000 (00:45 +0100)]
Silence the ENS message I added.

These warnings about unknown symbols being expunged are harmless, but
MUDDLE produces an awful lot of them...

6 years agoHave MIDAS define the right constant area start symbol.
Adam Sampson [Sat, 21 Apr 2018 23:33:03 +0000 (00:33 +0100)]
Have MIDAS define the right constant area start symbol.

When building MUDDLE, I was seeing 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 should define this
symbol as .; however, it was defining it with the wrong name.

There's a special case in RPWRD1 to output 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.
Modify it to output the squoze instead.

6 years agoBetter fix for the two-word splitting problem.
Adam Sampson [Sat, 21 Apr 2018 16:16:05 +0000 (17:16 +0100)]
Better fix for the two-word splitting problem.

It's now clearer to me how IRCONT is meant to be used: the BKBUF buffer
is BSIZE+5 words long, so it's OK to go a word or too over BSIZE. So
you're meant to set IRCONT before you start adding words, and clear it
*before* you add the last one.

So no need for my extra function; just use IRCONT as intended.

The code in CNSTA wrote its last word with IRCONT still set. I think
this is harmless because it was always the first word in a block anyway,
but fixed anyway.

6 years agoPrevent MIDAS from splitting two-word directives across blocks.
Adam Sampson [Sat, 21 Apr 2018 10:59:08 +0000 (11:59 +0100)]
Prevent MIDAS from splitting 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. The REL documentation doesn't say that you
*can't* do this, but it seems dubious because there's no guarantee that
the next block is of the same type... and STINK 1/201 definitely doesn't
expect it, because it reads the "spilled" second word as the first set
of codebits for the next block.

Fix by checking, before writing a 76 directive, whether there's only one
space left in the buffer; if so, start a new block immediately.

There is a flag (IRCONT) that MIDAS sometimes sets to indicate that it
shouldn't end a block yet for other two-word directives; I tried using
it in this case, but the effect was that it never managed to actually
write the block at all. I'm not entirely convinced that it's right in
the other places where it's used.

This is MIDAS 323. I've not checked other versions of MIDAS for this
problem yet.

6 years agoUpdate STINK script.
Adam Sampson [Fri, 20 Apr 2018 18:59:29 +0000 (19:59 +0100)]
Update STINK script.

6 years ago%XUNA and %XJNA are used by MUDITS.
Adam Sampson [Fri, 20 Apr 2018 15:48:57 +0000 (16:48 +0100)]
%XUNA and %XJNA are used by MUDITS.

I'm assuming they would have been defined here along with %UNAM etc.

6 years ago%CLNCO is Tenex-only.
Adam Sampson [Fri, 20 Apr 2018 15:48:39 +0000 (16:48 +0100)]
%CLNCO is Tenex-only.

6 years agoMULTSG isn't defined on ITS.
Adam Sampson [Fri, 20 Apr 2018 15:48:01 +0000 (16:48 +0100)]
MULTSG isn't defined on ITS.

It's IFE-d out in most places already.

6 years agoMove a missing bracket (dubious).
Adam Sampson [Fri, 20 Apr 2018 15:47:03 +0000 (16:47 +0100)]
Move a missing bracket (dubious).

TIMERR is certainly only used by the Tenex code above, but I'm not sure
if falling through into the next block of code is right on ITS.

6 years agoNTTYP/CLRSTR are Tenex-only.
Adam Sampson [Fri, 20 Apr 2018 15:46:22 +0000 (16:46 +0100)]
NTTYP/CLRSTR are Tenex-only.

This code is adding them to a list of symbols visible to the compiler.

6 years ago%PURMD isn't defined for ITS (it is for Tenex).
Adam Sampson [Fri, 20 Apr 2018 15:45:37 +0000 (16:45 +0100)]
%PURMD isn't defined for ITS (it is for Tenex).

6 years agoAdd MIDAS 323 source.
Adam Sampson [Fri, 20 Apr 2018 13:22:32 +0000 (14:22 +0100)]
Add MIDAS 323 source.

This is the last version we've found that doesn't cause STINK to produce
"Multiply Defined Global" errors.

6 years agoUpdate XFILE MUDDLE.
Adam Sampson [Fri, 20 Apr 2018 13:21:42 +0000 (14:21 +0100)]
Update XFILE MUDDLE.

6 years agoFix TVLOC overflow check.
Adam Sampson [Fri, 20 Apr 2018 13:19:54 +0000 (14:19 +0100)]
Fix TVLOC overflow check.

The .LOP .VALUE here is a link-time assert (.LOP runs an arbitrary
instruction). But the test is the wrong way round -- at the moment,
TVBASE=44000, TVLNT=6000, TVLOC=47560, so overflow hasn't occurred.

The 1973 version of the code uses .LIFL, which makes more sense to me...

6 years agoRemove all the old source files.
Adam Sampson [Fri, 20 Apr 2018 13:11:39 +0000 (14:11 +0100)]
Remove all the old source files.

These aren't needed since we can fix the latest versions.

6 years agoRewrite XMOVEI to SETMI.
Adam Sampson [Fri, 20 Apr 2018 13:06:24 +0000 (14:06 +0100)]
Rewrite XMOVEI to SETMI.

Older versions of MIDAS don't know about XMOVEI (although it would be
a one-word change to the MIDAS binary).

6 years agoDon't use LOCS in two different type definitions (dubious).
Adam Sampson [Thu, 19 Apr 2018 10:58:46 +0000 (11:58 +0100)]
Don't use LOCS in two different type definitions (dubious).

The macros end up EXPUNGing it twice as a result.

6 years agoAdd another missing bracket.
Adam Sampson [Tue, 17 Apr 2018 12:55:01 +0000 (13:55 +0100)]
Add another missing bracket.

6 years agoMake STINK ignore bad EXPUNGEs (with a warning).
Adam Sampson [Mon, 16 Apr 2018 10:52:07 +0000 (11:52 +0100)]
Make STINK ignore bad EXPUNGEs (with a warning).

The same fix needs doing to the current version of STINK.

6 years agoFix a couple of bad EXPUNGEs.
Adam Sampson [Mon, 16 Apr 2018 10:51:11 +0000 (11:51 +0100)]
Fix a couple of bad EXPUNGEs.

I don't think we can easily get rid of all of these...

6 years agoUpdate build scripts.
Adam Sampson [Thu, 12 Apr 2018 11:23:55 +0000 (12:23 +0100)]
Update build scripts.

MUDITS is for ITS; MUDEX is for Tenex.

6 years agoFix STINK for ITS.
Adam Sampson [Thu, 12 Apr 2018 11:16:40 +0000 (12:16 +0100)]
Fix STINK for ITS.

I've checked that this works as far as linking a simple program (two
files, one global symbol).

It's not hugely different from the its repo's STINK 201, although one
obvious thing it's missing is the better error messages: e.g. this
version prints "UND" rather than "Undefined Symbol", and crashes in
situations when 201 would print "bad format".

6 years agoMore fixes for ITS.
Adam Sampson [Wed, 11 Apr 2018 21:12:40 +0000 (22:12 +0100)]
More fixes for ITS.

The latest version of each of the source files now assembles with MIDAS
458, although no version of STINK wants to load the result for anything
that included MUDDLE >.

6 years agoSTINK and XFILE scripts.
Lars Brinkhoff [Mon, 19 Feb 2018 09:27:58 +0000 (10:27 +0100)]
STINK and XFILE scripts.

6 years agoFixes for ITS.
Lars Brinkhoff [Mon, 19 Feb 2018 09:24:44 +0000 (10:24 +0100)]
Fixes for ITS.

6 years agoRename files for ITS. Remove binaries.
Lars Brinkhoff [Wed, 14 Feb 2018 06:53:29 +0000 (07:53 +0100)]
Rename files for ITS.  Remove binaries.

6 years agoManual for ITS Muddle version 54.
Lars Brinkhoff [Mon, 19 Feb 2018 13:49:24 +0000 (14:49 +0100)]
Manual for ITS Muddle version 54.

6 years agoITS Muddle.
Lars Brinkhoff [Sun, 18 Feb 2018 07:14:53 +0000 (08:14 +0100)]
ITS Muddle.

6 years agoTwenex Muddle.
Lars Brinkhoff [Wed, 14 Feb 2018 06:03:37 +0000 (07:03 +0100)]
Twenex Muddle.

6 years agoReadme.
Lars Brinkhoff [Thu, 25 Jan 2018 19:32:37 +0000 (20:32 +0100)]
Readme.