Symbolic Assembly Program

The Symbolic Assembly Program (SAP) is an assembler program for the IBM 704 computer. It was written by Roy Nutt at United Aircraft Corporation, and was distributed by the SHARE user's group beginning in 1956 as the Share Assembly Program. SAP succeeded an earlier program called NYAP1 (New York Assembly Program 1), which it closely resembled,[1] and became the standard assembler for 704 users.[2] It "set the external form of an assembly language that was to be a model for all its successors and which persists almost unchanged to the present day."[3]

DARSIMCO, short for Dartmouth Simplified Code, was a simple programming language written by John Kemeny (who later co-developed BASIC) in 1956 that expanded simple mathematical operations into a program that would then be assembled by SAP.


SAP is a two-pass assembler. It is capable of running on a 704 with a minimum of 4 K 36-bit words of core storage. This configuration allows up to 1097 entries in the symbol table. Additional core memory beyond 4 KW can be used to allow for additional symbol table entries.[4]

Input and output for SAP are via punched cards or card images on tape. Input is in fixed format.[2]

Input formatEdit

Card columns Description
1-6 label or blank
7 blank
8-10 operation code (3 characters) or blank
11 blank
12-72 variable field
73-80 not used by the assembler. May contain identification and sequence information

Output formatEdit

Output consists of absolute or relocatable punched cards or card images. The output is binary data in the twelve card rows 12, 11, and 0–9. Each row contains two 36-bit words in columns 1-36 and 37-72, indicated as left (L) and right (R) respectively. Data is conventionally numbered by row and position, for example, columns 1 to 36 of row 9 are designated 9L, columns 37 to 72 of the same row are 9R. Within a word the bits are designated, from left to right as S (sign bit) and 1-35, thus bit position 13 of the left word in row 6 is designated 6L13.

Word 9L of each card is a control word, and 9R is an optional checksum. The control word contains bits indicating, for example, whether the data on the card is absolute or relocatable, whether or not a checksum is present, the absolute or nominal location of data on this card, and a count of the number of words of data contained on this card.[5]


  1. ^ Orchard-Hays, William. "Adaptability of the Linear Programming Codes" (PDF). Defense Technical Information Center. Archived from the original (PDF) on May 31, 2019. Retrieved May 31, 2019.
  2. ^ a b Helwig, F.; et al. "CODING for the MIT-IBM 704 COMPUTER" (PDF). Retrieved Apr 8, 2018.
  3. ^ Padua, David A. "CS321: I. Programming Languages" (PDF). Polaris Research Group. Retrieved May 31, 2019.
  4. ^ Nutt, Roy. "United Aircraft Corporation SHARE Assembler". Retrieved Apr 9, 2018.
  5. ^ Zurlinden, Donald H. "IBM MODEL-704 GUIDEBOOK" (PDF). Lawrence Berkeley National Laboratory. Retrieved May 31, 2019.

External linksEdit