Table of Contents

Installation (NOS 2.8.7)

A Step-by-Step Guide to Installing NOS 2.8.7 on a CYBER-865 from “Scratch”

Item Description
Author: Nick Glazzard
Date: August/September 2019
Cataloged: in CODEX: 20190911
Edited: Steve Zoppi

Acknowledgements

William Schaub for the direct contributions of a Y2K “patch” process (using Paul Koning's original work), discovering the X.MS “Manage System” procedures and for information on building Cyber Kermit (with an easy to install version too).

Many contributors to the Controlfreaks mailing list. Much vital information is in there. Particularly useful were posts from Tom Hunter, Paul Koning, Kevin Jordan, Digby Tarvin and Gerard van der Grinten.

Any errors in what follows are mine … :-)

Introduction

I've always wanted to be able to install NOS “from scratch” on a fresh DtCyber system, but I have never managed to do it in the past. Last try was about 12 years ago, so it was time to try again.

Note that there is no really good reason to do this. There are “ready to run” systems on the Controlfreaks website for NOS 2.8.1 and NOS 2.8.7 with Plato, built by Tom Hunter and Paul Koning.

However, doing it yourself gives you the feeling you understand the system better. At least, that's my feeling … :-)

You can also modify things to have any (reasonable) hardware configuration: more disks, tapes, etc.

I think it will take most of a day to perform the steps below. Working out the steps took a great deal longer, so I'm not really sure how quickly it could be done by following “the recipe”.

In theory, everything is documented in:

(Below, this document is referred to as the N.I.H.).

However, there are “issues” in practice.

Steps 1 to 3 are fine (with some pretty obvious adjustments).

Step 4: Bring Up a Network Terminal – This is where the trouble starts.

DtCyber in principle follows the NAM/CCP path in there. But, because only enough of the NPU and CCP is emulated to support terminals, and the default network configuration files try to start RBF, FTP, PSU … etc. … typing:

  NAM.
  IAF.

as specified there will definitely not work.

Tom Hunter and Paul Koning sorted out a network definition file and a network startup file which will provide 16 terminals and not try to start things that can't work. They did this when they first implemented an emulation with a working async TIP. These files must be installed. I have used a combination of batch jobs and DIS to do this.

The starting point for the installation is to use DECK 17 (2000K CM, 0 ESM, 885-12 disks on units 40 & 41) as a starting point. Almost everything in there is overridden, however, so maybe that wasn't a great place to start.

Another thing is what “from scratch” really means. At this point in time, we have a small number of “release tapes” that were prepared by CDC Arden Hills Operations (I think) long ago … The contents of the tape is what some customer ordered. The NOS 2.8.7 we have includes nice things like APL which don't appear to be available as separate products in any easily found form. “From scratch” means using a matched deadstart tape and set of “distribution” tapes as prepared for some customer at some point in the past.

The original deadstart tape has already been altered by Paul Koning for DtCyber because it specified a GE tape format which MT669s don't support, so it had to be changed to specify PE format. Also, it may have had double tape marks originally, which had to be removed. There may have been some other changes too (e.g. the name CYBER1 appears in several places).

What follows is pretty much a record of the successful steps I've made in this project. Many unsuccessful steps have been omitted!

Quite a lot of trial and error was involved, and much use was made of material found in the Controlfreaks mailing list. This answered most questions, actually, after some head scratching.

AFAICT, this has resulted in a correctly working NOS 2.8.7 on CYBER 865 system. Although I'm not 100% confident about that!

However, I really don't know how to configure UEM (and related matters) on the 865. The NOS 2 Analysis Handbook Revision D (1984) doesn't seem to mention UEMIN., for example … although my ignorance is deeper than that!

Procedures

1 - Pre-Installation

1.1 - Gather the "distribution materials"

