|Developer||Cliff Shaw, RAND|
|BASIC, TELCOMP, CAL, FOCAL and MUMPS|
JOSS (an acronym for JOHNNIAC Open Shop System) was one of the very first interactive, time-sharing programming languages.
JOSS I, developed by J. Clifford Shaw at RAND, was implemented on the JOHNNIAC computer in May 1963, supporting five consoles, at ten remote consoles since January 1964. The final version was deployed in January 1965.[page needed][page needed]
JOSS was written in a symbolic assembly language called EasyFox (E and F in the US military's phonetic alphabet of that time). EasyFox was also developed by Cliff Shaw.
JOSS was dubbed "The Helpful Assistant" for its conversational user interface. Originally green/black typewriter ribbons were used in its terminals with green being used for user input and black for the computer's response. Mathematically, JOSS was interesting because it stored all numbers as an integer and a decimal exponent. This means calculations were exact decimal values, as opposed to floating point calculations. One third plus one third plus one third was exactly one. Any command that was not understood elicited the response "Eh?" or "SORRY".
JOSS II, was developed by Charles L. Baker, Joseph W. Smith, Irwin D. Greenwald, and G. Edward Bryan for the PDP-6 computer between 1964 and February 1966.
Many variants of JOSS were developed and implemented on a variety of platforms. Some of these variants remained very similar to the original: TELCOMP, FOCAL, CAL, CITRAN, ISIS, PIL/I, JEAN (ICT 1900 series), AID (PDP-10); while others, such as MUMPS, developed in distinctive directions.
1.1 Demand p,q. 1.2 Stop if q<0 or r(q,2)=0. 1.3 Set a=1. 1.4 Do part 2 while q>1 and a~=0. 1.5 Type a in form 3. 1.6 Stop.
2.1 Do part 20. 2.1 Do part 11 if p<0. 2.2 Do part 12 if p>=q. 2.3 Do part 13 if p=0. 2.4 Done if a=0. 2.5 Set p=p/4 while r(p,4)=0. 2.6 Do part 14 if r(p,2)=0. 2.7 Do part 20. 2.8 Set a=-a if r(p,4)=r(q,4)=3. 2.9 Set s=p, p=q, q=s. 2.95 Do part 20.
11.1 Set a=-a if r(q,4)=3. 11.2 Set p=|p|. 11.3 Do part 20.
12.1 Set p=r(p,q). 12.2 Do part 20.
13.1 Set a=0, p=1, q=1.
14.1 Set a=-a if r(q,8)=3 or r(q,8)=5. 14.2 Set p=p/2.
20.1 Type p, q in form 1 if a=1. 20.2 Type p, q in form 2 if a=-1.
Form 1: " L(%.0f,%.0f) =" Form 2: " -L(%.0f,%.0f) =" Form 3: " %.0f\n"
Note that this is not an original sample, but rather one from a modern simulator. There are some syntactic differences from the original JOSS language.
- Marks, Shirley L. (1971). The JOSS Years: Reflections on an Experiment. 1963: pp. V, 2, 1966: p. 9-10.
- "JOSS: Examples of the Use of an Experimental On-Line Computing Service". Shaw, J. C. 1965: 1.
- "JOSS: Experience with an Experimental Computing Service for Users at Remote Typewriter Consoles". Shaw, J. C. 1965: 1.
- D, Goldstein, Gordon; A, Sass, Margo; E, Ceasar, Judy; A, Hetrick, Judy (Oct 1964). "MISCELLANEOUS: 6. The RAND Corporation, JOSS: An Experimental, On-Line, Time-Shared Computing System, Santa Monica, California". DIGITAL COMPUTER NEWSLETTER. 16 (4): 45.
- Wexelblat, Richard L, ed. (1981). History of Programming Languages. New York: Academic Press. ISBN 0-12-745040-8.
- Smith, JW (August 1967). "JOSS: Central Processing Routines" (reference user guide). RAND. RM 5270 PR. Retrieved 2012-04-16.
- Sammet, Jean (1969). Programming languages : history and fundamentals. Prentice-Hall. ISBN 0-13-729988-5. pp. 217–226
- Bryan, G. E. (1966-11-04). JOSS: Introduction to the System Implementation. Lawrence Radiation Laboratory, Berkeley California: DECUS. p. 19. Retrieved 2013-06-19.
- "JOSS Users' Reference Manual", R.L. Clark, Report R-1555/9, RAND Corp (Jan 1975)
- Oral history interview with Keith W. Uncapher, Charles Babbage Institute, University of Minnesota. Review of projects at RAND when Keith Uncapher was hired in 1950 through the early 1970s, such as JOHNNIAC, JOSS, a survivable national network, and some work related to the ARPANET.