return to main page
return to Jack Palmer
Brief Evolution of IBM 1401 SPS and Autocoder
Dated: June 3, 2009by John H. (Jack) Palmer Revised: September 10, 2009
The 1401 was announced in October 1959 with three levels of storage capacity: 1400, 2000, and 4000 characters. An assembler was needed that would run on a 1400-character, card-only (no tape) system, the smallest and least expensive that could be configured. Users of IBM punched-card (EAM) machines, principal prospects for the 1401, were familiar with "fixed-form" discipline and card forms, stemming from the fixed capacity counters on accounting machines and plugboard wiring practice . IBM’s smallest system of the time, the 650, boasted a successful fixed-form Symbolic Optimal Assembly Program (SOAP).
Programmers were hard to find. Less than a quarter of those assigned to do general purpose programming for the 1401 and 1620 had experience. Three of the more experienced were set to work building a 1401 simulator and assembler on the IBM 709, needed for testing of the programs committed for early delivery; they also did the simulator for the 1620. The remainder were bright, interested young people, screened by a programming aptitude test, who were hired and trained in anticipation of the announcement of the new, low-cost, transistorized low-end systems.
The above considerations guided the specification of the 1401 Symbolic Programming System -- a fixed-form assembly program: label, operation code, two operands, and remarks -- in fixed columns on the coding form. It was available as "1401 SPS 1" when the first manufactured 1401 system was shipped, in September or October of 1960. System requirements were 1400 characters of storage and card I/O. Also available was SPS 2, a faster processor by virtue of its minimum storage requirement of 4000 characters. And, as I recall, it would assemble a program that used magnetic tape, but did not itself use it.
Before completion, plans were initiated for a larger, more versatile fixed-form system, SPS 3, to require 4000 characters and to take advantage of 8000 or 16,000 characters of storage, system sizes that had by then been announced, to require magnetic tape units, to process "literal" operands, and more. The assembly language specifications would be "upward compatible" from SPS 1 and 2. This plan did not please users of IBM 700/7000-series computers who had ordered the 1401 as an I/O adjunct to large system operation. They had been enjoying "free-form" assembly language coding, styled "Autocoder" (a variable number of operands, separated by commas), for as much as three years, and would not tolerate the operational limits that fixed-form imposed. For just one thing, they wanted a macro instruction facility in their assembly program, with which the limit on number of instruction operands imposed by fixed-form was incompatible. The first inkling I had of this was at a user group meeting that autumn, where the SHARE president, Frank Verzuh, exhibited a distinctly unfavorable reaction to my advocacy of SPS 3. He sought out my manager, Arnold S. Wolf, and registered his objection vigorously.
Objection to SPS 3 also emanated from IBM’s Endicott NY laboratory, chiefly from James H. (Jim) Frame, emerging there as a programming leader after working on support for the 7070 (announced in 1958) and the 1410 (announced in 1960). Those intermediate machines followed the Autocoder tradition of larger systems, and Jim took the position that the smaller machines could and should do the same, based on uniformity of the product line and on the proven virtuosity of Autocoder programming. He worked in the organization of the system manager responsible for profit of the 14XX systems (we in New York did not, yet), and so his opinion carried considerable weight.
Arnie Wolf yielded to these twin powerful forces, and directed me to redirect the SPS effort accordingly, marking the birth of 1401 Autocoder. The programmer who bore the brunt of this switch in specifications was Gary Mokotoff, who had joined IBM at age 22 and been assigned to 1401 SPS, both versions, of which he was sole author. He and John Wertheim, who was coming off his completion of the tape-to-printer utility program, wrote the Autocoder assembler Those two worked harmoniously together during the final weeks of implementation.
Testing of the program was considerably facilitated by a geographical anomaly. IBM’s sales division ran a customer testing facility of the type then called an IBM Datacenter in the basement of the Time & Life building, the same structure that housed our offices on the 10th floor. John befriended the operators of the Datacenter 1401 and gave them an early version of Autocoder. Every morning on his way to work he stopped there to see what problems had been encountered during the night. After his elevator ride, he and Gary set about fixing them, and at end of day delivered a new system tape, and so into the evening, truly a win-win situation.
Gary later took on responsibility for the 1401 Fortran compiler after Leonard (Lenny) Haines, who conceived of the design and laid out the compiler structure, left IBM to continue his graduate education. That program was tested and completed during an intensive period in Endicott during the last few weeks of 1961, in which some four or five programmers participated. (By that time we New Yorkers were working in Jim Frame’s Endicott department, the result of an organizational change giving system managers responsibility for software needed to support their computer hardware.) One of those programmers was David (Dave) Macklin, who throughout the development of the early 1401 programs in New York had held the position of 1401 project coordinator, jargon for a supervisory and advisory post. Dave was one of the few experienced programmers in the group, and in fact had started out developing EAM applications with an airframe company on Long Island.
The initial version of Autocoder was written in, and assembled by, SPS, but a conversion was made mid-stream so that the final version was written in its own language. A console switch controlled a compatibility feature: SPS programs could be inputted, assembled, and converted to Autocoder. Strangely, I don’t recall when 1401 Autocoder was released and delivered to customers who ordered it. I estimate sometime in mid-1961.