JOHNNIAC was retired in 1966 and replaced by a PDP-6, which ultimately grew to support hundreds of computer terminals based on the IBM Selectric.
Some remained similar to the original, like TELCOMP and STRINGCOMP, CAL, CITRAN, ISIS, PIL/I, JEAN (ICT 1900 series), BOSS and INTERP on the Burroughs B5500, Algebraic Interpretive Dialogue (AID, on PDP-10).
JOSS also bears a strong resemblance to the BASIC interpreters found on microcomputers in the 1980s, differing mainly in syntax details.
"[2] The memo gained the interest of the US Air Force, Rand's primary sponsors, and in 1960, they formed the Information Processor Project to explore this concept, what would soon be known as time-sharing.
[2] JOSS was implemented almost entirely by J. Clifford Shaw, a mathematician who worked in Rand's growing computing division.
It was written in a symbolic assembly language called EasyFox (E and F in the US military's then phonetic alphabet), also developed by Shaw.
[4] The JOSS system was brought up formally for the first time in May 1963, supporting five consoles, one in the machine room and another four in offices around the building.
[5] The early consoles were based in the IBM Model 868 Transmitting Typewriter, as the Selectric had not yet been introduced to market when development began.
[1]In May 1964, the decision was made to look for a new machine to replace the JOHNNIAC and dedicate it entirely to running an expanded version of JOSS.
Digital Equipment Corporation (DEC) won the contest with their new PDP-6 system, and Air Force funding was released for the purchase.
DEC also agreed to build thirty terminals based on the IBM Selectric typewriter modified with a special mechanism to advance to the next page in a fan-fold paper feed.
The new version of the code was developed by Charles L. Baker, Joseph W. Smith, Irwin D. Greenwald, and G. Edward Bryan.
Two-hundred of the plugs were installed around Rand, and the terminal chassis was designed to be narrow enough to fit through doors while still leaving room for a coffee on one side.
[16] The custom terminals had been designed for JOSS as the engineers felt that the Model 33's "telecommunications functions are a mystery to the untrained person" and would be too confusing for the occasional users to bother learning.
[20] In practice, the Selectric-based mechanisms proved too fragile for the constant use they saw and were frequently being repaired in the field by IBM servicemen.
Although this was a relatively large amount of memory for the era, the system was so heavily used that the 16k word user store was not enough, and it was backed up with a magnetic drum for paging support.
[27] Because large programs caused paging that slowed the computer for all, The JOSS Newsletter often asked users to use less storage.
These consisted of a Selectric mechanism built into a custom chassis containing the communications system, power supply, and other components.
These codes were also noticed by the communications system and changed lights on the front panel to indicate whether the computer or user had control of the terminal at that moment.
Children and others said that unlike a "complicated" computer, JOSS was "friendly" and "kind" like "a real person with a sense of humor", with funny responses like Eh?.
For instance, if a subroutine for calculating the square root of a number is in page 3, one might have three lines of code 3.1, 3.2 and 3.3, and it would be called using Do part 3.
For example, to print a string only if a condition is met, one can combine the if with a Type: JOSS supported six infix comparisons, =, ≠, ≥, ≤, >, <, and Boolean operators or, and, and not.
They serve a purpose similar to the ternary operator found in modern languages like C or Java, where they are used to return a value from a compact structure implementing if-then-else.
JOSS's capability to combine decisions and loops in a compact form is unknown in other languages of the era, including offshoots like FOCAL.
[43] The system generally suggested using Let only in direct mode, saving them out for use in a program by inserting them at the top or bottom of the file.
However, Type includes a number of optional forms that make it highly overloaded, performing a range of unrelated output tasks.
[45] When used to print values, the parameters can be variables, literal strings surrounded by double-quotes, and the special _ character that produces a line feed.
However, it included a special "parenthetic do" that could be used in direct mode to test certain sections of the code without changing the main pointer.
The parameters could be either a list of simple expressions separated by commas, or a range construct whose command could be any statement or function call.
Within that space were a number of files that were referred to using a multi-part filename consisting of an integer and a five-letter name in parentheses, for instance, 123 (hello).
direct mode
. Note the difference between the period at the end of the statements and the
interpunct
for multiplication.