StepFile Description
a. cy871b.tap.bz2 Initial deadstart tape for 2.8.7 (871), as modified by Paul Koning.
b. nos287-1.tap.gz First NOS permanent files distribution tape.
c. nos287-2.tap.gz Second NOS permanent files distribution tape.
d. nos287-3.tap.gz Third NOS permanent files distribution tape.
e. y2k.tap.gz Y2K patches tape.
f. network-batch.txt * Batch job for network: Makes NCF and LCF from NDL configuration file.
g. network-start.txt * Batch job for network: Changes NAMSTRT to start only viable components.
h. pli_compiler.tap PL/I compiler installation tape.
i. modset-1tm-1tn-batch.txt * Batch job to copy Kevin Jordan's 1TM/1TN patches to INSTALL catalog.
j. y2k-altfix-batch.txt * Alternative Y2K patch batch job (NOS core components only).
k. jobtdu.txt * Batch job to copy terminal definition for TeraTerm Pro to disk.
l. NOS_2_Installation_Handbook_60459320L_Dec88.pdf NOS Installation Handbook (Rev L)
m. NOS_Version_2_Installation_Handbook.60459320B.1983.pdf NOS Installation Handbook (Rev B)
n. 60459320-NOS2_Install-RevP.pdf NOS Installation Handbook (Rev P)

The items marked with a * are not easy to find (they came out of mailing list attachments, etc.) so I have put them in a zip file which can be found here: Rare Bits

The other items are all to be found in the usual places on the Controlfreaks Wiki.

1.2 - Prepare top of new directory tree

  1. mkdir newinstall
  2. cd newinstall

1.3 - Install DtCyber

  1. git clone https://github.com/kej715/DtCyber.git <your_directory>
  2. cd <your_directory>
  3. emacs window_x11.c
    1. change font to one that exists on the system
    2. this might not be necessary depending on what fonts are on the system

             /*
             **  Load three Cyber fonts.
             */
             #if 0
               hSmallFont = XLoadFont(disp, "-*-lucidatypewriter-medium-*-*-*-10-*-*-*-*-*-*-*\0");
               hMediumFont = XLoadFont(disp, "-*-lucidatypewriter-medium-*-*-*-14-*-*-*-*-*-*-*\0");
               hLargeFont = XLoadFont(disp, "-*-lucidatypewriter-medium-*-*-*-24-*-*-*-*-*-*-*\0");
             #else
               hSmallFont = XLoadFont(disp, "-*-fixed-medium-*-*-*-10-*-*-*-*-*-*-*\0");
               hMediumFont = XLoadFont(disp, "-*-fixed-medium-*-*-*-13-*-*-*-*-*-*-*\0");
               hLargeFont = XLoadFont(disp, "-*-fixed-medium-*-*-*-20-*-*-*-*-*-*-*\0");
             #endif

      * Optionally and perhaps debatably …

      I have found the following change to npu_async.c helps to get rid of (or reduce the frequency of) UNKNOWN CONTROL KEY, CHECK SCREEN in FSE. It may be that there is some set of telnet settings that makes this unnecessary, but I haven't found them with the client systems I use.

      In function: npuAyncProcessUplineTransparent() add:

                    npuTipInputReset(tp);
                  }
        #if 1
      	else if (ch == 0x0a )
      	  {
      	    /* NG: Swallow line feeds here. */
      	    continue;
      	  }
        #endif
              else if (ch == tp->params.fvUserBreak2 && tp->params.fvEnaXUserBreak)
                  {
                  *tp->inBufPtr++ = ch;
       
       
      (i.e. insert the conditionally compiled lines.)
        make -f Makefile.linux32
        cd ..

1.4 - Prepare remainder of new directory tree

User Terminal
mkdir new287 cd new287 mkdir disks # Where the files for the disks will go. mkdir tapes # Where tapes other than deadstart tapes will go. mkdir dstapes # Where deadstart tapes will go. mkdir cards # Where batch jobs that help install things will go. mkdir PersistStores/NNOS287

1.5 - Copy distribution materials to tree.

StepCommandsDescription
a. cp <distdir>/cy871b.tap.bz2 dstapes # Initial deadstart tape for 2.8.7 (871)
b. cd dstapes; bunzip2 cy871b.tap.bz2; cd .. # … uncompress it …
c. cp <distdir>/nos287-1.tap.gz tapes # First NOS distribution tape.
d. cd tapes; gunzip nos287-1.tap.gz; cd ..
e. cp <distdir>/nos287-2.tap.gz tapes # Second NOS distribution tape.
f. cd tapes; gunzip nos287-2.tap.gz; cd ..
g. cp <distdir>/nos287-3.tap.gz tapes # Third NOS distribution tape.
h. cd tapes; gunzip nos287-3.tap.gz; cd ..
i. cp <distdir>/y2k.tap tapes # Y2K patches tape.
j. cp <distdir>/pli_compiler.tap tapes # PL/I compiler.
k. cp <distdir>/network-batch.txt cards # Network: Make NCF and LCF from NDL configuration file.
l. cp <distdir>/network-start.txt cards # Network: Change NAMSTRT to start only viable components.
m. cp <distdir>/modset-1tm-1tn-batch.txt cards # Fixes for 1TM/1TN.
n. cp <distdir>/y2k-altfix-batch.txt cards # Alternative Y2K fixes job.
o. cp <distdir>/jobtdu.txt cards # TeraTerm Pro terminal definition file copy job.

1.6 - Create cyber.ini

Configure your CYBER Initialization File

cyber.ini
;---
; New NOS287 CYBER865 machine, installation configuration.
;---
 
[cyber]
model=CYBER865
deadstart=deadstart.N871
equipment=equipment.N871
clock=0
memory=4000000
ecsbanks=0
pps=12
persistDir=PersistStores/NNOS871
 
[equipment.N871]
; type, eq, un, ch, path
DD885,0,0,01,disks/DM01
DD885,0,1,01,disks/DM02
CO6612,0,0,10
CP3446,6,0,11
CR3447,7,0,11
LP512,7,0,07,3555
MT679,0,0,13,dstapes/cy871b.tap
MT679,0,1,13
MT679,0,2,13
MT679,0,3,13
TPM,0,0,15
NPU,7,0,05
 
[deadstart.N871]
0000
0000
0000
7553 DCN 13
7713 FAN 13,
0120        0120
7413 ACN 13
7113 IAM 13,
7301        7301
0000
0117 wxyy w=level, x=display on/off, yy=cmrdeck
0000

;--- EOF ---

2 - Initialize Virtual Hardware

2.1 - Run DtCyber and proceed to EQPDECK (equipment deck) display.

  1. ../trunk/dtcyber
  2. (CTI display) CR to auto load.
  3. (CMRINST display) NEXT.
  4. (EQPINST display) ] (to see EQPDECK).

