CANDE

Last updated

CANDE
Original author(s) Darrel F. High,
Randall Gellens
Developer(s) Burroughs / Unisys
Initial release1973;50 years ago (1973)
Stable release
MCP 19.0 / December, 2019
Operating system Burroughs MCP
Platform Unisys Clearpath series of mainframes
Available inEnglish
Type Command shell, text editor

CANDE (Command AND Edit) is a command line shell and text editor on the MCP (Master Control Program) operating system which runs on the Unisys Clearpath series of mainframes. Originally implemented on Burroughs large systems, it has a range of features for interacting with the operating system execution environment, focused on executing, editing and compiling programs, and creating, copying, moving, renaming, and deleting files in general.

Contents

Its full name is CANDE MCS. MCS, or Message Control Subsystem is the general form of a systems program in the Burroughs architecture (other than MCP, the Master Control Program or core OS). As an MCS, CANDE is more than just an editor as it provides overall control for a network of users.

The editing capabilities of CANDE are anachronistic for casual (as opposed to scripted) editing as they predate full screen and graphical editors.

CANDE was also used on the Burroughs CMS (mini computer) range, with very similar syntax.

In contemporary MCP, CANDE is primarily used thru the ODT (Operator Display Terminal) and MARC (Menu Assisted Resource Control) on emulators of the original character oriented terminals as with other legacy mainframe interfaces such as ISPF.

Features

CANDE provides a command-line interpreter and line editor, although unlike the modern interpretation of an operating system command line interpreter, the CANDE commands are compiled into the CANDE MCS, as shell like capabilities are provided by WFL. Other notable features and functions include:

In addition to these features CANDE has an on-line help facility.

Implementation

For extra speed, CANDE implemented user context switching by swapping a block at the top of the stack. This novel method broke several assumptions built into the design of Burroughs large systems, in particular the handling of virtual memory descriptors, and meant that CANDE itself had to be written in DCALGOL with system-level privileges.

Architecturally, CANDE is split into two main sections: a primary, single-instanced main process originally supporting up to 255 simultaneous users, and one or more worker stacks. The main process is called BUMP. It receives all input messages, including input from users. Simple requests which can be executed without delay and do not involve any I/O such as disk access are handled immediately. Other requests are added to a work queue and handled by one of the worker processes. The worker process is called GRIND; there can be one or more instances at any time. Each GRIND process has by default five pseudo-threads which actually carry out the work.

The internal threading model for context switching selects one of the worker pseudo-threads per GRIND process and makes it the executing context. This is achieved by copying it to the top of the stack. When the worker process needs to execute I/O or other asynchronous activity, it initiates the action, marks what it is waiting for, and calls the context-switching function, which selects a different context for execution.

CANDE operates without internal locks, by careful separation of data. Each possible user connection (or station) is assigned an index into a main array called the station array, or STA ("stay"). The current station index is named STAX (pronounced "stay-x"). There are multiple words of state data per station, but they are stored with all of the first words together, followed by all of the second words, etc. This allows CANDE to index into the array using only addition, not multiplication (which made for faster operation on the hard-wired CPUs of the era).

CANDE was originally written in 1973 by Darrel F. High. It was taken over by Randall Gellens in 1984, at which point the library maintenance (file copying, moving, renaming, and deleting) routines were rewritten to allow for significantly expanded capabilities, a slew of utilities were added using the "?" syntax (allowing them to be used even while a program was running), and several architectural improvements were made. It was later transferred to the Santa Barbara plant, and eventually to India.

The "?" syntax, originally allowing for control during program execution (when input would normally be directed to the program), grew to include a number of utilities.

See also

Related Research Articles

<span class="mw-page-title-main">Burroughs Corporation</span> American computer company

The Burroughs Corporation was a major American manufacturer of business equipment. The company was founded in 1886 as the American Arithmometer Company. In 1986, it merged with Sperry UNIVAC to form Unisys. The company's history paralleled many of the major developments in computing. At its start, it produced mechanical adding machines, and later moved into programmable ledgers and then computers. It was one of the largest producers of mainframe computers in the world, also producing related equipment including typewriters and printers.

<span class="mw-page-title-main">Computer program</span> Instructions to be executed by a computer

A computer program is a sequence or set of instructions in a programming language for a computer to execute. Computer programs are one component of software, which also includes documentation and other intangible components.

Forth is a procedural, stack-oriented programming language and interactive environment designed by Charles H. "Chuck" Moore and first used by other programmers in 1970. Although not an acronym, the language's name in its early years was often spelled in all capital letters as FORTH. The FORTH-79 and FORTH-83 implementations, which were not written by Moore, became de facto standards, and an official standardization of the language was published in 1994 as ANS Forth. A wide range of Forth derivatives existed before and after ANS Forth. The free software Gforth implementation is actively maintained, as are several commercially supported systems.

<span class="mw-page-title-main">Operating system</span> Software that manages computer hardware resources

An operating system (OS) is system software that manages computer hardware and software resources, and provides common services for computer programs.

<span class="mw-page-title-main">Thread (computing)</span> Smallest sequence of programmed instructions that can be managed independently by a scheduler

In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. The implementation of threads and processes differs between operating systems. In Modern Operating Systems, Tanenbaum shows that many distinct models of process organization are possible. In many cases, a thread is a component of a process. The multiple threads of a given process may be executed concurrently, sharing resources such as memory, while different processes do not share these resources. In particular, the threads of a process share its executable code and the values of its dynamically allocated variables and non-thread-local global variables at any given time.

