CAL, short for Conversational Algebraic Language, was a programming language and system designed and developed by Butler Lampson at Berkeley in 1967 for the SDS 940 mainframe computer. CAL is a version of the seminal JOSS language with a number of cleanups and new features to take advantage of the SDS platform. The Berkeley SDS was used for the development of the Tymshare commercial time-sharing platform and an improved version of CAL was offered as a programming environment to its customers in 1969. Although CAL saw "almost no use", it had a lasting impact by influencing the design of Tymshare SUPER BASIC which copied a number of its features. Some of those features, in turn, appeared in BASIC-PLUS on the PDP-11, which is the direct ancestor of Microsoft BASIC. Description Basic concepts JOSS had been designed to be used by non-programmers in the US Air Force and within Rand Corporation, and to aid with that, Rand designed custom computer terminals that were easier to set up and use. These terminals, based on the IBM Selectric typewriter, also included a custom character set that implemented common mathematical symbols like and . To a large degree, CAL was a version of JOSS that replaced these sorts of customizations with more common solutions like and so they could run on common terminals. The other noticeable differences were that CAL was all upper-case, as opposed to sentence casing in JOSS, and it did not require a period at the end of the line. The commands were otherwise almost identical and the overall structure and syntax the same. As with JOSS, CAL had an interactive user interface that allowed the user to type in statements in "direct mode" or programs to be run in "indirect mode". In BASIC, the former is more commonly referred to as "immediate mode". Both CAL and JOSS used a two-part line number, known as the part and step, separated by a period, for instance, for part 1 step 100. Parts were generally used to group related statements into subroutines. In CAL, the part number could be between 0 and 999999, and the step from 0 to 99999. There were two main versions of CAL, released in 1967 and 1969. The following description will be based primarily on the former version unless otherwise noted. Jumps and subroutines As in JOSS, CAL supported the command to branch to a provided part or