fc TAPE 1343 m502 RECOVERY PROGRAM - BENNETT
OCTAL	pa1=2004		|location of print out program
pa2=480		|number of char. for comparison
pa3=2002		|error card number location
pa4=2003		|e16 type error indicator
pa5=2000		|halt location
pa6=2007		|remark trailer read-in routine entry
pb1=2000		|location of char. storage
40|taa2		|initialize entry
spa1
42|tap3		|obtain char. entry
spp1
44|spr1		|recovery entry
|initialization
a1,cak1+5		|caz2
tdp2
tds1+4
tsd2+3		|last register of current field
cad26+4		|cf104
tsd1
tsd41
ca0
tsd2+2
cs0
tsd2
caa2
cf620
a2,0		|return address
|obtain character
p1,aop2
d1,cf104
sud2+3
cpp2		|jump if there is a next char
sps4		|fill char table
d15,cak1+3		|reset to pick up first char.
tdp2
p2,ca
clh20
adp3
cf620
p3,0		|return address
n6,tan5		|fill char table
cak1+3		|reset to fill char. table
tss1+1
si211		|petr, line by line
n3,spn7		|char. to char. table
cpn1		|jump if error code
ckk1
spd6		|stop code
spn4		|not stop code
d7,si630		|deselect petr
n5,sp		|exit
d6,cs0
tsd2+2		|set final ind.
spe14
6
spd7
n1,spn7		|char. to char. table
spn7
spn7
mdk1+4		|check for 00
ck0
spn2		|success
z4,cad2		|init. ind.
cpd40		|set
spe14
7
spr1		|recovery
d40,spe14
15		|cant recover
sp0
n2,spn7		|char. to char. table
spn7
spn7
n4,cas1+1
suk1+2
cpn3		|jump if char. table unfilled
spd7		|full table, exit
n7,tan7+5		|read a char and store in char table
clc0
rd		|read a char
clh12		|move to s, 1,...,5
sps1		|store char in char table
n7+5,sp		|exit
s1,tas1+5		|store char in char table
s1+1,ts
aos1+1		|set for next entry
tas1+4		|exit with char in ac
s1+4,caz2		|z1-1
s1+5,sp		|exit
k1,0.76000		|constants
k1+1,0.00003		|
k1+2,ts3770		|
k1+3,tsz1		|
k1+4,0.06000
k1+5,caz2
|recovery
r1,ca0
tsd2+2		|clear final ind.
cad26+1		|tsd27+pa2
tdd24		|initialize s1
cad10
tsr5		|reserve cf
r5,cf		|reserve cf
r6,ca0		|zero
tsd2+4		|comparison counter
r7,sps7		|obtain word
ckz1		|first reg. of table
spr8		|checks
spr7		|no check, try next word
r8,cad24		|reference
tsd2+7
cad26		|d27
tdr9
spr10
r11,sps7		|obtain word
r9,ck
spr10		|checks
spr12		|fails
r10,aor9
aod2+4		|comparison ctr.
sud26+2		|pa2-1
cpr11		|repeat
|perfect match for all pa2 characters
aod24		|last register used
tdd2+6		|ts
cad2+6
exk1+3		|temporary change of initial register of char. table
tsd2+6
cs0
tsd2		|set initial indicator to fill both data fields
car5		|reserve cf
tsd41		|set up as initial field
sps4		|fill remainder of char. table
cad2+6
tsk1+3		|restore initial contents
spd15		|return to p1
r12,cad2+7		|reference
tdd24		|restore s1 for continued search
spr7
|obtain word from bin, for recovery
s7,tad19
aod24
sud26+7		|cad27+pa2-1
cpd24		|next char. in bin
sps2		|fill bin
cad26		|d27
tdd24		|reset
d24,ca		|pick up next char
d19,sp		|exit
|Fill bin, for recovery
s2,tad25
csd2+4		|comparison ctr.
ad1
tsd2+5		|Move ctr.
2r,cad26		|d27
tdd28		|initialze
exd2+7		|reference
tdd29
csd2+5
cpd30		|no more
d29,ca
d28,ts
aod28
aod29
aod2+5		|move ctr.
cpd29
d30,cad28		|Next register
tdd35		|initialize for storage
si211
d32,sps3		|read char.
sps5		|store char.
spd32		|Not full, repeat
si630
d25,sp		|Full, exit
|Read char
s3,tad33
clc0
rd
clc12		|cycle to left of AC
d33,sp
|Store char. in bin, for recovery
s5,tad34
d35,ts
aod35
ckd26+1		|tsd27+pa2
aod34		|full
d34,sp
|Set core fields and fill character table
s4,tad3
csd2		|Initial Ind.
cpd5		|not first time
d41,cf
spn6		|fill initial cf
ca0
tsd2		|clear initial ind.
cad41
ckd26+4		|cf104
cs0
tsd2+1		|Set first cf ind.
d5,cas1+4		|last reg. of former reserve
tsd2+3		|store for current use
cad2+1		|First cf ind.
cpd9		|first cf in reserve
cad26+5		|second cf becomes current
clh20
add26+4		|first cf for reserve
d11,tsd10		|cf for reserve
clc20
tsd12		|cf which becomes active
d10,cf		|for reserve
cad2+2		|final ind.
cpd8		|dont read more tape
spn6		|Fill new reserve
d8,cad12		|Active cf
tdd1		|set cf order in p1
csd2+1
tsd2+1		|reverse first cf ind.
d12,cf
d3,sp
d9,cad26+4		|First cf becomes active
clh20
add26+5		|Second cf for reserve
spd11
|error print routine
e16,tae19		|address of error number
ts3e18		|number of incorrect card
ca5e18
ts11e14		|e16 initialization
sp1e15
e15,tae19		|address of error number
ca6e18
ts10e14		|e15 initialization
sp1e14
e14,tae19		|address of error number
cf1000		|test B field
md4e18		|0.00007
tse18		|original B field
cf103		|bring in error remark field
cae19
td2e18
ao2e18		|return after RESTART
10e14,clh0		|e15 initialization
11e14,clh0		|e16 initialization
e19,ca
ts1e18		|error number
sppa1		|error print out
cae20		|return after print out
ade18		|original B field
tse20
e20,cf100		|restore original B field
ca2e18		|return after RESTART
tde21
e21,sp		|return after print out
e22,ta5e22
ca3e18
tspa3		|number of incorrect card
ca10e18
tspa4		|set e16 error indicator
sp
e23,ta3e23
ca7e18
tspa5		|disable halt
sp		|EXIT
e18,0		|original B field
1e18,0		|error number
2e18,0		|return after RESTART
3e18,0		|number of incorrect card
4e18,0.00007		|mask
5e18,spe22		|e16 initialization
6e18,spe23		|e15 initialization
7e18,clh0		|do nothing
10e18,1.00000		|e16 indicator set
d2,0		|initial indicator
d2+1,0		|first cf reserve indicator
d2+2,0		|final indicator
d2+3,0		|last register of current field
d2+4,0		|comparison counter, for recovery
d2+5,0		|move ctr, for recovery
d2+6,ts		|reset initial loc. for loading char. table
d2+7,0		|reference for renewing search
pz1=pa2-1
d26,d27
d26+1,tsd27+pa2
d26+2,pa2-1		|number of regs. for comparison
d26+3,ts
d26+4,cf104		|first data cf
d26+5,cf105		|second data cf
d26+6,d27-1
d26+7,cad27+pz1
d27,0		|storage for comparison
f1,caf2		|address of remark read in program
cf723
f2,pa6		|address of remark read in program
pa2+r1
START AT f1