2.2 - Remove everything to do with ECS/ESM/UEM

2.3 - Change 885-21 disks from full (DQ) to half (DM) track:

2.4 - Change line printer type.

2.5 - Add card reader and card punch.

2.6 - Change from 2 to 4 679 tape drives.

2.7 - Change the NPU definition.

2.8 - Schedule disk initialization.

2.9 - Deadstart (first time).

2.10 - Check equipment configuration after deadstart.

3 - Install NOS and Create New Deadstart

3.1 - Install permanent files for the system from distribution tape.

3.2 - Setup up usable network configuration.

3.3 - Setup network start procedure that only starts things the emulator can do.

Wait for batch job to complete.

3.4 - Put NAMSTRT into NETOPS. Because that is where NAMSTRT is sought ...

CDC Terminal
X.DIS. USER,INSTALL,INSTALL. GET,NAMSTRT. SUI,377772. CHANGE,NAMSOLD=NAMSTRT. SAVE,NAMSTRT/CT=PU. DROP.

3.5 - Start **NPU**

CDC Terminal
E,A. ON,EQ=60. AB.

3.6 - Start NAM

3.7 - Start **IAF**

It should now be possible to log in to the system from terminals.

3.8 - Login as INSTALL/INSTALL on an IAF terminal.

User Terminal
ctelnet 127.0.0.1 6610 --crlf # Or just use normal # telnet client (if it works properly) FAMILY: (CR) USER NAME: INSTALL PASSWORD: INSTALL

3.9 - Edit CMRD17 and EQPD17 to match what we are now running with.

