TENEX sharable save file

From Computer History Wiki
Revision as of 12:01, 2 April 2022 by Larsbrinkhoff (talk | contribs) (Document the TENEX sharable save file format.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

TENEX uses.SAV files that are distinct from TOPS-10 .SAV and TOPS-20 .EXE files. A TENEX .SAV file can also be the TOPS-10 nonsharable/compressed format.

CREATING A SHARABLE SAVE FILE

These files are written in EXEC using the command

@SSAVE (PAGES FROM) N (TO) N, (FROM) N (TO) N ... (ON) FILE

TOPS-20 still retains support for loading this format.

OVERVIEW

The file format consists of three sections:

  1. Page map, which is two pages.
  2. Data pages.
  3. Symbol table.

All pages are 512 (decimal) words.

PAGE MAP

The first word in the page map is:

0-17 18-35
001000 Count of map words to follow

Then follow count page map words:

0-8 9-17 18-35
Access Virtual memory page File page

Page numbers, both virtual and file, are normally ordered by increasing number. File pages start at 2. Pages which are unmapped (or all zero?) are not written to the map or data pages.

Access bits:

Bit Meaning
0 Write copy request - sets copy on write bit (9)
2 Read allowed
3 Write allowed
4 Execute allowed
8 Trap to user

Bit 0 is moved to bit 9 in the access bits which is then passed to the PMAP JSYS in AC3.

Finally follows a start instruction, normally JRST:

0-17 18-35
254000 Start address.

The remaining space in this section is unused and should be zero.

DATA PAGES

Data pages follow and are mapped as per above. The section ends with the highest numbered file page in the map.

SYMBOL TABLE

After the last mapped page comes a symbol table, which is alternating words of SQUOZE symbol name and 36-bit symbol value.

REFERENCES

I (Larsbrinkhoff (talk)) have not found any documentation specifying this file format. This information was reverse engineered by reading the TENEX monitor source code, in particular the code at SGET. It was verified against archived .SAV files.