TAP(ID:3248/tap001)

Macroassembler for the TREET system 


for TREET Assembly Program

Macroassembler for TREET, based partly on BAL, but with sophisticated structuring mechanism

Online use by COM-SHARE


Related languages
BAL => TAP   Based on
TREET => TAP   Target language for

References:
  • Bayard H.A. et al, "The TREET Time-Sharing System" view details Abstract: This paper is a description of the TREET time sharing system as it is presently implemented. Information is provided about the basic TREET system, including data structures, basic functions and facilities, languages, the translator, the assembler, the compiler, storage, and data set access; about the time sharing system, its monitor and file structure; about the editing and debugging facilities for on-line programming; and about four application areas?text processing, tree processing, fact retrieval, and further development of the on-line system. Extract: Introduction
    Introduction
    The established success of LISP as a vehicle for the construction of interactive symbolic and algebraic manipulation systems is based primarily on its well known facilities for list processing, recursive function definition, and automatic garbage collection, as well as on its availability in many time sharing environments.
    The purpose of this paper is to introduce TREET, an alternative system of potentially widespread availability which shares these same features but which also offers others not generally provided within LISP systems. These additional features have proven useful in a number of application areas, four of which will be considered briefly at the end of the paper. We believe TREET will prove to be particularly valuable in a mathematical laboratory environment as well.
    LISP is often criticized for its unusual syntax comprised of parenthesis-laden prefix expressions. While this syntax is not without its virtues, it could be pointed out with some justice that none of the LISP based algebraic manipulation systems, e.g., MACSYMA, MATHLAB, REDUCE, SCRATCHPAD, reported on at this conference ever proposed offering such a syntax to its users, even for programming purposes. The TREET language accepts procedure-oriented statements in a syntax resembling ALGOL or PL/I and provides an extensible translator to convert them into a LISP-like Cambridge Polish notation which is employed as an intermediate language, i.e., as input to the interpreter or the compiler.
    Consistent with this procedural orientation, TREET provides WHILE type control loops as well as IF ... THEN conditionals. Among the deeper differences between LISP and TREET, perhaps the most controversial is the use by TREET of three address cells as the basis on which to construct list structure. The third cell is under programmer control and has been used for such diverse purposes as parent pointers, value cells, and the storage of properties or property lists. It is also of great convenience in the management of otherwise unprintable list structure. Other variances from LISP include the provision of string as a data type and of TAP, a list processing oriented macro assembler.
    The TREET system operates on IBM 360 computers under OS, which is the basis for its transportability.
    The interactive terminals currently being used are IBM 2260 displays. These relatively inexpensive devices function as high speed interactive character matrices which can be read and written by both the user and the program. In some application areas, the user can change his data by simply typing over it.
    Since OS is not a time sharing system, we had to provide a time sharing monitor, a filing system, and an editor. Two distinct advantages follow from incorporating them into the TREET system itself. First, the editor is programmable, i.e., its functions can be called as sub-routines by a higher level system. Second, the user may debug his TREET programs, using the editor, without leaving TREET.
    Relevant to the present symposium, we should like to note that several of the characteristics of this system would seem to lend themselves well to the construction of systems for algebraic manipulation.
    Among these are the three address cells, particularly attractive for prefix representations in which each sub-expression is to bear a property or property list; the extensibility of the input translator which would allow it to function easily as a user modifiable parser for the specification of mathematical data; and the opportunity, inherent in the use of machine displays, of providing an inexpensive substitute for the light-pen selection of mathematical sub-expressions.
    The TREET language began as a variation of LISP 1.5 [I] and was programmed as a LISP pre-processor on the MAC System [2]. In 1965 it was implemented on the IBM 7030 (STRETCH) computer [3] at The MITRE Corporation for use in computational linguistics and text processing [4,5] and in AESOP, an experimental on-line information control system [6]. The TREET-360 system is a direct descendant; it has been operational since mid-1967 [7].
    Extract: The basic TREET system
    The basic TREET system
    The implementation of the TREET list processing system on IBM 360 computers has involved the use of models 30, 40, and 50, with most of the present work being done on the 360/50. However, our orientation is towards the larger end of the 360 and 370 lines.
    TREET has run under PCP, MFT, and MVT versions of OS/360, and it is well suited to a multiprogramming environment.
    Since TREET is a user task under OS, no special software is needed other than the TREET system itself. A fairly large partition is required: 128K bytes (eight bits per byte) for a minimal system; 225K bytes for the full TREET time sharing system. More core can be used if available. We run the system regularly in LCS (large capacity, slow speed core storage), although with somewhat degraded performance. Direct access devices are an integral part of the design; most commonly used have been the 2314 disk units.
    Programming of the TREET system is on two distinct levels: OS Basic Assembly Language (BAL), and the languages provided by TREET. The BAL level contains the I/0 routines, initializing routines, the reclaimer (garbage collector), and enough basic routines to start up the rest of the system. The higher level routines include many "primitive" list processing functions (e.g., MEMi, EQ). Our intent has been to minimize the amount of programming on the lower level, because it is fairly difficult to modify, whereas anything on the higher level can be changed very simply.

          in [ACM] Proceedings of the Second Symposium on Symbolic and Algebraic Manipulation, March 23-25, 1971 Los Angeles (SYMSAM 71) view details