That is, reproduce the changes we made in previous steps. Also change the name shown for the system if wanted.

3.10 - Load a new, writeable, tape. This will be the new deadstart tape.

3.11 - Create the new deadstart tape in the IAF login session:

3.12 - Shutdown NOS.

3.13 - Edit cyber.ini to use new deadstart tape.

3.14 - Restart NOS (second deadstart):

4 - Clean Up Errors

4.1 - Try to understand new errors!

ERRORRemedy
CMS CLDT: No LID table created. Buffer too small.FIX: Add LDT=20 to CMRD17. On deadstart or permanently.
MSE SSF fails to load controlware for a 7990. (Or something like that. Falls into DIS.) (See Below)

(wait for IAF NETWORK CONNECTED on control point).

4.2 - Make these necessary changes permanent.

By writing a new deadstart tape with the changes made. Note that you have to edit these changes in after the system is running. Adding entries in deadstart doesn't change what is on the deadstart tape in itself. Which is obvious … but … may be overlooked!

NOTE: We'll use FSE here, assuming a terminal emulator, working telnet and a terminal definition that matches what the terminal emulator emulates have all been sorted out. It could otherwise be done with XEDIT again. For a Unix client system, using xterm with a 80×43 display matches the NCDX terminal definition in NOS, so – with a properly working telnet – this can work. Details on setup below.

Change CMRDECK:
  1. Login interactively as install/install
  2. TRMDEF,TC=7 # Note: stick to uppercase here. Do NOT use ASCII!
  3. SCREEN,NCDX
  4. SETJSL,*.
  5. SETTL,*.
  6. COMMON,SYSTEM.
  7. GTR,SYSTEM,DSTDECK.CMRD17
  8. FSE,DSTDECK


    — Contents —

    NOS FULL SCREEN EDITOR
    Upper Case File DSTDECK  Lines 1 - 9 Size 9 (No Changes)
    CMRD17
    * NON 810/830, 2000K CM, 885-12 DISKS
    NAME=HCCC NOS 2.8.7
    VERSION=NOS 2.8.7 871/871.
    MID=AA.
    LIB=2.
    NCP=34.
    QFT=3000.
    EJT=2000.

Add:

LDT=20.
  1. REWIND,DSTDECK
  2. LIBEDIT,P=SYSTEM,B=DSTDECK.
    ENTER DIRECTIVES -
    ? *REPLACE CMRD17
    ? ((return))
    
    
    
          RECORDS WRITTEN ON FILE NEW
              RECORD    TYPE      FILE       DATE      COMMENT
    
     DELETED-(CMRD17)   TEXT      SYSTEM
     INSERTED CMRD17    TEXT      DSTDECK
     ADDED    SYSTEM    OPLD      *****     97/11/05.
     EDITING COMPLETE.
  3. RENAME,STEP=NEW.
  4. RETURN,DSTDECK.
Change IPRDECK:
  1. GTR,SYSTEM,DSTDECK.IPRD00
  2. FSE,DSTDECK

– BEFORE –

ENABLE,MSE.
ENABLE,MASTER MSE.
ENABLE,CARTRIDGE PF STAGING.
ENABLE,USER EXTENDED MEMORY.
ENABLE,MAP.
DISABLE,NAM.
ENABLE,SSF.
DISABLE,RHF.
ENABLE,SUBCP.
DISABLE,TAF.
ENABLE,PROBE.

– AFTER –

DISABLE,MASTER MSE.
DISABLE,CARTRIDGE PF STAGING.
ENABLE,USER EXTENDED MEMORY.
ENABLE,MAP.
DISABLE,NAM.
DISABLE,SSF.
DISABLE,RHF.
ENABLE,SUBCP.
DISABLE,TAF.
ENABLE,PROBE.

{then type the following commands}

REWIND,DSTDECK.
LIBEDIT,P=STEP,B=DSTDECK.

ENTER DIRECTIVES -
? *REPLACE IPRD00
?

      RECORDS WRITTEN ON FILE NEW
          RECORD    TYPE      FILE       DATE      COMMENT

 DELETED-(IPRD00)   TEXT      STEP
 INSERTED IPRD00    TEXT      DSTDECK
 ADDED    SYSTEM    OPLD      *****     97/11/05.
 EDITING COMPLETE.
