Table of Contents

Phase 0 - Prepare Work Environment

William Schaub, Dale Sinder and Steve Zoppi 2025/05/09

Tutorial Phases

Tip

The tutorial phases are arranged in a prescribed order, wherein each phase builds upon the previous. Performing these activities out of order will leave the installation in an inconsistent, or perhaps inoperable state.

Overview

This Multi-phase Tutorial covers all aspects of the PLATO build process and modifies:

  • NOS
  • PLATO's Core Components
    • Condenser
    • Framer/Formatter
    • Executor
  • SYSTEM Lessons

Therefore it is important to have an organized workspace from which these activites can be performed, in order.

Objective

When you have completed this Multi-phase Tutorial these new features will be available for Smart Terminals:

Procedure

1. Download and Unpack

The files and applications needed for this collection of tutorials is contained in various files zip files:

These files must be downloaded and unpacked into an accessible workspace.

The resulting structure of L1PPMODS.20250527.zip is:

L1PPMODS.20250527 │ │ cdc.io.copyover.cmd │ ├───m000.sinder.mods.a │ alien.retro1.txt │ fancy.retro1.txt │ l1pmods000.s0sup.txt │ nedit.s0nver.txt │ nmem.s0nver.txt │ nplato.s0nver.txt │ ns0notes.s0nver.txt │ ns0terms.s0nver.txt │ nuser.s0nver.txt │ plmods000.s0sup.txt │ ptest.retro1.txt │ ├───m001.sinder.mods.b │ alien.retro1.txt │ cybmods001.s0sup.txt │ fancy.retro1.txt │ l1pmods001.s0sup.txt │ nedit.s0nver.txt │ nmem.s0nver.txt │ nplato.s0nver.txt │ ns0caps.s0nver.txt │ ns0edit.s0nver.txt │ ns0notes.s0nver.txt │ ns0terms.s0nver.txt │ nuser.s0nver.txt │ plmods001.s0sup.txt │ ptest.retro1.txt │ └───m002.sinder.mods.c a0aids1.system.txt a0asciidev.system.txt a0display2.system.txt a0style.system.txt na0aidsvoc.s0nver.txt na0usedaid.s0nver.txt naids.s0nver.txt nainfo.s0nver.txt

You may optionally download and browse the listing files which accompany these activities. Having these listings readily available may help visualize the final outputs of each of the modification sets applied, in the proper order.

2. Backup

BACKUP NOW

Before starting any of these activities, make a complete backup of:

  • the DtCyber disks directory
  • the deadstart tape for your configuration
  • the cyber.ini file for your configuration

This will ensure that there is a “safe restart point” to which you can return if needed.

Perform This Backup Now

These processes (and future work) rely on being prepared for any potential error while learning how to perform these tasks. As such, it is important to understand how to use the cdc.io c.backup (Cluster Backup) function to establish a granular backup of all critical files. This type of backup enables fine-grained restoration of any PLATO file in the course of learning how to modify these systems and structures.

Perform This Backup Now

Once a backup is complete, you may then do a “test” restore any file1), such as lesson plato, by doing a simple copy. If you attempted to perform a test copy-back after a backup, nothing would have changed and you can make sure that you have the syntax correct:

Windows Example

cdc.io c.pfcopy -I "C:\Path\To\BackupCluster" ^ -O "C:\Path\To\DtCyber\Disks" ^ -f "system.plato@system" ^ -t "system.plato@system" Origin file 'plato' Found on 'system'. Account 'system'. (18 Part File). Target file 'plato' Found on 'system'. (18 Part File). 18,291 Files in 'accfiles' dataset. File 'plato' already exists. (File plato already exists in 'accfiles') Write-Inhibit: FIW Translation not possible for 'plato'. (Continuing with Simulated Writes). Block 00126. of 00126. Written ... File 'plato'copied to 'plato'. Target file 'plato' Found on 'system'. (18 Part File). Value Error Encountered: File name plato::::: already exists in 'system/account l' End of Function.

3. Create Files

Tip

