Formula and Assembly Translator 

for Formula and Assembly Translator

Ballistic Research Laboratory 1960 - FORTRAN like language developed independantly for the ORDVAC and BRLESC

Places Hardware:
  • BRLESC Aberdeen Proving Ground
  • ORDVAC BRL/Aberdeen Proving Ground

  • Beck, Glenn A.; Campbell, Lloyd W. Formula and assembly translator program for ORDVAC (FORAST) August 1960. view details
  • Sammet, Jean E "1960 Tower of Babel" diagram on the front of CACM January 1961 view details

          in [ACM] CACM 4(01) (Jan 1961) view details
  • Campbell, L. W. "The FORAST programming language" view details Abstract: FORAST is a programming language that has been implemented on BRLESC and ORDVAC. Designed for and used primarily by BRL's professional programmers, it is a problem-oriented language that is closer to a good machine language than most problem-oriented languages. The design objectives for FORAST were: (1)—fast translation and load and go operation, (2)—to allow full usage of machine's capabilities, (3)—efficient object programs, (4)—to fit translator in a 4096-word memory, (5)—human readability, (6)—primarily for mathematical problems, and (7)—compatability between BRLESC and ORDVAC. Extract: How FORAST works
    FORAST is a programming language that has been implemented on BRLESC and ORDVAC. Designed for and used primarily by BRL's professional programmers, it is a problem- oriented language that is closer to a good machine language than most problem-oriented languages. The design objectives for FORAST were:

    1. fast translation and load and go operation,
    2. to allow full usage of machine's capabilities,
    3. efficient object programs,
    4. to fit translator in a 4096-word memory,
    5. human readability,
    6. primarily for mathematical problems, and
    7. comparability between BRLESC and ORDVAC.

    Figure 1 illustrates a few arithmetic formulas. The notation is the usual except % is end of statement and a comma is used to indicate an indexed address. Indexing is in addition to constant subscripts, not in place of them and any address may be indexed by one and only one index register. A comma is not used in front of the first constant subscript, thus V4 could be an element in a vector. Index arithmetic is not allowed within a formula except for the addition or subtraction of a constant and this is done at translate time. "Figure Symbolic names do not indicate the type of variable. Mixed arithmetic is not allowed within a formula; however, integer (INT) or fixed point (FIX) or floating point (FLT) formulas may be written. Implied multiplication by the use of parentheses is allowed. The operations follow the usual precedence rules when parentheses are omitted except that sucessive multiply and divide operations are grouped from the right. This reduces the number of parentheses required because denominators don't need parentheses, unless they involve addition or subtraction, in which case they are required under either grouping. It also leads naturally to a more efficient code on a single address machine. A better rule for multiply and divide would be to give multiply a higher precedence than divide. Successive exponentiations are also grouped from the right. Symbolic names do not have to begin with a letter and absolute decimal or sexadecimal addresses are allowed. Numbers are allowed instead of an address; the type of number is determined by the type of formula in which it occurs.
    Figure 2 illustrates the English word statements that are allowed in FORAST. The GOTO may use an indexed address as shown and this makes switches unnecessary. The SET statement is used to set index registers and sets an address, which may be either absolute or symbolic, into the index register specified. Thus SET(E=E1) means to  put the address assigned to E1 into index register E. This idea and a good list of standard subroutines greatly reduces the need for procedures. SETEA computes an effective address and sets it into an index register. "Figure The INC statement may be used to increase index registers and the COUNT statement will increase an index register and test it for an upper limit. IF statements allow a jump to occur if the tested equality or inequality conditions are met. CLEAR and MOVE statements ease the programmer's task of doing these common operations and help to keep a program more readable by people. READ and PRINT allow decimal or alphabetic information to be read or printed on cards or tape. AlphabeticAnformation to be printed may be written in the PRINT statement by enclosing it in < and > symobls. ENTER allows subroutines that have more than one argument or more than one result.
    Figure 3 illustrates the card format and some of the declarative statements and storage control statements. The BLOC statement is used to define blocks and arrays. Linear blocks of consecutive or non-consecutive positions may be defined. Rectangular or upper or lower triangular two-dimensional arrays may also be defined. All twodimensional arrays are stored by rows in consecutive positions. All subscripts on blocks or arrays may begin and end with any positive (or zero) integer. Linear blocks may be interwoven by a non-consecutive BLOC definition and by using the block names in a LOC or a LAST statement. "Figure The LAST statement is not found in other compilers. It allows the programmer to cause the  to assign one or more blocks or one array to the rest of the memory. FORAST allows each computer to translate its own assembly language and to ignore the assembly language and other statements that were intended for the other computer.
    The object code efficiency is very good primarily because
    FORAST does not allow things like
      variable multidimensional indexing,
    1. mixed arithmetic expressions,
    2. ALGOL-type procedures, and
    3. excessive generality.

    These items tend to lead to slower translation and inefficient object programs.
    The FORAST translators operate very fast and efficiently and the BRLESC translator is probably the fastest in the world. It requires only two seconds of tape time for itself and will translate about 2000 statements per minute from tape or easily keeps up with the 800-cpm card reader, regardless of how many statements are on each card. This instantaneous translation allows programmers to translate a program each time it is run and they can use FORAST as though it were the machine's language. Checking is done by inserting and removing extra PRINT statements at will. The FORAST translators make only one scan through the input symbols, translate directly to absolute machine code, do not translate the fifty available subroutines, and write the partial code on tape only once.

          in Automatic programming and compilers II view details
  • Campbell, lloyd W.; Beck, Glenn A. FORAST Programming Language for ORDVAC and BRLESC, 1962 Aug. NBS #: 6201772. view details
          in Automatic programming and compilers II view details
  • Romanelli, Michael J. Introductory Programming for ORDVAC and BRLESC: FORAST (Formula and Assembly Translator), Report No. 1209, 1963 July. view details
          in Automatic programming and compilers II view details
  • Campbell, Lloyd W.; Beck, Glenn A. FORAST Programming Language for ORDVAC and BRLESC (Revised), 1965 Mar. NBS #: 6522490. view details
          in Automatic programming and compilers II view details
  • Sammet, Jean E., "Programming languages: history and future" view details
          in [ACM] CACM 15(06) (June 1972) view details
  • Dr. Bill Moye "Army Computing: ARL/BRL in the 50 Years Since ENIAC" view details External link: Online version Extract: ARL/BRL

    ENIAC was dismantled in the
    fall of 1946 and moved down to APG, where it was operational again in August
    1947.  With various refinements,
    ENIAC provided years of successful service until it was retired in October 1955.  By that time, BRL had acquired two more computers.  The EDVAC, a collaborative production by BRL, the Moore School of
    Electrical Engineering, the IAS, and the NBS, finally achieved practical
    operation in 1952 and operated successfully until 1963.  The third machine, ORDVAC, belonged to the group of computers whose basic
    logic was developed by the IAS.  It
    was built by the University of Illinois and brought to APG in 1952, and BRL
    operated it until 1967.

    By 1955, the lab had pushed
    available time on each computer to 145 hours per week of error-free production
    to support ballistic research and compute firing tables and other ballistic data
    for artillery, rockets, and missiles.  The
    computers also performed calculations in other fields, including weather
    prediction, atomic energy research, thermal ignition, cosmic ray studies, and
    wind tunnel design.

    In 1956, engineers and
    scientists in the BRL computing laboratory began to develop a new computer to be
    called BRLESC.  At the same time,
    the Ordnance Department transferred money to NBS to develop logic packages for
    the new system.  BRLESC went on-line
    in 1962, and tests showed that it was two- to eight-times faster than commercial

    Planning for BRLESC II
    began in 1965.  BRLESC II was a
    solid-state digital computer designed to be 200 times faster than the ORDVAC it
    replaced in 1967.  The integrated
    circuits for BRLESC II were produced under an industrial contract, but BRL
    employees did all the logic design, back-panel wiring, and assembly.

    To facilitate use of these
    increasingly powerful machines, BRL personnel pioneered programming software.  They developed FORAST (Formula and Assembly Translator) for ORDVAC in
    1960 and implemented it on BRLESC by 1961.  During 1962-63, BRL wrote a FORTRAN (Formula Translation) compiler for
    the BRLESC, one of the first uses of the FORTRAN language on other than IBM

          in [ACM] CACM 15(06) (June 1972) view details
  • Muuss, Mike "The History of Computing at BRL" September 25, 1992 (transcript) view details External link: Online version of talk Extract: ORDVAC and BRLESC
    The ORDVAC  
    The machine after EDVAC, this time coming from Illinois, was the ORDVAC. They were thoughtful enough to put the name of it on top so I don't get the picture mixed up. This one here has another main major change in the way it was built. This one is a pure binary machine using two's complement fixed point. This machine here, the third machine at BRL and about the fourth or fifth machine around in the world, set the pace for all the computers we know today. Two's complement binary mathematics is how all the machines from IBM PCs to the Cray-II operate.

    This machine is getting pretty speedy, it can do 71,000 additions per second. A little bit more than 1,000 multiplications per second. It had three registers and a 15 microsecond core memory. This is a prototype, a forerunner of all the machines that are going to follow for decades after.

    This was the first computer that had a real compiler on it. No longer did you have to write machines codes every time you wanted to get something done. The BRL folks thought up this language called FORAST and built a compiler. So now the programmers could write much higher level instructions and let the machines do the translation to machine code. There was a time in the early 1950s where BRL employees were worrying about portable software. When almost nobody else even had computers, we had people here worrying about how to make programs work on different kinds of computers. The FORAST language worked both on the BRLESC and on the ORDVAC, and people ported software back and forth very happily. This has been a theme that has continued for a long time.

    In the ORDVAC, the tube counts have gone way down, only 3,000, and the number of transistors is coming up. By today's microprocessing standards, this isn't very many parts -- we have half a million or a million transistors on a single integrated circuit in a package only an inch or two long. Building a computer out of basically 5,000 parts, 5,000 transistor-like parts, is really unthinkable. Considering that there were not very many gates inside this machine, they got a lot of performance out of it!

          in [ACM] CACM 15(06) (June 1972) view details
  • Romanelli, Mike "Sodtware" in Bergin, Thomas J. (ed.) "50 Years of Army Computing: From ENIAC to MSRC" ARL SR-93 September 2000 view details Extract: FORAST
    [FORAST] allowed the programmer to write actual machine orders in symbolic assembly language, some arithmetic formulas written in a manner similar to conventional mathematical notation, and English words for high level statements instructing the machine
    Extract: FORTRAN and FORAST
    FORTRAN is considered the first "high-level language"; it was developed by IBM under the direction of John Backus, and introduced in 1954. FORTRAN?s brevity and algebraic syntax made it easy for mathematicians, engineers, and a wide range of scientists to learn and use FORTRAN, thus significantly increasing the number of people who could program a computer. Mike Romanelli adds: "FORAST was somewhat richer than FORTRAN in that a programmer could intersperse, in the high-  level language program, symbolic or absolute machine language instructions of ORDVAC or BRLESC, giving the experienced programmer full access to the power of the computer." Extract: FORAST's accomplishments
    Let me now return to the development of FORAST, the high-level Formula and Assembly Translator language. Hardware improvements to ORDVAC included a 4096-word magnetic core memory, card reader, and a magnetic drum. Core memory replaced the 1024-word electrostatic CRT memory. BRLESC had a 4096-word magnetic core memory, card reader, high-speed magnetic tape input/output, and an enriched instruction vocabulary. It had a three-address code, 63 index registers, built-in fl oating-point operations, a look-ahead feature with some concurrent operations, and a fl exibility in mathematical operations that included 16 different kinds of addition and subtraction.

    In short, the hardware improvements provided more speed and more space relative to the constrained space and speed of the predecessors. The compilers accepted mathematical formulas made up of alphabetic symbols and symbolic operation characters, English word statements for various types of controls, and formatted input/output statements for labeled, printed, or plotted outputs. Compilers converted the formulas and English word statements into absolute machine language for "LOAD and GO" operations. During a compiling process, FORAST detected and printed grammatical errors.24 There usually were many! The variety of errors detected during the running of the program was also provided as output for the programmer. A programmer could intersperse the symbolic or absolute machine language of ORDVAC or BRLESC with formula and English word statements. Hence, the language was rich enough to accommodate the novice or journeyman and allow the experienced programmer the full power of the computers. The simplicity, fl exibility, generality, and attributes of the language and the machines are well documented in BRL reports.

    Let me now conclude with an "IF" statement; pardon the pun. "IF" statements were admissible conditional control statements in FORAST and FORTRAN.

    If I had a video camera way back then, I could have shown you a multicolor page of a fi ring table produced by multiple passes on a high-speed printer that was ready for publication. I could have shown you a multicolor anatomical cross section of the human body, which was the output of a wound-ballistics application. I could have shown you the sociability of EDVAC engaged in playing a game of NIM! I could have shown you, and you could have seen and heard, the patriotic, mannerly, and talented character of ORDVAC playing out the tune to "My Country ?Tis of Thee" for a group of Boy Scouts on tour of the computing facility, and that same ORDVAC at the end of that tour playing out the tune to "So Long, It?s Been Good to Know You!"

    Finally, if someone asks you, "What is FORTRAN?" tell them it?s a formula translator, the standard scientific computer language, or better yet, tell them Mike [Romanelli] said it was a diluted dialect of FORAST!

          in [ACM] CACM 15(06) (June 1972) view details