====== CDC 6500 Survival Guide ======

The [[https://en.wikipedia.org/wiki/CDC_6000_series|CDC 6000 series]] was a family of mainframe computers designed by Seymour Cray and James E. Thornton and manufactured by Control Data Corporation in the 1960s. The computers in the series were extremely fast for their time and considered to be the first supercomputers.

The [[http://www.livingcomputermuseum.org/|Living Computer Museum]] has recently refurbished and put on-line a [[http://www.livingcomputermuseum.org/The-Collection/Exhibit-Hall.aspx#Mainframe|CDC 6500 supercomputer]]. The system was originally used at Purdue University from 1967 to 1989.

This document is a short guide for those interested in exploring the 6500's interactive command environment.

//(**Note:** The author worked briefly with a CDC NOS computer 30 years ago, but all information below is based on study of the referenced manuals and experimentation on LCM's 6500. The author apologizes for any inaccuracies and welcomes corrections and improvement suggestions.)//

===== Table of Contents =====

  * [[#section-1|Connecting]]
  * [[#section-2|Subsystems]]
  * [[#section-3|File System]]
  * [[#section-4|File Commands]]
  * [[#section-5|Programming Commands]]
  * [[#section-6|Text Editor]]
  * [[#section-7|Messaging]]
  * [[#section-8|Other System Commands]]
  * [[#section-9|Disconnecting]]
  * [[#section-10|File Sharing]]
  * [[#section-11|File Transfer]]
  * [[#references|References]]
  * [[#plan|Future Improvements]]

===== Connecting =====

  - Start your telnet client and connect to host "tty.livingcomputermuseum.org" port "6500".
  - After the "USER NUMBER" prompt enter your user name (your input will be concealed by the row of Xs). You may need to type more slowly than you are used to with other systems.
  - After the "PASSWORD" prompt type your password (your input will be concealed by the row of Xs).
  - After the "RECOVER /SYSTEM:" prompt enter a subsystem or other command. (Enter "RECOVER" to recover previously interrupted session.)

  [CONNECTED TO MUX6676 LINE 1]

   16/08/24. 20.43.27.
   LIVING COMPUTER MUSEUM 6500.           NOS 1.3-485/11.
  USER NUMBER
  XXXXXXXXXXXXXXX                                                  ← 2.
  PASSWORD
  XXXXXXXX                                                         ← 3.
  PORT    :      5, TTY
  RECOVER /SYSTEM:

===== Subsystems =====

The 6500's Network Operating System (NOS) time-sharing system, the Interactive Facility (IAF), includes a number of subsystems, similar to applications on other computer systems, to provide various functions to the user. Subsystems can be selected explicitly by command (see below), or automatically when you select a primary file.

Although the Null subsystem provides a general-purpose environment with file and system utilities, in most cases you can move directly between subsystems as needed without going through the Null subsystem.

^ Subsystem ^ Function ^
| "ACCESS" | Messaging with other users connected to the 6500. |
| "BASIC" | Interactive BASIC language programming environment. |
| "BATCH" | Create and run batch jobs for non-interactive programs. |
| "EXECUTE" | Execute previously compiled programs. |
| "FORTRAN" | Interactive Fortran language programming environment. Uses FORTRAN Version 5 compiler. |
| "FTNTS" | Interactive Fortran language programming environment. Uses FORTRAN Extended Version 4 compiler. |
| "NULL" | A general-purpose environment for working with files and system status and settings (although most general commands are available in other subsystems as well). |

===== File System =====

A basic understanding of the 6500 file system is necessary to use most IAF comands.

**Permanent files**Permanent files are preserved by the system from their creation until their deletion by user command. Each permanent file is owned by a single user and is normally accessible only by its owner, though it is possible to make files accessible by other users as well.

Two types of files are supported:

**Direct access**Used for random access and database applications.**Indirect access**Common sequential access files, including program source files.**Temporary files**Whenever an indirect access file is accessed, or a new indirect access file created, the system first makes a temporary copy of the file, to which are directed all references and updates to the file. The temporary file must be saved in order for changes to be applied to the permanent file. Unsaved changes will be discarded at the end of the user's session.

A temporary file is //not// created when a //direct access// file is opened. Changes made to a direct access file are immediately applied to the permanent file.

**Primary file**The primary file is the temporary file, usually a program source file, that a user is viewing, modifying, or executing at a given time. Although a user session may simultaneously open multiple temporary files, a given user may have only one primary file at a time.

The currently selected primary file automatically determines the user's active subsystem. When a new indirect access file is saved as a permanent file for the first time, the file system records the active subsystem at the time. Then when the file is selected as primary sometime later, the system automatically activates the original subsystem.

**Local files**Local files are the set of temporary files and direct access files (permanent files) currently open by a particular job or user session.

File names my be up to seven alphanumeric (upper-case) characters and may not begin with a numeric character. The following file names are reserved by the system:

  * INPUT
  * OUTPUT
  * PUNCH
  * PUNCHES
  * P8
  * SCR
  * SCR1
  * SCR2
  * SCR3
  * SCR4
  * ZZZZZ*

===== File Commands =====

| "CATLIST"\\ "CATLIST,LO=F" | List your permanent files. The second form generates a detailed list. |
| "ENQUIRE"\\ "ENQUIRE,F" | Prints users terminal port number, current subsystem, primary file. The second form lists user's local files |
| "NEW,"//file// | Create a new file with the current subsystem and select as your primary file. |
| "OLD,"//file// | Select existing permanent file as primary. Change subsystems if file type is different from current primary file. |
| "LIST"\\ "LNH" | List primary file contents. The second form omits printing the system header. |
| "GET,"//file//\\ "LIST,L="//file// | Use "GET" and "LIST,L" together to list the contents of a file other than primary file. |
| "SAVE"\\ "SAVE,"//old//"="//new// | Save contents of primary file as permanent file (creates permanent file). May need to use "PACK" first. **Note:** Use only the first time you create a file.\\  The second form saves the primary file named //old// in a new permanent file named //new//. |
| "REPLACE" | Replace permanent file with current contents of primary file. May need to use "PACK" first. **Note:** Use when modifying previously created permanent file. |
| "PACK" | Compress multiple logical records in local file into single logical record. |
| "PURGE,"//file// | Delete a permanent file |
| "RENAME,"//oldname//","//newname// | Change the name of a permanent file |

===== Programming Commands =====

The BASIC, FTNTS, and FORTRAN subsystems provide environments for interactively creating, modifying, debugging, and running programs:

| "BASIC" | Enter the BASIC subsystem. Uses the BASIC programming language interpreter. |
| "FTNTS" | Enter the FTNTS subsystem. Uses the FORTRAN Extended Version 4 compiler. |
| "FORTRAN" | Enter the FORTRAN subsystem. Uses the FORTRAN Version 5 compiler. |

The tree subsystems provide a development environment similar to the original Dartmouth BASIC and versions of Microsoft BASIC for microcomputers and early PCs.

==== Program source files ====

For all subsystems, program source code is stored in indirect access files. The file's subsystem flag, set when first created, indicates the file's source programming language (and compiler version for Fortran source files).

Create new source files, list and select existing source files, view contents, and save changes to source files using the file commands documented above.

Each programming subsystem includes a simple editing function for entering and modifying program source code in the primary file as follows:

To add a source code line:Type a new line sequence number followed by a space and then a program statement. Source code lines will be stored and compiled/executed in the order of line sequence numbers, so lines can be entered in any order.To modify a source code line:Type line sequence number of the program statement to be changed followed by a space and the modified program statement.To delete a source code line:Type the line sequence number followed immediately by the "Enter" key.

  * In the BASIC subsystem, use line sequence numbers as the targets of "GOTO" and other statements.
  * In the Fortran language subsystems (FORTRAN and FTNTS), the line sequence numbers are //not// the same as the line label numbers used by Fortran PRINT/WRITE/FORMAT, GO TO, and other statements. Line label numbers should be inserted in necessary lines between the line sequence number and program statement.
  * In the Fortran language subsystems, program statement text Following the line sequence numbers may conform to or ignore standard Fortran column rules at the programmer's choice.
  * In the BASIC subsystem, program statement without a preceding line sequence number will be executed immediately and are not added to the primary file. This is useful for testing statements before modifying your program. Use "PRINT" statements to display results of calculations, etc.

| "AUTO" | Enter automatic line sequence number mode. Enter program source statements in sequence after the system-generated line numbers. Exit the mode by pressing "Esc" key followed by "Enter" key. |
| "RESEQ" | Renumber the source code lines in the primary file, maintaining the original sequence. In BASIC subsystem, target line numbers of GOTO and other statements are adjusted appropriately. |
| "RUN"\\ "RNH"\\ "RUN,MI=12625" | For the BASIC subsystem, runs the primary file program. The second form omits printing of the system header.\\ The third form is required to compile and run programs in the FTNTS subsystem. (The "MI" argument sets the compiler field length. As of this writing it is unknown if value 12625 is valid for all programs.)\\ //**Note:** As of this wiriting, the author has not yet succeeded in compiling nor running a program with the FORTRAN subsystem.// |

===== Text Editor =====

Although the programming subsystems include basic functionality for entering and modifying program source code in the primary file, the NOS Text Editor program ("EDIT") provides both advanced editing functions and the ability to edit other local files besides the primary file.

| "EDIT"\\ "EDIT,"//file// | Edit the primary file with Text Editor. The second form is for editing other local files. |
| "END" | Exit Text Editor |

===== Messaging =====

Use the ACCESS subsystem to communicate with other users connected to the 6500.

| "ACCESS" |
| Enter the ACCESS subsystem |
| "USER,"//userID// | Find connected user's terminal port number |
| "DIAL,"//port//","//message// | Send message to user. |

===== Other System Commands =====

| "DAYFILE" | List user's activity log. |
| "PASSWOR,"//old//","//new// | Change user password from //old// to //new// |

===== Disconnecting =====

| "BYE"\\ "GOODBYE"\\ "LOGOUT" | End user session and disconnect |
| "HELLO"\\ "LOGIN" | End user session and return to log-in screen |

===== File Sharing =====

Share permanent files with other 6500 users.

| "CHANGE,"//file//"/CT=PU,M="//mode// | Give access mode //mode// to //file// to all 6500 users. \\ Permission //mode//s: "A"=append, "E"=execute, "M"=modify, "N"=remove perm., "R"=read, "RA"=read+append, "RM"=read+modify, "W"=write |
| "PERMIT,"//file//","//user//["="//mode//]... | Give access mode //mode// to //file// to //user//. Default //mode// is read. |
| "CATLIST,UN="//user// | List permanent files in //user//'s catalog for which you have been granted access permission. |
| "OLD,"//file//"/UN="//user// | Open permanent file //file// in //user//'s catalog (must have been granted access permission). |

===== File Transfer =====

In order to transfer data to or from the 6500, your best option is to copy and paste. If your having trouble pasting in programs, you may want to try using TeraTerm with after altering the line delay under Setup -&gt; Additonal settings -&gt; Copy and Paste -&gt; Paste delay per line at about 250ms.

===== References =====

  * [[http://bitsavers.trailing-edge.com/pdf/cdc/cyber/lang/basic/19980300B_BASIC_Language_Version_2_Reference_Nov74.pdf|BASIC Language Version 2 Reference Manual]] (PDF). Control Data Corporation. Oct. 1974. Accessed Oct. 8, 2016.
  * [[http://bitsavers.trailing-edge.com/pdf/cdc/cyber/lang/fortran/60305600A_FTN_Extd_V4_Oct71.pdf|FORTRAN Extended Reference Manual Version 4]] (PDF). Control Data Corporation. Oct. 22, 1971. Accessed Aug. 29, 2016.
  * [[http://bitsavers.trailing-edge.com/pdf/cdc/cyber/nos/60455250C_Interactive_Facility_Version_1_Reference_Aug79.pdf|Interactive Facility Version 1 Reference Manual]] (PDF). Control Data Corporation. Aug. 10, 1979. Accessed Aug. 17, 2016.
  * [[http://bitsavers.trailing-edge.com/pdf/cdc/cyber/nos/60435400C_NOS_Version_1_Reference_Manual_Volume_1_Dec76.pdf|NOS Version 1 Reference Manual Volume 1 of 2]] (PDF). Control Data Corporation. Dec. 3, 1976. Accessed Aug. 26, 2016.
  * [[http://bitsavers.trailing-edge.com/pdf/cdc/cyber/nos/60436100C_NOS_Version_1_Text_Editor_Ref_Mar76.pdf|NOS Version 1 Text Editor Reference Manual]] (PDF). Control Data Corporation. Mar. 8, 1976. Accessed Aug. 17, 2016.

===== Future Improvements =====

The author would like to make the following improvements to this document:

  * Document compilation and execution of programs with FORTRAN subsystem.
  * Text Editor command guide.
  * Batch subsystem guide.
  * Execute subsystem guide.

$Id: cdc6500.html,v 1.11 2016/11/12 15:34:38 papa Exp $