Eldon2 director for KDF9
Typed from a photocopy of a lineprinter listing at the NAHC
First unverified version 1 June 2005
Corrections based on first generation assembler output : 2 June 2005 Hans B PUFAL, May 2005
Subsequently subject to various corrections by David Holdsworth, who wrote much of the code arund 1967-71 - Feb 2009
Shown with authentic KDF9 Flexowriter characters V29;
RESTART; JP200; JP200;
PROGRAM;
(TITLE: OUT20 ETC)
V5=1.048576/23;
V8=Q4/-453/0; (Increment .027 Msec)
V10=1/35;
V11=2/35;
V12=3/25;
V14=1;
V15=B0207464151546300;
V23=B1010101010101010;
V24=B0204777777072000;
V25=B0204047777072100;
V26=B0204040477072200;
V27=B0204040404072300;
(V28=Director/Program marker)
(V29 is easily OUT11 accessable marker, current bits in set are
D0 - SET1 if on line M/C
D35-44 - Number of words of user space(mod 32)
D45-47 - Data number Sunday=0,Monday=1 etc);
V28; J35=Z;
ZERO; =V23; K4; Q5; =V2;
V7; =M5; SET3; J11NTR;
SHC-2;
11; J12NV;
SHC-1;
12; =V1P104M5; DUP; SHL-22; STR; REV;
ERASE; V0P13; AND; OR;
51; DUP; SETB101; SHL+19;
REV; SHC+1; SHL+21; J2.Z;
OR; (No RFIS so insert D22,28); ZERO;
2; NOT; AND; (Remove D22,28)
DUP; SHC+1; SHL+21; J1.Z;
(Jump if any RFI other than PR or LOV)
V5; ×; DUP; =V6; V5P104M5; ×;
DUP; =V5P104M5; M5; REV;
V9M5; SHL+5; =M5; M5M0HN; SIGN;
J4>Z; (Jump if time limit exceeded)
SET-109891; (Basic SP 0.655 Msec)
32; V8; =Q5; =M5; V0P104; K5;OR; SHL-1;
*5; SHL+6; DUP; J6>Z; (Jump if holp-up
digit not present); DC5; M+I5; J5C5NZS;
(No program can be entered); =V14; (d0=1)
ERASE; JSP1; J23;
6; =LINK; (Plant dummy link)
SET4; C5; -; M5; PERM; (N1= new priority,
N2= old priority, N3= path correction)
30; REV; =M5; K7; SHC+7; NOT; NEG; SHC-7;
=V13P104M5; (Preserve adjusted NS counters)
DUP; =V7; =M5; (New priority number)
V4P104M5; +; V6; -; =V5P104M5; (Run time)
VR; V1P104M5; SHA+1; =TR;
V17P104M5; =K2; ERASE; (CPDAR);
V9M5; V13P104M5; V2; =Q5; DUP; =K3;
(== 2 ==)
DUMMY; DUMMY; DUMMY; DUMMY; DUMMY;
DUMMY; (Allow new set to settle down)
=V28; LINK; ERASE; (Remove dummy link)
=V28; (Store twice in case of reset)
*=K1; ERASE; EXITD; (return to program)
35; (Director failure);
SET-9; DUP; =M5; =V7;
ZERO; NOT; =V1P6; JSP1; JSP12;
36; K4; ERASE; JSP59; J36;
4; =M5; JSP1; ZERO; DUP; NOT; J9;
1; DUP; SHL-25; REV;
=Q5; J10<Z; (Jump if nouv); JSP1;
J17;
10; Q6; =V3; Q7; =V4; Q4;
=V1; LINK; =V34P1; K7; SHL+2; ZERO;
SHLD+5; =V32P1; SHL-43; SET16; =RC6;
M-I6; ZERO; NOT; =V6P12;
34; NOT; NEG; =V33P1;
ZERO; =RC7; (N.B. Loop cannot go more than 32);
14; =V0P1M7Q; J14NEN; (so that V32,33,34 cannot be overwritten);
15; ERASE; J15NEN;
*13; J17EJ;
LINK; =V17P1M6Q; J13C6NZS;
16; LINK; ERASE; J16NEJ;
17; Q5; V71; =M5; DUP; SHL-32; SHL+31; V5;
×; SHA+1; V5P104M5; +;DUP;
=V5P104M5; V9M5; SHL+5; =M6;
M6M0HN; SIGN; SHA-1; NEG;
V5P10M5; V97P104M5; SIGN; SHA-1; NEG; OR; (Check OUT15 time);
9; =V13; ZERO; NOT; =V14; JSP30;
SET71; =RC6;
*19; ZERO; =V16M6Q; *J19C6NZS;
JS2P60; ERASE;
V17; SHA+2; V18; SHA+1; +;
V13; ×; NEG; V22; SETB76277;
AND; OR; V21; SETB763771; AND;
OR; DUP; ZERO; =V0P2; J20=Z;
ZERO; =V13; JSP2; (Program fails); ZERO;
20; ERASE; V20; J21=Z; JSP3; (OUT);
DUMMY;DUMMY; DUMMY; (OUT40 does EX2);
V4P23; J21.Z; JSP155;
21; V16; J22=Z; JSP4; (FLEX);
22; V19; J23=Z; JSP5; (EDT);
23; JS1000; V0P0; V0P5; -; SHL-28; J997=Z;
ZERO; NOT; =V19P0; (Assures EDT at least very 16 secs);
997; JSP60; J21.Z;
V32P1; DUP; =C6; =M6; I6=-1;
SET-14865; (Basic LP 0.886 Msec); J25;
*24; V-1P1M6Q; REV; SET302; (.018 Msec); -;
25; J24C6NZS;
V33P1; DUP; =C6; =M6; J27;
*26; V15P1M6Q; =LINK; SET352; (.21 Msec); -;
27; J26C6NZS;
V1; =Q4; V3; =Q6; V4; =Q7;
V7; V14; J26<Z;
V14; JS30; (To plant dummy
link and enter specified priority)
28; REV; SET-1761; (Path difference 0.105 Msec)
+; J32; (To choose return priority)
(End of inner loop of long path)
*998; Q0; SHL+63; =+Q0;
1000; J1001NEN; M0M0; R998; NEV; J4P45=Z; R998; =M0M0;
(== 3 ==)
V7P0; =M5; JSP30; SET877277; JP2;
1001; ERASE; J1001NEN;
1002; ERASE; J1002NEN;
V15; SET1; JP6;
P1V34; (Dump Q4, Q6, Q7 and both nests);
Q6; =V3P0; Q7; =V4P0; Q4;
=V1P0; ZERO; =RC6; J2EN;
1; =V0M6Q; J1NEN;
2; ERASE; J2NEN;
M6; =V32; CM0TOQ6; LINK;
=Q7; J4EJ;
3; LINK; =V16M6Q; J3NEJ;
4; M6; =V33; Q7; =LINK; EXIT1;
P2V13; (Program failure-entered from subprogram,
Failure indicator in N1. If
no react option, ending number in V0)
V1=B4641515463;
V3=B6000624541436434;
V6=B6100624541436434;
V7=B6200624541436434;
V12=B6300624541436434;
ZERO; =V20P0;
V77P104M5; SHC+9; STR; J20<Z;
29; SHC-3; J30>Z; (Prog is silent so output ident);
V41P104M5; V37P104M5; SHLD24; V24P0M5; SET3; J54P6;
30; DUP; SHL-12; J6.Z;
ZERO; SHLD-45; V23P0;
DUP; CAB; FRB; REV; SHL+1;
+; SHL+36; SHL-12; REV; V23P0;
SHL-2; REV; SHL-45; FRB; DUP;
SHL+6; -; -; SETB131355; SHL+2;
AND;
6; V1; J5P55; SHC-6; OR;
V24P0M5; SET3; JS4P6;
2; JSP12; JS4P29; DUMMY; DUMMY; DUMMY;
JS7P29; DUMMY; DUMMY; DUMMY;
V0; DUP; J1P15.Z;
V26P101; SHL1; J4>Z; (J if no react quere);
5; SETB20; =V29P104M5; (Stop tint a while react query);
V24P0M5; JS3; =M0M6;
M6; DUP; SET2; +; JSP8;
ZERO; =V29P104M5;
JS3; E2M6; SHL-42;
SETB41; REV; J1.Z;
9; SET7; J1P15;
4; V77P104M5; SHL6; J5>Z; (J if loud); ERASE; J9;
*10; JSE4;
3; V13P104M5; SHL-46; DUP; SHL+1; +;
SETAV2; +; =M6; EXIT1;
1; (Even restart)
V9P0M5; SHL5; =M6; E4M6; R10; NEV; SHL-24;J9=Z;
V97P104M5; SET4; DUP; SHL24; +; +; =V97P104M5;
(JS142P195; Clear OUT40 if set);
SET4; DUP; JS6P29; J35P0;
SHL+24; V5P104M5; +; V9P0M5;
SHL+5; =M6; =M6M0HN; EXIT1;
20; V21P0; J29.Z; (Not if fail S); SHC+9; =V77P104M5;
=RC7; V6P12; J21=Z; V64P1;
V33P1; SHL+43; V32P1; SHLD+5; =I7; =V6P12;
SET15; DUP; =V32P1; =V33P1; J22;
21; JS5P29; JS35P0;
(== 4 ==)
22; =M7; JS1; Q7; =E6M6; EXIT1;
P3V0; (OUT subroutine)
V0=B 77 77 77 77 77 76 67 55;
ZERO; =V20P0; (Clear out marker);
V19P0; =Q7;
V16P1; SETB57777; -; DUP; J1>Z;
SETB120000; SHC+1; -;
1; =V16P1; (Link has 3 syllables added);
ZERO; NOT; =V19P0;
V32P1; J4=Z; V0P1; =C6; V0; ZERO; SHLDC6; BITS;
REV; J3>Z; SHC-1; STR; SETB60000; AND; +;
6; =LINK; ( C6; SETB77; AND; SETAV0P000U; +; =M6;
M0M6H; SHL-24; NOT; NEG; SHL24; =M0M6H; ); EXITAR2;
3; ERASE; C6; SET50; JP65=; SET51; JP66=;
SET52; J52P2939=; SET53; J53P2939=;
SET54; J54P2939=;
DUP; NOT; J100=Z; (J if OUT =1 for clear transfer);
SETB12345; NEV; J5.Z;
(Alter bit in V77P104M5);
V0P1; STR; REV;=Q6; DUP; V77P104M5; NEV;
SETB2000; SHLC6; SETB3520; AND; SHL+2; OR; NEV;
=V77P104M5; EXIT1; (Allow D5,6,7,9);
100; NEG; SHLC1; V17P104M5; AND; J5=Z;
Q7; =V19P0; I1; =RM7; JSP128; M0M7; DUP; =V0P1;
J101.Z; CTQ1;
101; EXIT1;
15; ERASE; (Used by P195 in OUT54);
5; SETB10; JP2; (Illegal out number);
4; ZERO; J6;
*2; JP15; JP16; JP17; JP18; JP19;
JP20; JP21; JP21; JP23; JP24; JP61;
J11P193; J12P193; JP2939; J14P66; J15P66; JP23;
JP64; J18P105; J19P66; JP192;
J21P196; J22P196; J23P196;
J24P195; J25P130; J26P195;
J27P194;J28P194;
J29P195;
J30P196; J31P196; J32P196;
J33P196; J34P196; J36P196;
J37P195;
J39P130; J40P195;
J41P196; J42P196;
J44P915; J45P195; J47P196;
P4V5; (Instant TINT)
V0=B0207414741515677;
V1=B0207645156647734;
(V2 and V3 contain answer to TITN query);
V4=B2777547752/29; (D3=A,D4=B etc
Permitted TINTS A=JLMPR-XZ .EM is same as F);
V5=0; (TINT params);
ZERO; NOT; =V19P0; V1P11; J4P45.Z;
ZERO; =V16P0; (Clear TINT RFI); ZERO; SETAV1;
2; V0P11; =Q4; SHL+16; SETAV3; OR; ZERO;
ZERO; NOT; =V19P0;
NOT; CONT; =V5; JS51P10; SETAV2;
=Q6;
5; JSP31; J3; J3; J3;
SET-30; =+C7; V4; ZERO; SHLDC7;
BITS; REV; J4>Z; (Validity check)
SHC-1; STR; SETB60000; AND; +;
JS1;
(== 5 ==)
(TINT subroutine fails); J3;
(Exit 2 from TINT subroutine);
V0P11; =Q4; EXIT1;
4; ERASE;
3; ZERO; SETAV0; J2;
1; =LINK; EXITAR6;
*6; EXIT2; JP33; JP34; JP35; JP35;
JP37; EXIT2; JP39; JP40; JP41;
JP42; JP44; JP45;
JP48;JP49;
JP50; JP51; JP52; JP53; JP54;
JP76;
JP72;
P5V0; (EDT subroutine);
V0P0; =V0; (Time of last EDT);
ZERO; =V0P13; (Clear marker to give EDT on fpr RFI);
ZERO; =V19P0; (Clear EDT indicator)
JSP100; (Deal with W magnetic tapes)
JSP105; (Consolidate store etc.)
JSP59; (Deal with flex queue)
JSP155; (Deal with OUT8 queue)
JSP199; (Enables disc access is appropriate);
JSP11; (Deal with subprograms)
ZERO; =V0P101; (Clear new identifier marker)
V4P23; (Look for OUT8); J7.Z; JSP155;
7; JSP193; (Attend to JO);
K5; M0TOQ5;
2; ZERO; SHLD+4; =C5; DUP; SHL+1; J3>Z;
DUP; =TR; J9NTR;
BUSYQ5; J3TR; J1;
9; V9P0M5; JS107P300; J3;
1; (Clear PHU);
V13P104M5; ZERO; NOT; NEG; OR;
=V13P104M5; M5; SHL+123; SETB140000; OR;
=K1; ERASE; CLOQ0; SETB140000; =K1; ERASE;
3; SHL+2; M5; SET3; J4=;
NOT; NEG; =M5; J2;
4; =C6; ERASE; V7P0;
5; NOT; NEG;SET3; AND; DUP;
=M5; V13P104M5; SHC-1; J6<Z;
DC6; J5C6NZ;
J1P45;
6; DUP; SHA+1; DUP; SHA+1; +; =C6;
V0P104; SHL+5; SHLC6; J8>Z;
ERASE; ZERO; NOT;
8; =V14P0; EXIT1;
P6V64; (Put N2=NX in FLEX queue, X=1 given
in N1, if flex queue overlows enter P59;
to make room);
V1=-1;
V56=-1; (For benefit of the OUT8 system);
M5; SHL-2; J4>Z;
5; REV; ERASE; NEG;NOT;DUP; J5.Z; J1P45;
4;
SETAP6; SETAV1P6; -; =RC7;
1; V1M7Q; NOT; J1.Z;
3; J2C7Z;
(Queue not full)
REV; =V0M7; ZERO; NOT;=V1M7Q;
NEG; NOT; DUP; J3.Z;
NOT; =V19P0; EXIT1;
(== 6 ==)
2; (Queue full); JSP59; JSP60; ERASE; J4P6;
P8; (Put query parameters in FLEX queue
and enter 2P10);
REV; SHL+16; OR; ZERO; NOT;
CONT; C4;SHL+32; OR; DUP;
SET1; JS4P6; ZERO; REV; J2P10;
P9V1; (Convert cell count from binary to
signed decimal characters, used in P12);
V0=B1212121212010101;
V1=B0707434554546300;
DUP; SHA-4; SHL-1; (Non-zero if count
>24); J1=Z; SET132;-; NEG;
1; V0; REV; FRB;SETB35202; SHL+21;
+; V1;V24P0M5; SET3; J4P6;
P10; (Normal entry test BUSYQ7. If busy or if
entry at 2, put SHUL, SHUP, and SHUL*
into SHU list. Exit to level X+1 lower,
X given in N1 (or N3 for entry 2));
ZERO; =TR; J1C7Z;
BUSYQ7;
1; TLOQ7; J1P45NTR;
3; ZERO; Q7; I4; SHC-27; =V0P13; (Next PR causes EDT);
2; =E10M4; LINK; OR; =M0M4;
C4; SHC-1; J5<Z;
SET1;JS113P300;
5; DUP; STR;NEV;=C7;
ZERO; J7C7Z;
*6; SHL+6; LINK; OR; DC7;J6C7NZS;
7; =E30M4; J4P45>Z;
EXIT2;
4; ZERO;
14; ZERO; ZERO;J2;
50; ZERO;
51; ZERO; ZERO; ZERO; NOT;CONT; J2;
(P6000V23; (OUT COUNTS););
P104V116;
(The various bits in V77P104M5 have the following significance
D 0 = Prog read in by TINT X
D 1 = TINIT X in progress
D 2 = Last disc transfer parittied
D 3 = Disc repeat in progress after parity
D 4 = Not used (David thinks)
D 5 = Auxiliary systems program
D 6 = FLEX suppression
D 7 = Job initiated by OUT39
D 8 = OUT 40 on by this level
D 9= Silent fail
D10 = OUT 50 done by this level
D11 = This level will print OUT8 tapes
D12 = Shows TINT;TLM has been done
D13 = OUT20 done by this level....Different bit from Leeds
);
(The various bits of V25P104M5 have the following significance
D47 = Main subprogram active
D46 = No program to run
D45 = TINT S
D44 = HU due to OUT8 subprogram
D43 = Store move/priority change
D42 = Rolled out
D41 = OUT 19
(== 7 ==)
);
V0=B01010101/23;
V13=B0141/11;
V14=B2141/11;
V15=B4141/11;
V16=B6141/11;
V17=1; V18=1; V19=1; V20=1;
V25=2; V26=2; V27=2; V21=2;
V29=5; V30=5; V31=5; V32=5;
V97=B 20 00 00 00 20 00 00 00; V98=B 20 00 00 00 20 00 00 00;
V99=B 20 00 00 00 20 00 00 00; V100=B 20 00 00 00 20 00 00 00;
(V101 to V113 are all for use of controllers when running ROGS);
P11V40; (Deal with hold-ups in SHU list in
due order);
V0=Q0/1/AV1;
15; V0; =Q4;
3; M0M4; DUP; J1.Z; (Jump if this SHU
is in use);
11; ERASE;
7; M+I4; C4; DUP; SET9; SIGN;
J1P45>Z;
NOT; NEG; =C4; J3;
1; E10M4; REV; J4<Z;
DUP; =TR; J11TR;
=Q7; J6C7Z; BUSYQ7;
6; TLOQ7; J13TR;
8; JS2; (To enter subprogram)
J7; J7; (After leving subprogram)
2; C4; DUP; SHL-1; NEG; NOT;
=M5; SHC-1; J14<Z;
SET1; JS114P300;
14; E30M4;
5; DUP; J12=Z;
DUP; =LINK; SHL-16; J5;
12; M0M4; =LINK; =M0M4; EXIT1;
4; DUP; SHL-42; SETB40; NEV; J10=Z;
V0P101; J11=Z;
E20M4; REV; J8;
10; SHL+9; SETB654; OR; JS1P26; J7;
ERASE; J8;
13; I4; SHC-27; =V0P13; (Set V0P13 to give EDT on PR);
J7;
P12V7; (Type SJNS and top 2 cells of nest with
cell count where necessary);
V0=B07076352566300000;
V1=B0707545156530000;
V2=B4354454162454400;
V3=B0707563722/29;
V4=B0707563721/29;
V5=B0101100210101010;
ZERO; NOT; =V7;
V6; SET1; =M7; J3.Z;
9; SET16;
1; JS5P29; J2; V7; J4.Z; SET4; J4.; ERASE; J5;
4; ZERO; NOT; =V7; JS13;
5; NEG; NOT; DUP; J1.Z;
2;
ERASE;
6; SET1;
7; DUP; =M7; JS1P29; J8; ZERO;
SHLD+24; V23P0; DUP; SHL+1;
PERM; REV; SHL-24; FRB; +; REV;
(== 8 ==)
V3M7; V24P0M5; SET4; JS4P6; NEG; NOT;
DUP; J7>Z;
M5; V7P0; NEV; J10=Z; V13P10M5;
SHL+2; SHL-43; NEG; NOT; J11;
10; V32P1; SET2; +;
11; JSP9; J12;
8; V2; V3M7; V24P0M5; SET3; JS4P6;
12; ERASE; EXIT1;
3; ZERO; =V6; V34P1; DUP; SET4; -; =V7; JS13; V33P1; SHL+43;
J9.Z; SETB37; JSP9; J6;
13; V5; REV; FRB; V23P0; SHL-11; +; V0M7;
V24P0M5; SET3; JS4P6; M0TOQ7; EXIT1;
P13V0; (Set program HU bit in V0P104);
SET1; M5; V14P0; NEV; J1.Z;
ZERO; NOT; =V14P0;
1; M5; NOT; SHA+1; DUP; SHA+1;
+; =C5; SHCC5; V0P104; REV;
DUP; J2<Z; OR; J3;
2; AND;
3; =V0P104; EXIT1;
P15V2; (OUT 0);
V0=B0700455644630020;
V1=B0707624156174554;
V2=B 20 00 00 00 20 00 00 00;
ZERO;
1; SET5;
2; ZERO; NOT; CONT; DUP; =V29P104M5;
SHC-1; J3>Z;
ZERO; =V21P104M5;
3; V65P104M5; ZERO; NOT;
SIGN; ABS; DUP; SHL+4; OR; SHL+6; OR; (Add 10 if OUT8 used);
=V1P104M5; JS4P29; DUMMY; DUMMY; DUMMY;
JS7P29; DUMMY; DUMMY;DUMMY;
SET1; =V17P104M5;
SET2; JS113P300; V0P26; =Q6;
4; M0M6Q; ERASE; J5C6Z;
JSP125; J4;
CTQ6; PARQ6; ZERO; =TR; V0P26M6; SHL+17; J6>Z;
SETB52000; JS10P100; J4;
6; V21P104M5; JSP27; J4;
5; M0M4N; J10.Z;
SETAP23; =M0M4N; ZERO; =E11M4; ZERO; =E31M4;
10; JS4P10;
V29P104M5; J10<Z;
JS3P193; J41;
V105P104M5; J70<Z; SET5; JS3P65;
(Output stats block for controllered prog);
70;
SET3; JS3P65; (Output stats and FLEX message);
41; JS142P195; (Clear down any outstanding OUT 40);
V29P104M5; SHC-4; J45P195>Z; V9P0M5; DUP;
SHC+24; SHL+10; V89P14M5; OR; SHC+14; JSP136; J44P120; (OUT 2);
91; (Deal with disc);
ZERO; =V61P104M5;
ZERO; =V105P104M5;
V2; =V97P104M5;
V85P104M5; SHL-24; DUP; J8=Z;
V9P0M5; SHL+5; =M6; SET31; REV;
15; JS10P130; (Bit of a botch, see P198, DDES read);
V9P0M5; SHL5; =M6; ZERO; NOT; =M0M6; (Put -1 in progs ED);
SET31; V85P104M5; SHL-24; JS10P130; ZERO;
(Write -1 on global disc);
(== 9 ==)
8; =V85P104M5; ZERO; NOT; JS255P60; (Restart any OUT19);
JS3P193; J10P121; (End if J0);
ZERO; NOT; =V0P193; J10P121;(Set J0 flag);
90; (Output stats and FLEX message, entered from P155);
M-I5;
V3P120; =M0M6N; V93P104M5;
74; =E4M6; V0P0; V53P104M5; -; (Elapsed); JSP57;
V5P104M5; DUP; V9P104M5; +; (N E T);
DUP; SHA-24; JS1P161; =E8M6; JSP57;
REV; ZERO; =V5P104M5; DUP; (Run time);
SHA24; JS1P161; =E7M6; JSP57;
V1; V24P0M5; SETB33; OR;
V0; V1P104M5; (Ending no); OR;
V41P104M5; V37P104M5; (Ident); DUPD;
JS71; SHLD+24; V24P0M5;
V77P104M5; SHL10; J75<Z; (No end if OUT50);
JS52P155; (Stats to OUT8);
75; SET9; JP6; (To FLEX);
72; M-I5; V4P120; =M0M6N; V10P105M5; =E4M6;
JS1P2939; SHA-24; JS1P161; =E8M6;
SHA-24; JS1P161; =E7M6;
V113P104M5; V109P104M5; JS71;
JS52P155; EXIT1; (The S is to keepP10 happy);
71;
=E2M6; DUP; =E3M6; SETB77; SHL+12; AND;
SHL+18; V1P65; OR; =E5M6; (Job descriptor);
V9P0M5; SHL+24; SHL-38; NOT; NEG; SHL+5; (N.O.L.);
JS1P161; =E6M6; EXIT1;
P16; (OUT 1)
C6TOQ5; (Keep out number);
V77P104M5; SHL+8; J5P3<Z; (Not with OUT40 on);
JS3P29;
J35P0;
V32P1; SHL-1; J2.Z;
SETB50; JP2;
2; V0P1; JSP119;
3; SETB60; JP2;
SETB44; J1=; SETB55; J1=; ERASE; J3;
1; ERASE;
6; V2P1; =V89P104M5; (FOC of binary);
V0P1; =V45P104M5; V1P1; =V49P104M5;
C5; DUP; SHL+38; J8<Z; SETB2000; AND;
SET3; OR; =V29P104M5; SET2;JS113P300;
V9P0M5; JS106P300;
5; JSP139; V45P104M5; SHL-30; SETB70255; NEV; J7.Z; (Allow OUT1 from D);
V0P52; J5>Z;M5; =V0P52; (Mag tape input waits for level);
7; V9P0M5; SHL+24; SHL-36; NOT; NEG;
SHL+5; =V1P104M5; J22P120;
8; ERASE; JSP194; J9;
JS102P29; J10; V2P194; =V1P1; J132P194;
10; ERASE; REV; ERASE; V2P194; REV; JS101P29; J132P194;
9; ZERO; J132P194;
P17; (OUT2)
JSP62; J2;
V9P0M5; SHL+5; =RM6; M0M6Q; =V33P104M5;
=M6M0H; J2<Z;
M0M6N; JSP119;
SETB200; J3;
ERASE; V9P0M5; SHC+24; ZERO; SHLD+10;
M0M6; SHL+24; DUP; J5.Z;
ERASE; DUP; NOT;
NEG; SHL+5; M0M6; OR;
(== 10 ==)
=M0M6; J6;
5; NEG;NOT;SHL-29;
VR; MAX; ERASE; J6V;
ERASE; ERASE; SETB220; J3;
6; =V89P104M5; ERASE; (SHC14; JS115P300;);
SET2;SET9; ( V0P104; SHLC6;
SHL+2; J2P15<Z;
NEG; NOT; ); J2P15;
2; SETB210;
3; SET6; =V0P2; JP2;
P18; (OUT3)
V5P10M5; J1P24;
P19; (OUT 4);
JSP62; J6;
JSP132; J3;
4; ERASE;
6; SETB70; JP2;
3; DUP; JSP122; J5;
J4.Z;
5; ZERO; NOT; =V45P104M5; J7P61;
P20V1; (OUT5)
V0=B416741516463;
V1=B64716045002020;
JSP62; J2;
SHL-6; J1.Z;
SHC-4; STR; =Q7; SHC+4; DUP; J1=Z;
DUP; ZERO; SHLD+44; SHAD+3; -; =C5;
(B program); V21P104M5; SHCC5;NC5; DUP;
Q7; CONT; SHCC5; =V21P104M5; J1<Z;
3; JSP28; J4;
(P unit found); ERASE;
5; JSP138;V0P26M6;SET1;JSP6;
C6;JS3P29;JS35P0;
J10P61;
4; (No P units);
(B program); DUP; SHL+9; SETB654; OR;
JS1P26; J7;
ERASE; ERASE;
6; (U unit found); V0P26M6; SETB24; SHL+15;
-; JSP55; OR; =V0P26M6; J5;
7; (No U units); DUP; ZERO; SHLD+45; SHL+3;
SHLD+3; V1; OR; V0; JSP55; SHC-6; OR;
V24P0M5; SET3; JS4P6;
NOT;STR; NEV; DUP; PERM; OR;
ZERO; PERM;JS2P10; J6;
1; ERASE;
2; SETB20; JP2;
P21; (OUT 6);
JSP62; J2;
SHL-4; J1.Z;
DUP; J1=Z;
DUP; =C7; =M6;
V17P104M5; SET1; SHLC7; AND; J2=Z;
V0P26M6; SHL+17; J3>Z;
(Mag tape); SETB32000; JS10P100; C7TOQ6;
7; JSP138;
6; JS3P29; J35P0;
(== 11 ==)
EXIT1;
3; (Not mag tape); IM0TOQ7;
ZERO; JSP10;
PARQ7; ZERO;=TR; C7; =M6;
(B program); V0P26M6; SHL-24; SETB607;
AND; ZERO;SHLD+45; SHL-4; SHLD+3;
-; =C6; V21P104M5; SHCC6; NC6; STR;
REV; SHCC6; =V21P104M5;
5; C7TOQ6; JSP27; J7;
1; ERASE;
2; SETB30; JP2;
P23V4; (OUT8);
V0=0; V1=AV0; (L queue);
V2=0; V3=AV2; (N queue);
V4=-1; (Marker to initiate p155);
J1;
99; V29P104M5; J98>Z; (Check for termination);
82; V57P104M5; DUP; J86=Z;
STR; ERASE;
83; SET45; FLOAT; FIX; ROUND; JS80; J82; (Close streams);
86; ERASE; (No more streams open);
87; SETB10; JS114P300; (Clear holdup, probably unnecessary);
V29P104M5; STR; ERASE; =V29P104M5; (Clear termination marker);
98; M-I4; DC4; M-I4; DC4; EXIT1; (Retrurn to main subprog);
80; (Close stream, coded str no in N1);
DUP; SETAV65P104; M5; +; SHL+16; SET4; OR;
REV; JS157; =C7; V57P104M5; SETB177776; SHCC7; AND;
DUP; STR; ERASE; ZERO; SIGN; NEG;
AND; =V57P104M5; J50P10;
156; (Add to queue); C5;
157; SHL+4; C4; OR; SHC-16; OR;
V57P104M5; STR; SHL+1; =M6; ERASE;
V2M6; V4; ZERO; MAX; SIGN; AND; =V4; (Sets V4=0 if queue needs processing);
DUP; V3M6; DUP; CAB; SHL-16;
SHLD-16; ERASE; SHC+16; DUP;
=V3M6; =M6; ZERO; =M0M6; =M6; =M0M6; EXIT1;
158; (Check str no and put coded stream in N1);
C7; DUP; SETB177710; AND; SHL-3; NEG; NOT;
J1P45.Z; SHC-4; ZERO; SHAD+3; OR; EXIT2;
15; ERASE;
16; SETB770; JP2; (Invalid parameters in N1);
18; SETB740; JP2; (Invalid stream number);
19; M0M7; V2P155; NEV; SHL-16; J21=Z;
M-I4; DC4; SETB720; JP2;
(Invalid last char);
1; Q7; =V19P0; (Restore EDT);
JSP62; J16; =Q7;
M7; I7; J27.; C7; NEV; J15.Z; ERASE; (Close stream);
JS158; J16; =Q7; JS1P139; M7; DUP; NOT; =C7; (Wait for second subprog);
(== 12 ==)
JS8P196; (Remove progs N2);
V57P104M5; SHCC7; J1P45>Z; M+I4; I4; =+C4; (Check str open);
JS80; J99;
27; ERASE; JSP133; J16; (Check parametrs);
29; C0TOQ7; JS1P139; JSP102;
(Wait for previous transfer or P105, set CPL);
I7; =RM6; M0M6; =C7; J13C7Z; (J if FLEX);
V61P104M5; NEG; NOT; DUP; =V61P104M5; J71=Z; (Check access O/P);
JS158; J18; DUP; =C5; I4; DUP; =+C4; (Switch to second subprog);
M+I4; SHLC5; V57P104M5; DUPD; OR;
=V57P104M5; AND; J28.Z;
(Stream not yet open);
SETAV65P104; M5; +; SHL+16; JS156; (Open);
28; SHC-4; J21>Z; M0M7; SHL+42; ABS;
SHL-43; NEG; NOT; J19.Z; (Check last char);
21; C0TOQ7; ZERO; ZERO; Q7; ZERO; NOT; CONT; DUP; JS156; JS3P29; JS35P0;
PMHQ7; (Lock out transfer area); JS2P10; J99;
14; ZERO; JS3P10; I7; =RM6;
13; V56P6; NOT; J14.Z; (Wait if transfer will fill FLEX queue);
M7; I7; -; SET8; MAX; ERASE; =C6; (Truncate if more than 8 words);
3; J4C6Z; SET-42; =C5; M0M6QN;
5; SHLC5; SETB77; AND;
SET2; J6=; SET4; J6=; (Check not 02 or 04);
SETB75; J7.;
ERASE;
4; V45P104M5; J8<Z; (Fail if query);
I6=-1; M6; I7; -; =C6; C6TOQ5;
2; J12C6Z;
M0M6Q; SET8; =C7;
11; JSP127; J10; J2;
10; SHC+6; DC7; J11C7NZ; ERASE; DC5; J2;
12; V24P0M5; SETB17; OR;
24; JS3P29;JS35P0;
C5; NOT; NEG; J4P6;
7; SETB34; NEV; J9=Z; J3C5Z;
SET6; =+C5; M0M6; J5;
6; ERASE;
8; SETB730; JP2;
70; ERASE; M-I4; DC4; SETB750; JP2;
71; SETB760; JP2;
9; V45P104M5; J8>Z; J8C5NZ; J8C6Z;
V77P104M5; SHL6; V26P101; SHL1; NOT; AND; J8<Z;
I7; =M6; V24P0M5; SETB17; OR; =M0M6; JS3P29; JS35P0;
M+I4; I4; =+C4; SET810; JS113P300; (Hold up);
ZERO; I7; M7; JSP8; SETB10; JS114P300; J99;
(== 13 ==)
P24; (OUT 9);
V0P0; V6P0; +;
1; =V0P1; EXIT1;
P26V15; (Look for unit of given type, status
and prog. letter);
V0=Q16/-1/16;
V1=-1; V2=-1; V3=-1; V4=-1; V5=-1;
V6=-1; V7=-1; V8=-1; V9=-1; V10=-1;
V11=-1; V12=-1; V13=-1; V14=-1; V1=-1;
1; V0; =Q6;
2; SHC-3; DUP; J3<Z; SET6; SHLD+6;
SHL-3; OR; J4;
3; SHL+6;
4; V-1M6Q; J3P45C6Z;
ZERO; SHLD+21; SHL-3; SHLD+21; SHL-12;
SHLD-12; ERASE; SHL-30; J4.;
EXIT2;
P27; (Given allocated unit number IN C6, M6, change
status to U if N1=0, otherwise to P)
J1=Z;
3; V0P26M6; SHC-24; SHL+6; SETB60; OR;
SHC+18; DUP; SHL+12; V24P0M5; SET2; J2;
1; MANUALQ6; V0P26M6; SHL-6; SHC-18; SHL+6;
SETB65; OR; SHC+18; DUP; SET1;
2; JSP6; =V0P26M6; EXIT1;
P28; (Look for unit of given type pre-allocated
to iven program. If found, change state to A);
DUP; SHL+9; SETB600;OR; V13P104M5; SHL-46;
OR; JS1P26; EXIT1; V0P26M6; SETB17; SHL+18;
-; (P becomes A); =V0P26M6; ERASE;
EXIT2;
P29; (Super new nest dealer);
1; JS102; J11; (Fetch N1); V0P1; (N1);
V32P1; DUP; J3P45=Z; (Nest empty);
63; NEG; NOT; DUP; =RC6; J65C6Z;
*66; V1P1M6; =V0P1M6Q; J66C6NZS; (Shift nest up);
65; =V32P1; EXIT2; (Adjust nest count);
2; =E5; (Store value to be planted); JS102; J12; (Store);
ZERO; NOT; =R16; (M6 zero for nest);
60; V32P1M6; DUP; SHL-4; J1P45.Z; (Too full)
DUP; DUP; NOT; NEG; =V32P1M6; =C6;
M6; SHL4; +; =M6; (M6 now 16 OR 0); J19C6Z;
*20; V-1P1M6; =V0P1M6Q; J20C6NZS;
19; E5; =V0P1M6; EXIT2; (Store in SJNS);
3; JS102; J13; (erase);
V32P1; DUP; J1P45=Z; J63;
4; JS102; J14; (Clear); ZERO; J65;
5; JS102; J15; (Fetch J); V16P1; (J1);
V33P1; DUP; J3P45=Z; (SJNS empty);
NEG; NOT; DUP; SET15; MAX; ERASE; VR; =RC6; J24C6Z;
*25; V17P1M6; =V16P1M6Q; J25C6NZS; (Shift up SJNS);
24; =V33P1; EXIT2; (Adjust SJNS count);
6; =E5; (Store value to be planted); JS102; J16; (StoreJ);
(== 14 ==)
ZERO; NOT; =R16; M-I6; (M6 is 1 for SJNS); J60;
7; JS102; J17; (Clear J); ZERO; J24;
11; SHL2; SHL-45; J29=Z; (Nest empty);
32; =E5; (Store value fetched); JS101; E5; EXIT2; (ZERO; NOT; NEG;);
12; SHL2; SHL-43; SET18; -; J29>Z; (Nest too full); E5;
50; JS101; EXIT2;(ZERO);
13; SHL2; SHL-45; J29=Z; (Next empty); ERASE;J50;
14; ERASE; J14NEN; J50;
15; SHL7; SHL-44; J29=Z; (SJNS empty); LINK; J32;
16; SHL7; SHL-43; SET16; -; J29>Z; (SJNS TOO FULL);
E5; =LINK; J50;
40; LINK;
17; ERASE; J40NEJ; J50;
29; JS101; EXIT1; (ZERO; NOT;);
102; M5; V7P0; NEV; J1P127=Z; (Exit 2 if next in core);
LINK; JS100; REV; =LINK; EXIT1; (EXIT1 if in nest stack);
(N1=stack count on exit);
100; (Swap to programmers nest);
SET1; SHL41; K7; +; =E3; V13P104M5; DUP; =K3;
DUMMY; DUMMY; DUMMY; DUMMY; DUMMY; DUMMY;
DUMMY; DUMMY; DUMMY; DUMMY;
J1P45;
101; (Swap to directors nest);
ZERO; SET1; SHL41; K7; +; E3; =K3;
DUMMY; DUMMY; DUMMY; DUMMY; DUMMY; DUMMY;
DUMMY; DUMMY; DUMMY; DUMMY;
ERASE; DUP; V13P104M5; NEV;
V7P0; =M6; K7; V13P104M6; NEV; OR;
SHL-46; J35P0.Z; =V13P104M5; J1P45;
P30; (Set Q4 = 2P+2/1/AV1P11+2P+2, for
entry to P10);
M5; NOT; NEG; SHA+1; DUP;
=RC4; SETAV1P11; +; =M4; EXIT1;
P31; (Fetch character, result in C7);
8; M0M6; SHLC6; SHL-42; =C7; SET6;
=+C6; ZERO; NOT; SHLC6; J2.Z;
C0TOQ6; SET1; =+M6;
2; V1P122; ZERO; SHLDC7; SHLD-15; ERASE;
J3>Z; I6; J4.Z; EXIT4;
5; ERASE;
4; EXIT3;
3; C7; SET4; J5=; SETB32; J5=;
SETB34; J5=; SETB75; J5=; SET2;
J6.;ERASE; EXIT2;
6; SET6; -; DUP;J7.Z;I6=-1;
7; NEG; NOT; J1.Z; I0TOQ6;
1; J8C7NZ; EXIT1;
P32; (Fetch number. Result in N1);
SETB77600;
1; =Q7; ZERO;
5; DUP; J3<Z;M7; BITS; ×D;
CONT; SETB20; -;
3; C7; +;
4; JSP31; J6; J6; J2; M7;
SHL+17; SHLC7; J5<Z;
C7; SET10; SIGN; J6>Z;
(== 15 ==)
ERASE; ZERO; NOT;EXIT1;
2; C7; SETB75; NEV; J4P45=Z;
6; DUP; J4<Z;
EXIT2;
P33V3; (TINT A = terminate program)
V1=P *CHECK[DQ];
V3=QB100000/AV0/AV2;
JSP38; JSP55; =E20M4; (Keep prog letter);
V77P104M5; DUP; SHL6; OR;J2>Z; (Dont J if TINT X or quiet)
V24P0M5; =V0; V3; =V5P4;
ZERO; NOT; DUP; =V19P0; JS51P10; (Await reply);
V2; SHL-36; SETB7137; NEV; J4P45.Z; (Ignore if not Y.);
2; E20M4; =C7; JSP56; JS35P0;
7; V29P10M5; DUP; J1.Z; (J if TINT A suppressed);
V0P130; C7; NEV; J3.Z; DUP; NOT;=V0P130; (Clear if dumped);
3; SETB144; JS114P300; (Clear possible OUT19, TINT S and rollout);
Q4; JSP30; REV; ZERO; V2P4; SHL12; SHL-42; JS8;
=Q4; EXIT2; (Keeps Q4 in case in director subprogram
when just overwriting it cases subprogentrys to be lost
which is catasrophic if thos levels are in disc Q)
1; DUP; I4; SHL45; AND; SHL1; OR; =V29P104M5; EXIT2;
8; JS2P10; (Now in priority subprogram)
SET4; M7; SETB35; NEV; J1P15.Z;
=V0P2; J2P2;
P34; (TINT B - read integer to E0);
JSP38;
JSP32; J1P45;
V9P0M5; DUP; SHL+36; J3P45=Z;
SHL+6; NOT; NEG; =M6;
V29P104M5; SETB177376; SHC-3; AND; (Mask out disc Q markers);
=V33P104M5;EXIT2;
1; SHL+24; =M0M6H; EXIT2;
P35V0; (Reset max number of dumpable levels);
V0=4; (Initial value =4);
JSP32; J1P45; DUP; SHL-2; J1P45.Z; (Check <4);
NOT; NEG; =V0; EXIT2;
P37; (TINT E - nominate program tape)
JSP32;
J1P45;
DUP; =M7; DUP; SET7; SIGN; J1P45<Z;
SHL-4; J4P45.Z;
SETB12054; V0P26M7; SHL+15; SHL-33;
NEV; J4P45.Z;
2; M7; =V1P52; V0P52;
3; DUP; =M7;J4<Z;
V29P104M7; DUP;NOT; SHL-46; SHL+47;
SHL-2; NOT; AND; SHC+3;
STR; ERASE; SHC-3; =V29P104M7;
4; EXIT2;
P38; (Fetch prog letter for TINT routine, agAIn TInt if nogo);
JSP31; J1; J1; J1; JSP56;
1; LINK; ERASE; EXIT1;
P39V0; (TINT G - type unit list);
V0=B3272324532623257;
JSP32;J1P45;
DUP; DUP; NEG; NOT;REV;SET16;-;NEV; J1P45>Z;
(== 16 ==)
JSP32; J15;(Reading D2);
DUPD;-; J3P45>Z;
DUP; SET15;-; J3P45>Z;
16; REV; DUP; PERM;-; SET1;DUP; PERM;+;=RC6;-;
=M6; (Q6=D2-D1+1/1/D1=1);
1; V1P26M6Q; DUP; J4<Z; DUP; SHL+24;
SHL-42; SETB54; NEV; J3.Z; (Jump if
status not L); M6; JSP131; =M6;
V-16P101M6; V-17P101M6; CAB; =M6; DUP;
J2.Z; ERASE; V0;
2; CAB; SET3; J5;
3; SET1;
5; JSP6;ZERO;
4; ERASE; J1C6NZ; EXIT2;
15; ERASE; DUP; J16;
P40; (TINT H - type wanted list);
ZERO; NOT; DUP; =V0P101; =V19P0;
EXIT2;
P41; (TINT I - even and od restarts);
JSP38;
V29P104M5; J4P45.Z;
JSP31; EXIT1; EXIT1; EXIT1;
C7; DUP; SHL-3; SET2; NEV;
J1P45.Z; (Check octal integer)
41; SHL+47; DUP; V25P104M5; SHC-6; OR; J2<Z; (Jif odd rst or roll)
JSP30; ZERO; =M0M4; (Clear SHUL)
SETB101; JS114P300; (Clear HUR)
JS142P195; (Clear disc inhibit if there is one);
V0P26; =Q6; (Now clear transfer on devices);
4; M0M6Q; ERASE; J2C6Z; JSP125; J4; CTQ6; J4;
2; SHA-1; SHL-33; SET4; OR; (4/0 or 4/3)
J6P29; (Store in SJNS);
P42; (TINT J, modified for output well);
SETB77740; JS1P32; J2;
1; =V4P155; EXIT2;
2; ERASE; V3P23; SHL-32; J4P45=Z;
ZERO; NOT; DUP; =V19P0; J1;
P44V0; (TINT L - change type of unit);
V0=B0206520200002072; (Skeleton
descriptor shiftwed cyclically down 33);
JSP32; J1P45;
SETB16; J1P45=; (Fail if disc);
DUP; J1P45=Z;
DUP; SHL-4; J1P45.Z;
DUP; =M5; V0P26M5; DUP; J2<Z;
DUP; SHL+42; J3P45.Z;
SHL+45; SHL-42; SETB45; J6.;
(L); ERASE; V1P52; J8.;
ZERO; =V1P52;
8; J7;
6; SETB65; J3P45.;
2; ERASE;
7; SHC-6; JSP32; J3P45;
DUP; SHC-4; J4>Z;
SETB10; J3P45.;
M5; SET7; SIGN; J3P45.Z;
4; DUP; J3P45<Z; DUP; SHL-6; J3P45.Z;
DUP; J5.Z; ERASE; ERASE; ZERO;
(== 17 ==)
NOT; =V0P26M5; EXIT2;
5; SHC-6; V0; SHLD+3; SHC+3; SHLD+3;
REV; ERASE; SHC+9; SHLD+3; SHC+3;
SHLD+3; SHC+6; DUP; =V0P26M5; SET1;
JSP6; ERASE; EXIT2;
P45V13; (TINT M - post-mortem);
V3=B0207645156640055;
V4=B0050455444006560;
V5=B3656570060646037;
V6=B0057656460656400;
V9=B2020200020202000;
(Output is assembled in V11-13 and punched from
v0-2. V10 is machine size, i.e. no. of words);
JSP32; J1; JSP56; J2; V9P0M5; SHL+38; SHL-33; +;
2; DUP; =RM5; JSP32; J3;
DUP; =C5; +; V10; -;
J4>Z; (Jump if top of machine passed);
SETAV2P11; =RM4; I4; =C4; SETB3654;
JS1P26; J5;
ERASE;
6; V0P26M6; SETB24; SHL+18; -;
SETB44; OR; DUP; =V0P26M6; SET1;
JSP6; (Type new descriptor); C6TOQ7; SETAV0;
=I7; SETAV2; =M7; ZERO; M5; SET2;
=RM6; V3; =V11; V6; =V12;
7; V8; REV; FRB; V9; +;
J8C6Z; =V11M6Q;
10; ZERO;SHLD+16; J7;
8; SET2; OR; =V11M6; ERASE; ZERO; NOT; Q5;
=V7; JSP10; SET3; =RC6;
*11; V11M6; =V0M6Q; J11C6NZS; PWQ7; V7;
=Q5; J9C5Z; M0M5Q; SET2; =RC6;
J10;
9; C7; =M6; V0P26M6;SHL-6;SHL+6;
SETB24; SHL+18; +; DUP; =V0P26M6;
SET1; JSP6; EXIT2;
5; V5; V4; V3; SET3; JSP6; ZERO; NOT;
DUP; STR; NEV; DUP; SET3;
OR; Q5; =V7; JS2P10; V7;
=Q5; J6;
13; ERASE;
12; ERASE;
3; ERASE;
1; ERASE;
4; EXIT1;
P48; (TINT P
P60 switch on job organiser
P61 switch off jo
P62 dont as react on on-line jobs
P63 ask react always
P64 switch on jo message
P65 switch off jo message
);
JSP32; J1P45; SETB60; -; DUP; J1P45<Z; SHC-1; STR; REV;
=C7; V26P101; SHCC7; STR; ERASE; REV; CONT; NC7;
SHCC7; =V26P101; EXIT2; (Set or clear D0 for 60/1,D1 for 62/63 etc);
P49V0; (TINT Q - prints core available - added 25/1/67);
V0=P [S] WORDS [DD];
V0; JSP117;ZERO;DUMMY;DUMMY;SHL-32;JS1P161;SHL18;
(== 18 ==)
SETB020777; OR; SHC-18; SET2; J26P52;
P50; (TINT R - resume program);
JSP38; SETB4; JS114P300; EXIT2;
P51; (TINT S - suspend program);
JSP38; SETB4; JS113P300; EXIT2;
P254V17; (Proglist);
V16=P [C]EA3P0L0;
V17=P [C]EDNJ0GN;
P52V8; (TINT T - B prog input);
V0=-1; (B input priority no.)
(V1=B program tape number
V2=B PIU)
V4=B565742605165/35; (NOBPIU)
V5=P [CN]LATER;
V6=B3636363636;
(V7/8 hold stored TINT T);
ZERO;
1; JSP32; J3P45; DUP; SHL-2; J3P45.Z;
2; V0; J20>Z; DUP; =RM5;SET4;REV; -; =C5;
JS15;J11;SHL+46; =V77P104M5;
V7; STR; ERASE; =V7; (Cleared stored TINT T marker);
C7; SETB54; J12=; SETB55; J117=; SETB60; NEV;
13; =V3;
C7; SETB56; NEV; J115=Z;
116;
V10P45; V0P117; -;
SETB77740; JS1P32; J3P45;
DUP; J3P45=Z;
NEG; NOT; SHL-5; NOT; NEG;SHL+5;
VR; MAX; ERASE; DUP; SHL-32; REVD;
PERM; -; J25<Z; (J if not enuf store); ERASE;
SHL+16; SHL-37; JSP118;
JSP30; ZERO; NOT;
7; =V3;
3; SET-2; ZERO; ZERO; JSP134;
(Now in priority subprogram); J5;
V77P104M5; SHL+1; V0P76; AND; J9<Z;
8; V2; DUP; J14<Z; ERASE;
SETB2654; JS1P26; J6;
(Ptr obtained); ERASE;
V0P26M6; JSP55; OR; V2; J4.Z;
SET5; SHL+18; -;
4; =V0P26M6; C6;=V2;ZERO; J11P120;
5; ZERO; =V2; ZERO;JP121;
6; V3; J3=Z;
V4; JSP55; OR; V24P0M5; SET2;
JSP6; ZERO; J7;
117; ERASE; ZERO;NOT; =V2;
115; SETB77740; JS1P32; J1P45;
ZERO; NOT; CONT; =V4P120; J116;
9; (TInt X modded by DH to read all IDRP at one go);
SET31; =Q7; JSP128; JSP102; ZERO; JSP199;
10; SETB16; =C7; JS14P199; PICQ7; (Read block of IDRP);
ZERO; JS5P199; J78P120; J10;
JSP126; (Reset to B-block adresses for P120);
I7; =M6; E3M6; =V49P104M5; E2M6; DUP; =V45P104M5; JSP119;
(== 19 ==)
SET2; JP121; SETB44; NEV; J16P120.Z; V29P104M5; SHL3;
V2P65; =V93P104M5;
SHL-3; =V29P104M5; J32P120;
25; REV; ERASE; J23;
20; ERASE;
11; ERASE; M6;
23; V7; ZERO; NOT; CONT; =V7; (Put back flag);
SHL-9; J1P127.Z; (J if store in V7);
V2P4; =V7; V3P4; =V8; (Remember TINT reply);
V5; SET1;
26; JS4P6; EXIT2;
12; ERASE; JSP32; J1P45; DUP; SHL-4; J1P45.Z;
NOT; J13;
14; NOT;
19; DUP; =M7; J27.Z; V77P104M5; SETB101; SHC-12; OR;
=V77P104M5; (Show LP done and silent);
27; V0P254M7; STR; SETB11;
AND; SETB 70244; +;
SHLD+30; =V45P104M5; V6; OR; =V49P104M5;
V2P65; =V93P104M5; ZERO; =V21P104M5; J22P120;
18; SET4; =RC5;
15; M-I5;
17; V10P0M5Q; SHC+3; SHL+35; J1P127=Z; (EXIT2);
J17C5NZ; EXIT1;
P53; (TINT U - as in Oxford Director);
J52; SET4; SETB60; =RM6; =C6;
1; ZERO; M6; =RC7; JSP56;J3; (Not present);
V29P104M5; NOT; V25P104M5; AND; SHC-2;
J2<Z; (J if input but not OUT1); ERASE;
M7; =C5; M5TOQ7; (Keep M7); V29P104M5; SHC-2; J6<Z;
V105P104M5; J4>Z;
7; V5P104M5; DUP; V9P104M5; +;
5; JSP57; REV; JSP57;
V23P0; DUP; V9P0M5; SHL+38; SHL-33;
FRB; REV; SHL-17; OR; SHL+12; (BA);
V41P104M7; DUP; PERM; SHLD-12; ERASE; REV;
V37P104M7; SHL24;SHL-24; SHLD-12;
C5; =M7;
SET4; =+M7;
3; M5; SETB20; OR; SHL+10; OR; (Priority);
V25P104M5; SHC-6; J8<Z; (J if rolled out);
9; SETB20700; M6; OR; SHL+30; OR; M+I7; (Letter);
M7; JS4P6; M+I6; DC6; J1C6NZ; EXIT2;
2; JSP38; SET1; JSP55; EXIT3;
4; JS1P2939; SET72; =+M7; J5;
6; (OUT 1); SET8; =+M7; J7;
8; (Rolled out); SETB17; SHL24; OR; J9;
P54; (TINT V - force priority swop)
JSP32; J1P45;
JSP32; ERASE; ZERO; NOT;
1; DUP; =M6; DUP; SHL-2; J3P45.Z;
J1P45=; DUP; SHL-2; J1P45.Z;
=M7; V9P0M6; V9P0M7; OR;
SHL-45; J4P45.Z;
2; JS111P300; ZERO; NOT; =V19P0; EXIT2;
P55; (Given priority, put corresponding prog.
(== 20 ==)
letter in N1);
V13P104M5; SHL-46; SETB60; OR; EXIT1;
P56; (Given prog, letter in C7, put corresponding
priority in M5);
C7;
1; SETB60; -; DUP; J5<Z;
DUP; SHL-2; J1P45.Z; SET4; =RC5;
M-I5;
*2; V14P104M5Q; SHL-46; J3=; J2C5NZS; J1P45;
4; ERASE;
3; ERASE; EXIT2;
5; SETB40; +; DUP; SHL-2; J1P45.Z; =M5; EXIT2; (Allow
ops to give prior number or level letter);
P57V1; (Given the time is seconds to 23 i.p. put time
in characters, /---M---S, in N1)
V0=B0612121201061201;
V1=B1720202055202063;
SHA-24; V0; REV;FRB; V1;
OR; EXIT1;
P58V7; (Look for tape with given identifier,
If not found, type wanted query);
V0=B0207674156644544;
V1=B0042710000062307;
V4=B0624077777777734;
JS4; EXIT1;
2; (Required tape not present)
M5; V25P104M5; SHC-2; OR; J3<Z;
(Wanted by program)
JSP30; DUPD; V4; SETB77; OR; PERM;
JSP55; JS14; V0; SET5; JSP6;
15; REV;
5; =E20M4; SET1; ZERO; NOT; STR; NEV;
CAB; JS2P10; JP58;
3; (Wanted by Director)
V7; J15.Z; (Stops 2 subprogs at once);
=V6; =V7;
6; V7; V6; SETB44; JS14; =V1; =V2; =V3;
SET1; SETAV0; SETAV5; JSP8;
V7; ZERO; =V7;
V5; SHL-42; SETB56; NEV; J8.Z;
C0TOQ6; J1P45;
8; V6;JS4; EXIT1; J15;
14; V1; SHC+24; SHL+6; OR; SHC+18;
REV; DUP; J9.Z;
ERASE; V0P39;
9; REV; EXIT1;
4; V0P26; =Q6;
1; SETB10544; JSP26; J10;ERASE; DUPD;
M6;JSP131; =M6; V-16P101M6; V-17P101M6;
CAB; =M6; CAB; NEV;PERM;
NEV; OR; J1.Z; ERASE; ERASE;
22; M5;
23; V0P26M6; SET9; SHL+18; -; REV; J11<Z;
JSP55; OR;
13; (Entry fromP120);
DUP;SET1;
12; JSP6; =V0P26M6; EXIT1;
11; SETB44; OR; J13;
10; EXIT2;
P59; (Check top item in FLEX queue. If query,
(== 21 ==)
check answer ends corretly. If so, or
if not query, remove top item from FLEX queue.
Type top item of FLEX queue);
BUSYQ0; J4P45TR;
1; V0P6; ZERO; SHLD+12; SETB4000;NEV;
J7.Z; PARQ0; J6TR; ZERO; SHLD+4;
REV; =Q7; I7; C7; DUP;
NOT; NEG;=RM7; -; =C7;
2; SET8; J3C7NZ; =TR;
6; ERASE; J10;
3; =C5; M0M7Q;
4; ZERO; SHLD+6; SETB75; J5=; DC5;
SETB37; SIGN; SHC-1; NOT; =TR;
J4C5NZ; ERASE; J2;
5; ERASE; ERASE; J6NTR; =M7;
ZERO; =V11P11M7; ZERO;
7; ERASE; V5P4; DUP; J16=Z; (J if no TINT);
ZERO; V1P6; SHAD-43; REV; ERASE;
ABS; NEG; NOT; J17=Z; (J if newline in FLEX queue);
16; ERASE; SETAV0P6; =RM7;
8; M0M7N; DUP; NOT; J9=Z;
=M0M7Q; J8;
9; J15C7Z; =M0M7;
10; V0P6; (New top word); JSP127; J11;
ERASE; ZERO; SETAV0P6; DUP; SHL+16; OR;
12; =Q7; POBQ7; J4P45.Z; CLOQ7; EXIT1;
11; SHL+16; SHL-16; Q6; REV; JSP103;
J13; REV; =Q6; ZERO; NOT; REV; J12;
13; ERASE; =Q6; EXIT1;
15; NOT; =V0P6; EXIT1;
17; (Instant TINT);
DUP; =V0P6; ZERO; =V5P4; J11;
P16V1; (Deal with RFIR, real time, N.E.T.,
and tape loading/unloading)
V1=P [NC]RESET;
K4; SHC29; STR; J10=Z; V1; SET1; JS4P6;
10; SHC-29;
2; DUP; SET1; SHC-23; AND; J9=Z;
V0P13; OR;
9; DUP; SHL-32; SHL+32; STR; V5P0; DUP;
PERM; AND; DUP; =V0; V0P0; +;
=V0P0; ×; =V6P0; DUP; SHL+23; DUP;
Q6; =E7; SET7; =RC6;
*1; STR; V16P0M6; OR; =V16P0M6Q;
SHL+1; J1C6NZS;
ERASE; OR; =TR; J8NTR;
ZERO; JS255; (Clear any OUT 19[S);
(FLEX OR clock); ZERO; NOT;
K5; SHL-1; SET4; =RC6;
7; SHL+6; STR; V0; AND; V9P104M6;
+; DUP; =V9P104M6Q; V96P104M6; SHL24; -; J11>Z;
12; J7C6NZ;
ERASE; V0P26; =Q6;
3; SETB10544; JS2P26;
J4;
ERASE; PMBQ6; J3TR;
(L, not on BT); SETB4000; JS10P100; J3;
4; V0P26; =Q6;
J6;
ERASE; PMBQ6; J5NTR;
(U, on BT); SETB32000; JS10P100; J5;
8; V16P0;
(== 22 ==)
6; V19P0; OR; E7; =Q6; EXIT1;
11; (Fail this for exessive time); Q6; Q5; Q4; M-I6;
Q6TOQ5; V97P104M5; SET5; +; =V97P104M5; (Allow time for restart);
ZERO; JS41P41; DUMMY; DUMMY; DUMMY; =Q4; =Q5; =Q6; J12;
255; (Restart any OUT19 suspended progs,
J1.O if start to be forced); Q5; REV; SET4; =RC5;
254; V25P104M5; SHC-7; J253>Z; JSP30;
E20M4; DUP; =Q7; J250=Z; ZERO; =TR;BUSYQ7;
JSP128; TLOQ7; J252NTR; (Go if no lockout);
251; E10M4; V0P0; -; J253>Z; Q7; J252=Z; CTQ7; (Kill); JS247P196;
252; Q5; SETB100; JS114P300; =Q5; (Release prog);
V0P0; E30M4; -; V9P104M5; +; =V9P104M5;
253; M0M5Q; ERASE; J254C5NZ; ERASE; =Q5; JP30;
250; DUP; J251=Z; J252; (First J if not forced);
P61; (OUT 10);
ZERO; =V45P104M5; JS3P29; J4;
V32P1; SHL-1; J4=Z;
V0P1; V3P155; J11=; DUP; J2=Z;
DUP; JSP122; J5; J3.Z;
5; DUP; JSP132; J3; V1P1; DUP;
JSP122; J6; ERASE; J3.Z;
2; V1P1; J3.Z;
7; ZERO; NOT; SHL-3;
6; REV; JSP58;
JSP138;
C6; JSP131; =M6; V-18P101M6;
JS3P29; J35P0;
V45P104M5; J8.Z;
JS3P29; J35P0;
J10;
8; ERASE;
10; JS2P29; J35P0;
EXIT1;
3; ERASE;
4; SETB110; JP2;
11; V25P101; JS1P161; V1P1; NEV; SHL6; J5.Z; ZERO; =V25P101; J5;
P62; (Initial housekeeping for OUTS 2,4,8.
Erase out no., check at least 1 other item
in programs nest);
JS3P29; J35P0;
V32P1; J4P45<Z;
V0P1; DUP; EXIT2;
P64; (OUT 17);
V5P104M5; DUP; V9P104M5; +;
2; =V0P1; JS2P29; J1; EXIT1;
1; SETB40; JP2; (Fail nest full when OUT17 obeyed);
P65V2; (OUT 50 and related topics);
V0=B2020212077770064; (Header word for stats block, used in P155);
V1=P /X*E; (Skeleton job descriptor, used in P15);
V2=P ×SYSTEM; (Used in P52);
I4; SHC-11; V77P104M5; OR; =V77P104M5; (Show OUT50 done);
ERASE; (Erases the out number, see P3);
JSP62; J10; ERASE; JSP133; J10;
I7; =M7; M0M7; V3P120; NEV; SHA-1; J10.Z;
SET7; =M7; M+I7;
(== 23 ==);
JSP139; JSP102; (Wait, see ref 29P23);
JS3P29; JS35P0; (Remove N2);
M+I4; (Put Transfer in OUT8 queue);
J99P23; (End of OUT1);
2; PMHQ7; I7;
3; SETAV65P104; M5; +; SHL+16;
OR; ZERO; JS157P23; (Put item in OUT8 queue);
J50P10; (Await end of transfer);
10; (Invalid or wrong date); SETB700; JP2;
P66; (OUT51- overwrite job no.);
ERASE; SETAV93P104;
1; =M7; JS8P196; JS1P29; JS128P196; =M7M5; EXIT1;
14; (OUT 14); SETAV61P104; J1;
15; (OUT15); SETAV61P104; J1;
19; (OUT19); JS8P196; JS1P29; JS128P196; DUP; J191<Z;
(Check dv owned); DUP; =Q7; SET1; DUP; SHCC7; REV; J193=;
V17P104M5; AND; J194=Z; DUP; SHL-40; J192;
191; (Simple wait for N secs); NEG; ZERO; REV;
192; DUP; SHL-5; J193.Z; SHA24; V0P0; DUP;
=E30M4; +; =E10M4; =E20M4; SETB100; J113P300;
193; ERASE;
194; ERASE; J5P3;
P72V4; (TINT Z, tape labelling as in Oxford director);
V0=P [CN]TN/ID[Q];
(V1/4= ansewer to TN/ID);
JSP32; J1P45; DUP; SHL-4; J1P45.Z;
Q6TOQ5; (In case needed by RIO);
DUP; =C6; =M6; ZERO; V0P26M6;SHL+24; SHLD-30;
SHL-12; SETB54; NEV; OR;JP45.Z;
JSP13; =M7; C7; SETB60; J5=; V-17P101M7; V3P155; NEV;
J1P45=Z; SETB35;J4=; SETB17; NEV; J10=Z; JS103P155;
ZERO; NOT; JS23P58; Q6; =E20M4;
8; ZERO; NOT;
SETAV0; SETAV4; JSP8; E20M4; =Q6; V1; DUP; SHL-36;
SETB4637; J7=;
SETB5617; NEV; SET-42; =C5; J1.Z; ERASE; ZERO;
SET6; =+C5; ZERO; NOT; =+M5;
1; V5M5;V4M5;DUP;V3M5;SHLDC5; SETB17; NEV;
SHL+42; J9.Z; (Check / for AAH);
PERM; SHLDC5; ERASE;
2; JSP13; SETAV-18P101; +; =R17; M+I7;
=E2M7; =M0M7N; DUP; J3=Z; =M0M7; ZERO;
3; ERASE; SET2;=+M7;
C6TOQ7;
POBQ7;
SETB32000; JS10P100; EXIT2;
4; (Label zero); ERASE; ZERO; ZERO;
6; ZERO; J2;
5; (Lable printend); ERASE; ZERO; V17P155;
(Set TSN =); V-18P101M7; SHL6;
SETB36; OR; SHC-6; =V-18P101M7; J6;
7; (Ignore); ERASE; ERASE; JP135;
9; +D; ERASE; ERASE; J8;
10; ZERO; M0M5N; M0M5; SHLDC5; REV; SHL-36;
SETB3775; -; J3P45.Z; J6;
(== 24 ==)
P76V0; (TINT X initializse prompt or prime);
V0=-1;
(V0 0 disc unprimed
-1 primed);
(V77P104;V78P104;V79P104;V80P104;OR;OR;OR;J4P45<Z;)
ZERO; NOT; J1P52;
P100V9; (Deal with W mag tapes)
(V0 nz if there are W tapes)
(V1-9=Brick indicators for units 7-17)
V0; J4P45=Z;
V0P26; =Q6; ZERO;
1; =V0;
2; SETB10674; JS2P26;
EXIT1;
=TR;
3; BUSYQ6; J5TR;
PARQ6; V-6M6; J11NTR;
DUP; SET1; SHL+23;OR; =V-6M6;
11; FIX; NOT; SHLD-1; =LINK; J4<Z;
EXITAP101;
4; EXIT1AP101;
5; ZERO; NOT; J1;
6; SETAV-6U; =M7; M6M7H;
SHC+9; SHL+1; SHC-10; STAND;
DUP; =M6M7H; J3.Z;
J2;
10; SET31; FLOAT; =V-6M6;
V0P26M6; SHL-6; SHC-18; SHL+6; SETB67;
OR; SHC+18; =V0P26M6; ZERO; NOT;
DUP; =V0; =V19P0; EXIT1;
P101V30; (W mag tape bricks);
(V0 nz if there are new L tapes)
V1=B0112121212120101;
V2=B0020202020204254;
(V3=29=label block of units 7-17)
V24=Q 0/0/AV0P26; (OUT 11);
(V25 dv number of OUT8 tape awaiting printing);
(V26 TINT P marker);
V30=P*[N]PARITY;
J1; J2;
J3; J4;
J5; J6;
1; (Count back to BT)
V-6P100M6; PMBQ6; J11TR;
NOT; NEG; =V-6P100M6; SET1;
12; =Q7; C6TOQ7; PMEQ7; J5P100;
11; DUP; SHL-23; SHL+23; =V-6P100M6;
SHL25; SHL-25; V1;REV; FRB;
V2; OR; V0P26M6; SET2; JSP6;
J6P100;
2; (Skip back to BT)
PMBQ6; J6P100TR;
ZERO; J12;
3; (Read label block)
JSP131; SETAV-18; +; =R17; M+I7;
C6TOQ7; PMBQ6;
J31NTR; SET2; =+M7; PIBQ7; JSP100;
31; PMEQ7; M0M7N; JSP122;
J32;
J35;
32; M0M7N; JSP132;
J33;
E2M7; DUP; J34.Z;
(== 25 ==)
NOT;
34; JSP122;
J6P100;
35; =M0M7N;
33; ZERO;NOT; SHL-3;=E2M7; J6P100;
4; (W becomes u)
C6; V1P52; NEV; J42.Z;
ZERO; =V1P52;
42; SET1; SETB177776;
43; SHA+18; V0P26M6; +; =V0P26M6;
DUP; J46=Z; J2P100<Z; V0P26M6; SET1; J45;
46; ERASE; JSP131; =M7; V-18M7; JSP122;
V-18M7;
SET4; =C5; V-17M7; V-16M7; DUP; PERM; NOT; SHL+3;
J44.Z; REV; DC5; ERASE; DUP; J44.Z; ERASE; V0P39;
44; V0P26M6; C5;
45; JSP6; V-6P100M6; SHL+24; J2P100>Z;
V30; SET1; JSP6; J2P100;
5; (W becomes L)
ZERO;
51; ZERO;NOT; =V0; SETB17765; J43;
6; (W becomes L, nothing typed)
ZERO; NOT;J51;
P102; (Hold up subprogram until peripheral transfer
in programs area can be obeyed. Parameters
given in Q7)
SET1; JSP10;
2; Q7; JSP103; J1;
=Q7; EXIT1;
1; SET1; ZERO; CAB; JS2P10;
J2;
P103; (Check parameters in N1 before peripheral
transfer which may involve programs area)
SET4; =RC6;
1; J2C6NZ; EXIT2;
2; V9P0M6Q; JS1P300; DUP; JS108P300;
J1;
V8P0M6; DUP; SHL-24; J1P45.Z;
3; SETB30000; AND; SETB140000; OR; =K1;
ERASE; EXIT2;
(For actual p104 see in front of P11
V0=B01010101/23; (HUR)
(V1 onwards= constants associated with
priorities, in groups of 4)
(V1-4= overflow and TR record, etc.
V5-8= run time
V9-12= PHU time)
V13=B0141/11; (NS counters etc.);
V14=B2141/11;
V15=B4141/11;
V16=B6141/11;
V17=1; V18=1; V19=1; V20=1; (CPDAR);
(V21=24 = A program unit pre-allocation.
For B programs, records types to be
pre-allocated on dellocation by OUT 6)
V25=2; V26=2; V27=2; V28=2; (Hold-ups);
V29=5; V30=5; V31=5; V32=5; (APM);
(V33-36= Dump for E0
V37-44= Current program name
V45-52=New program name, transfer
parameters, OUT4/10 marker, etc. used
(== 26 ==)
only by main subprogram.
V53-56=Program start time
V57-60=Streams used by proram
V61-68=Serial number of prog on tape)
(V69 D0-15 System discs
D16-31 32-47 Non system discs
V73 Correspondence between logical and actual discs
V77 D0 System marker
D1
D2 OUT 41/42/43 Obeyed
D3 Parity
V81 D0-16 OUT43 selection marker
D32-47 last seek requested
V85 D0-15 D32-47NOC for OUT46
D16 last C block
D17-31 length of block
V89 input store for NOC);
(V93-V96 job desc, of progs);
(V97.. top half CPU time allowed for job, bottom half PHU time
allowed for job. Overides E1 time for CPU, does restart on job
if PHU time exceeded(as V9P104),set by OUT15);
End of dummy P104);
P105V2; (Consolidate core storage and swop priorities.
Upgrades A priorities automatically if needed)
(V1=Q no. of quartets in P104/4/AV1P104, set up by P200);
V2=Q 4/10/AV3P11;
V0; J4P54=Z;
6; ZERO; =V0; SET4; =RC5;
2; V9P0M5;
3; DUP; SHL+38; J5=Z;
DUP; JS107P300; J4;
(Test for store move)
DUP; SHL+14; SHL-38; J5=Z;
(ZERO; NOT; =V0P193; (Set JO marker);)
(Move program in store)
Q7TOQ4; I4=-1; DUP;SHL+14; SHL-38;
SHL+5; I7; -;
DUP; =M6; I4=+1;
*7; M0M4;=M6M4Q; *J7C4NZS;
(Alter value of base address)
ZERO; REV; SHC-24; SHLD-10;
SHC+24; SHLD-38; ERASE;
(Alter affected parameters in OUT 8 q)
107;
61;
(Alter affected parameters in FLEX q)
SETAV0P6; =RM4;
8; M0M4; NOT; J9=Z;
M0M4; JSP127; JS109P300; =M0M4Q; J8;
9; (Alter affected SHUPS)
SET10; =RC4;
10; V1P11M4Q; J11<Z; (Updates inactive SHUPS for benefit of OUT29);
V10P11M4; JS109P300; =V10P11M4;
11; J10C4NZ;
5; (Test for priority swop)
DUP; SHL-45; J4=Z;
DUP; SHA-45; M5; +; =M4;
V9P0M4; JS107P300; J4;
(Alter BA/NOLS of swopped priorities)
(== 27 ==)
SETB30000; NOT; SHL+3; SHL-3; DUP;
V9P0M4; AND; M5; SHL+12; OR;
PERM; AND; M4; SHL+12; OR;
=V9P0M4;
(Alter tab words)
V24P0M5; SHL-8; SHL+2; M4;
OR; SHL+6; V24P0M4; SHL-8; SHL+2;
M5; OR; SHL+6; =V24P0M5; =V24P0M4;
(Swop bits in V0P104)
M4; DUP; SHL+1; +; SHL+1;
=C4; M5; M4; -; DUP;
SHL+1; +; SHL+1; =C7;
V0P104; SHCC4;ZERO; SHLD+6; NC4;
REV;SHL-6; SHCC7; REV; SHLD+6;
NC7; SHC-6; SHLD-6; SHL+6; REV;
SHCC7; OR; SHCC4; =V0P104;
(Swop V-stores of P104)
V1; =Q6;
*12; M4M6; M5M6; =M4M6; =M5M6Q; J12C6NZS;
(Alter if needed recorded priorities
of interrupted program, A and B input)
V7P0; JS110P300; =V7P0;
V0P52; JS110P300; =V0P52;
V0P199; JS66; =V0P199;
V1P199; JS66; =V1P199;
J106;
66; SET8; =C6; SHC-10;
67; JS64; DC6; SHC+6; J67C6NZ;
SHC+10; EXIT1;62;
M0M6;
64; SHC+12; ZERO; SHLD+3; NEG; NOT;
JS110P300; NOT; NEG; OR; SHC-15; EXIT1;
65; =M6; M0M6; J4P45=Z; JS62;
DUP; =M0M6; SHL-16; J65;
106; (Attend to OUT8 queues);
SETAV0P23; JS65; SETAV2P23; JS65;
63;
(Alter subprogram numbers in FLEX q)
SETAV0P6; =RM6;
15; M0M6; JSP127; J16; J17;
16; JS64;
17; DUP; =M0M6Q; NOT; J15.Z;
(Swop SHU stores)
M4; SHL+1; =M4; M5; SHL+1; =M7;
V2; =Q6;
14; M7M6; M4M6; =M7M6; =M4M6;
M7M6N; M4M6N; =M7M6N; =M4M6QN; J14C6NZ;
J3;
4; =V9P0M5Q; J2C5NZ;
1; (Set up priority swops)
JSP116;
40; (Set up B program move)
SET4; =RC7; I7=-1;
V0P117; SHL-5;
42; =I6;
44; J43C7Z;
V3P116M7Q; DUP; JS115P300; J44=Z;
V9P0M6; SHC-10; ZERO; SHLD+10;
I6; J45.;
REV; SHL+24; SHL-38; NOT; -;
J42;
45; OR; SHC+14; SHL+10; I6;
OR; SHC+24; JS112P300;
43; V0; J6.Z;
(== 28 ==)
SET4; =RC4;
50; M4TOQ5; SETB20; V9P0M4Q; SHL-24; J51.Z;
JS114P300; JS2;
51; JS113P300; ZERO; NOT; =V0; SET1; SHC-27; =V0P13;
52; J50C4NZ;
EXIT1;
18; (Claim or return extra store);
JSP62; J16P23; V0P105; J3P45.Z; J19<Z;
(Store to be increased);
(Mark 1 verson bloody awful code);
DUP; JSP117; ZERO; DUMMY; DUMMY; SHL-37; -; J1P45>Z; (J if too much);
V10P0; V11P0; V12P0; OR; OR; SHL38; J1P45.Z;(J if others in MC);
20; SHL14; V9P0M5; +; =V9P0M5; ZERO; J1P24;
19; (Store to be reduced); DUP; NEG; V9P0M5;
SHL24; SHL-38; -; J1P45>Z; J20; (Not quite as bad as 1st bit);
P300; (Old seperate P routiens);
106; (Given BA/NOL, set C7= no. of words occupied,
I7,M7= first and last addresses occupied)
DUP; SHL+38; SHL-33; DUP; J10.Z;
=Q7; ERASE; EXIT1;
10; DUP; =I7; =M7; SHL+24; SHL-38;
NOT; NEG; SHL+5; DUP; =C7;
NEG; NOT; =+M7; EXIT1;
107; (Given BA/NOL, set up Q7 as in P106, and
test lock-out on progrms area)
ZERO; =TR; JS106; TLOQ7; J4P45TR; EXIT2;
108; (Given transfer paramters, test for I > I7 and
M ×le M7)
ZERO; REV; SHLD-16; SHL+32; SHLD-32;
I7; SIGN; M7; CAB; SIGN;
OR; J4P45<Z; EXIT2;
109; (Given transfer parameters, add M6 to I and
M if transfer lies in area given by I7-M7)
DUP; JS108P300; EXIT1;
M6; SHL+32; DUP; CAB; SHC+16;
+; SHC+16; +; SHC+16; EXIT1;
110; (Replace N1 BY M4 or M5 if N1=M5 or M4 respectively)
M5; J1.;
ERASE; M4; EXIT1;
1; M4; J2.; ERASE; M5;2; EXIT1;
111; (Set up swop of priorities given in M6, M7)
M6; M7; -; SHL+45; DUP;
V9P0M7; OR; =V9P0M7; NEG; V9P0M6;
SHL+3; SHL-3; OR; ;
112; (Store new BA/NOL in V9P0M6, set V0P105 nz if new
BA/NOL differs from previous one)
DUP; V9P0M6; NEV; V0P105; OR;
=V0P105; =V9P0M6; EXIT1;
113; (Set HU bits in priority hold-up word)
V25P104M5; OR; J20;
114; (Clear HU bits from priority hold-up word)
NOT; V25P104M5; AND;
20; DUP; =V25P104M5; JP13.Z; SET-2; J1P13;
(== 29 ==)
115; (Given BA/NOL, set priority no. in M6, 6 times
priority number in C6)
SHL+34; SHL-46; DUP; =M6; DUP;
SHL+1; +; SHL+1; =C6; EXIT1;
P116V3; (Form table of BA/NOLs in order of decreasing
base address)
SET4; =RC6; V10P45; SHL-5;
1; SHL+36; ZERO; =V0M6;
SET4; =RC7;
2; V9P0M7Q; SHL+36; DUP; V0M6; SHL+36;
SIGN; J3<Z;
REV; DUP; PERM; SIGN; J4>Z;
V8P0M7; =V0M6; ZERO;
3; ERASE;
4; J2C7NZ;
ERASE; V0M6Q; J1C6NZ; ERASE; EXIT1;
P117V0; (Set in N1 parameters for space between B and
A programs, as C= no. of words, I,M= first and
last addresses)
JSP116; SET4;=RC7; V10P45;
1; V0P116M7; DUP; JS115P300; J2=Z;
V0P116M7Q; V0P104; SHLC6; SHL+2; J3<Z;
REV; ERASE; SHL+38; SHL-33; J1C7NZ;
2; V0; J4;
3; DUP; SHL-14; +; SHL+38;
SHL-33; SET32; +;
4; DUP; =I7; NEG; REV; DUP;
NEG; NOT; =M7; +; =C7;
J4P45C7Z;
Q7; EXIT2;
P18; (Given N1=4 for A-program or 5
for B, and N2=BA/NOL, sets parameters
prior to reading in new program)
SET5; DUP; =V29P104M5; SHA-1;
M5; DUP; =V0P52; NOT; SHL+1;
DUP; SHL+1; +; =C5;
SET1;SHCC5; V0P104; OR; =V0P104;
V9P0M5; OR; =V9P0M5; EXIT1;
P119; (Given first word of program name, checks it
for 0702--02 and extracts third character)
ZERO; SHLD+18; SHC-6; SHLD-42; REV;
SETB70202; NEV; J1P45.Z; EXIT3;
P120V6; (General program input procedures)
(V3=date,V4=N number)
V0=B0702606257470064;
V1=B4160450062456177;
V2=B0060516500000000;
11; (TINT T enters here); =V21P104M5; V2;
V0P26M6; SHL+30; SHL-30; OR; V24P0M5;
SET2; JSP6;
(Read A-block)
C6TOQ7; JSP126; JSP102;
PIBQ7; ZERO; JSP10;
PARQ7; J14NTR;
SET1; JP121;
14; I7; =M6; M0M6N; =V49P104M5;
M0M6; DUP; =V45P104M5; JSP119;
(== 30 ==)
16; SET2; JP121;
E2M6; SHL-6; SHL6;V2P65; J94=; DUP;
SHL-42; SETB35; NEV; J98.Z;
SET5; =C6; DUP;
93; SHL6; DUP; J96<Z; DC6; J93C6NZ; SHL6; SHC6;
SETB75; NEV; J98.Z; SETB170000; AND;
94; =V93P104M5; (Store job no.);
SETB60; NEV; J30=Z; JSP123;
22; (OUT 1 enters here);
V45P104M5; JSP119; J35P0; JS35P0;
SETB44; J82=;
SETB55;NEV; J16.Z;
(Program to be read from mag tape);
V1P52; DUP; =M6;
=C7; J21C7NZ;
19; V49P104M5; V45P104M5; SHL+24;
V29P104M5; SET1; SHL+45; OR;
=V29P104M5; JSP55; SHL6; SETB17; OR; SHLD-24; ERASE;
V1;V0; SET4; JS4P6;
20; JS4P10;
V29P104M5; SHL+2; J22>Z;
V29P104M5; SHL+1; J20>Z;
24; SET9; J121;
25; (Program not on tape)
C7; =M6; JSP135;
ZERO; =V1P52; J19;
105; C7; =M6; JSP135; J22; (Abandon search);
21; V29P104M5; SHL+3; ZERO; NOT; CONT; SHL-3; =V29P104M5;
V0P26M6; SHL+24; SHL-42; SETB43; NEV;
J19=Z;
ZERO; V0P26M6; SHL+24; SHLD-30; SHL-12;
SETB54; NEV; OR; J20.Z;
V0P26M6; JSP55; OR; =V0P26M6;
23; IM0TOQ7; PMAQ7; ZERO; JSP10;
V29P104M5; SHL+3; J105>Z;
PARQ7; J28TR;
28; PMFQ7; J25TR;
PMCQ7; J23NTR;
JSP126; JSP102; PIAQ7; ZERO; JSP10;
PARQ7; J29TR;
29; PMCQ7; PMFQ7; J25TR;
I7; =M6; M0M6; V45P104M5;
JSP137; M0M6N; V49104M5; JSP137; OR;
J23.Z;
30; (Read B-block)
JSP102; PIAQ7; ZERO; JSP10;
PARQ7; J31NTR;
74; SET4; JP12;
81; V49P104M5; V45P104M5; SHL24;
SHL-8; SETB135371; SHLD-16; ERASE;
V24P0M5; SET3; JS4P6; J20P121; (Nod gives CRNP message);
69; (Binary archived);
ZERO; NOT; SHL-3; REV; JSP58; (Request tape);
J24C6Z; V0P26M6; V45P104M5; SET9; SHL18;
DUP; SHL12; +D; =V45P104M5; SHL-6; SHL6; =V0P26M6;
(Change D to M and C to L);
C6TOQ7; J21;
82; (Program to be read from disc);
ERASE; V89P104M5; V29P104M5; SHL37; J182<Z;
ERASE; JSP194; J81;
182; DUP; J69<Z; (J if prog on tape);
(Program on disc); DUP;
SET1; SHC-9; OR; =V89P104M5; JSP126; JS84; J74;(Read B block);
(== 31 ==)
31; I7; =M6; E2M6; V45P104M5; JS137;
E3M6; V49P104M5;JSP137; OR; J32=Z;
SET5; JP121;
32; (Check and assign store requirement)
M0M6N; SHL+24; SHL-24; (Req);
V1P104M5; (Limit)
DUP; PERM; J35P0=Z;
DUP; J33=Z;
37; DUP; CAB; SIGN; J34<Z;
63; ERASE;
39; SET6; JP121;
(60; REV; ERASE; DUP; J61=Z;
V10P45; V0P117; -; REV; J37;
61; (Zero limit and req); Q7; =V1P104M5;
62; ERASE; JSP117; ZERO; DUMMY; DUMMY;
SHL-32; SHL+9; V9P0M5; +; DUP =V9P0M5;
SHL+24; SHL-38; NOT; NEG; SHL+5;
V1P101; REV;
FRB; V4; OR; =V14;V24P0M5; JSP55; OR; =V11;
ZERO; SETAV11; SETAV15; JSP8;
SETAV15; =Q6; V10P45; V0P117; -;
SETB77740; JS1P32; ERASE; DUP; DUMMY;
NEG; NOT; SHL-5; NOT; NEG; SHL+5;
DUP; CAB; SIGN; J62>Z;
133; V1P104M5; =Q7; JSP126; I7; =M6; DUP; J63<Z;
ZERO;
);
33; ERASE;
DUP; M0M6N; OR; =M0M6N;
34; NEG; NOT; SHL-5;
35; DUP; V9P0M5; SHL+24; SHL-38;
SIGN; J38<Z;
Q7; JSP117; J36;
SHL-32; SHL+9; V9P0M5; +;
=V9P0M5; =Q7; J35;
36; REV; =V1P104M5;
V77P104M5; SHL+7; JP130<Z; (J if foreground);
136; SET1; ZERO; CAB; JSP134; J39;
V1P104M5; J35;
38; JSP193; J140; (J if JO);
DUP; V9P0M5; SHC-24; ZERO; SHLD+10; CAB; -; SHL-6;
V0P193; OR; =V0P193; OR; SHC+14;
=V9P0M5; ZERO; NOT; =V0P105; ZERO;
140; ERASE; ZERO;
40; (Check filler word)
=V1P104M5; M0M7; DUP; =E20M4; =Q6;
IM6TOQ7; I7; DUP; SET7; SIGN; JS1P133; J85;
(Read C-blocks);
V45P104M5; SHL-30; SETB70244; NEV; J83=Z; (J if disc);
JSP102; PIAQ7; ZERO; JSP10;
PARQ7; J42NTR;
78; SET8; JP121;
85; SET7; JP121;
83; (Read C block from disc);
V77P104M5; SHL+1; J86>Z; V0P76; J42.Z;
86; I7; NEG; NOT; DUP; =I7; =M6; M0M6; =V37P104M5;
(Preserve word which will be overwritten by N.O.C.);
M7; I7; -; SET3839; -; J85>Z; JSP102; V89P104M5; JS84;
J78; I7; =M6; I4; =+I7;
M0M6; (N.O.C.); V37P104M5; =M0M6; =V89P104M5;
42; M7; I7; DUP; =RM6; -; =C6; V1P104M5;
*51; J52C6Z; M0M6Q; +; J51C6NZS;
52; E20M4; SHL-32; J40.Z;
(== 32 ==)
(Check C-block sum)
M0M7; NEV; V9P0M5; SHL+5; =M7;
M0M7; SHL+24; J53=Z;
SET3; REV; JP121.Z;
53; (Dispose of input unit)
ERASE; J47C7Z; C7; =M6; V0P26M6;
SHL17;J43<Z; JSP123;J47;
43; JSP135;
47; V0P52; M5;NEV; J44.Z; ZERO; NOT; =V0P52;
44; (OUT 2 enters here)
V9P0M5; SHL+5; =M6; M0M6;
V33P104M5; SHLD+24; SHC+24; =M0M6;
=V33P104M5; V93P104M5;V29P104M5;
ZERO; =V29P104M5; SET2; JS114P300;
ZERO; =V1P104M5; V3; =E7M6;
E3M6; DUP; =V41P104M5; E2M6; DUP;
=V37P104M5; SETB20002; SHL+24; -;
JS3P193; JS141; (Do things if JO);
SHL+6; JSP55; OR; SHC-6;
CAB; V24P0M5; SETB33; OR; REV; DUP;
SHC-2; J48<Z; ERASE;
V77P104M5; STR;DUP; V0P76; OR; =V0P76;
CONT; SETB40604; SHC-15; AND; =V77P104M5;
ZERO; NOT; =V65P104M5; V4; =E6M6; ZERO; =V4;
JS109; DUMMY; DUMMY; DUMMY;
201; V0P57; SHC12; V0P0; DUP; =V53P104M5;
ZERO; =V9P104M5; SHA-24; SET30; +; FRB;
V23P0; SHL+1; OR; V3; SHL-18;
SHLD+18; SHL-6; SHLD-12;SHL+6; SHLD-24;
SETB177733; SHL12; OR; SHC-18; V24P0M5; SET2; OR; SHC-6; SET7;
49; JSP6;
64; ZERO; JS6P29;
50; J35P0;
EXIT1;
141; V9P0M5; SHL+24; SHL-33; NOT; NEG; SHL+5; =M0M6N; EXIT1;
48; (OUT 1 only); JS109; J110;
107; M6M0HN; V97P104M5; MAX; ERASE; =M6M0HN;
JS3P29; JS35P0; JS3P29; JS35P0;
SHL37; J183>Z; JS3P29; DUMMY; DUMMY; DUMMY;
183; JS5P29; J50; ERASE; V77P104M5; SHL12; J200<Z;
ERASE; ERASE; ERASE; ERASE; J64;
200; V77P104M5; SETB177676; SHC-13; AND; =V77P104M5; J201;
109; (If Leeds prog and TL ×le1 then replace with MAX TL);
V37P104M5; SHL24; SHL-42; DUP; SETB45;
NEV; ABS; NEG; REV; SETB53; NEV;
ABS; NEG; AND; M0M6N; SHL-25; OR; J4P45.Z;
111; ZERO; NOT; STR; ERASE; =M6M0HN; EXIT2;
110; VR; M6M0HN; V5P104M5; ROUNDH; -; J106V; =M6M0HN; J107;
106; ERASE; JS111; DUMMY; DUMMY; DUMMY; J107;
84; (Read block from disc); DUP; SHL+32;
JS10P196; SHLD-16; ERASE; =E21M4; I4; JSP199;
87; E21M4; =Q6; I6; SETB16; OR; =C7; JS4P199; PIAQ7;
I4; JS5P199; EXIT1; J87; EXIT2;
96; ERASE;
98; ERASE;ERASE;J16;
P121V0; (CRNP failure-number given in N1)
V0=B43625660002020;
DUP; V0; OR; V24P0M5; CAB; SET3; -; SET2; REV; J22<Z;
DUP; +; V49P104M5; V45P104M5; SHLD24; REVD;
22; JS4P6;
20; V29P104M5;
(== 33 ==)
SET5; =V29P104M5; V0P52; M5;
NEV; J21.Z; (J if out from disc); ZERO; NOT; =V0P52;
21;
JSP55; SETB10520; NEV; JS1P26;
J1;
ERASE; JSP135;
1; SHC-2; J2>Z;
(CRNP failure in OUT 1);
SET5; J1P15; (CRNP in OUT1 does not say FAILSIO);
2; V2P52; =C7; J3C7Z;
MANUALQ7; ZERO; =V2P52;
3; V0P26; =Q6;
4; M0M6Q; ERASE; J10C6Z;
JSP125; J4;
JS1P27; (Make unit U); J4;
10; (Clear BA/NOL, PHU, etc.)
ZERO;=V77P104M5; (Clear disc allocation and other markers);
ZERO; =V37P104M5; ZERO; =V41P104M5;
ZERO; =V33P104M5; V9P0M5; DUP; JS115P300; DUP;
SETB147777; SHL+3; SHL-3; NOT; AND; JSP136;
V0P104; SHCC6; SHL+4; NC6; SHL-4;
SHCC6;=V0P104; EXIT1;
P122V1; (Check given word as mag tape identifier)
V0=B3252326532563253;
V1=B377727377777777/43;
DUP; SETB77; AND;
1; =C7; DUP; J1P45=Z;
2; V1; ZERO; SHLDC7; REV; ERASE;
SHL+27; SHLD+6; DUP; J1<Z;
ERASE; ERASE; V0; EXIT2;
P123; (Dispose of program inpt ptr, given C7)
C7; =M6; V0P26M6; DUP; SHL+24;
SHL-42; SETB65; NEV; J1.Z;
MANUALQ7; SHL-6; SHL+6;
1; =V0P26M6;
ZERO; =V2P52; EXIT1;
P125; (Given unit number in M6, check if valid
and owned by priority in M5)
V0P26M6; JSP55; NEV; SHC+1; SHL+41; J4P45.Z;
EXIT2;
P126; (Givne priority no. in M5, set base address in
it and base address+7 in M7)
I0TOQ7; SET7; =M7; JP128;
P127; (Check given word for D0=1 and D1-11 all the same,
i.e. parametr in FLEX queue)
DUP; J1>Z;
DUP; SHL+1; SHA-44; J4P45=Z; (The SHA is changed from SHA-38
in a desperate bid to et KKT92P1 to work);
1; EXIT2;
P128; (Add base address of priority in M5 to I7 and M7)
V9P0M5; SHL+38; SHL-33; DUP;
=+I7; =+M7; EXIT1;
P130V0; (Handle foreground jobs);
V0=-1; (Letter of dumped job);
V0; J136P120>Z; (J if if one level already dumped);
V1P104M5; V9P0M5; SHL+24; SHL-38; -;
(== 34 ==)
V0P35;=RC6;
1; DUP; V9P0M6Q; SHL+24; SHL-38;
-; J2>Z; (J if no big enough);
V76P104M6; SHL+7; (Look at foreground marker and OUT40);
V24P104M6; SHC-2; (Lok at subprog activity bit and absent bit);
OR; DUP; SHL+1; OR; J3>Z; (J if OK to roll out);
2; J1C4NZ;
5; ERASE; J136P120; (Wait and come round again);
3; M-I6; M5; JS4; =M5; JSP30; J5;
4; M6TOQ5; JSP30; V9P0M5; JS106P300; JSP55; =V0;
JSP139; JSP102; (Wait for no lo and no 2ND subprog);
(Now OK to dump);
ZERO;
6; DUP; DUP; SET96; +; DUP; =E31M4; (SHUL× of sec subprog);
SET40; ×D; CONT;(Extent of max transfer); VR; V9P0M5;
SHL+24; SHL-38; NOT; NEG; SHL+5;
MAX; ERASE; (Leaves size of transfer in N1);
(VR set if this is last transer);
NEG; NOT; (High address of transfer);
REV; (Strat sector);
SET40; ×D; CONT; SHL+16; (Low address); OR;
REV; SET1152; +; (Strat dump on track 12);
J7V; (J if last time);
JS10; E31M4; J6;
7; (Last time); JS10;
V9P0M5; DUP; SHL+5; =M6; DUP; =E2M6;
SHC+24; SHL+10; SHC+14; =V9P0M5; (Sets NOL = 32 words);
SET1152; =M0M6N; JS13; SET7; =RM6; Q6; SET33;JS10;
(Put entry for JO on disc);
SETB40; J113P300; (Hold up obj pro);
10; (Write on global disc);
SET768; +;LINK; J234P196;
12; (Invalid OUT25); SETB670; JP2;
50; (Swop levels - only available to JO);
DUP; SHL+16; SHL-32; REV;=LINK; LINK; JS1P54; JS247P196;
J8P196; (Set TR if swop not possible);
25; (OUT25, restore dumped prog if D0=0,
swop levels if D0=1);
(Used by JO, N2=Q-/LO/HI of prog now in store);
JS3P193; J11; SETB10; JP2; (Fail 01 if not JO);
11; JS3P196; J50<Z;
JSP133; J12; C0TOQ7; ZERO; JSP10;
V45P104M5; SHL+17; V9P0M5;
SHC+24; SHLD+10; SHC+14;
=V9P0M5; ERASE; (Chop off old prog )
JS8P196; V0; JS1P56; J12;
M7; I7; -; SHL-5; (New NOL);
V9P0M5; DUP; SHL5; =M7; (Old BA); SHC-14; OR; (Old was 0, put in new one);
SHC+2; SHL+12; I7; DUP;=M6; SHL-5; OR; (Put in new BA);
M0M7; =M0M6; (Copy word 0 so that TINT B is not lost);
=V9P0M5; ZERO; NOT; =V0; SETB40; JS114P300; (Clear HU);
13; ZERO; NOT; DUP; =V19P0; =V0P105; EXIT1;
39; (OUT39, initiate foreground job);
JS3P196; ERASE; SET2048; MAX; V1P193; MAX; =V1P193;
ERASE; ERASE; ZERO; NOT; =V0P193; J8P196;
P131; (Leaves 3 times M6 in M1)
M6; DUP; SHL+1; +; EXIT1;
P132; (Check length of given mag tape identifier)
SHL-42; SETB35; NEV; J4P45.Z; EXIT2;
P133; (Housekeeping for OUT involving
(== 35 ==)
peripheral transfer. Checks given paramters,
copies to V45P104M5 and, with BA added, to Q7)
DUP; =V45P104M5; =Q7;
I7; DUP;
1; M7; CAB; SIGN; OR;
V9P0M5; SHL+24; SHL-38; M7; SHL-5;
SIGN; OR; J4P45<Z; (Fail)
JSP128; EXIT2;
P134; (Hold up subprogram during program input,
examine V29P104M5 for TINT A termination)
V29P104M5; SHL+3; NOT; NEG; SHC-3;
=V29P104M5; JS2P10; V29P104M5; DUP;
SHL+3; SHL-3; =V29P104M5; SHL+1; J4P45<Z;
EXIT2;
P135; (Dispose of program tape, given in M6)
SETB21000; J10P100;
P136V0; (Store new BA/NOL, check lockouts
cleared form old area, clear PHU)
V0=P LOCK-OUT;
Q6; M5TOQ6; REV; JS112P300; =Q6;
DUP; SETB30000; AND;
SETB140000; OR; =K1; REV; JS107P300;
(Lo on); ERASE; ZERO; DUMMY;
CLOQ7; J4P45.Z;
10; V0; V24P0M5; SET2; J4P6;
P137; (Form N1 NEV N2, clear characters
corresponding to - IN N1)
DUP; SET8; =C6;
1; ZERO; SHLD+6; SETB36; MAX;
SIGN; SHL-42; OR; DC6; J1C6NZ;
PERM; NEV; AND; EXIT1;
P138; (Change bit in V17P104M5)
SET1; SHLC6; V17P104M5; NEV; =V1P104M5; EXIT1;
P139; (Given area in I7, M7, clears C7, leaves
subprogram via EXIT1- no extra links
saved, resume when area not locked
out and OUT 8 subprogram dead)
C0TOQ7; SET1; JS3P10;
1; M0M4N; JP139.Z; EXIT1;
P154; DUMMY; (This is V-1P155)
P155V17; (Process OUT8 queues, D.H. 24/11/67);
V0=B4006402401; (Selection chars);
V1=P ****HRS[C];
V2=B0377777777600300;
V3=P +KOUTPUT;
V5=B7477777777777777;
V6=B63646200212; (Str 00, SHL-3);
V17=P PRINTEND; (Ident of discarded OUT8 tape);
ZERO;
ZERO; NOT; =V4P23;
93; =TR; Q0TOQ4; V1P23; =Q7; (L queue);
J99C7Z; (J if no tape); BUSYQ7; J100TR;
V0P23; DUP; J101=Z; (If queue empty); JS1;
(== 36 ==)
J100;
99; (No L tape); V4; J100>Z; (If no TINT J);
JSP161; SET9; =RC6; SET3;=I6;
SHC+6; NEG; NOT; SHC-6;
*98; V5P101M6Q; J96=;
97; J98C6NZS; J91;
96; V3; V1P101M6; NEV; J97.Z;
C6; NEG; =M6; V15P26M6;
SHL+24; SHL-42; SETB65; NEV; J90.Z;
(J if tape still on machine);
91;
(Switch); SET4; =RC5;
V0P161; NOT; NEG; =V0P161;
V-1; =V4;
95; V57P104M5; DUP; ZERO;
SIGN; NEG; CONT; =V57P104M5Q;
J95C5NZ; V2P23; DUP; =V0P23;
V3P23; REV; J92.Z; SETAV0P23; SHLD-16; ERASE; SHC+16;
92; =V1P23;
ZERO; =V2P23; SETAV2P23; =V3P23; J93;
162; SETB7777;
163; V2P161; CAB; JS2P161; SHL+12; OR; SHL+6; C5;
OR; SHL+6; V12P104M5; SHL-46; SHL+3; NEG; =C6;
V0; SHLC6; SETB77; AND; OR; EXIT1;
90; ERASE;
100; V3P22; SET2; =M4; =Q7; J102C7Z; BUSYQ7; J4P45TR;
V2P23; DUP; J1P45=Z;
1; METQ7; J112TR;
7; PARQ7; ZERO; =TR;
DUP; =Q6; DUP; J11<Z;
SETAV7; DUP; =I7; =M7; TLOQ7; J1P45TR;
11; DUP; STR; ERASE; ZERO; SHLD+12; =RC5; IM6TOQ7;
SHL-44; DUP; =M6; SHL-1; DUP; =M5;
SHL+12; SETB130000; +; =K1; ERASE; (Set CPL);
M7; SET2; J254=; SHL-1; J2.Z; DUP; NOT; NEG; J3;
2; V11P11M6; STR; REV; =V11P11M6;
12; ERASE; I7; =RM6; M0M6;
DUP; J3.Z; V1P23M4; SETAV0P23; M4; +;
SHLD-16; ERASE; SHC+16; =V1P23M4; (Reset empty queue);
3; =V0P23M4; (Upatde queue);
J6>Z;M7; I7; -; JS162; =M0M6;
4; MWQ7;
5; EXIT1;
254; (If punch then do gap);
C5; SHC-4; J12<Z; ERASE; DUP; SET4; +; J3;
6; (Director transfer);
SETAV7; DUP; =I7; =RM6;
M7; DUP; SHL-4; J50.Z;
=LINK; EXITAR8;
50; (OUT50); ERASE; SET8; =RC6;
51; M7M6; =V8M6Q; J51C6NZ;
M-I6;
M7; DUP; =I6; =+M6; CLOQ6; (Clear out 50 lock out);
V12; SHL+24; J53.Z;
52; V4P161; V3P161; DUP; NOT; NEG; =V3P161;
FRB; V5P161; +; V12; OR; =V12; (Serial no);
53; SETAV16; =M7; V0P65; =V7; V0; =M0M7; J4;
*8; J20; *J21; *J22; *J90P15;
*J23; *J72P15;
*; (Gap on punch); V2; SET72; -; J31;
23; (Stream terminator);
SET1; SETB7772; M5; J33=Z; V4; NEG; NOT; =V4;
33; JS163; =V7; V2; =M0M6QN; M6TOQ7; MLWQ7; EXIT1;
(== 37 ==)
20; (Header block); SET1; SETB7741; J33;
21; (Title 1);
V3P120; ZERO; SHLD12; V29P0; J42<Z;
(If off line then add 2 dots); SETB3737; SHL18; OR;
42; V104P104M5; J40<Z;
(Controlled prog); V100P104M5; J41;
40; V92P104M5;
41; ZERO; SHLD+24;
V8P0M5; SHL+5; =M4; E3M4; E2M4;
SHLD24; =M0M6QN; OR; =M0M6QN; OR;
=M0M6QN; =M0M6QN; V104P104M5; J25>Z;
V100P104M5; =M0M6QN;
V108P104M5; =M0M6QN;
V112P104M5;J31;
25; SETB02;
31; =M0M6QN; C6; NEG; JS162; =V7;
32; M6TOQ7; J4;
22; ZERO; C5; SHLD-3; SHL+4; V6; OR; SHLD+15; =M0M6QN;
ERASE; V0P57; SHC+12; V0P0; SHA-24; SET30; +; FRB;V23P0; SHL+1;
OR; V1; SHLD+18; SHL-6; SHLD-36;
ERASE; SHC24; =M0M6QN; SETB170202; J31;
101; (L queue empty); ERASE; V57P104; V58P104; OR;
V59P104; OR; V60P104; OR; J100<Z; (J if still open);
V77P104; SHL11; J253>Z; (J if ELDON will not print tape);
V0P161; =V25P101; J255; (Store serial number for OUT 11);
253; Q7; SET16; SET288; JS1P193; J90; (J if nogo);
JSP126; V0P161; =M0M7N; (Put reel no tape in E8 of prog); =Q7;
255; M0TOQ4;
107;
SETAV5; DUP; =I7; =M7; MLWQ7;
V1P23M4; SHL+32; SHC+16; =V1P23M4;
C7; =M6; JP135;
102; (No N tape); V2P23; J4P45=Z; I7; J4P45<Z;
JS103; I7=-1;
Q7; =V3P23; (Claim tape);
ZERO;NOT; =M5; V17;
104; ZERO; NOT; SHL-3; REV; JSP58;J105C6Z;
C6; DUP; SHL+1; +;
SETAV-17P101; +; DUP; =RM7; V3; =M0M7Q; C6TOQ7;
V0P161; NOT; NEG; JS1P161;
SHC+6; NEG; NOT; SHC6; =M0M7;
NEG; NOT; =I7; POBQ7; ZERO; JSP10; SET256; =M7;
MWIPEQ7; I0TOQ7; V3P23; =M7; Q7; =V3P23; EXIT1;
103; SETAV2P11; =RM4; I4; =C4; M0M4; J106=Z; LINK; ERASE;
106; EXIT1;
105; ZERO; J104;
112; (End tape warning on OUT 8 tape);
Q4; REV; JS7; JS110; =Q4; V0P23M4; DUP; J112.Z; NOT; =RM5;
108; V58P104M5Q; DUP; J111=Z; STR;
M4; SHL-1; -; NOT; J111.Z; SET46; FLOAT;
109; DUP; FIX; =C5; ERASE; SET4; =M7; JS6;
JS110; SHC+9; SHL+1; SHC-10; STAND;
DUP; J109.Z; =V57P104M5; ZERO;
111; ERASE; M5; SHA-1; SHL-1; J108=Z;
M4; J4P45=Z; V-1; V1P23; SHL-32; J91=Z;
=V4; V0P161; NOT; NEG; =V0P161; J107;
110; JSP60; ERASE; BUSYQ7; J110TR; EXIT1;
(Wait loop, crude but effective);
P161V5; (V0=Reel no of mag tape)
V1=B1212121212121212;
(== 38 ==)
V2=B1010101010101010;
(V3=Stats serial no);
V4=B1212121212121212;
V5=B40202020;
V0;
1; V1;REV;
2; FRB; V2; SHL+1; OR; EXIT1;
P192; (General text fiel location routine);
(V0 is mask)
(V1=ident 1);
(V2=ident 2);
(OUT 20 - Parameters as follows
N1= out number
N2= Q-/LO/HI (644 word buffer)
V0/1= identifier
Exit nest empty.
Buffer containing
V0= D0-23 Disc address of index block
D24-47 Program address of entry - if found
D24-47 0 - if not found
V1= FOC library/FOC archive
V3= mask
V4-643= index block);
JS3P196; ERASE; JSP133; (Get param into Q7 - datumised);
J5P196; (Fail 60 if dud paras);
M7; I7; DUP; =M6; -; (Calc buffer size and leave address in M6);
SET643; NEV; J199.Z; (Fail if buffer is wrong size );
M0M6N; SET8; =C6; (The next bit gets a mask with 00 for - 77 elsewhere)
2; ZERO;SHLD6;SETB36;DC6;
MAX;SIGN;SHL-42;OR;
J2C6NZ; =E3M6;(Stores mask);
JS8P196; (Remove programs NZ);
JS1P139; (Await 2nd subprogram);
PMHQ7; (Lock out the buffer area);
M+I4; I4; =+C4; ZERO; JSP199; (Switch subprog and wait for disc );
V6P120; V10P45;
NEG; NOT; J98=; (Check that there is an index andleave its address in N1 );
DUP; =M6; M0M6; =Q6; =+M6; (M6 points to 1st entry);
I7; =M5;
M0M5N; M0M5; SHLD-30; ERASE; (Base ident preceded by B02);
E3M5; NOT; SHL-30; (Mask with B77 for B36);
DUPD; OR; PERM; NOT; AND; (N1 has B00 for B36 - N2 has B77);
*6; DUP; M0M60; -; J16<Z; J6C6NZS;
16; ERASE; M-I6; M0M6N; (1st possible block);
REV; J18C6Z; SET1; =+C6; (J if we must search to the bitter end);
*7; DUP; M0M6Q; -; J17<Z; J7C6NZS;
18; ZERO; J15; (Search to end because we may be in the last block);
17; J18C6Z; M0M6N; (Address of 1st block which cannot index this ident);
15; =E2M5; ERASE;=E20M4;
19; PMHQ7; (Lockout transfer area - esp 1st 4 words);
SET4; =+I7; (Set correct core addresses fro R87P120);
JS87P120; J99; (Read block from disk and fail if parity);
SET-4; =+I7; (Reset I7 to its correct value);
SET3; =I6; I7; =M6; (Q6 will be used to scan the index blobk);;
E2M6; E3M6; (Mask); M0M6N; M0M6; (Iden);
SET2; =+M6;
SET212; E2M6; SHL-32; -; DUP; =C6; J4<Z;
*11; E3M6Q;J5=;
1; J11C6NZS;
4; ERASE; ERASE; ERASE; (Dispose of mask and ident);
M0M7; (Next index block address);
(== 39 ==)
REV; J20=; (J if not found because we have tried all poss blocks);
DUP; =E20M4; (Keep address of next block);
SHL+16; SHL-32; J99.Z; (Fail if we are reading crud);
PMHQ7; ZERO; JSP199; (Await disc);
J19; (Loop to read the next block in the index);
98; (Failures caus not found);
20; ERASE;
99; M7; SET643; -; DUP; =I7; J30; (Get start of buffer without using I7);
5; PERM; DUPD; M0M6N; NEV; AND; PERM; REVD; J1.Z;
E2M6; SHL16; J1<Z; ×D; ERASE; ERASE;
M6;
30; I7;
31; DUP; =M6; -; M0M6; (Put rel core address in V0);
CLOQ7; (Make sure there is no lockout even on 1st 4 words);
E20M4; SHC-16; =M6M0H; (Put disc address in top half );
V6P120; NEG; NOT; =M7; M0M7; =M0M6N;
I4; SHC-14; V77P104M5; OR; =V77P104M5; (Leeds use bit 12);
J99P23; (Usual end to 2nd subprog);
199; (Fail invalid OUT20);
SETB420; JP2; (Fail no = 42 );
P193V2; (Input JO if appropriate);
V1=-1; (Foreground job marker);
(V2 time JO last called);
V0P105; J4P45.Z; (J if core slide waiting);
SETAV7P32; =Q6; M0M6; J9>Z; (J if no queued TINT T);
JS5P4; (Enter TINT routine to attempt prog input);
9; V26P101; J4P45<Z; (Dont load JO if operator does not want it);
SET17; V1; DUP; J7>Z; (J if foreground job);
8; ERASE; V0; J10=Z; (J if no JO req);
13; SET2048; JS1; EXIT1;
6; ZERO;=V0; V0P0; =V2;
V26P101; SHL2;J4P45<Z; (J if no JO mess);
SETB25257; SHL+30; JSP55; OR; I4; J4P6;
1; (Input prog into given store limit if available);
DUP; JSP117; J12P45; SHL-32; SIGN; J3P45>Z; (Exit if nogo);
2; (Input prog without store availability check);
JS18P52; J3P45; V0P52; NOT; J3P45.Z; (Exit if prog input in progress);
(Now OK to go);
JSP30; I7; SHL-5; JSP118; =V1P104M5;
I4; SHC-7; =V77P104M5; (Suppress FLEX output);
JS19P52; (Initiate input); EXIT2; (EXIT2 if prog initiated);
3; (Check for JO, exit if JO);
V41P104M5; V37P104M5;
4; (Ditto ident in N1,N2); SHLD-30; ERASE;
V17P254; (JO ident); NEV; J4P45=Z; EXIT2;
5; V49P104M5; V45P104M5; J4; (As 3 but during prog input);
7; V0P130; J8>Z; (J if there is already a foreground job running);
JSP117; J3P45; ERASE; JS2; EXIT1;
ZERO; NOT; =V1; SET73; SHC-8; =V77P104M5; (Set foreground);
J6; (To clear V0 and give monitor message);
10; (If time since last JO >4 mins then call JO);
V0P0; V2; -; SHL-32; J1P45=Z; J13;
11; (OUT11, transfer from absolute address, used by JO);
JS3P196; ERASE; JSP133; JSP196; JS1P139;
V45P104M5; SHL-32; =RM6; M7; I7; DUP; =RM7; -; NOT; NEG; =C6;
111; M0M6Q; =M0M7Q; J111C6NZ; J8P196; (Copy core and go);
(== 40 ==)
12; (OUT12, set up table in upper core store);
JSP117; J112; ERASE; JS2P196; ERASE; C7; REV; JSP133; J114;
V6P120; =RM6; I6=-1; M7; I7; -; NOT; NEG; DUP; =C7;
-; J112<Z; I7=-1;
113; M0M7Q; =M0M6Q; J113C7NZ; M6; NOT; NEG; SHL-5;
SHL+5; =V10P45; J8P196;
114; ERASE;
112; SETB410; JP2;
P194V2; (Manipulate PPI);
(V0 = hash function of current ident);
V1=P PPI*FULL;
(V2 stores ID2 for OUT S13);
ZERO; J6; (Find ident);
1; ZERO; NOT; J6; (Replace);
129; E20M4; J1=Z;
2; ZERO;ZERO; NOT; CONT; (Delete);
6; =E20M4; Q0TOQ7; I4; JS1P199; (Awiat FH access);
V49P104M5; V45P104M5; SHLD-30; ERASE;
DUP; SHL-36; SETB253; NEV; NEG; NOT; SHL-36; NOT; AND;
SET90; ÷I; REV;ERASE; (Compute hash function);
SHL+6; SETB600; +; DUP; =V0; (OK as only one subprog at one time);
5; I4; REV; JSP197; JS29; (Read sector from PPI);
SET13; =RC7; SET3; =I7; V45P104M5;
*15; V1P197M7Q; DUP; J4=Z; J16=;
17; J15C7NZS; (Look for first word match);
ERASE; V0P197; SHL+3; SHL-41; (Sector no);
NOT; NEG; SHL+6; SETB14000; J10.; ERASE; SETB600;
10; V0; J5.; ERASE; (PPI full);
V1; V24P0M5; SET2; JS4P6; JS2P199;
LINK; ERASE; J128; (Fails 64);
4; (Empty slot found); ERASE;
E20M4; NOT; J3.Z; (J if not replace);
Q7; =E20M4; JS14; JS29; E20M4; =Q7; (Insert new entry);
SET3; SHC-2; =E20M4; (Change to delete,with no mod check);
V45P104M5; (First word of ident);
3; V-1P197M7; J17.Z; ERASE; J2P199; (Not found);
14; V49P104M5; V81P104M5;
19; =V0P197M7; =V-1P197M7;
18; =V-2P197M7; I4; J1P197;
16; V-1P197M7; V49P104M5; E20M4; SHL1; J22>Z; (J if find or OUT 28);
NEV; SHL-6; SHC-12; SHL-12; J23; (Ignore mod butno wild -);
22; JSP137; (For find do NEV with wild -);
23; J17.Z; (fOUND);
V-1P197M7; =V2; (Keep ID2);
V0P197M7; (FOC); =V0; E20M4; DUP; NOT; J8=Z; ROUND; J200>Z;
(Delete); ZERO; V2P197M7; V3P197M7; JS19; JS29; (Set empty);
(Only set 1st wd .Z if more entries in same sector);
J101;
8; ERASE; JS14; JS29;
101; JS2P199; V0; EXIT2;
200; (Mark prog used); V0; SHL19;J101<Z; (Jif already);
I4; DUP; SHC-20; V0P197M7; OR; =V0P197M7;
JS1P197; JS29; J101;
27; (OUT27); ZERO;
127; =E20M4; JS11P196; =V45P104M5; JSP119;
128; SETB640; JP2;
SETB44; NEV; J128.Z; JS3P196; ERASE; =V49P104M5;
E20M4; J130.Z; JS3P196; ERASE; =V81P104M5; (F.O.C. of new pEOG);
130; Q0TOQ7; JS1P139; JS129; ZERO;DUMMY; DUMMY;
131; JS8P196;
(== 41 ==)
132; JS2P29; JS35P0; EXIT1;
28; (OUT28); ZERO; NOT; J127;
29; V30P101; SETB24650; SHL+30; SET2; J4P6;
P195V7; (Disc allocator OUT5);
V1=P ***DISCS;
V2=-1; (New disc availability marker);
V0=2; (Pointer for OUT26 = gives sector of last allocated block);
V7=B 00 03 77 43 00 00 00 00 ; (Check for OUT29);
53; ERASE; SETB530; JP2;
(The next bits are the various parts of OUT44,
which is attached with OUT26, - see below);
*211; V1P197M7Q; J212=Z;
213; J21C7NZS; J244; (Go back to OUT26 path);
212; (Spare logical disc found look for more);
V45P104M5; =RC6; M7TOQ6;
*214; V0P197M6Q; J213.Z; J214C6NZS;
(Note: this may go off end of buffer in P197,
but will stop because coding is non-zero);
(Users area now found);
SET401; ×D; CONT; M7; ×; SET81; ×; SHL+16;
V45P104M5; DUP; =C7; OR; STR; ERASE;
(I field = address of user area, M= no discs);
V77P104M5; OR; =V77P104M5;
*215; ZERO; NOT; =V0P197M7Q; *J215C7NZS;
JS8P196; J162; (Remove progs N2 and clear up);
44; (OUT44, claim userdiscs 29/1/70);
JS3P196; NEG; NOT; SHL-4; J53.Z;
ZERO; NOT;CONT; V77P104M5; SHL+16; J226=Z;
ERASE; SETB540; JP2; (Fail OUT44 obeyed twice);
45;(OUT45, deallocate user disc);
V77P104M5; DUP; SHL-32; SHL+32; =V77P104M5;
DUP; SHL+8; J15P3<Z; (Check no OUT40 on);
SHL+16; DUP; J242=Z;
ZERO; SHLD+16; SET40; ÷I;
=RM7; NOT; NEG; NOT; NEG;=E20M4; SHL-32; =C7; Q7; =V45P104M5;
ZERO; JS1P199; (Await fixed head access);
J25; V45P104M5; =Q7;
145; ZERO; =V1P197M7Q; J145C7NZ;
I4; JS161; ZERO;
242; ERASE; V25P104M5; SHC-2; J91P15<Z; (If from P151);
(Let OUT24 clear up nest);
24; (Claim system discs); (OUT 24);
SETB510; JS3P29; JP2; JS3P29; JP2; J1P45;
26; (OUT 26, new version with bi disc 22/10/65);
(The position of a bit in the ASL is given by
6×(D×N×P)×H , where D is disc no
N is no of system discs
P is position
H is head no);
ZERO;
(== 42 ==)
226; DUP; =V45P104M5; (Side entry for OUT44);
Q7; =V19P0; (Reset EDT);
DUP; SHL+3; NOT; AND;J5P3>Z; (Check no OUT40 on);
Q0TOQ7; JS1P139; (Await 2nd subprog);
17;
ZERO; JS1P199; (Await fixed head access);
V0; (Start on same sector as last allocated block, OUT29 resets);
10; =E20M4; JS5; (Read ASL sector);
E20M4; DUP; NEG; NOT; SHL-2; SHL+5;
DUP; V45P104M5; NOT; SHL-42; AND; SHL-3; OR;
SET40; REV; -; =RC7; (Set up loop);
(Keeps 2 cylinders for user discs);
V45P104M5; J211<Z; (J if OUT44);
*11; V1P197M7Q; NOT; J12.Z; (J if free block);
J11C7NZS; (Sector full when C7 zero);
244; NOT; NEG; (Sector := sector+1);
SET6; J10.; (×Goto next sector ×if sector ×ne 6);
13; ERASE; (ASL full);
JS2P199; (Release fix H);
V1; V0P20; V24P0M5; SET3; JS4P6;
ZERO; ZERO; ZERO; NOT; CONT; ZERO;
JS2P10; ERASE; ERASE; J17; (Look every TINT H);
12; =V0; (Vacant block found);
M-I7; ZERO; V1P197M7; DUP; PERM; NOT; SHAD-1; STR; ERASE;
ZERO; FLOATD; FIX; NEG;DUP; NOT; =C7; SET6; ÷I; (Head no in N1);
SHL+36; =Q6; E30M4; NEG; NOT; NEG; NOT; SET40; ×D; CONT;
M7; ×; SHL+3; +; SET16; ÷I; (Disc no in N1);
SHL+6; =M6; DUP; =+M6; (Position);
SHL-6; PERM; ERASE; ERASE; J13.Z; (J if ASL full);
Q6; SHL+6; JS131P194; (Replace out no by NOC in prog×us nest);
I4; SHCC7; OR; =V1P197M7; (Set bit in ASL);
162; ZERO;
161; E20M4; J163=Z; (J if no sector has been read);
JS2P197; JS29P194; (Write back sector);
163; J2P199; (Deallocate FH and finish out);
5; (Read ASL sector and do sum check);
I4; E20M4; SHL+6; JSP197; JS29P194;
22; E20M4; =M7; V1M7; JS4P197; J4P45=Z;
SETB103473; SHL+32; V24P0M5; SET2; JS4P6; (Type ASL on FLEX);
I4; E20M4; SHL+6; JS3P197; JS29P194; J22;
15; SETB620;JP2; (Incorrect OUT29 buffer);
29; (OUT29, delete ASL bits);
JS11P196; ERASE; JSP133; J15; (CHECK PARAMTERS);
SET2; =V0; (Reset OUT26 pointer);
C0TOQ7; JS1P139; (Await 2nd subprog);
JS8P196; (Remove program×us N2);
ZERO; JS1P199; (Await FH);
V45P104M5; DUP;SHL-15; =RM6; DUP; SHL-16;
-; NOT; NEG; SHL1; =C6; (Q6=N/1/ADD×2);
Q0TOQ7; JSP128; (M7 = BA); ZERO; =E20M4; (Set first);
16; M7M6QH; DUP; V7; AND; J255.Z; DUP; J161=Z; ZERO; SHLD+4; (Disc)
REV; ZERO; SHLD+6; (Position);
SHL+4; (Multiply by number of S-discs - i.e. 16);
CAB; ×; SET6; ×D; CONT; REV; SHL+9; SHL-45; +; (Bit pos in N1);
SET1920; ÷I; Q7; CAB; SET2; ×; (Sector);
E20M4; J14=;(J if same as last time);
E20M4; REV; =E20M4; PERM; =E11M4;
(BA in SHUP of ZSP gets updated by P105);
=E21M4; Q6; =V4P104M5; J160=Z; (J if forst time);
ZERO; JS2P197; JS29P194; (Write back current sector);
160; JS5; (Read new sector);
V45P104M5; =Q6; E21M4; E11M4; ZERO;
14; ERASE; REV; SET48; ÷I; NOT; =C7; =M7; (Address of word in sector);
(== 43 ==);
V1P197M7;; I4; NOT; SHCC7; AND;=V1P197M47;
=Q7; J16C6NZ; J162;
37; (OUT37);
JS3P196; SHL-24; SET2112; (NOL on global);
-; DUP; J100P196>Z; NEG; (Max NOL in N1);
SHLD+24; DUP; =M7; (Required BA);
MAX;ERASE; M7; OR; SHC-24; (Actual BA/NOL);
=V85P104M5; VR; J147P196; (Reset EDT and erase N1);
40; (OUT40, inhibit other levels from disc);
JS3P196;JS8P196;ERASE; SHL-47; =Q7; JS1P139; Q7;J140=Z;
V77P104M5; SHL+8; JP45<Z; (Exit if already done);
ZERO; JSP199;
(Wait in disc queue so that any other OUT40 is cleared);
V77P104M5; SHC+8; ZERO; NOT; CONT;
V1P199; SHL+6; SHL-6; ZERO; NOT; CONT; J141; (Suspend Q);;
142; (Side entry used by P15 AND TINT 10);
V77P104M5; SHC+8; STR;J1P45=Z;
V1P199; SHL+6; C4; SHLD-6; NOT; =V19P0; (Release Q, sET EDT);
JS141;(Put everything away where it belongs);
143; SET-4; JS5P199; EXIT1; J143; EXIT1; (Wait till all is quiet);
140; JS142; EXIT1; (This JS is needed to keep SJNS OK for P10);
141; =V1P199; SHC-8; =V77P104M5; EXIT1;
(Enter P199 to enable next subprog if inhibit cleared);
255; ERASE; (Fail in OUT29); E20M4; J254=Z; JS2P197; JS2P194;
254; JS2P199; SETB470; JP2;
P196; (Disc transfer OUTS);
101; ZERO; SHLD+45; SHL+6; OR; SHC+9; EXIT1;
11; (Check no OUT40 on); V77P104M5; SHL+8; J129<Z;
2; (Check for systems prog); V77P104M5; DUP; SHL+5; OR; J129>Z;
3; (Reset EDT); Q7; =V19P0;
(Check nest); JSP62; J128; EXIT1;
128; SETB510; J4;
129; SETB10;
4; LINK; ERASE; JP2;
5; SETB600; JP2;
7; ×D;
17; =LINK; ERASE; (Spare item in SJNS is removed later on);
6; SETB560; J4;
9; ERASE; SETB550; JP2;
21; (OUT21);
31; (OUT 31); ZERO; NOT; J127;
22; (OUT 22); ZERO;
127; =V49P104M5; JS2;
132; ERASE; V73P104M5; STR; ERASE;
130; =E20M4; JSP133; J5; C0TOQ7; JSP102; JS1P139;
V45P104M5; SHL-32; SETB17700; AND;
E20M4; V49P104M5; JP198;
100; ERASE; ERASE; SETB650; JP2; (Invalid global address);
23; (OUT23); JS2; ERASE; JS126;
147; Q7; =V19P0;
8; JS3P29; JS35P0; EXIT1;
126; JS10;
=V73P104M5; EXIT1;
10; ZERO; SHLD+4; JS101;
REV; SHL-42; SHL+9; OR;
EXIT1;
30; (OUT30); SET1;=V49P104M5; JS3; ERASE; ZERO; J130;
32; (OUT32); JS3; ERASE; JS126; ZERO; =V49P104M5; JS3; J132;
(== 44 ==);
41; (OUT41, write to user disc); JS3; ZERO; NOT; J142;
42; (OUT42, ditto but read); JS3; ZERO;
142; =V49P104M5; SHL-32; DUP;
V77P104M5; SHL+16; DUP; SHL+1; +; ZERO; SHLD-16;
SHL+8; J236; (Changes disc to sector no);
143; SET96; ÷I; =I7;
SET16; ÷I; REV;
SHL+9; REV; JS10; OR; REV; SHL+10; I7; SHLD-10;
ERASE; REV; J130;
47; (OUT47); JS147; Q0TOQ7; JS1P139;
V77P104M5; SHC+2; DUP; J1P45>Z; STR; ERASE; SHC-2; =V77P104M5;
247; V1P104M5; DUP; SHC+1; J1P45<Z; SHC-2; =V1P104M5;EXIT1;
33; (OUT33); JS3; ZERO; NOT;
136; =V49P104M5; SHL-32; DUP; V85P104M5;
DUP; J70=Z; (Set TR if red box job does OUT34);
ZERO; SHLD+24; SET768; +; (Add on global disc BA);
236; CAB; +; PERM;
SHL-24; SIGN; J100>Z; (Check disc address not too big);
138; J143;
34; (OUT34); JS3; ZERO; J136;
36; (OUT36); JS3; SHL-32; SET768; +; ZERO;
234; =V49P104M5; J143;
70; +D; ERASE; ERASE; JS8; J247;
P197V41; (Transfer fixed head sector);
(N1=sector, N2=SJNS count);
V0=QB16/AV1/AV40;
V18; (Max number of system discs allowed,
the only chnages necessary to increase this are in this routine);
100; DUP; V0; SHL-32; NEV; SETB17700; AND; J4P56=Z;
(Does EXIT2 if sector already present);
3; V0; =Q7; SETB100016; OR; =C7;
Q7; =V0;
NOT; NEG; (Add 1 to SJNS count); DUP; =V41; JSP199;
11; V0; SHL-32;=C7; JS14P199;
PICQ7; JS6P199; EXIT1; J11; EXIT2;
5; ZERO;
4; (Form sum check);
SET40; =RC7;
*10; V1M7Q; DUMMY; DUMMY; NEV; J10C7NZS; EXIT1;
2; (Write ASL sector);
JS5; V0; SHL+3; SHL-41; =M7; =V1P195M7;
*1; (Write to disc); NOT; NEG; DUP; =V41; Q0TOQ7; JSP199;
12; V0; =Q7; JS14P199; (Check on disc Q);
POCQ7; JS6P199; EXIT1; J12; EXIT2;
P198; (Transfer to disc);
(N1= -1 write, 0 read, +1 FH read, N2=posn. N3=sector);
SHLD+16; SHL+16; OR; OR; DUP; =Q6; DUP; =E21M4; =E20M4;
(== 45 ==);
1; SETB14000; M6; -; SET40; SHC-7; ×; I7; +; M7; SIGN; J10<Z;
V77P104M5; SHC2; STR; ERASE; SHC-2; =V77P104M5; (Clear parity);
C6; ABS; SHL-1; J9.Z;
JS8P196; M+I4; I4; =+C4; (Erase progs N2, switch subprog);
PMHQ7; (Set LO to preserve area);
9; ZERO; JSP199; (Wait in queue);
12; E20M4; DUP; SHC+16; =Q6; SETB16; OR; =C7;
M6; DUP; NEG; NOT; J4=Z; JS4P199; DUP; J2=Z;
DUP; SETAR15P15; NEV; SHL32; J15=Z;
POAQ7; NOT; J3=Z; (Checks for read in P15);
16; ZERO; JS5P199; J14; J12;
14; E20M4; SHC+16; =LINK; EXIT1;
4; JS14P199; PICQ7; J13;
2; PIAQ7;
13; ERASE;
3; ZERO; JS5P199; J99P23; J12; J99P23;
15; ERASE; PIAQ7; J16;
10; SETB500; JP2;
P199V3; (Share out disc);
V0=-1; (FH Q);
V1=-1; (Disc Q);
(V2 last seek address);
(V3 last read address);
(Await disc); Q0TOQ6;
V1; DUP; DUP; SHL+1; AND;(-ve if Q empty);
V77P104M5; SHL+8; (-ve if Q suspended by this level);
OR; (-ve if OK to go ahead with transfer);
J11>Z; C4; SHLD+42; =V1; J3P45;
11; DUP; V23P0; SHL+1; AND; ZERO;
FLOAT; FIX; =C7; ERASE; C4; NOT;
SHL+42; NOT; SHCC7; AND; =V1M6;
SETB100000; =C7; NOT; NEG; JS3P10;
EXIT1;
1; (Await access to fixed heads);
I4; SHC-3;V29P104M5; OR; =V29P104M5;
ZERO; NOT; =Q6;
V0;
V0P197; DUP; ZERO; NOT; CONT; =V0P197;
J11<Z; J3P45;
2; (Release fixed heads);
V29P104M5; SHL+3; SHL-3; =V29104M5;
ZERO; NOT; =Q6;
V0; DUP; J13>Z; ERASE; V0P197;
STR; ERASE; =V0P197; EXIT1;
3; (Allow disc access if free, entered every EDT);
V1; DUP; =TR; SETB16; =C7; BUSYQ7; J1P45TR; Q0TOQ6;
DUP; SHL-43; NEG; NOT; =M5;
PARQ7; J16NTR; V77P104M5; SHL2;J21>Z;
V2; DUP; NOT;J71=Z; V3;SHL3; ZERO; SHLD3; JS72;
SHL24; REV; SHL-44; JS72; OR; SHL6; REV; DUP; ZERO; SHAD6; JS72;
PERM; SHL-44; REV; SHL-47; SHL3; OR; JS72; SHL24; OR; SHL6; J73;
71; ERASE; V3; SHL3; SHL-41; JS72; SETB100465; SHL9; SHC24;
73; V30P101; SETB4407; SHC-12; NEV; V24P0M5; SET4; JS4P6;
21; SET1; SHL+44; V77P104M5; OR; DUP; =V77P104M5; SHL+2; J18>Z; ( SET; -> SET1; ???? )
16; JS13; (Clear HU for completed transfer);
19; V1; DUP; J1P45<Z;
(== 46 ==);
18; SHL-42; =M7; J15;
13; NOT; ZERO; NOT; SHLD+6; NOT; =M7; NOT; =V1M6;
15; V11P11M7; STR; J35P0=Z; DUP; =V11P11M7; =Q7; CLOQ7; EXIT1;
6; V41P197;
5; (Wait for transfer and check parity);
(EXIT1 fail second time, EXIT2 try again, EXIT3 OK);
NOT; NEG; SETB100000; =C7; JS3P10;
V25P04M5; J20.Z; M5; =V14P0; (Resume obj prog after disc trans);
20; V77P104M5; SHC+3; STR; DUP; J17<Z; (J if parity);
ERASE; SHL-1; SHC-2; =V77P104M5; EXIT3; (No parity, clear D2);
17; NEG; DUPD; OR; SHC-3; =V77P104M5; (Set D2, clear D3);
ERASE; SHC-1; J1P127>Z; (EXIT2 if fist parity);
EXIT1;
4;
SETB16; =+C6; BUSYQ6; J35P0TR; PMAQ6; Q6;
24; =V2;Q7; =V3; EXIT1;
14; BUSYQ7; J35P0TR; ZERO; NOT; J24; (FH);
72; SETB1212; REV;FRB; SETB2020; OR; EXIT1;
P2939V0;
(OUT13);
V0; SET99; J14=;
13; DUP; =V0P1; NOT; NEG; =V0; EXIT1;
14; ERASE; ZERO; J13;
52; (OUT52); ERASE; V1P1; =V101P104M5;
V2P1; =V109P104M5;
V3P1; =V113P104M5;
V9P104M5; V5P104M5; SHA-24;
SHLD+24; NOT; NEG; =V105P104M5; ERASE; EXIT1;
53; (OUT53); ERASE; J51; SHA-24; REV;SHA-24; REV;
V0P1; J2P64<Z; ZERO; =V105P104M5; JSP64;
1; V105P104M5; NEG; NOT; ZERO; SHLD+24;
SHL+24; REV; V9P104M5; REV; -; REV;
V5P104M5; REV; -; DUP; CAB; +; EXIT1;
54; (OUT 54); ERASE;
V1P1; DUP; NOT; J2=Z; =V101P104M5;
V2P1; =V109P104M5; V3P1; SHL-6; SHL6;
SETB02; OR; =V113P104M5; ZERO;
2; NOT; =V105P104M5; EXIT1;
(End of DIRECTOR proper the rest is overwritten
after initial input);
P200V45; (Initial routine on reading in Director.
read and type unit list,ask for machine
size,A-prog details,date and time);
V0=B0207645155450063;
V1=B5041625156470044;
V2=B5162454364576200;
V3=B20202020006744;
V4=B6375/11;
V5=B2020172020172020;
V6=B0207647160456334;
V9=B0207636457624147;
V10=B4577777777777734;
V12=B0207074357624500;
V13=B5557446554456334;
(== 47 ==);
V15=B0207070744416445;
V16=B441755177134;
V19=B7473575675735756;
V20=B1212011212011212;
V21=B0207076451554500;
V22=B5756002224365057;
V23=B6562004354574353;
V24=B0207070707505765;
V25=B6263175551566334;
V27=B0207413660625747;
V28=B6241550044456441;
V29=B51546375/23;
V30=B0207544566455463;
V31=32768;
V34=Q1/AY1/AY31;
V35=B3770037700177400;
V36=B776/8;
V39=B0207464151540277;
V40=B6520200002072020;
V41=-1; (Silent marker);
V42=P ENGS,[EM];
V43/44=P [C]QN-LINE*M/C[3QQ];
(V45 Reply);
K4; ERASE;
SETAP104; SETAV1P104; DUP; =M6;
-; SHL-2;=C6; SET4;=I6; Q6; =V1P105;
SETAV31; SHL-5; SHL+5; DUP; =V0P117;
DUP; V31;REV;-; SHL-2; JS200; (Set up number user words);
V0P9; REV; FRB; V3; OR; =V3;
SETAV0; =RI5; SETAV4; =M5; JSP201;
SET2; =Q5; MANUALQ5; SET4; =C5; MANUALQ5; (Hoot on or goodbye);
V39; =Y0;
100; V34;=Q5; PIBQ5;
101; K4; ERASE; BUSYQ5; J101TR;
PARQ5; J104NTR;
102; SETAY0; =RI5; SETAY31; =M5; JSP201;
103; K4; ERASE; J103;
105; J106<Z; J100;
104; SETAY1; =Q6; JSP32; J105; =C7;
V36; V35; SHLDC7; REV; ERASE;
J102>Z; V40; C7; SHLD-3; SHL+3;
OR; SHC+21; =V37;
107; JSP32; J108; =C7; ZERO; NOT;
109; =V38; C7;SHL+4; J102.Z; SET7;
V37; C7; SHLD-3; SHL+3; OR; SHC+9;
C7; =M7; DUP; =V0P26M7; SHL+17;
J110<Z; ERASE; SET1;
110; C7; SIGN; J102>Z; V38; J107.Z; J100;
108; DUP; =C7; J100<Z; ZERO;J109;
106; JSP206;
2; SETAV12; =RI5; SETAV14; =M5; JSP202;
J2; V14; DUP; V42; NEV; DUP; =V42; J70=Z;
SHL-36; SETB3775; NEV; DUP; =V41; J60=Z;
SETAV14; =Q6; JSP204; J2<Z;
61; DUP; SHL+12; =V10P45; NEG; NOT;
SHL-3; J2.Z; ZERO; =V0;
JSP209; (Obtain disc device/unit no);
JSP208; (Obtain OUT 8 reel no)
V42; J16=Z;
15; SETAV43; =RI5; SETAV45; =M5; JSP202; J15;
V45; SHL-42; SETB71; NEV; J16.Z;
(If on line then set D0 V29P0); ZERO; ZERO; NOT; CONT; JS200;
16; ZERO;
(== 48 ==);
9; ERASE;
10; SETAV15; =RI5; SETAV18; =M5; JSP202;
J10; SETAV17; =Q6; JSP204; J9;
DUP; J9=Z; =I5; JSP204; J9;
DUP; =C5; SET13; SIGN; J10>Z;
J10C5Z; JSP204; J9; DUP; SET100;
SIGN; J9>Z; DUP; SET64; SIGN;
J9<Z; DUP; =M5; V19; REV;
SHL+46; J11.Z; SHC+24;
11; SHCC5; SHCC5; SHL-46; SET26; +;
I5; SIGN; J10<Z; I5; SET100;
×D; ERASE; C5; +; SET100;
×D; ERASE; M5; ×; V20;
REV; FRB; +; =V3P120; V42; J13=Z; JSP210; J10;
ZERO;
12; ERASE;
13; SETAV24;
14; =RI5; SETAV26; =M5; JSP202; J13;
SETAV26; =Q6; JSP204; J12; DUP;
SET24; SIGN; J12>Z; SET3600; ×D;
ERASE; =Q5; JSP204; J12; DUP;
SET60; SIGN; J12>Z; SET60; ×D;
ERASE; Q5; +; SHL+24; =V0P0;
V0P0; =V2P193; (Dont start JO immediately);
E2; SHL-24; SHL+12; SETAV3P101; OR; SHL+12; SETAV0P104; OR;
=E2; (Set up word 2 for OUT 11);
J23P0; (Enter Director PROPER);
70; ERASE; ZERO;=V41;
60; SET8; J61;
200; V29P0; OR; =V29P0; EXIT1;
P201; (Type message);
1; K4; ERASE; BUSYQ5; J1TR; POBQ5; EXIT1;
P202; (Type query direct);
JSP201; M5; I5; DUP; NOT;
NEG; =RM5; -;
1; K4; ERASE; BUSYQ5; J1TR;
PARQ5; =C5; J6TR;
2; SET8; J3C5NZ; =TR;
6; EXIT1;
3; =C6; M0M5Q;
4; ZERO; SHLD+6; SETB75; J5=; DC6;
SETB37; SIGN; SHC-1; NOT; =TR;
J4C6NZ; ERASE; J2;
5; ERASE; ERASE; J6NTR; EXIT2;
P204; (Fetch decimal number);
SETB77740; J1P32;
P206; (Read prog.1st);
V34P200; =Q5; SET16; =RC6;
1; PIBQ5;
2; K4; ERASE; BUSYQ5; J2TR;
PARQ5; J102P200TR; Y2; Y1; DUP; JSP119;
J102P200; J102P200; SHL+47; PERM;
SHLD-30; ERASE; OR; =V0P254M6Q;
J1C6NZ; EXIT1;
(== 49 ==);
P208V9; (OUT8,COPLOT,STREAM,COUNT);
V0/1=P ×GCN]OUT*8*REEL*NO.QQ];
V3/4=P [CNN]STREAM*COUNT[Q];
V6/8=P [C8N]COPLOT*REEL*NO[Q];
V41P200; J3=Z;
SETAV0; =RI5; SETAV2; =M5;
JSP202; JP208;
SETAV2; =Q6; JSP204; JP208<Z;
=V0P161; (OUT8 reel no);
C7; SETB40; ×; SET1000; ×D;
REV; =V3P161; JP208<Z;
2; SETAV6; =RI5; SETAV9; =M5;
JSP202; J2; SETAV9; =M5;
JSP204; J2<Z; =V0P2939;
1; SETAV3; =RI5; SETAV5; =M5; JSP202; J1;
SETAV5; =Q6; JSP204; J1<Z; DUP; =V-1P155;
=V4P155; EXIT1;
3; ZERO; =V0P161; SET1000; =V3P161;
ZERO; =V0P2939; V42P2000; J4=Z; ZERO;
5; DUP; =V-1P155; =V4P155; EXIT1;
4; SET9999; ZERO; NOT; =V26P101; J5;
P209V21; (Temporary disc set-up);
V0=QB16/AY3840/AY7679;
V1=QB616/AY32/AY3631;
V2=Q90/40/AY32;
V3=Q13/3/0;
V4=QB616/AY3840/AY7439;
V5=Q0/AV6/AV7;
V6=P [CN]PRIME[Q];
V8=Q1/AY32/AY39;
V9=P[CCN]NO-GO;
V10=P[CN]PARITY;
V11=QB216/AY3840/AY3999;
V12=P *IDRP[EM];
V13=Q1/AY32/AY32;
V14/16=P [NC] DISC * MUST *BE * PRIMED [EM];
V17=Q 0/AV14/AV16;
(V18=Disc prime marker);
V19=Q B16/AV19/AV19;
V20=Q 10/4/AY5200;
(V21 Zero if prime Y, -1 if prime X, +1 if prime N);
SETB16; =RC4; PMAQ4;
(Read IDRP and store on disc);
V8;=Q5; SETB16; =C5; PICQ5; JS12;J100; V19;
=Q15; PMAQ15; PIAQ15;JS12; J100; V19; SHL16;
SHL-32; SET3; NEV; V6;
Y38; NEV; OR; J60=Z; V17; =Q5; JSP201; ZERO; NOT; =V18;
V42P200; J103P200=Z; (Stop if engs and disc nogo);
60; V12; =Y1;
V8; =Q5; PIBQ5; JS12; DUMMY; DUMMY; DUMMY; PIAQ5;
JS12; J100;Y34; SHL-30; SETB70260; NEV;
Y39; SHL-5; SETB40000; NEV; V6; =Y38;
OR; J102P200.Z; Y39; =Q5; Y34; SHL+18; SETB70244; SHLD-18;
ERASE; =Y34;
V13; =+Q5; PIAQ5; SETAY32; =I5; JS12; J100;
SETB16; =C5; POCQ5; JS12; JS100;
111; SET3840; =RC4;
*10; ZERO; =Y3840M4Q; *J10C4NZS; (Clear new PPI);
ZERO; =V21; (Show prime Y); V41P200; J61=Z;
(== 50==);
V5; =Q5; JSP202; J11;
SETAV7; =Q6; JSP31; J11; J11; J11; C7;
SETB70; J120=; (J if prime X);
SETB71; J20=; ( J if prime);
SETB56; NEV; J11.Z; (J if not N);
63; SET1; =V21; (Show prime N); V1; =Q5; PICQ5; (Read PPI);
JS12; JS100; JSP298;
JS7; JS12; JS100; (Write back new PPI);
(Form ASL sum checks);
V11; =Q5; PICQ5; JS12; JS100; (Read ASL from disc);
150; SET4; =RC6;
SET768; =Y3970; (No of sectors in logical user disc);
ZERO; =RC7;
102; SET40; =C7; ZERO;
*101; Y3840M7Q; *NEV; J101C7NZS; =V3P195M6Q; J102C6NZ;
V11; =Q5; POCQ5; JS12; JS100; (Write back ASL);
(Claim global disc and write empty job Q);
SETB100016;=RC5; PMAQ5;V21;J69>Z; (j IF PRIME n);
(Select track 0 of global);
SET3840; =RC4;
*51; ZERO; NOT; =Y3840M4Q; *J51C4NZS;
68; V0; =Q5; POAQ5; JS12; JS100; EXIT1;
69; (Clear any jobs which were going on when Director put in);
V0; =Q5; PIAQ5; JS12; J100; V20; =Q15;
*64; M0M15Q; NOT; J65.Z;
67; J64C15NZS; J68;
65; M-I15; M0M15N; SHL-24; SET40; ×D; CONT;
=RM14; SET39; =C14; ZERO; NOT; DUP; =Y3840M14Q;
*66; ZERO; =Y3840M14Q; *J66C14NZS; DUP; =Y3840M14; DUP;
=M0M15; DUP; =M0M15N; DUP; =E2M15; =E3M15; M+I15; J67;
61; V18; J62.Z;J63;
120; ZERO;NOT; =V21; (Show primed and mode X);
20; (Prime); ERASE;
62; JS7; (Write empty PPI); JS12; J100;
V21; DUP; =V0P76; (Set primed or not if Y or X);
ZERO; NOT; SHL32;=Y3968; SETB13200; =Y3969;
ZERO; NOT; DUP; =Y3841; DUP; =Y3842; SHL12; =Y3843;
J150=Z; (J if prime Y); SET128; =RC5;
(For mode X set ASL all ones);
236; ZERO; NOT; =Y3840M50; J236C5NZ;
(ASL set up for prime X); J150;
7; V4; =Q5; POCQ5; EXIT1; (Write back new PPI and exit);
11; SETAV9; =RI5;M+I5; JSP201; J111;
12; K4; ERASE; BUSYQ5; J12TR; PARQ5; J4P45TR; EXIT2;
100; SETAV10; DUP; =R15; =R5; JSP201; J103P200;
P210V14; (Compute day of week);
V0=B 03 36 14 62 50 35;
V1/2=P SUNDAY[DQ];
V3/4=P MONDAY[DQ];
V5/6=P TUESDAY[Q];
V7/8=P WDNSDAY[Q];
V9/10=P THRSDAY[Q]
V11/12=P FRIDAY[DQ];
V13/14=P SATDAY[DQ];
M5; DUP; NOT; NEG; REV; NEG; NOT; SHL-2;
+; SET12; C5; -; SET-3; ×D; CONT; =C15;
V0; SHLC15; SETB7; AND; ×; C5; SET2; -;
(== 51 ==);
J1<Z; M5; SET3; AND; J1.Z; NOT; NEG;
1; I5; NEG; NOT; ×; SET7; ÷I; REV; ERASE; DUP; JS200P200;
SHL1; SETAV1; ×; DUP; =RI15; NOT; NEG; =M15;
2; Q15TOQ5; JSP202; J2; M0M15; SHL-42; SETB71;
NEV; J4P45.Z; EXIT2;
P297V0; (Simulate PPI in core);
V0=40/6;
SET1; =+Q1;
DUP; V0P197; SHL+16; OR; SETB16; OR; SHC-16; =V0P197;
JS2;
*11; Y3600M15Q; =V1P197M7Q; J11C7NZS; EXIT2;
1; V0P197; SHL-32; JS2;
*12; V1P197M7Q; =Y3600M15Q; J12C7NZS; EXIT2;
2; SHL-6; DUP; SHL+2; +; SHL+3; =RM15; SET40; =RC7; ERASE; EXIT1;
P298V5; (Optimise PPI);
V0=Q90/40/AY32;
V1=Q2/1/AV3P11;
V2=B07024402454456;
V3=B0702440253;
V4=Q13/3/0;
V5=B 07 02 44 02 45 44 56 22;
Q0TOQ14;
R100P197; =Q10; R1P197; =Q11;
R9; =R100P197; R10; =R1P197; (Bus FH handler);
Q0TOQ5; V1; =Q4; (Play at level 0);
V0; =Q8;
2; V4; =Q9;
3; M8M9; V5; J5=; SHL-6; V2; J4=; (J if EDN but not CON2);
SHL-12; V3; J5.; (J if not K prog);
4; JS60;
5; ERASE; J3C8NZ;
M+I8; DC8; J2C6NZ;
V4; =Q8;
6; V0; =Q9; (Put rest in PPI, 1 from each sector in turn);
7; M8M9Q; J8=Z; JS60;
8; J7C9NZ;
M+I8; DC8; J6C8NZ;
Q10; =R100P197; Q11; =R1P197; EXIT1;
*9; JP297;
*10; J1P297;
60; M-I9; M9; NOT; NEG; =RM3;
K4; ERASE; (Keep clock happy - this bit takes 6 secs);
SET1; =+Q14;
M8M3N; =V81P104; M8M9N; =V49P104; M8M9; =V45P104;
ZERO; =M8M9; (Mark as gone); M+I9;
JS1P194; EXIT1; (Wierd if same in twice);
ERASE; V49P104; V45P104; SHLD+16; SET2; J4P6;
(Put ident of duplicated prog in FLEXqueue);
FINISH;