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 ****