Autocoder was the name given to certain assemblers for a number of IBM computers of the 1950s and 1960s. The first Autocoders appear to have been the earliest assemblers to provide a macro facility.
The term autocoder needs to be distinguished from autocode, a term of the same era which was used in the UK for languages of a higher level. Both terms derive from the phrase automatic coding, which referred generally to programs which eased the burden of producing the numeric machine language codes of programs. ("Autocoding" is seen occasionally, and can refer to any kind of programming system.) In some circles "autocoder" could be used in a rather generic way to refer to what is now called a macro-assembler.
The first Autocoders were released in 1955 for the IBM 702 and in 1956 for the almost compatible IBM 705. They were designed by Roy Goldfinger who earlier had worked on New York University's (NYU) NYAP assembler. These machines were variable word length commercial machines, as were many of the computers for which an Autocoder was released.
Besides the 702 and 705, there eventually also were Autocoders for the IBM 7010, IBM 7030 (Stretch), IBM 7070, IBM 7080, and the IBM 1400 series. Other manufacturers sometimes built competing products, such as NCR's "National's Electronic Autocoder Technique" (NEAT).
The most well known Autocoder is that of the IBM 1401, undoubtedly due in part to the general success of that series of machines. Autocoder was the primary language of this computer, and its macro capabilities supported use of the Input/Output Control System which eased the programming burden. Another assembler, Symbolic Programming System (SPS), was the assembler offered when the IBM 1401 originally was announced as a punched-card-only computer. SPS had mnemonics (often different) but a different input format. It lacked Autocoder's features and was generally used only on machines that lacked tape drives (punched-card only). A copy of the source programs for SPS-1, SPS-2 and Autocoder was donated to the Charles Babbage Institute, University of Minnesota, by Gary Mokotoff, author of SPS and coauthor of Autocoder.
Autocoder as implemented on the IBM 1401
Like all 1401 programs, Autocoder was stored in binary form on punched cards. When the cards were inserted into the card reader, pressing the Run button on the computer (a floor-standing unit; the card reader/punch was a peripheral, and there was neither keyboard or monitor) the contents of the first 80-character card were read into memory locations 0-79, and the instruction at address 0 was executed, thus beginning the bootstrap loader. Autocoder took human-intelligible symbols (such as a period to indicate "stop") and transformed them into the instructions the machine recognized. It supported conditional branching, named subroutines, counting iterations, and what IBM called its Advanced Programming Feature, an optional feature involving three separate bytes between location 80 and 90. (Since memory locations 0-79 were reserved for the card reader, 100-179 for the card punch, which punched a card with the data in these locations when the "punch" command was issued, and 200-279 for the (single) printer, locations 80-99 were orphans and available for other purposes that only needed a few bytes.)
At that time the primary storage media was ½" magnetic tape read and written on drives the size of refrigerators. There were no named files, a concept still in the future. Autocoder did implement a new feature: the byte mark, a single character which served to delimit a block of memory of any size, or a tape file.
The 1401 was available in six memory configurations, with 1400, 2000, 4000, 8000, 12000, or 16000 six-bit characters. The 8000-character model was the minimum needed to run Autocoder; a binary file (on punched cards) could be produced on an 8000-character model which could then be run on a 4000-character machine.
- Solomon 1993, p. 8.
- Hopper 1955.
- For an example see Allen 1981, p. 540.
- Goldfinger 1956.
- The Encyclopedia of Computer Languages Archived September 16, 2007, at the Wayback Machine.
- 7010: Weik 1964, p. 0160; 7030:,; 7070: ,; 7080: ; 1400 series: , "Archived copy" (PDF). Archived from the original (PDF) on 2006-10-19. Retrieved 2006-07-30..
- Weik 1964, p. 0202.
- ; Solomon 1993, p. 8; "Archived copy". Archived from the original on 2007-09-17. Retrieved 2007-03-18..
- , .
- Gary Mokotoff Collection of IBM 1401 Program Listings, 1959-1961
- Allen, F. E., "The history of language processor technology at IBM", IBM Journal of Research and Development, 25(5), pp. 535-548 (September 1981). 
- Goldfinger, Roy, "The IBM Type 705 Autocoder". Proceedings East Joint Computer Conf., San Francisco, 1956.
- Hopper, Grace, "Automatic Coding for Digital Computers" in the High Speed Computer Conference, Louisiana Stat (1955) the High Speed Computer Conference, Louisiana State University, 16 Feb. 1955, Remington Rand, Inc., 1955. 
- Salomon, David, Assemblers And Loaders (Horwood, 1993), ISBN 0-13-052564-2. 
- Weik, Martin H., A Fourth Survey of Domestic Electronic Digital Computing Systems,BRL Report No. 1227, January 1964 (Ballistic Research Laboratories, Aberdeen Proving Ground, Maryland).