The files in the distribution should be pre-loaded and verified before beginning any of the subsequent procedures. This will also enable you to follow along with the instructions and familiarize yourself with the code to be deployed.

  1. Ensure that cdc.io is properly installed and available in your working path by issuing the cdc.io version command to verify its functionality.

  2. Using lesson operator logged in as admin/s, create the following files:

    Account Master File Type Name Parts Contents
    retro1 rtra (a) lesson alien 1 A demonstration lesson illustrating the capabilities of the Level 1 Protocol
    system system (a) lesson a0asciidev 14 AID/INFO File
    system system (a) lesson a0style 5 AID/INFO File
    s0sup s0stuff (e) code cybmods001 3 CYBIL modification sets required for Level 1 Protocol PART B
    s0sup s0stuff (e) code l1pmods000 18 PLATO modification sets required for Level 1 Protocol PART A
    s0sup s0stuff (e) code l1pmods001 18 PLATO modification sets required for Level 1 Protocol PART B
    s0nver develop (a) lesson ns0caps 2 New version of NEW system file s0caps
    s0over system4 (a) lesson oa0aidsvoc 11 Old version of a0aidsvoc
    s0over system4 (a) lesson oainfo 6 Old version of ainfo
    s0over system4 (a) lesson oa0usedaid 1 Old version of a0usedaids
    s0over system4 (a) lesson os0caps 2 Old version of NEW system file s0caps
    s0sup s0stuff (e) code plmods000 18 GENERAL PLATO modification sets required PART A
    s0sup s0stuff (e) code plmods001 18 GENERAL PLATO modification sets required PART B
    retro1 rtra (a) lesson ptest 5 A small lesson containing the functional tests of the Level 1 Protocol
    system system (a) lesson s0caps 2 Current version of NEW system file s0caps


    IMPORTANT: Be sure the Use code is set to Group s on all three files ns0caps, os0caps and s0caps. Setting these codes may be done directly through the account administrator function for accounts: s0nver s0over and system respectively.

  3. Verify that the following files already exist and are of the type/size indicated. If they are not in the correct place, use lesson account0 System Account Options, option c Move / Copy files between accounts to position them properly:

    Name Account Type Parts Contents
    fancy retro1 tutor 3 Demonstrations of the graphical primitives enabled by Level 1 Protocol
    ns0notes develop tutor 9 The system library containing gnotes/pnotes-related terms.
    ns0terms develop tutor 5 The system library containing support for calc, small terms, etc.


