sp008a.pt
SP-008 tape 1
1620 SPS paper tape assembler, processor tape
Mod #1 (1/15/63, received by Pettijohn Engineering 5/9/63)
Hash total: 90704 55307 71771 26558

sp008b.pt
SP-008 tape 2
Subroutine tape for machines with hardware divide
Mod #0 (4-4-61)
Hash total: 51126 88469 13832 65620

sp008m.pt
SP-008 tape 4
Processor modifier tape
Mod #0 (4-4-61)
Hash total: 76504 66495 20487 55259

sp8t.a
SP-008 Floating-point subroutine test program (source)

sp021a.pt
1620/1710 SPS assembler
SP-021B tape 1
Processor tape
"With new opcodes, reproduced 1-2-68"
This tape has Mods 1 and 3 (7-17-62), plus an undocumented mod that
NOPs out the RCTY between source and object in the listing.
It punches Numeric Blanks incorrectly (they come out as 4's).
Hash total: 90154 70447 75725 00557

SP021A0.PT is sp021a.pt, edited back to factory "mod 0" condition.
I removed the Pettijohn opcodes, all patch records except for -0-7001
(which is "patch1" on the mod 0 listing), trimmed the trailing junk
off the three intro records, and fixed the numeric blanks in records
-00170 and -00364.  One final note: I interchanged -0-7001 and -00396
so their code appears on the tape in the same order as it does on the
listing.  This is a departure from all known physical tapes, which
have them backwards.  The "incorrect order" may well be historically
correct, if some IBM flunky slipped the patch card into the wrong
spot in the deck before converting it to tape!  In any case, it
affects neither the hash total nor the operation of the program.
HASH TOTAL: 67274 85453 51276 21993

SP021A7.PT is a correct application of mods 1, 3, and 7 to SP021A0.PT .
Pettijohn applied these mods by adding patch records to the tape; IBM
expected us to edit the original records.  This, plus the extra opcodes,
the messed-up Numeric Blanks, and the trailing garbage in the first
three records, accounts for the PJ copy's different hash total.
HASH TOTAL: 16372 87303 41167 06843

SP021A7P.PT is SP021A7.PT plus PJ's patch to not RCTY during listing,
between the source statement and the resulting object code.  The RCTY
is documented on page 92 of the manual, but I consider it a misfeature.
HASH TOTAL: 16372 87303 50867 06843

sp021c.pt
SP-021B tape 3
Fixed mantissa length (8 digits) floating point subroutines for
machines with hardware divide but not hardware floating point
This tape has Mods 4 and 8 (4-19-63), plus an undocumented "Mod 9"
which fixes a bug where DIV is extraneously added to the object
tape if FATN, FEXT, FEX, FLOG, or FLN is called, even though those
subroutines don't use DIV.  The mod is in the record marked '-00009'.
Hash total: 12082 11447 05480 40740

SP021C8.PT
SP-021B tape 3, Mod 8.
Hash total: 12082 03406 75680 40740

sp021e.pt
SP-021B tape 5
Variable mantissa length floating point subroutines 
machines with hardware divide but not hardware floating point.
Both this and the processor tape include additional "macro" instructions
added by Pettijohn Engineering.  I think it's based on Mod #0 (5-11-62).
Note: this tape contains a flagged record mark, which halts my 1620
with an MBR Check when running MI-015.  I got the hash total below by
manually skipping the offending record.
Hash total: 39586 35825 85379 34876

SP021E0.PT
SP-021B tape 5
This is sp021e.pt, edited to be identical to factory Mod 0.
The changes consist of removing the PJ subroutines (routine numbers
18-24), and fixing two numeric blanks (in records -00050 and -00170)
that PJ copied as '4's.
Hash total: 77288 30552 37057 46824

sp021m.pt
SP-021B tape 7
Processor modifier tape
Mod #0 (5-11-62)
Used to add opcodes to the processor, subroutines to the subroutine
tape, or patch the processor for different cpu memory sizes.
Hash total: 70974 52959 53729 83748

mi015.pt
MI-015
Hash total program
This program takes advantage of an undocumented feature: It is
possible to do arithmetic on Record Marks, provided they appear only
in the Q operand.  The cpu adds and subtracts them as zeros.  To my
great disappointment, the same does not apply to Numeric Blanks
(C-8-4 on tape and in core).  They not only cause a MAR Check, they
destroy the arithmetic tables.  There is no way to check for a
Numeric Blank, so you're SOL.  The Hash Total program tolerates them
only because it reads the input tape in Alpha mode, where the C-8-4
code is treated as '@', which goes into core as an innocuous 34.

cu01.pt
CU01
CPU General diagnostic
Patched to EC 404675 4-11-62

cu02.pt
CU02
Error Detection diagnostic
working master
NOTE: this tape has at the end a character with intentionally bad parity.

cu03.pt
CU03
Indirect Addressing diagnostic
from IBM master
Tape begins and ends with
decorative banner
P/N 2125573 EC 404675
Has bug, insert:
2076 49 02136 00000
3010 23

cu04.pt
CU04
1623 Memory diagnostic
no documentation

cu05.pt
CU05
Special Instructions diagnostic
TNS, TNF, MF instructions
Tape begins and ends with
decorative banner
Has bug, insert:
3095 6

dtx03.pt
DTX03
I/O diagnostic
Tape begins and ends with
decorative banner
IBM P/N 2172337 EC 404980

dtx04.pt
DTX04
Special Instructions diagnostic
Tape begins and ends with
decorative banner
IBM P/N 2172340 EC 404980
Patched a bug near offset 1426 in file, near label K8A (pg. 8).

dtx05.pt
DTX05
Memory diagnostic
Consists of two separate programs on a single tape - DTX05H and DTX05L
Tape begins and ends with
decorative banner
IBM P/N 2172343 EC 404980

ae1.pt
Alphameric editor 1
from Pettijohn Engineering

bandit.a
1620-11.0.002
Simulation of a one armed bandit
source

fo003a.pt
FO-003 tape 1
Fortran with Format, Version 2, Mod 0
Compiler
Hash total: 38241 51246 92571 96909

fo003ap.pt
fo003a patched with Mod 2
Hash total: 38241 51247 12071 96909

fo003c.pt
FO-003 tape 3
Fortran with Format, Version 2, Mod 0
Subroutines for Automatic Divide
Hash total: 78997 66049 66251 56096

fo003cp.pt
fo003c patched with Mod 1
Hash total: 24014 80564 10798 18580

fo005.pt
FO-005
Fortran Precompiler, Mod 0
Hash total: 29193 07877 60342 92679

m100.a
Moments of Inertia
source

eig1.a, eig2.a, eig3.a
Eigenvalues of Symmetric Matrices (in 3 passes)
source

uosa.pt
Unit Operations Simulator (oil refinery calculations)
This tapes pauses during loading for you to type
in the IO device number (1, 3, or ? (card)).  After
a couple more pauses, it goes straight into evaluation
of a sample problem.  It takes about 5 minutes per
iteration, and converges after about a half hour.
