These two object card decks are the "Symbolic Programming System", a primitive assembler for the 1401 that predates the famous Autocoder. To use SPS, write an SPS program using your favourite editor (two examples are provided, hello.sps and diaglist.sps). SPS decks are not free-format, but operands must be placed in columns: 1 - 5 Line Count (optional) 6 - 7 Count (number of characters when defining a constant). 8 - 13 Label (six characters must start with alphabetic). 14 - 16 Opcode: Examples: A = Add B = Branch (must be d-mod for conditional) BWZ = Branch if Wordmark or Zone C = Compare CC = Carriage Control (printer) CS = CLear Storage CU = Control Unit (e.g. tape) CW = Clear Workmark D = Divide DC = Define Constant (no wordmark) DCW = Define Constant (starts in 24, length in 6-7) END = End of program LCA = Load Characters H = Halt M = Multiply MCE = Move and Edit MCS = Move and Supress Zeros MCW = Move Characters MN = Move Numeric MZ = Move Zone ORG = Define Origin Point P = Punch Card R = Read Card S = Subtract SS = Stacker Select SW = Set Wordmark W = Write Line ZA = Zero and Add ZS = Zero and Subtract Tape: MCW %UX YYY W Write Tape from addr YYY w/o wordmarks) LCA %UX YYY W Write Tape, Unit X from addr YYY w/wordmarks) MCW %UX YYY R Read Tape from addr YYY w/o wordmarks) LCA %UX YYY R Read Tape, Unit X from addr YYY w/wordmarks) CU %UX M Write Tape Mark CU %UX E Skip and Blank Tape CU %UX B Backspace Record CU %UX R Rewind Tape CU %UX U Rewind and Unlaod tape 17 - 22 Address for A-operand (label or 4-digit actual address) 23 - 23 blank, + or - to adjust A-operand by a constant 24 - 26 3-digit number to adjust A-operand by if 23 is + or - 27 - 27 Index (?) 28 - 33 Address for B-operand 34 - 34 Blank, + or - 35 - 37 3-digit number of adjust B-address by if 34 is + or - 38 - 38 Index (?) 39 - 39 D-modifier for this instruction. Notes: / = Compare is unequal S = Branch if Compare Equal T = B is less than A U = B is greater than A L = Tape read error K = Tape end of reel 40 - 55 Comments Your SPS deck should start with an ORG operation to specify where in storage your program starts, and end with an END card, with an optional A-operand showing where to start execution. To assemble an SPS program, place your SPS source between the SPS1.OBJ and the SPS2.OBJ deck, and another copy of the same source after the SPS2.OBJ deck (SPS is a two-pass assembler). You'll get a listing on LPT and your object deck will be punched, ready to run. A set of simulator commands that will assemble an SPS deck painlessly is in "sps". You just enter "sps programname" and you'll get your output as programname.lst for the listing, and programname.obj for the object deck.