Booting SINTRAN III

From NDWiki
Revision as of 16:38, 9 October 2016 by Tingo (talk | contribs) (→‎Startup scripts: change INITIAL COMMAND into the SINTRAN command INITIAL-COMMAND)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Terminology

When starting SINTRAN III, the important parts are stored in three different areas, called 'save area', 'image area', and 'resident memory'. save area is on the system disk. image area is also on the system disk, in a different place. memory is physical NORD-10/ND-100 memory.

  • A cold start copies the SINTRAN save area to the SINTRAN image area.
  • A warm start copies the SINTRAN image area to memory, and SINTRAN starts.

Startup scripts

Two 'batch files' (mode files), or scripts, as we would refer to them today, are linked to respectively cold start and warm start. They are traditionally named as follows:

  • HENT-MODE:MODE is manually executed after a cold start
  • LOAD-MODE:MODE is automatically executed after a warm start, by being defined as an INITIAL-COMMAND in the HENT-MODE:MODE file.

Installation, cold start, warm start

SINTRAN III is normally started with a warm start. A cold start is performed whenever a 'fresh' copy of SINTRAN is needed, e.g. when patches to the image area have to be modified or removed. The save area used for cold start is updated by a fresh SINTRAN installation from floppy.

Patching SINTRAN

Patching SINTRAN III is very common. Patches can be installed in three places, depending on how permanent the patches should be.

  • Patches in memory only survive until the next warm start.
  • Patches in the image area survive until the next cold start.
  • Patches in the save area are permanent, as they also survive cold starts.

When installing SINTRAN III from floppies, the final step is usually to install the latest official patch file from Norsk Data. These patches are normally installed on the save area, thus they become permanent and will only have to be installed once.

"Local" patches created on-site would usually be installed either in the image area (where they will survive until the next cold start), or in memory. If the image area is patched, this would normally be done from the HENT-MODE:MODE file, which is manually executed after a cold start. An example:

@CC * Patch MON UDMA to accept function 77b : *
@DMAC
)CLEAR
..
% - Get first free address to place patch code on RPIT:
% -(Get the address from Image, not Save-area or memory)
)CLOAD S3IMAGE
% -- )CLOAD 0 would have picked the address from Resident memory
% - Place a routine to accept function 77b on RPIT: (Image)
)CLOAD S3IRPIT
32/FUN77=^  % FUN77 now points to the start of the free area:
FUN77:
%
FUN77/SAT 77         % Func = 77b ?
      SKP DA UEQ ST
      JMP OK         % Yes, go OK
      SAA 174        % No, illegal parameter (ErrCode 174b)
      JMP I * 4      % Go ERR  (error handler last in MON UDMA)
..

(the code would later go on to insert a hook into the code above, from MON UDMA. All on the physical image area on the disk.)

Patches to the memory (or resident) area are usually more transient in nature, e.g. patches to change the baud rate of terminals. But it's also perfectly possible to install local patches that change the system (e.g. the mon call patch above) to affect the resident memory copy, and not the image area. Such a patch would be installed from the LOAD-MODE:MODE file instead of HENT-MODE:MODE, and with the correct parameters to affect the area to be patched (memory, not image). This would typically be done during the development stage of a patch. When finished, the patch would be modified to affect the image area, and the patching would be moved so that it's performed from HENT-MODE:MODE instead of LOAD-MODE:MODE, i.e. the patch would only be installed whenever a new cold start was necessary.

See also