The Burroughs Large Systems Group produced a family of large 48-bit mainframes using stack machine instruction sets with dense syllables. The first machine in the family was the B5000 in 1961, which was optimized for compiling ALGOL 60 programs extremely well, using single-pass compilers. The B5000 evolved into the B5500 and the B5700. Subsequent major redesigns include the B6500/B6700 line and its successors, as well as the separate B8500 line.

<span class="mw-page-title-main">DIGITAL Command Language</span>

DIGITAL Command Language (DCL) is the standard command language adopted by many of the operating systems created by Digital Equipment Corporation. DCL had its roots in IAS, TOPS-20, and RT-11 and was implemented as a standard across most of Digital's operating systems, notably RSX-11 and RSTS/E, but took its most powerful form in VAX/VMS. DCL continues to be developed by VSI as part of OpenVMS.

The Executive Systems Problem Oriented Language (ESPOL) is a programming language, a superset of ALGOL 60, that provides abilities of what would later be termed a system programming language or machine oriented high order language (mohol), such as interrupting a processor on a multiprocessing system. ESPOL was used to write the Master Control Program (MCP) on Burroughs computer systems from the B5000 to the B6700. The single-pass compiler for ESPOL could compile over 250 lines per second.

The MCP is the operating system of the Burroughs B5000/B5500/B5700 and the B6500 and successors, including the Unisys Clearpath/MCP systems.

<span class="mw-page-title-main">Code injection</span> Computer bug exploit caused by invalid data

Code injection is the exploitation of a computer bug that is caused by processing invalid data. The injection is used by an attacker to introduce code into a vulnerable computer program and change the course of execution. The result of successful code injection can be disastrous, for example, by allowing computer viruses or computer worms to propagate.

<span class="mw-page-title-main">Pipeline (Unix)</span>

In Unix-like computer operating systems, a pipeline is a mechanism for inter-process communication using message passing. A pipeline is a set of processes chained together by their standard streams, so that the output text of each process (stdout) is passed directly as input (stdin) to the next one. The second process is started as the first process is still executing, and they are executed concurrently. The concept of pipelines was championed by Douglas McIlroy at Unix's ancestral home of Bell Labs, during the development of Unix, shaping its toolbox philosophy. It is named by analogy to a physical pipeline. A key feature of these pipelines is their "hiding of internals". This in turn allows for more clarity and simplicity in the system.

The Burroughs B1000 Series was a series of mainframe computers, built by the Burroughs Corporation, and originally introduced in the 1970s with continued software development until 1987. The series consisted of three major generations which were the B1700, B1800, and B1900 series machines. They were also known as the Burroughs Small Systems, by contrast with the Burroughs Large Systems and the Burroughs Medium Systems.

The Burroughs B6x00-7x00 instruction set includes the set of valid operations for the Burroughs B6500, B7500 and later Burroughs large systems, including the current Unisys Clearpath/MCP systems; it does not include the instruction for other Burroughs large systems including the B5000, B5500, B5700 and the B8500. These unique machines have a distinctive design and instruction set. Each word of data is associated with a type, and the effect of an operation on that word can depend on the type. Further, the machines are stack based to the point that they had no user-addressable registers.

<span class="mw-page-title-main">Comparison of command shells</span>

A command shell is a command-line interface to interact with and manipulate a computer's operating system.

Experix is an open-source command interpreter designed for operating laboratory equipment, especially data acquisition devices, and processing, displaying and storing the data from them. It is usable now, only under Linux on the x86 architecture, but still under development, and users are welcome to participate in extending and improving it.

The Burroughs B2500 through Burroughs B4900 was a series of mainframe computers developed and manufactured by Burroughs Corporation in Pasadena, California, United States, from 1966 to 1991. They were aimed at the business world with an instruction set optimized for the COBOL programming language. They were also known as Burroughs Medium Systems, by contrast with the Burroughs Large Systems and Burroughs Small Systems.

HP Time-Shared BASIC is a BASIC programming language interpreter for Hewlett-Packard's HP 2000 line of minicomputer-based time-sharing computer systems. TSB is historically notable as the platform that released the first public versions of the game Star Trek.

A read–eval–print loop (REPL), also termed an interactive toplevel or language shell, is a simple interactive computer programming environment that takes single user inputs, executes them, and returns the result to the user; a program written in a REPL environment is executed piecewise. The term usually refers to programming interfaces similar to the classic Lisp machine interactive environment. Common examples include command-line shells and similar environments for programming languages, and the technique is very characteristic of scripting languages.

Syntax diagrams are a way to represent a context-free grammar. They represent a graphical alternative to Backus–Naur form, EBNF, Augmented Backus–Naur form, and other text-based grammars as metalanguages. Early books using syntax diagrams include the "Pascal User Manual" written by Niklaus Wirth and the Burroughs CANDE Manual. In the compilation field, textual representations like BNF or its variants are usually preferred. BNF is text-based, and used by compiler writers and parser generators. Railroad diagrams are visual, and may be more readily understood by laypeople, sometimes incorporated into graphic design. The canonical source defining the JSON data interchange format provides yet another example of a popular modern usage of these diagrams.

<span class="mw-page-title-main">Asymmetric multiprocessing</span>

An asymmetric multiprocessing system is a multiprocessor computer system where not all of the multiple interconnected central processing units (CPUs) are treated equally. For example, a system might allow only one CPU to execute operating system code or might allow only one CPU to perform I/O operations. Other AMP systems might allow any CPU to execute operating system code and perform I/O operations, so that they were symmetric with regard to processor roles, but attached some or all peripherals to particular CPUs, so that they were asymmetric with respect to the peripheral attachment.