A Step-by-Step Guide to Configuring and Building NOS/BE 1.5 Level 712 from “Scratch”.
Item | Description |
---|---|
Author: | Joachim Siebold |
Date: | October, 2nd 2022 |
Cataloged: | |
Edited: | December, 19th 2023 |
Configuring and building a NOS/BE deadstart tape from scratch is a tedious job. For a full system you have to run more than 40 batch jobs and mount dozens of tapes. Fortunately the recent developments of the DtCyber emulator provide a powerful programming interface to control both the emulator and the running operating system.
Therefore, I could realize a DtCyber environment, which supports building a NOS/BE deadstart tape with much software included with a high degree of automation.
The starting point is an unconfigured NOS/BE L650 deadstart tape, a L712 correction tape and a bunch of L650 product tapes which came from the Zentraleinrichtung Rechenzentrum Technische Universität Berlin (ZRZ TUB) which got a CDC CYBER 175 in 1976. These tapes include NOS/BE, FTN with TSFTN, advanced CRM, FTN5, PMD for FTN and FTN5, 8bit subroutines, FORM, SORT5, Fortran 4 to 5 Conversion Aid, Cyber Interactive Debug and INTERCOM 5.
PASCAL 6000, the UMN Fortran 5 compiler (M77) and the UMN Interval Arithmetic Library are added from existing source tapes.
Other compilers, where sources do not exist according to current knowledge are extracted from a configured TUB deadstart tape. These include UMN Fortran IV (MNF), Algol 60, Algol 68 and PL/1.
The sources of additional products (DDL3, CDCS2, QU3, FDBF, DCL2, BASIC and COBOL5) are retrieved from NOS2 L871 source tapes and rolled back to a L650 compatible update status.
Unfortunately, the unconfigured L650 system is not capable to build a deadstart tape for all products because of system table limitations.
Therefore, building the full system uses three DtCyber environments:
There is a zip archive for a ready-to-run NOS/BE L712 build system. Therefore, you can shorten the build process considerably.
In this document, the following markups are used:
Markup | Description |
---|---|
(CR) | Carriage Return |
(BS) | Backspace |
=XYZ= | Input of “XYZ” at the DtCyber Console |
*XYZ* | Input of “XYZ” to DIS at the DtCyber Console |
(operator) XYZ | Input of “XYZ” at the DtCyber operator prompt |
(shell) XYZ | Input of “XYZ” at a shell prompt |
# XYZ | XYZ is a comment |
There are a number ob JavaScript files (suffix: js) in the NOSBE712 directory. These scripts are called in Linux/mac OS and Windows in different ways.
Linux, mac OS: ./scriptname.js <parameters> Windows: node scriptname <parameters>
In this document, the Linux/mac OS calling style is consistently used.
(shell) gcc -o lpt2pdf lpt2pdf.c (Linux) or (shell) cl lpt2pdf (Windows)
The DtCyber configuration file cyber.ini provides separate environments (disk and CM/ECS storage) for the NOS/BE 1.5 L650 bootstrap system, the NOS/BE L712 build system and the NOS/BE 1.5 L712 production system. They use the following deadstart tapes:
All deadstart tapes have no CTI prepended. Thus the deadstart process is as follows:
The main component of the build environment is the autojob.js program. This program runs a series of batch jobs one after another. For each batch job it issues the necessary DtCyber operator and DSD commands to ensure an automatic tape assignment, then it submits the card deck and waits for the batch job to complete. If the job failed, autojob.js terminates (configurable!), otherwise the next batch job is executed.
The series of batch jobs is specified in configuration files, which are located in the node_modules subdirectory:
Item | Description |
---|---|
build_nosbe_buildsys | creates deadstart tape scratch/DSTAPE_BUILDSYS.tap for the L712 build system |
build_nosbe | creates deadstart tape scratch/DSTAPE.tap for the L712 production system (without EM) |
build_nosbe_em | creates deadstart tape scratch/DSTAPE_EM.tap for the L712 production system (with EM) |
run_postinst | post install jobs for the L712 production system (without EM) |
run_postinst_em | post install jobs for the L712 production system (with EM) |
You find a detailed description of an autojob.js configuration file in the file node_modules/run_tests.js. Job decks for building NOS/BE are located in the buildjobs directory.
Note: the NOS/BE system build jobs are designed for a single processor configuration, because file system corruptions happened with a dual-processor NOS/BE system.
If you would like to build a dual processor version, you can enable the IP.NCPU
parameter in the 07_pla1.txt and 07_pla1_em.txt job decks. You were warned.
There are some helper scripts in the NOSBE712 directory that ease the control of the DtCyber emulator, e.g. for tape handling, batch processing and system shutdown. See the How to use a ready to run NOS/BE L 712 system.
NOS/BE creates printer files with ANSI printer control. Form feed and line spacing are controlled by characters in column 1 of the printer file. The print post processor reads continuously the output of the printer file LP5xx_C12_E5, interprets form feed an line spacing controls, separates the output into single print jobs and calls the program lpt2pdf (Author: Tim Litt) to create a nice high-fidelity fan fold paper PDF file for each job. The PDF files are stored in the printfiles directory with time-stamped file names.
Note: If you would not like to use the print post processor, you should disable the helpers entries in the cyber.ini file.
If you would like to start with a ready-to-run build system, you can proceed to chapter 7.
If you would like to use a ready-to-run bootstrap system, you can unzip the archive nosbe650bootstrap.zip in the NOSBE712 folder and proceed to 6.2.
First you have to install CTI on disk:
(shell) ./dtcyber bootstrap-cti =B= BUILD DEADSTART DISK =M= MANUAL OPERATION =C= REPLACE CTI =(CR)= INSTALL DEADSTART MODULE ON DISK =(CR)= PERMANENT FILES WILL BE LOST =(CR)= CHANNEL 00 =(CR)= EQUIPMENT 0 =(CR)= UNIT 00 INSTALL COMPLETE (operator) shutdown
You have now to do a level 0 deadstart of the unconfigured NOS/BE Level 650 system. The deadstart tape does not contain any EST configuration, so you have to enter it manually. You also have to initialize the disk drives.
(shell) ./dtcyber bootstrap-level0 =O= OS LOAD WITH INTERVENTION =S= SELECT DEADSTART DEVICE =T= TAPE DEADSTART =(CR)= ENTER TAPE TYPE =(CR)= CHANNEL - 13 =(CR)= EQUIPMENT - 0 =(CR)= UNIT - 00 =4.Y(CR)= EQUIPMENT CHANGES =5.N(CR)= EM OFF =(CR)= =1,AJ,C00,E0,U0,SYS,PF,Q,MD,SN=SYSTEM,V=SYS001(CR)= =2,AJ,C00,E0,U1,PF,SN=SYSTEM,V=SYS002(CR)= =20-23,NT,C13,U00+,A,G(CR)= =27,DS,C10,E7(CR)= =30,DC,C07(CR)= =31,LP,C12,E5(CR)= =32,CR,C12,E3(CR)= =33,CP,C12,E6(CR)= =SYSTEM,SYS,PF,Q,SCR(CR)= =SYSTEM,I(CR)= # initialize disks =(CR)= =(CR)= RMS CONTROLLERS =GO(CR)= DST 02 CONTROLWARE CONFLICT -LOAD CONTROLWARE =FT(CR)= LABEL INITIALITATION =ALL(CR)= # Wait for system load to complete * =D010185(CR)= # enter date =T000000(CR)= # enter time =AB.(CR)= (shell) ./shutdown.js
Do a level 3 deadstart of the bootstrap system:
(shell) ./dtcyber bootstrap
Preconfigured key entries in the operator section provide an automatic deadstart.
Now you start the configuration and generation for the NOS/BE L712 build system:
(shell) ./autojob.js build_nosbe_buildsys
This takes about 2 hours on a Raspberry Pi4 (Debian 64bit) to complete. The new deadstart tape is stored as scratch/DSTAPE_BUILDSYS.tap. You must now copy scratch/DSTAPE_BUILDSYS.tap to DeadstartTapes/DSTAPE_BUILDSYS.tap
If you skipped chapter 6 unzip the archive nosbe712build.zip in the NOSBE712 folder and proceed to 7.2 or 7.3.
First you have to install CTI on disk:
(shell) ./dtcyber build-cti (see 6.1)
Now do a level 0 deadstart of the NOS/BE Level 712 build system. You also have to initialize the disk drives. An EST is already compiled into the deadstart tape.
(shell) ./dtcyber build-level0 =O= OS LOAD WITH INTERVENTION =S= SELECT DEADSTART DEVICE =T= TAPE DEADSTART =(CR)= ENTER TAPE TYPE =(CR)= CHANNEL - 13 =(CR)= EQUIPMENT - 0 =(CR)= UNIT - 00 =GO(CR)= TO USE 16B PPUS =4.Y(CR)= EQUIPMENT CHANGES =(CR)= =SYSTEM,I(CR)= # initialize disks =(CR)= =(CR)= RMS CONTROLLERS =FT(CR)= LABEL INITIALITATION =ALL(CR)= # Wait for system load to complete * =D010191(CR)= # enter date * =T000000(CR)= # enter time * =AB.= # system / cp display (shell) ./shutdown.js
Do a level 3 deadstart of the build system:
(shell) ./dtcyber build
Preconfigured key entries in the operator section provide an automatic deadstart.
Now you start the NOS/BE system configuration and generation for the production system:
(shell) ./autojob.js build_nosbe
This takes about 7 hours on a Raspberry Pi4 (Debian 64bit) to complete. The new deadstart tape is stored as scratch/DSTAPE.tap. Copy that file to DeadstartTapes/DSTAPE.tap
Do a level 3 deadstart of the build system as described in 7.2. Then start the NOS/BE system generation for the EM enabled production system:
(shell) ./autojob.js build_nosbe_em
This takes about 7 hours on a Raspberry Pi4 (Debian 64bit) to complete. The new deadstart tape is stored as scratch/DSTAPE_EM.tap. Copy that file to DeadstartTapes/DSTAPE_EM.tap
Install CTI on disk for the production system:
(shell) ./dtcyber nosbe-cti (see 6.1)
Then do a level 0 deadstart:
(shell) ./dtcyber nosbe-level0 (see 7.1)
Start the queue manager and see if JANUS is running on CP1.
=AUTO.=
Now run the post installation jobs. These jobs set up the INTERCOM configuration and restore some system files from the build system. You have to confirm the INTERCOM configuration changes at the DtCyber console.
(shell) ./autojob.js run_postinst =20.GO= ATTEMPT TO ALTER INTERCOM CONFIGURATION =20.GO= ATTEMPT TO ALTER INTERCOM PASSWORDS * wait for all batch jobs to complete (shell) ./shutdown.js
Install CTI on disk for the production system:
(shell) ./dtcyber nosbe-em-cti (see 6.1)
Then do a level 0 deadstart:
(shell) ./dtcyber nosbe-em-level0 (see 7.1, but in addition you have to initialize the EM if you run this system the first time or altered the EM config) ... =4.Y(CR)= EQUIPMENT CHANGES =5.I(CR)= =(CR)= =GO(CR)= EM PARTITIONING =(CR)= EM PARAMETERS ...
Start the queue manager and see if JANUS is running on CP1.
=AUTO.=
Now run the post installation jobs. These jobs set up the INTERCOM configuration and restore some system files from the build system. You have to confirm the INTERCOM configuration changes at the DtCyber console.
(shell) ./autojob.js run_postinst_em =20.GO= ATTEMPT TO ALTER INTERCOM CONFIGURATION =20.GO= ATTEMPT TO ALTER INTERCOM PASSWORDS * wait for all batch jobs to complete (shell) ./shutdown.js
See How to use a ready to run NOS/BE L712 system for details.
William Schaub solved a serious bug in the CDC SORT/MERGE build scripts, which was difficult to fix. Kevin Jordan improved the DtCyber configuration.
This wiki page provides CDC copyrighted material, which may only be used in accordance with the BT Federal Permit .