Write new deadstart tape with these changes.
Restart with the new deadstart tape (third deadstart).

It is good exercise for the fingers … :-)

Alternatively, EQ 60 can be set to be on in EQPD17 and NAM and IAF can be ENABLED in IPRD00 and a new deadstart tape written … now they all seem to work.

4.3 - 32. Adding PL/I.

This cannot be installed using the procedures described in Chapter 4 of the NOS Installation Handbook because it isn't an official product distribution tape. We install it by adding it to the system and creating a new deadstart tape.

Instead:

  1. Login, create a test PL/I program, compile and run it.
  2. Yes, that works.
  3. Beware using ASCII mode in FSE with PL/I though … colons cause trouble …

Maybe there is an option for this … Or stick to NORMAL character set.

4.4 - Preparing for re-building parts of NOS using source code.

Applying “corrective code” (patches) or “customizing” parts of the system requires rebuilding items from source. This means the source code for NOS needs to be available. At the end of the day, this should be in a file called OPL871 in the INSTALL user catalog. Actually getting OPL871 involves quite a few steps, though. These are (sort of) described in Chapter 6: Customizing Installations in the N.I.H. … but not all that clearly IMHO. The following seems to work.

This last step will request tapes with VSN=BC004P and (eventually) VSN=BC004Q. These are nos287-1.tap and nos287-2.tap.

