comment A1 -- DH's versions;
comment A1 now has crude inbasicsymbol;
procedure open(dv); value dv; integer dv;
kdf9 2/1/1/0;
{dv}; JSP293; exit
P293V40; ( Open );
V0 = Q 0/AV1/AV40; (+ V-stores are paper tape input buffer );
SET20; NEV; J1=Z; EXIT1; (+ interim version only devs 20 and 30 allowed );
1; V0; =Q15; SET2; SET5; OUT; =C15; (+ Max amount of data is 320 chars );
Q15; =V0;
2; PREQ15; PARQ15;
I15; =RM15; SET-48; =C15; Q15; =V0P295;
EXIT1;
P295V9; ( General Character and Basic Symbol Handling );
V3 = 0; (+ shift indicator );
V4 = B 000 00 230 645 07 246; (blank, pound, semicolon, !=, star, comma 000 012 230 322 216 246);
V5 = B 000 05 230 603 50 413; (blank, subten, semicolon, +, -, dot 000 012 230 301 321 013);
V6 = -1; ( retained basic symbol );
V7 = Q B134601 / B104631 / B101302; ( colon, uparrow, lhsq, rhsq, lt, gt );
V8 = Q B121261 / B110604 / B112000; ( =, times, idiv, bra, ket, 000 );
V9 = Q B106616 / B111235 / B131000; (C15 = 0 for LH-quote, 1 for star, 2 for <=, 3 for RH-quote, 4 for >= );
10; V6; REV; =V6; J91<Z; (+ retain basic symbol );
SET10; SET5; J109P299; (+ error if used twice );
4; (+ initialise basic symbol fetch );
3; (+ initialise character fetch );
ERASE; (+ assume dv = 20 );
V0; DUP; JP299=Z;
=Q13; EXIT1;
94; V0P293; =Q15; JS2P293; V0; =Q13;
5; J52C13NZ; (+ fetch character );
SETAV40P293; M13; -; J94=Z; ( end of buffer );
M+I13; SET-48; =C13; ( move to next word );
52; SET6; =+C13; M0M13; SHLC13; SETB77; AND;
91; EXIT1;
8; (+ freeze basic symbol fetch );
7; (+ freeze character fetch );
Q13; =V0; EXIT1;
85; =V3; ( store shift char and fetch another symbol );
6; (+ fetch basic symbol - only letters and digits + a few others );
V6; ZERO; NOT; =V6; DUP; J92>=Z; ERASE;
JS5; DUP; SHL-5; J86=Z; SETB25; -; SET26; V3; AND; +; EXIT2; ( letter );
86; DUP; J87#Z; ERASE; SETB236; EXIT2;
87; DUP; NOT; NEG; SHL-4; J88=Z; ( J if not / or digit etc );
DUP; SETB32; -; DUP; SHL+3; =C15; J89<Z; ( J if / or digit );
ERASE; J70C15Z; ( J if underline );
V3; =M15; ( shift indicator );
V5M15; SHLC15; SHL-40; DUP; J96=Z; EXIT2; ( chars beyond digits );
89; V3; J93#Z; SETB20; -; DUP; J92>=Z; ( j IF digit );
ERASE; SETB241; ( SLASH );
92; EXIT2;
93: ( shifted digit );
ERASE; V8; V7; SHLDC15; ERASE; SETB377; AND; EXIT2;
88; SHC-1; DUP; NEG; NOT; J84#Z; ERASE; SETB240; EXIT2; (carriage return);
84; STR; NOT; REV; SET3; NEV; J85=Z; ( SHIFT CHAR );
71: NC15; ERASE; (C15 = 0 for LH-quote, 1 for star, 2 for <=, 3 for RH-quote, 4 for >= );
C15; SHL+3; =C15; V9; SHLC15; SHL-40; EXIT2;
70; JS6; J96; C0TOQ15;
SETB211; J71=; DC15; DUP; J71=Z; DC15; SETB202; J71=;
DC15; SETB231; J71=; DC15; SETB302; J71=;
96; ERASE; SETB216; EXIT2; (+ fetch basic symbol - too fancy - return asterisk );
( SET6; SET5; J109P299; earlier failure response );
12; ERASE; (+ initialise basic symbol output - ignore device number );
SETB177615; =V1; (+ opening string quote );
M2TOQ8; (+ keep stack pointer );
EXIT1;
V2 = Q B117256/B120240/0; (+ space, tab, page?? newline?? );
18; SHL+3; =C8; (+ output editing symbol );
V2; SHLC8; SHL-40; (+ drop through to output basic symbol );
14; V1; DUP; (+ output basic symbol );
NOT; SHL-40; J141=Z; (+ J if word not full );
=Y0M2Q; ZERO; NOT;
141;SHL+8; OR; =V1;
C0TOQ8; (+ mystery use of J116C8Z in P291 );
EXIT1;
16; SETB235; JS14; (+ freeze basic symbol output );
V1; NOT; ZERO;
161;ERASE; ZERO; SHLD+8;
DUP; J161=Z; (+ remove dummies at start of word );
SHLD-8; ERASE; NOT;
=Y0M2Q; (+ partial word to buffer );
M8; SETAY0; +; (+ closing string quote to use writetext );
JS2P288;
M8TOQ2; (+ put the stack pointer back );
VR; (+ P291 (write) sometimes leaves overflow set );
EXIT1;
(+ stolen from KQX -- used in format );
20; ERASE;
1; (Fetch BS from string address in M14);
J189C13NZ;
M0M14Q; =V8; SET6; =C13;
189; V8; ZERO; SHLD+8; REV; =V8;
DC13; SETB236; J20=;
SETB240; J20=;
SETB256; J20=;
EXIT1;
(+ unimplemented );
9; SET9; SET5; J108P299; (+ retain character );
11; SET11; SET5; J108P299; (+ initialise character output );
13; SET13; SET5; J108P299; (+ output character );
15; ZERO; SET15; SET5; J108P299; (+ freeze character output );
116;SET116; SET5; J108P299; (+ output characters with automatic case management );
P288V41; ( write text -- also used in R16P295 );
V0 = Q 0/1/AV0; ( buffer for partial line );
ERASE; ( ignore device number for now );
2; SETAY0; M2; +; DUP; PERM; NOT; NEG; =RM15;
CI0TOQ13; SET100; =C15; ( P700 setup missed out by side entry);
V0; = Q14; J10C14Z; ( J if there is no left-over partial line );
11; M0M14Q; =M0M15Q; J11C14NZ; ( copy it at start of output area );
M0M14N; NOT; ( turn dummies to zeros );
DUP; SHL+42; J9#Z; ( J if last saved word is full);
SETB77;
8; DUPD; SET+6; =+C13; ( find position of next free char slot );
SHLC13; AND; J8=Z; ( J if character is dummy - 1st char is never dummy );
REV;
ZERO; NOT; SHLC13; NEV; ( invert the characters back to normal leaving the blanks );
M-I15; =M0M15Q; ( and put the word back in the buffer );
9; ERASE;
10; JS22P700; ( convert ABS to chars );
SETAV0; =RM14;
SETB102; DUP; ( leave 1 in the nest for use later );
M0M15; NEV;
SETB76; AND; J3=Z; ( N1=Z for any paper feed );
=Y0M2; ( if we scan back to this there is no newline - 01 can never be output by P700 );
I15=-1; SET40; =C15; ( for scanning backwards to find last cr );
M0M15Q;
4; =M0M14QN; M0M15Q; J6C15Z; DUP; SETB76;
AND; NEG; NOT; NEG; NOT;
J4#Z;
NC14; I14=-1; ( Ready to unstack the saved words );
M-I15; ( last word to be output );
SETB102; NEV; ( no newline in output string );
3; Q14; =V0; ( stack of output held over to newline );
SETB30; =Y0M2; ( always output on stream 30 for now );
REV; =I15; ( start of output kept from label 2 );
J12=Z; ( jump if there was no newline char );
C0TOQ15; Q15;
SET8; OUT;
12; EXIT1;
6; M0M15; SET3; SETB177410; J108P299; (fail too much output without cr );
algol
procedure close(dv); value dv; integer dv;
kdf9 12/3/2/0;
{dv};JSP292; exit (+ P292 is missing from KQX9101, so it used to be in runtime2.txt );
P292V0; ( Close );
V0 = Q B106640 / B116400 / 0; ( {{c}} );
ERASE; ( interim version only devs 20 and 30 actually work );
V0P288; SHL-32; J9=Z; ( J if no incomplete line to print );
SETAV0; J2P288; ( output newline to force printing );
9; EXIT1;
21;SET21; SET2; J109P299; ( don't know why we need this - perhaps we don't );
algol
comment A4;
real procedure read(device); value device; integer device;
kdf9 12/9/14/0;
{device}; JSP294; exit;
P294V12; (read);
V2=B3244647411363215;
V3=B1067311107601054;
V4=B2372617635665123;
V5=B2567106670407501;
V6=B6625327150150035;
V8=B4323345211424636;
V9=0;
V10=0;
V11=B4100000000112235;
V12=Q2/1/AV8;
DUP; =V10;
JS4P295;
CI0TOQ7; CI0TOQ8; SET10; ZERO; J1NV;
NOT;
1; =V7; Q0TOQ9; ZERO; NOT; REV;
I14; =M7; J8;
$2; DC9;
3; DUPD; *D; J5#Z;
REV; ERASE; J2C9NZS;
4; DUP; M8; +; J7NV;
DC9;
5; DC7; J24C8NZ;
6; SET1; =+C9; REV;
7; PERM; ERASE; M+I9;
8; JS6P295; J34;
M7; I14; -; J35#Z;
23; DUPD; =M8; -; J10>=Z;
REV; DUP; J6C7NZ;
I7=-1; J9C8NZ;
M8; J6=Z;
9; J3>=Z;
NOT; C0TOQ9; J4;
10; DUP; M8; -; NOT; DUP;
J15>Z;
I7=-1; J25C8NZ;
J14=Z;
REV; DUP; J11>=Z;
J13C9Z;
NOT;
13; NEG;
11; I8; J12>=Z;
NEG;
12; I0TOQ8; =V0; Q9; =V1; Q0TOQ9;
DC8; ZERO; NOT; REV; C0TOQ7;
J8;
14; I9; J26#Z;
I9=+1; J8;
15; SET182; J17=;
SET198; J18#;
ERASE; I8; I8=-1;
16; J27#Z;
I7=-1; REV; DUP; J28>=Z;
REV; J8;
17; ERASE; I8; I8=+1; J16;
18; ERASE; I7; J8=Z;
M8; SETB236; J34=;
SETB240; J34=;
SETB256; J34=;
ERASE;
36; ERASE; DUP; J19>=Z;
J29C9Z;
NOT;
19; M9; I9; +; NEG; NOT;
J30=Z;
I8; J20>=Z;
NEG;
20; J21C8Z;
V1; =Q9; =+C9; V0;
21; C9; M9; -; M8; JS10P295;
JS8P295;
22; V2; *D; SHAD+2; DUPD; ROUND;
DUP; =Q8; ZERO; REV; -D;
CONT; DUP; DUP; *; SHA-7;
DUP; V3; *; V4; +;
REV; V5; +; V6; REV;
%; +; REV; SHA-4; DUPD;
+; PERM; -; SHA+1; %;
REV; DUP; ZERO; FLOAT; FIX;
NEG; =C9; ERASE; SHLC9; *;
Q8; SET48; +; C9; -;
REV; DUP; J41=Z;
ZERO; FLOAT; STR;
PERM; ZERO; SHAD+8;
CAB; +; SHAD-8; DUP;
J42 >=Z;
ERASE;
41; ERASE; ERASE; ZERO;
J43;
42; CONT; REV; CONT;
43; J33V;
V7; SHA+48; ERASE; EXIT1;
24; ERASE; SET1;
31; CAB; ERASE;
32; V12; PERM;
V10; JS39; J37;
JS39; J38;
J36;
37; DUP;
38; SHL+8; OR; SHL+8; OR; SHL+16;
V11; OR; =V9; JP299;
25; ERASE; ERASE; SET2; J32;
26; ERASE; SET3; J32;
27; ERASE; SET4; J32;
28; SET5; J31;
29; SET6; J32;
30; SET7; J32;
33; SET8; J32;
34; ERASE; J8;
35; M7; NOT; NEG; =I14;
I7; J23=Z;
=M8; J36;
39; SET10; %I; REV; DUP; J40#Z;
ERASE; SETB236; EXIT1;
40; EXIT2;
algol;
boolean procedure read boolean(device);
value device; integer device;
kdf9 12/9/14/0;
{device};
(read b00llan);
JS4P295;
ZERO; J2;
1; SETB315; NEV; J3=Z; DUP;
4; ERASE;
2; JS6P295;
J4;
SETB335; J1#;
ERASE; NOT;
3; JS8P295;
exit;
algol;
comment A5 -- Genuine library A5 taken from KQX;
procedure write(device,form,value); value device,form,value;
real value; integer device,form;
kdf9 12/9/14/0;
{value}; {form}; {device}; JSP291; exit;
P291V31; (PROCEDURE WRITE);
V1=B1212121212121212;
V2=B2020202020202020;
V3=B2030446722743250; (1.024 TO 1I.P.);
V4=B175/8; (1000/1024 TO 1I,P.);
V5=B1463 1463 1463 1463; (.8 TO 1I.P.);
V6=B2400 0000 0000 0000; (10/8 TO 1I.P.);
V7=Q0/3/3; (INITIAL SPACES/SIGN/EXP SIGN);
V8=B0013573716200001; (FORMAT/DS/ZS/DPH/APM/;/C/NDP);
V9=B0314631463146315; (.1);
V10=B0024365605075341; (.01);
V11=B0000150667056544; (.0001);
V12=B0000000005274617; (.00000001);
V13=B12; (10);
V14=B144; (100);
V15=B23420; (10000);
V16=B575360400; (100000000);
V20=Q12/11/1; (S/F/E);
V25=B0000 0003 7777 7775;
V26=B0000 0001 7777 7777;
V29=B4323606713434452;
V30=B4720000000000000;
101; PERM;
102; =V21;
103; =V22; DUP; =V31; JS12P295; ZERO; =V28;
V21; ZERO; SHLD+24;
REV; ZERO; SHLD+4; =C10; ZERO;
SHLD+2; =I10; ZERO; SHLD+5; NEG;
=C7; ZERO; SHLD+4; =C11; ZERO;
SHLD+2; =M10; ZERO; SHLD+4; =M7;
SHC+3; =I7; DUP; ZERO; REV;
SHLDC7; BITS; NEG; NOT; =I11;
BITS; =M11; V22;
I13=+1; DUP; J5>=Z;
NEGF; I13=-1; I10; J5#Z;
SET2; JS100;
1; JS80;
70; M7; SHC-2; J95<Z;
I7; ZERO; =V27; J4#Z;
C10; I10; J2=Z;
NOT; NEG;
2; M10; J3=Z;
SET4; +;
3; M7; SHC-1; SHL-47; +;
M7; SETB4; AND; SHL-2; +;
CAB; DUP; SHL+23; SET23; FLOAT;
FIX; REV; ERASE; CAB;
+; V31P295; SHL-24; C9; -; +;
=V27; REV;
4; I7; NOT; =C13; V31P295; SHL-24; C9;
-; J115=Z;
SET2; JS18P295;
115; V20; =Q11; V7; =Q10; REV;
ERASE; V8; ZERO; SHLD+24; PERM;
ZERO; SHLD+5; =M7; ZERO; SHLD+3;
=I7; SHL-32; =C7; SET11; =M13;
J7;
5; NC7; JS80;
C11; NEG; NOT; =M13; M10;
J7#Z;
M14; M11; -; J69>=Z;
M14; I11; +; DUP; =M15;
M13; REV; -; J7<Z;
M15TOQ13; M13; J7>=Z;
M13; NOT; J6#Z;
SET5; SHA+43; M13; NOT; NEG; =M13; ZERO;
NOT; =TR; J10;
6; ERASE; ZERO; J12;
7; SET4; =RC15; ZERO; NOT; NEG;
SHC-2; M13;
8; SHC-1; DUP; J9>=Z;
REV; V9M15; *; REV;
9; M+I15; DC15; J8C15NZ;
ERASE; SHA-4;
10; +;
11; DUP; SHL-43; SET10; -; J113<Z;
STR; SET10; %D; M+I14; M10;
J12#Z;
M13; NOT; NEG; C11; NEV;
J110=Z;
J110TR;
SET1; =+M13;
110; M14; M11; -; J71>=Z;
12; ZERO; DUP; =TR; NOT; NEG; M13;
SET4; =RC15;
13; SHC-1; DUP; J14>=Z;
REV; V13M15; *D; CONT; REV;
14; M+I15; DC15; J13C15NZ;
ERASE; *D; SHAD+4; REV; ERASE;
DUP; =V0; JS90;
=V23; =V24; I10; NEG; NOT;
SHL-1; J15#Z;
SETB20; M7; OR; =M7;
15; I11; M11; +; C11; -;
ZERO; =RM15; I11; NOT; NEG;
NOT; NEG; =M13; J18<=Z;
M14; C11; -; NOT; NEG;
DUP; J32<Z;
I11; +;
72; =C15;
18; SET8; =RC11; M+I11; SET24; =C13;
SHL+24;
$16; DUP; J17<Z;
SHL+1; DC13; J16C13NZS;
ERASE; SET3; J74;
113; J12NTR;
J6;
32; I11; +; DUP; J72>=Z;
ERASE; ZERO; J72;
17; DC13; SHL+1; J73C13Z;
C0TOQ14; SET8; =RC12;
19; DUP; J21<Z;
98; SETB76; SHC-6; J26;
22; SETB77; SHC-6;
26; V17M12; SHLD+6; DC12; =V17M12; ERASE;
J24C12NZ;
M+I12; SET8; =C12;
24; DC14;
29; DC13; SHL+1; J19C13NZ;
20; M11; J28=Z;
V23M11; M-I11; NOT; J20=Z;
ERASE; SET4; J74;
21; M13; J107=Z;
M13; NEG; NOT; =M13;
107; J31C15Z;
DC15; M13; SET2; -; J98>=Z;
ZERO; J26;
31; ZERO; V23M11; DC11; SHAD-6; =V23M11;
J25C11NZ;
M-I11; SET8; =C11;
25; SHL+1; M7; SETB10; AND; J27#Z;
SETB77; SHL+42; J26#;
ERASE; ZERO; J26;
27; SETB77; SHL+42; J30#;
M13; J96=Z;
ERASE; ZERO; J26;
96; ERASE; M7; SHL-4; J98=Z;
M+I15; J29;
30; M7; SHL-4; J26=Z;
M15; J26=Z;
ERASE; ERASE; SET5; J74;
28; ERASE; M15; DUP; =+C10; NEG;
=+C7; I10; J35=Z;
I13; J34<Z;
I10; SHC-1; J33<Z;
SETB236; J36;
33; SETB301; J36;
34; SETB321; J36;
35; ZERO; NOT;
36; =I10; NC14; C14; C7; -; M7;
SHC-3; J67>=Z;
SETB13; =M13; J77<=Z;
68; M10; J75=Z;
V0; J64=Z;
C0TOQ13; M14; DUP; J37>=Z;
NEG; DC13;
37; JS90;
NOT; J78#Z;
ZERO; REV; SHAD-12; NOT; J79#Z;
ZERO; SHLD+7; JS40;
SETB12; JS14P295;
SETB77; J51=;
C13; J38<Z;
M10; NEG; NOT; NEG; NOT; J50#Z;
ZERO; JS18P295;
J39;
38; SETB321; JS14P295;
J39;
50; SETB301; JS14P295;
J39;
51; M10; SET3; J52=;
ZERO; JS18P295;
C13; J55<Z;
NEG; NOT; J56=Z;
53; ERASE; ZERO; JS18P295;
J58;
52; ERASE; C13; J54<Z;
SETB301; JS14P295;
J53;
54; SETB321; JS14P295;
J53;
55; ERASE; ERASE; SETB321; J39;
56; ERASE; SETB301;
39; JS14P295;
58; SHC+6; JS14P295;
66; M7; SHC-1; J57>=Z;
SETB230; JS14P295;
57; I7; SHL-2; J63#Z;
I7; =C7; J60C7Z;
59; SET2; JS18P295;
DC7; J59C7NZ;
60; M7; SHC-2; J62>=Z;
V27; DUP; =C14; J62<Z;
J62C14Z;
61; DC14; ZERO; JS18P295;
J61C14NZ;
62; JS16P295;
V28; J111=Z;
V28; V0P299; JS12P295;
SETB042; JS14P295;
SETB021; JS14P295;
DUP; SHL-6; DUP; J23#Z;
ERASE; SETB236;
23; JS14P295; SHL+42; SHL-42; JS14P295;
SETB17; JS14P295;
V1; V31; FRB; DUP; SHL-12; DUP; J114#Z;
ERASE; SETB236;
114; JS14P295; SHL+36;
DUP; SHL-42; JS14P295;
SHL+6; SHL-42; JS14P295;
J116C8Z;
SETB240; JS14P295;
116; JS16P295;
111; EXIT 1;
63; SET3; JS18P295;
J60;
64; JS40;
SET4; =C14;
65; ZERO; JS18P295;
DC14; J65C14NZ;
J66;
67; M0TOQ13; J68=Z;
SET6; J74;
69; SET7; JS100;
J70;
71; ERASE; ZERO; =TR; SET8; JS100;
V22; J1;
73; ERASE; SET9;
74; JS100;
V21; SHL-24; V22; J1;
75; JS40; J66;
77; SET10; J74;
78; ERASE; SET11; J74;
79; ERASE; SET12; J74;
95; SETAV29; V22; SET1; JP299;
40; J42C10Z;
41; DC10; ZERO; JS18P295;
J41C10NZ;
42; M7; SHC-2; J43>=Z;
SETB216; JS14P295;
43; I10; J44<Z;
I10; JS14P295;
44; SET8; C12; -; =C12;
M13; J88=Z;
J112C7Z;
46; J45C12NZ;
M-I12; SET8; =C12;
45; ZERO; V17M12; SHLD-6; =V17M12; SHC+6;
M13; J93=Z;
C7; NEG; NOT; J93=Z;
SETB77; J47=;
94; SETB76; J47=;
97; JS14P295;
48; DC14; DC12; DC7; J46C7NZ;
M13; J49=Z;
112; M13; JS14P295;
M0TOQ13; C14TOQ7; J46;
47; ERASE; ZERO; JS18P295;
J48;
93; SETB77; J94#;
ERASE; ZERO; J97;
49; EXIT1;
88; J89C12NZ;
M-I12; SET8; =C12;
89; ZERO; V17M12; SHLD-6; =V17M12; SHC+6;
SETB76; J99=;
SETB77; J104=;
105; JS14P295;
106; DC14; DC12; DC7; J88C7NZ;
EXIT1;
99; ERASE; ZERO; JS18P295; J106;
104; ERASE; ZERO; J105;
80; DUP; =TR; ABSF; FIX; DUP;
SHL-47; =M14; ABS; =C14; SETAV25;
=RM15; SHA-1; DUP; J109=Z;
SET-10;
81; =I14; M15M14H; SHA-24; =I15;
82; C14; I14; DUP; PERM; +;
J83<Z;
=+C14; I15; =+C15; V3M14; *D;
SHAD+1; ROUND; J82;
83; SHA-3; J84=Z;
SET2; =+M14; SET-3; J81;
84; M14; SHC-1; J85<Z;
NC14;
85; DC14; NC14; STR; SHADC14; J87;
86; ERASE; SET10; *D; DC15;
87; DUP; J86=Z;
SHAD-4; ERASE;
109; C15; =M14; I14=+1; J108NTR;
NEG;
108; EXIT1;
90; DUP; J76#Z;
NOT; DUP; SHL+6; J92;
76; V16; NEG; DUPD; +; J91<Z;
NEG; %I; V1; REV; FRB;
91; REV; V1; REV; FRB; V2;
DUPD; REV; -; AND; V2;
NEV; ZERO; FLOAT; FIX; NOT;
NEG; =C15; ERASE; ZERO; NOT;
STR; NEV; SHAC15; OR; REV;
DUP; J92>=Z;
SHA-27; REV;
92; REV; EXIT1;
100; =V28; EXIT1;
algol;
integer procedure format(lay out);
string lay out;
kdf9 12/9/14/6;
(format);
V2=B0013573703034671;
V5=B4321221604215035;
V6=B4720000000000000;
{lay out};
DUP; =V1; =RM14; SET2; SHC-8;
=V0; Q0TOQ15; SET24; DUP; =C12;
SHA-1; =C11; Q0TOQ13; IM0TOQ12; IM0TOQ11;
Q12TOQ10; Q0TOQ9; ZERO; JS27;
SETB215; J32#;
ERASE; J2;
1; REV; DUP; SHA+2; +; SHA+1;
+;
2; JS27;
DUP; SET10; -; J1<Z;
SETB70; (s); J26#;
ERASE; DUP; SHL-4; J33#Z;
DUP; J23=Z;
=V3; DC15;
3; ZERO; DUP; NOT; NEG;
4; JS27;
J22C15Z;
SETB70; (s); J13=;
5; SETB51; (d); J11=;
SETB301; (+); J14=;
SETB321; (-); J14=;
SETB322; (#); J14=;
SETB13; (.); J16=;
DUP; (zero); J17=Z;
SETB63; (n); J10=;
SETB12; (10); J18=;
SETB230; (;); J19=;
SETB50; (c); J20=;
SETB65; (p); J21=;
SETB235; J31#;
6; I12; J7#Z;
SET24; C12; -; J31=Z;
ERASE; OR; =V4; J8;
7; C12; NEG; NOT; J31#Z;
M11; J31=Z;
ERASE; ERASE; SETB3; DUP; PERM;
AND; NEV; J34#Z;
8; ZERO; M10; SHLD-3; ERASE; I9;
SHLD-1; ERASE; SHL-1;
I10; SHLD-1; ERASE;
I13; SHLD-1; ERASE;
M11; SHLD-2; ERASE;
SET12; C11; -; SHLD-4; ERASE;
SET24; C10; -; SHLD-5; ERASE;
I11; SHLD-2; ERASE;
V3; SHLD-4; ERASE;
V4; SHLD-24; ERASE;
9; exit;
10; (n); C11; SET12; -; J11#Z;
I13=+1;
11; J31C9NZ; (d, zero or terminator);
I12; J12#Z; (EXM);
J31C11Z; (SFC>12);
DC11;
12; PERM; DUP; PERM; OR; REV;
CAB; (insert digit in field lay out);
13; ERASE; SHL+1; DC12; J32C12Z; (EFC>24);
I10; J4#Z; (DPM);
DC10; J4C10NZ; (NDP);
J32;
14; (+-#); SHC-4; DUP; SHL+46; REV;
SHL-44; ROUND; (1=+, 2=-, 3=#);
I12; J15#Z; (EXM);
C12; SET24; -; J31#Z; (SFC=0);
I11; J31#Z; (first sign);
=I11; J4;
15; (EXP SIGN); SET3; C12; -; J31#Z;
M11; J31#Z;
= M11; J4;
16; I10; J31#Z; (DPM);
ERASE; I10=+1; J4;
17; (zero); J12C9NZ;
C11; SET12; -; J31=Z;
DC9; J12;
18; (subten); I12; J31#Z;
I10; J31=Z;
I12=+1; ERASE; OR; DUP; =V4;
SHLC10; SHL+24; BITS; NEG; NOT; J34#Z;
SET3; =C12; J3;
19; (;); I9; J31#Z;
I9=+1; DC9; ERASE; J4;
20; (c); M10; SHL-2; J31#Z;
DC9; ZERO; NOT; NEG; =+M10;
ERASE; J4;
21; (p); M10; J31#Z;
DC9; SET4; =M10; ERASE; J4;
22; SETB70; (s); J24#;
ERASE; ERASE;
23; NOT; NEG; DUP; DUP; SHL-4;
J4=Z;
NEG; NOT; =V3; DC15; ZERO;
DUP; NOT; NEG; CAB; J13;
24; PERM; ERASE;
25; =V3; DC15; ZERO; DUP; NOT;
NEG; CAB; J5;
26; REV; DUP; J25=Z;
J32;
39; ERASE;
27; ZERO; V0;
28; ZERO; SHLD+8; PERM; OR; DUP;
J29=Z;
=V0; SETB236; J39=;
SETB240; J39=;
SETB256; J39=;
EXIT1;
29; ERASE; M0M14Q; J28;
30; ERASE;
31; ERASE;
32; ERASE;
33; ERASE;
34; V0P299; JS12P295;
SETAV5; =RM14;
35; JS1P295; SETB235; J36=;
JS14P295; J35;
36; ERASE; V1; =RM14;
37; JS1P295; SETB235; J38=;
JS14P295; J37;
38; JS16P295;
V2; J9;
algol;
procedure output(device,value); value device,value;
real value; integer device;
kdf9 12/9/14/0;
{value}; V0; {device}; JSP291; exit;
V0=B0013573703034651;
algol;
procedure write boolean(device,boolean);
value device,boolean; integer device;
boolean boolean;
kdf9 12/9/14/0;
{boolean}; {device};
(write boolean);
JS12P295;
J2<Z;
SETB315;
1; JS14P295;
JS16P295;
exit;
2; SETB335; J1;
algol;
comment A15 -- taken from KQX;
procedure writetext(dv, s);
value dv;
integer dv; string s;
kdf9 12/9/14/0;
{s}; {dv}; JSP288; exit
(P288 now in A1 on account of being used by R16P295);
algol
****