1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-19 17:39:17 +00:00

12 Commits

Author SHA1 Message Date
Adam Sampson
6a4633dcc0 Ignore EXPUNGE for nonexistant symbols in REL files.
Most versions of MIDAS emit a 76 directive for each EXPUNGE, even if the
symbol being EXPUNGEd didn't exist. However, STINK treated a 76
directive for a symbol it didn't know about as an error.

Make it ignore the directive instead, skipping the next word to stay in
sync.
2018-04-25 09:32:25 +01:00
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