4. Verify Your Work

  1. In the directory l1ppmods.20250527, a WINDOWS command file cdc.io.copyover.cmd and a LINUX bash script cdc.io.copyover.sh have been supplied. It uses the installed cdc.io utility to import the patch files from their respective directories onto the target system:

    :: :: cdc.io.copyover.cmd "Subdirectory_Name_of_Patch_Files" "Path_To_Target_Cluster" [ WRITE | TEST ] :: :: When applying patches to a PLATO Cluster using CDC.IO, it is best :: to test the changes prior to applying them. :: :: Two files are written: :: :: (STDOUTPUT).txt (The result of STDOUT from CDC.IO) :: (ERROUTPUT).txt (The result of STDERR from CDC.IO) :: :: (These files can be safely erased once processing completes successfully.) :: :: Subdirectory_Name_of_Patch_Files :: :: This is the name of the subdirectory whose patches are to be applied. :: The only permissible values are: :: :: Path_To_Target_Cluster :: :: This is the full path to the target cluster (usually DtCyber's 'disks' :: directory) to which patches are to be applied. :: :: m000.sinder.mods.a :: m001.sinder.mods.b :: m002.sinder.mods.c :: :: The output is then scanned for errors. :: :: *** DO NOT WRITE TO A RUNNING SYSTEM *** :: (Windows Example) cdc.io.copyover.cmd ^ "m000.sinder.mods.a" ^ "C:\Path\To\DtCyber\disks" ^ test Output from the command (if everything above was done correctly): :: Processing "m000.sinder.mods.a\alien.retro1.txt" :: Processing "m000.sinder.mods.a\fancy.retro1.txt" :: Processing "m000.sinder.mods.a\l1pmods000.s0sup.txt" :: Processing "m000.sinder.mods.a\nedit.s0nver.txt" :: Processing "m000.sinder.mods.a\nmem.s0nver.txt" :: Processing "m000.sinder.mods.a\nplato.s0nver.txt" :: Processing "m000.sinder.mods.a\ns0notes.s0nver.txt" :: Processing "m000.sinder.mods.a\ns0terms.s0nver.txt" :: Processing "m000.sinder.mods.a\nuser.s0nver.txt" :: Processing "m000.sinder.mods.a\plmods000.s0sup.txt" :: Processing "m000.sinder.mods.a\ptest.retro1.txt" :: Processing the Results ... ---------- (STDOUTPUT).TXT ---------- (ERROUTPUT).TXT :: :: TEST COMPLETE: :: You may proceed if the only lines that appear above resemble: :: ---------- (STDOUTPUT).txt :: (or) ---------- (ERROUTPUT).txt ::

  2. Repeat the above tests for each of the patch sets:
    1. m001.sinder.mods.b
    2. m002.sinder.mods.c

5. Apply Patchset m000.sinder.mods.a

  1. Quiesce CYBIS Normally.

    Take CYBIS Down

    Although in this specific circumstance, the following steps can be completed by cdc.io on a running CYBIS system. You are never encouraged to do so.


  2. Now run with the WRITE option:

    (Windows Example) cdc.io.copyover.cmd ^ "m000.sinder.mods.a" ^ "C:\Path\To\DtCyber\disks" ^ write

    1. Output from the command (if everything above was done correctly):

      :: Processing "m000.sinder.mods.a\alien.retro1.txt" :: Processing "m000.sinder.mods.a\fancy.retro1.txt" :: Processing "m000.sinder.mods.a\l1pmods000.s0sup.txt" :: Processing "m000.sinder.mods.a\nedit.s0nver.txt" :: Processing "m000.sinder.mods.a\nmem.s0nver.txt" :: Processing "m000.sinder.mods.a\nplato.s0nver.txt" :: Processing "m000.sinder.mods.a\ns0notes.s0nver.txt" :: Processing "m000.sinder.mods.a\ns0terms.s0nver.txt" :: Processing "m000.sinder.mods.a\nuser.s0nver.txt" :: Processing "m000.sinder.mods.a\plmods000.s0sup.txt" :: Processing "m000.sinder.mods.a\ptest.retro1.txt" :: The contents of (STDOUTPUT).txt and :: (ERROUTPUT).txt :: Should be evaluated for any possible errors :: :: If you mis-allocated a file - those errors will appear here. :: :: (ERROUTPUT).txt contains the following: :: :: :: [End Of Output]

    2. Examining output file (STDOUTPUT).txt should resemble this:

      :: ---------------------------------------------------------------------------------------- PLATO Pack 'rtra' has 1 matches. ---------------------------------------------------------------------------------------- alien End of Function. Input file 'E:\Engineering\SZ10101\dtCyber.retro1\Queued.Patches\l1ppmods.20250527\m000.sinder.mods.a\alien.retro1.txt' Contains PLATO file 'alien' Type 'tutor a' From Account 'retro1' (1 part file) Target file 'alien' Found on 'rtra'. (1 Part File). Output file on MF 'rtra' Contains PLATO file 'alien' Type 'tutor a' From Account 'retro1' (1 part file) Block 00001. of 00007. Written ... Block 00002. of 00007. Written ... Block 00003. of 00007. Written ... Block 00004. of 00007. Written ... Block 00005. of 00007. Written ... Block 00006. of 00007. Written ... Block 00007. of 00007. Written ... End of Function. ... MORE OF THE SAME FOR EACH PATCH ... ---------------------------------------------------------------------------------------- PLATO Pack 'rtra' has 1 matches. ---------------------------------------------------------------------------------------- ptest End of Function. Input file 'E:\Engineering\SZ10101\dtCyber.retro1\Queued.Patches\l1ppmods.20250527\m000.sinder.mods.a\ptest.retro1.txt' Contains PLATO file 'ptest' Type 'tutor a' From Account 'retro1' (5 part file) Target file 'ptest' Found on 'rtra'. (5 Part File). Output file on MF 'rtra' Contains PLATO file 'ptest' Type 'tutor a' From Account 'retro1' (5 part file) Block 00001. of 00035. Written ... . . . Block 00035. of 00035. Written ... End of Function.

    3. (ERROUTPUT).txt should contain a line with a :: (double colon) and a blank line.

    4. Restart CYBIS

    5. Login as admin/s to verify that each of the above files is present and has content (as opposed to the original empty container files).

    Ready to Begin

    You are now ready to start with Phase 1 - Define Terminal Capabilities

1)
CDC.IO, by default, does “simulated writes” which display exactly what changes would be made if it wrote to disk. The example lacks the -W switch which enables writing and is therefore, safe.