After some considerable time (when it isn't obvious that anything is happening), it will begin copying things from tape.

And when it completes, OPL871 is present on the INSTALL user catalog.

4.5 - Apply Kevin Jordan's patches for 1TM,1TN.

This enables 1TN to drive the 6676 mux and support multiple telnet connections to IAF on NOS 2.8.7. It also changes 1TM (2-port mux driver) so the 2-port mux can also be used for IAF logins. The configuration doesn't has a 6676 mux, but this is still an interesting exercise that validates source based changes.

No problems.

4.6 - Apply Y2K Fixes

4.6.1 A. The Y2K tape.

This presumably contains Y2K fixes for various parts of NOS. But what to do with it?

  1. From od -c | more, label seems to be: Y2K871
  2. on dtCyber console
    operator> lt 13,0,1,r,tapes/y2k.tap
  3. label,tape,vsn=y2k871,lb=kl,po=ru.
  4. itemize,tape.

         1   PFDUMPR   TEXT             101    4147  
         2   Y2KATF    TEXT             170    3774  
         3   Y2KCDCS   TEXT             221    2414  
         4   Y2KCHA    TEXT             165    1227  
         5   Y2KHPA    TEXT             373    0315  
         6   Y2KNORM   TEXT             242    5030  
         7   Y2KQU     TEXT             236    0737  
         8   Y2KNOS    TEXT            1130    4336  
         9   HPABIN    TEXT          427124    3125  
        10   NORMBIN   TEXT           66105    6534  
        11             DATA               1    6017  
     
        12   * EOF *       SUM =     520354

Turns out, this is a PFDUMP tape.

Probably that PFDUMPR record is a clue!

The file on it can be listed with:

  1. rewind,tape.
  2. pfatc,lo=t. # For IAF, requires UNLOCK. and DEBUG. issued on DSD console.

And they can be copied to disk using:

  1. rewind,tape.
  2. pfload,lo=t.

Unfortunately, though … this puts them in UI=10, a.k.a. PRINT01 … Hmm …

To make them accessible from INSTALL:

X.DIS.   # DSD console.
SUI,10.
PERMIT,Y2KNOS,INSTALL=W.
 ... etc ...
DROP.

Then back in IAF logged in as INSTALL:

  1. get,y2knos/un=print01.
  2. replace,y2knos.
To update OPL871:
  1. attach,install.
  2. begin,modopl,install,userf=y2knos.

Then rebuild NOS from source. This took about 30 mins on the T60.

begin,nos,install.     # All the COMPASS code, first PP then CPU ...
begin,nos2b,install.   # All FTN5 and SYMPL code ...

The result of all this building is a file called PRODUCT.

Write a new deadstart tape.

setjsl,*.   # Best to do this earlier. Do now, otherwise there will be SRU limit warnings.
settl,*.
return,tape.
common,system.
begin,gendst,install,list=info. # Use list to put output to a file.

When MAG E,P appears:

In DtCyber console:

operator> 13,0,1,w,dstapes/dstfromsource.tap

In DSD:

VSN,52,NDT.

In IAF:

route,info,dc=lp.               # Print the listing from gendst.
bye.

Restart with this latest SS tape.

NOS Console:

CHECK POINT SYSTEM.
STEP.

Edit cyber.ini to use dstapes/dstfromsource.tap

In DtCyber console:

operator> shutdown

Restart DtCyber:

../trunk/dtcyber

NOS Console:

(CR), GO. ...
ON,EQ=60.
NAM.
IAF.

And it all seems to work …

4.6.2 B. An alternative Y2K fix procedure.

A more targetted alternative to the above is due to Paul Koning and was passed on to me with practical details by William Schaub.

In DtCyber operator console:

operator> lc 11,7,cards/y2k-altfix-batch.txt

This will build a patched version of parts of NOS, leaving the result in the direct access file MTRBIN. This then needs to be edited into the system and a new deadstart tape written in the usual way:

Mount a new writeable tape on NT051.

In DtCyber operator console:

operator> lt 13,0,1,w,dstapes/dsty2kfixed.tap

Edit changes into system library and write new deadstart tape.

In IAF login:

ATTACH,MTRBIN.
LABEL,NEWDS,VSN=***051,D=PE,LB=KU,F=I.
LIBEDIT,P=SYSTEM,B=MTRBIN,N=NEWDS,I=0.
RETURN,NEWDS.

Then:

4.7 - Install Tom Hunter's termdef for Teraterm Pro.

This is very useful for interactive access from Windows machines … although I don't have any of those to try it with. TeraTerm should work under Wine on Linux.

This creates the indirect access file STTERM in INSTALL.

The indirect file TERMDEF is now in the INSTALL users catalog.

Note this is *user specific*.

This TERMDEF adds to the “master” TERMDEF in the LIBRARY catalog for the user INSTALL. It would need to go in other users catalogs for them to be able to SCREEN,TTERM.

The “master” TERMDEF can be recreated from TDUFILE in LIBRARY, but adding the contents of STTERM to TDUFILE in FSE then rebuilding the “master” TERMDEF may be best avoided.

4.8 - Set up user accounts with X.MS

Thanks to William Schaub for discovering this. In NOS 2.8.7 there is a very “user friendly” method of adding user accounts. This is part of the MS (Manage System) “package”, and seems to be described only in:

CYBER Supermini Operations Handbook 60459850A (October 1984).

where usernam is the user name (1 to 7 letters or numbers) and passwor is the initial password (4 to 7 letters or numbers, default UNSECUR).

where jsn is the job sequence number for the VALUSER job shown in the B display.

And that's it! For a user with restricted privileges and resource usages, use: LIMITED instead of NOLIMIT.

4.9 - Dayfile dump and termination.

Also thanks to William Schaub for discovering this. Terminating dayfiles is needed periodically to keep the system healthy. A very straightforward way of doing this on NOS 2.8.7 is:

4.10 - Silencing: NAM. REQUEST *K* DISPLAY

Thanks to Digby Tarvin for discovering this. This DSD message can be considered harmless and “normal”, but it seems a way of stopping it happening is to turn off reports from NPUs.

NAM. REQUEST *K* DISPLAY is shown at top right:

K,NAM.

The left display will show:

READY..
ALERT CS
NAM

Enter:

K.AP
K.RE,NPUS,OFF   # NOTE: you do not type in the K. here. Already there.
K.*
K.END.
AB.

4.11 - More things to do.

Install further products, such as Algol 5, Algol 68, console games, LISP, …

Install Kermit for file transfer. See William Schaub's website: Building Kermit NOS2

And so on … :-)