STOIC | |
Paradigm: | concatenative (stack-based), procedural |
Year: | 1975/1976 |
Designer: | Harvard-MIT |
Developer: | Jonathan Sachs |
Influenced By: | RPN, Forth |
Operating System: | OpenVMS, CP/M, Data General Nova |
STOIC (Stack-Oriented Interactive Compiler) is a 1970s programming language, a variant of Forth.
STOIC started out at the MIT and Harvard Biomedical Engineering Centre in Boston, (part of the Health, Science and Technology Division) and was written in the mid 1970s by Jonathan Sachs.[1] Jonathan Sachs went on to be the principal programmer of Lotus Development and wrote the first version of Lotus 1-2-3.
The original version of STOIC was written on a Data General Nova minicomputer and cross-assembled for the 8080. STOIC came with its own primitive but effective file system, and could be booted up with little preliminary work on any 8080-based microprocessor with 24K of memory and a Teletype machine. After the source was released into the public domain, the system was subsequently modified to run under CP/M.[2]
STOIC was said at the time[3] to be conceptually similar to FORTH in the use of an extensible vocabulary of "words".[4] STOIC is actually a rational, and more consistent, dialect of FORTH . The system was remarkable at the time for having a built-in assembler, floating-point package, interrupt handler, and display editor (similar to the Nova display editor).[5] The source, and documentation, was distributed for many years by the CP/M Users Group.[6] As a practical development system, it compared favourably with contemporary implementations of FORTH,[7] and went on to be used extensively for the development of applications. A portable version written in C was placed in the public domain and also distributed by the CP/M Users Group (UK).
Later, STOIC was ported to the DEC VAX under VMS by Roger Hauck[8] at Smithsonian Institution Astrophysical Observatory (SAO) and was distributed by DECUS.[9] [10] It was distributed at least through fall 1985.[11]
STOIC, unlike other FORTH variants, was integrated with the VMS I/O and system services rather than using the FORTH disk I/O. It also supported machine code (both inline and subroutine calls). STOIC supported double precision floating point operations using a stack.
According to some mailing list comments,[12] STOIC was originally written by Jonathan Sachs in 1975.A different program named LSE was written by Robert Goeke, which incorporated some of the ideas of STOIC (an early version may have been called STOIC).
An autotooled variant of LSE, LSE64 (Laboratory Software Environment), is maintained by John Doty.
One version of STOIC is noted as being "Stack Oriented Interpretive Compiler", but it is unclear which is which.[13]
STOICAL (STack Oriented Interactive Compiler Adapted to Linux) was inspired by STOIC.[14] In the early 1980s there was an attempt to reincarnate STOIC by Ernest E. Bergmann in a language dubbed PISTOL (Portably Implemented STack Oriented Language); ibid.