207 479 1 7 40 49 0 101 104 109 113 144 152 163 169 172 174 183 188 191 199 205 41 48 48 43 44 42 43 44 43 44 45 46 47 42 43 44 43 44 42 2 7 52 86 4 10 7 7 91 1 93 1 95 96 97 98 99 26 101 102 103 104 50 106 107 108 42 110 111 -130624 578 646 2 33641 520 -128607 -128478 -127705 -127579 -127453 -127324 -127200 2025 -128812 94 -131071 2025 3425 2785 -128124 94 35945 -128428 94 1 48 4065 4400 4833 36962 -127481 1 37347 -128892 94 37731 -127225 1 -125690 1 5542 5680 -125049 -125530 3336 -125530 5680 -122182 -121925 -120909 -119796 -119112 -127687 -119012 -123490 -118881 9700 -127704 -127703 -127702 -127701 -127700 -127699 -127698 -127697 -127694 3376 -121925 1 -120909 -120563 -130980 3428 -85965 -85960 -118644 1 10341 -120434 -120563 92 -120563 -130980 11108 -121797 1 -130980 11630 -121842 -120563 92 11621 45362 36201 36197 36206 12681 -127704 3393 13104 -118137 32640 13446 13674 13698 13930 32648 14086 14313 14419 13929 -115131 -114917 -115575 -114641 -114490 -114361 -114289 16925 -98392 -114007 32705 -113916 17302 -113916 17430 50415 50671 50799 17585 65458 65519 50410 50407 98279 -112939 32640 83799 18308 32740 115946 83178 18662 -79308 -79179 32640 19302 18790 -79308 32640 -111099 -110922 -114002 20330 13925 32742 20407 53354 -110281 32640 65514 -109747 -113981 17092 -76779 32640 98282 -109742 -113970 17103 -114160 16913 -108527 -107888 55533 -108526 -107757 -107884 32640 55787 55660 56429 -107630 -107117 32640 56556 57069 -106990 32640 -98382 -114005 -114003 -114004 -117370 25226 25453 32728 25642 25732 58730 26073 58986 20826 26374 26602 32648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1907 131 1903 131 131 1899 131 1891 1887 1875 1859 1855 1831 131 1819 129 129 129 129 129 129 129 129 129 129 1811 1806 1779 1763 1743 131 131 1664 1628 1548 1500 1340 1268 128 128 1048 1012 128 964 936 924 892 800 128 684 564 504 464 128 444 396 128 128 131 387 131 387 131 -118467 65681 106551 -117309 13007 13138 -117469 -117590 69982 71006 67935 13908 -116950 70174 71198 14408 14537 14668 14789 66872 15054 -115380 15316 15433 15564 67064 15813 15955 16083 66483 -113727 -114104 16594 16725 16837 66650 17093 17230 65550 17476 -113117 -113238 70110 71134 68063 -109887 -110392 -110768 -111660 18775 18889 19028 19139 19272 67680 -111167 19663 19792 67290 20050 20180 65549 20421 20547 66469 20815 20946 21076 65536 21316 -109277 -109398 70366 71390 68319 -107323 22223 22357 22484 22601 22734 22853 -107821 -58907 72166 23376 23493 23619 68069 -105904 -106413 24148 24277 24402 24526 66586 24789 24908 25044 66779 25285 25409 25556 65593 25810 -104123 26057 26190 26324 26452 26565 26712 26836 65551 27076 27209 27331 27457 27604 27717 -102957 -58971 72102 28240 28357 28483 68005 -101680 -101806 29015 29134 67584 65589 29522 70622 29775 29908 65590 30159 30286 30409 30548 30671 30802 67421 -99647 31177 31316 67807 -99261 31684 71646 -98781 -98902 69918 70942 67871 32589 -97840 32851 -98006 69790 70814 -97622 70430 71454 -90554 -96178 -96433 34131 34266 -96598 70238 71262 34772 70558 35028 35141 35271 35397 35538 -91967 -92986 -94131 -94770 -65375 65702 36417 36557 36677 -64351 66726 37057 37200 -93485 -59099 71974 37712 37829 37955 67877 38222 -92461 -59035 72038 38736 38853 38979 67941 39250 39378 39489 39641 -91186 65763 40001 40141 40261 -64287 66790 66355 -89151 -89783 41039 41170 65548 41422 41545 41683 41800 65594 -88500 42197 42316 42452 67356 42707 42821 66714 -83380 -86450 43352 -86711 43604 43717 43858 43982 44097 44236 73728 44500 66842 44740 -86065 82215 45126 -83898 45392 -84283 45650 -84535 45903 46023 46162 46273 46413 82279 46669 65639 46930 47053 65703 47305 47436 47557 82279 47827 47941 65595 -82239 48346 48461 -82390 69854 70878 -81853 49092 71518 -81622 69726 70750 -80561 49881 49987 50124 50245 -65524 65549 -79539 50766 50900 51017 51150 51285 51397 66906 51661 51781 51918 52052 65539 -78267 52441 52564 52677 66048 52935 53065 53198 72679 -76604 53582 53700 -76765 -76886 -60770 65588 71326 68255 -75455 -76092 54866 70686 -75613 -75734 70046 71070 67999 71582 -74819 -74946 110647 65810 102455 -74307 -57340 73783 66134 -73412 -73539 -73666 69687 65746 77879 65746 65537 -65534 65549 -72657 66451 66387 -71891 -72002 -65456 65620 65545 66069 65543 -71253 -65520 65556 66005 -70870 66323 66514 65544 -65531 65542 65939 106551 -69727 -64822 66260 66196 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 87381 !PRIM+PERM FOR IMP15 COMPILER !NUMERIC MCODE ADDRESSES 0:3 & 256:287 REFER TO COMM. TABLE (0:31) ! 256/0: NEST POINTER (256 MUST BE USED FOR VALUE) ! 257/1: WL A (MOSTLY 2ND PARAM) ! 258/2: WL B (MOSTLY 1ST PARAM) ! 259/3: WL C (MOSTLY ARRAY ELEMENT AD: NON-ZERO EXCEPT AS INDIC) ! 260: INPUT STREAM ! 261: OUTPUT STREAM ! 262: INPUT SR AD ! 263: OUTPUT SR AD ! 264: SPARE ! 265: STREAM TABLE AD ! 266: LOWER STORE LIMIT AD ! 267: DT HANDLER AD (FOR DA) ! 268: ERROR HANDLER AD (FOR DA) ! 272 (2) 286: INPUT STREAM SLOTS ! 273 (2) 287: OUTPUT STREAM SLOTS !INITIAL DECLARATION IS KNOWN TO LOADER %INTEGER A,B,C; !WORKING LOCATIONS %ROUTINE D; !MONITOR %OWNINTEGER N=-14 %LAC* 262; %DAC C; !SAVE LAST CHAR L1: %OPR 6145;!CLL!CLC; !CLOSE ALL FILES L2: %JMS* 274 %ISZ L2; %ISZ N; %JMP L1 %END; !EXIT TO CAL %ROUTINE E; !NEST %INTEGER Z %DAC B %LAC* 256; %DAC Z; !NEST POINTER %SAD* 266; %JMP L1; !MONITOR IF NP = LIM %TAD #-1; %DAC* 256; !DECREMENT %LAC B; %DAC* Z %RETURN L1: %JMS* D; %LIT 4; !MONITOR 4 %END %ROUTINE F; !SET LINK IF B <= AC %DAC A %OPR 2049;!CLL!CMA; %ADD B %TAD #-131072 %LAC A; !RESTORE AC %END %ROUTINE G; !SET LINK IF B >= AC %DAC A; %LAC B %OPR 2049;!CLL!CMA; %ADD A %TAD #-131072 %LAC A; !RESTORE AC %END %ROUTINE H; !ARRAY REFERENCE %DAC A; !INDEX %XCT* H; %DAC C; !BASE ADDRESS %LAC A; %TAD* C; !INDEX-UPPER %OPR 192;!SMA!SZA; %JMP L1; !SHOULD BE <= 0 %ISZ C; %TAD* C; !+LENGTH %OPR 704;!SPA!SNA; %JMP L1; !SHOULD BE > 0 %TAD C; %DAC C; !AD OF ELEMENT %ISZ H; !BUMP PAST PARAM %RETURN L1: %JMS* D; %LIT 160; !MONITOR 32 +A %END %ROUTINE I; !ARRAY DECLARATION %INTEGER X,Z %DAC A; %OPR 1;!CMA; %DAC X; !X = -UPPER-1 %TAD B; %DAC Z; !+LOWER %OPR 6208;!SMA!CLL!CLA; %JMP L1; !SHOULD BE < 0 %SAD C; %OPR 2;!CML; !SET LINK IF C ZERO %LAC Z; %OPR 768;!SZL; %OPR 16;!RAR; !HALVE IF BYTE %TAD #-2; %TAD* 256; %DAC C; !NEW VALUE OF NP %OPR 1;!CMA; %TAD* 266; !COMPARE WITH LIMIT %OPR 64;!SMA; %JMP L2; !SHOULD BE GREATER %LAC C; %DAC* 256 %LAC X; %TAD #1; %ISZ C; %DAC* C; !DOPE1 = -UPPER %TAD B; %OPR 1;!CMA; %TAD #2 %ISZ C; %DAC* C; !DOPE2 = LENGTH %LAC #-1; %TAD C; !AD OF DOPE1 %RETURN L1: %JMS* D; %LIT 220; !MONITOR 28 +A +B L2: %JMS* D; %LIT 4; !MONITOR 4 %END %ROUTINE J; !SHIFT %DAC A; %OPR 577;!SPA!CMA; %JMP L2 %DAC A; %LAC B L1: %ISZ A; %OPR 2568;!SKP!RCL; %JMP* J; !LEFT SHIFT %JMP L1 L2: %LAC B L3: %OPR 2064;!RCR; %ISZ A; %JMP L3; !RIGHT SHIFT %END %ROUTINE K; !OR = \A&B!!A %DAC A; %OPR 1;!CMA; %AND B; %XOR A %END %ROUTINE L; !* %INTEGER W,X,Y %DAC A %OPR 65;!SMA!CMA %OPR 513;!SKP!CMA; %TAD #1 %DAC Y; !MOD(A) %LAC #-19; %DAC W; !COUNT %LAC B; %OPR 640;!SNA; %JMP* L %OPR 2115;!SMA!CMA!STL %OPR 513;!SKP!CMA; %TAD #1 L1: %ISZ W; %OPR 72;!SMA!RAL; %JMP L1 %DAC X; !MOD(B) SCALED %OPR 1;!CMA; %TAD #1; %XOR X %AND Y; %OPR 2178;!SZA!STL; %JMP L4 %LAC X L2: %OPR 2824;!SZL!RCL; %TAD Y %ISZ W; %JMP L2 %OPR 256;!SNL; %JMP L4 %DAC X; !MOD(A*B) %LAC B; %XOR A %OPR 4673;!SPA!CLC; %JMP L3 %LAC X; %OPR 64;!SMA; %JMP* L %JMP L4 L3: %TAD X; %OPR 65;!SMA!CMA; %JMP* L %OPR 640;!SNA; %JMP* L L4: %JMS* D; %LIT 193; !MONITOR 1 +A +B %END %ROUTINE M; !// %INTEGER V,W,X,Y,Z %DAC A %OPR 640;!SNA; %JMP L6 %OPR 65;!SMA!CMA %OPR 513;!SKP!CMA; %TAD #1 %DAC Y; !MOD(A) %LAC B %OPR 65;!SMA!CMA %OPR 513;!SKP!CMA; %TAD #1 %DAC X; !MOD(B) %OPR 1; %TAD #1; %TAD Y; !MOD(A)-MOD(B) %OPR 2632;!SPA!RCL; %JMP L1 %OPR 4224;!SZA!CLA; %JMP* M %OPR 2;!CML %JMP L4 L1: %DZM W L2: %ISZ W; %TAD X %OPR 584;!SPA!RAL; %JMP L2 %OPR 16;!RAR; %TAD X; %DAC Z %TAD #1; %XOR Z; %DAC V; !MASK FOR ANS %OPR 1; %AND Z; %DAC Z; !MOD(A)<= 0 %DAC Z; !COUNT %LAC #1; !START WITH 1 L1: %ISZ Z; %OPR 512;!SKP; %JMP* O %JMS L; !MULTIPLY BY B %JMP L1 L2: %JMS* D; %LIT 216; !MONITOR 24 +A +B %END %ROUTINE P; !ENTRY & EXIT %INTEGER RAD,CAD,VAD,NAD %DAC A; !SAVE AC %LAC P; %AND #32767 %TAD #-1; %DAC CAD; !*CALL OF P %TAD #-1; %DAC RAD; !*RETURN AD %TAD* P; %DAC VAD; !VAR BASE %LAC* RAD; %SAD CAD; %JMP L5; !EXIT -> %ISZ P %LAC* 256; %DAC B %TAD* P; %ISZ P; %DAC* 256; !NEW VAL OF NP %OPR 1;!CMA; %TAD* 266; !TEST AGAINST LIM %OPR 576;!SPA; %JMP L1; !OK -> %JMS D; %LIT 4; !MONITOR 4 (FATAL) L1: %LAC A; %DAC* B; !STORE LAST PAR (IF ANY) %LAC* 256; %TAD #65537; %DAC NAD; !+1 +65536 %LAC* VAD; %DAC* NAD; %ISZ NAD; !STORE OLD NEST BASE %LAC* 256; %DAC* VAD; !SET NEW NEST BASE %LAC* RAD; %DAC* NAD; !STORE RETURN AD %LAC CAD; %DAC* RAD; !SET TO RECALL P ON EXIT L2: %ISZ VAD; %ISZ NAD %LAC* VAD; %OPR 8;!RAL; !INSPECT FLAG BIT %OPR 592;!SPA!RAR; %JMP L3; !VALUE TYPE -> %SAD CAD; %JMP L4; !FINISHED -> %DAC B; !NAME TYPE: SWOP %LAC* NAD; %AND #-65537; %DAC* VAD %LAC B; %DAC* NAD %JMP L2 L3: %LAC NAD; %DAC* VAD; !POINTER TO NEST %JMP L2 L4: %LAC A; !RESTORE AC %JMP* P L5: %LAC* VAD; %DAC* 256; !RESTORE NP %LAC* 0; %DAC* VAD; !AND OLD NEST BASE %TAD #65538; %DAC NAD; !+2 +65536 %LAC* 0; %DAC RAD; !RECOVER RETURN AD L6: %ISZ VAD; %ISZ NAD %LAC* VAD; %OPR 8;!RAL; !INSPECT FLAG BIT %OPR 592;!SPA!RAR; %JMP L7; !VALUE TYPE -> %SAD CAD; %JMP L9; !FINISHED -> %LAC* 0; !OLD CONTENTS %JMP L8 L7: %ISZ* 256; %LAC NAD; !OLD POINTER L8: %DAC* VAD %JMP L6 L9: %LAC P; %OPR 8;!RAL; %LAC A; !RESTORE AC AND LINK %JMP* RAD %END %ROUTINE Q; !SET FAULT TRAP %OWNINTEGERARRAY F(0:32) %JMS H; %LAD F; !ARRAY REF %LAC Q; %DAC* C; !STORE IN F() %LAC* 256; %DAC* Q; !STORE NP %ISZ Q; %ISZ Q; !BUMP PAST NP + JMP %LAD Q1; %DAC D; !DIVERT MONITOR CALLS %RETURN Q1: %LIT 0; !ENTRY POINT FOR TRAP %LAC* Q1; %DAC Q2; !FAULT NUMBER %AND #63; %TAD #2; %ADA F; %DAC C; !ADDRESS OF SLOT %LAC* C; %OPR 128;!SZA; %JMP Q3; !TRAPPED -> %JMS D; !DIRECT CALL ON MONITOR Q2: %LIT 0; !WITH SAME FAULT NUM %JMP* Q1; !NEEDED FOR DIAG Q3: %DAC Q %LAC* Q; %DAC* 256; !RESTORE NP %ISZ Q; !BUMP TO EXIT TO JUMP %END %ROUTINE R; !DIRECT ACCESS %OWNINTEGER RET=3,WAIT=2,WL,FU1; !!!ABS %OWNINTEGER FU,BN,WC,BS; !!!ORDER IMPORTANT %AND #32767; %OPR 1;!CMA; %DAC WC; !- LAST AD - 1 %LAC* 0; %AND #32767; %DAC BS; !FIRST AD %LAC* 0; %DAC WL; %LAC* WL; %DAC BN; !BLOCK NUM %LAC* 0; !UNIT %OPR 704;!SPA!SNA; !CHECK # 0 IF WRITE %OPR 320;!SMA!SNL; %JMP L1; !!!LINK PRESERVED %JMS* D; %LIT 19; !MONITOR 19 L1: %TAD #8_12000; !READ CONTINUOUS %OPR 768;!SZL; %TAD #8_2000; !OR WRITE %DAC FU1; !FUNCTION + UNIT %LAC WC; %TAD BS; %DAC WC; !WORD COUNT (NEG) L2: %OPR 64;!SMA; %JMP L3 %TAD #256; %ISZ* WL; !INC BLOCK NUM %JMP L2 L3: %LAC FU; %OPR 192;!SMA!SZA; %JMP L4; !SEEK IN PROGRESS -> %LAC FU1; %DAC FU %LAD FU; !AD OF DT VECTOR %JMS* RET; %JMP* 267; !CALL DT HANDLER %LAC WC; %OPR 64;!SMA; %JMP* R; !SEEK ONLY => L4: %JMS* RET %LAC FU; %OPR 192;!SMA!SZA; %JMP* WAIT %IOT 34;!ION %OPR 65;!SMA!CMA; %JMP* R; !OK => %JMS* RET; %JMP* 268; !CALL ERROR HANDLER ->L3 %END %ROUTINE S %END %ROUTINE T; !BYTE ARRAY REF %DAC A; !INDEX %XCT* T; %DAC C; !BASE ADDRESS %LAC A; %TAD* C; !INDEX - UPPER %OPR 192;!SMA!SZA; %JMP L1; !SHOULD BE <= 0 %ISZ C; %TAD* C; !LENGTH %OPR 2768;!SPA!SNA!RCR; %JMP L1; !SHOULD BE > 0 %OPR 768;!SZL; %TAD #-131072 %ADD #-131072; %TAD C; !BYTE ADDRESS %DAC C %ISZ T %RETURN L1: %JMS* D; %LIT 160; !MONITOR 32 +A %END %ROUTINE U; !BYTE VAL %DAC C; %OPR 8;!RAL %LAC* C; %OPR 256;!SNL; %JMP L1; !RIGHT-HAND -> %OPR 2064;!RCR %OPR 1040;!RTR; %OPR 1040 %OPR 1040; %OPR 1040 L1: %AND #511 %END %ROUTINE V; !BYTE DEST %AND #511; %DAC B %XCT* V; %DAC C %OPR 64;!SMA; %JMP L1; !RIGHT-HAND -> %LAC B; %OPR 2056;!RCL %OPR 1032;!RTL; %OPR 1032 %OPR 1032; %OPR 1032; %DAC B %LAC #-512; %OPR 513;!SKP!CMA L1: %LAC #-512; %AND* C; %TAD B; %DAC* C %END %ROUTINE W %END %OWNINTEGER X; !OUTPOS %ROUTINE Y; !PRINTTEXT %ROUTINE PRINT %AND #127 %OPR 2690;!SNA!STL; %JMP* PRINT; !IGNORE NULL %ISZ X; %SAD #10; %DZM X; !UPDATE OUTPOS %JMS* 263; !CALL OUTPUT SR %OPR 768;!SZL; %JMP* PRINT %JMS* D; %LIT 29; !MONITOR 29 %END L1: %LAC* Y; %OPR 16;!RAR %OPR 1040;!RTR; %OPR 1040; %OPR 1040 %JMS PRINT; !CHAR1 %LAC* Y %JMS PRINT; !CHAR2 %LAC* Y; %ISZ Y %OPR 64;!SMA; %JMP L1 %END %ENDOFPRIM %OWNINTEGER PS=' ' %OWNINTEGER NL=10 %INTEGERFN ADDR(%INTEGERNAME N); !!!KNOWN TO COMPILER %END %INTEGERMAP INTEGER(%INTEGER N) %DAC C %END %ROUTINESPEC SELECT INPUT(%INTEGER S) %ROUTINE SELECT INPUT %DAC 260; %OPR 2056;!RCL %AND #15; %TAD 265; %DAC C; !INPUT SLOT %LAC* C L1: %DAC 262 %LAC* 262; %OPR 576;!SPA; %JMP L1; !CHAINED FILE -> %END %ROUTINESPEC SELECT OUTPUT(%INTEGER S) %ROUTINE SELECT OUTPUT %DAC 261; %OPR 2050;!STL; %OPR 8;!RAL %AND #15; %TAD 265; %DAC C; !OUTPUT SLOT %LAC X; %DAC* 263; !SAVE OUTPOS %LAC* C; %DAC 263 %LAC* 263; %DAC X; !SET OUTPOS %END %ROUTINE READ CH(%INTEGERNAME X) %LAC* 262; %OPR 2176;!SZA!CLL; %JMP L6; !CHAR PENDING -> L2: %JMS* 262; %OPR 768;!SZL; %JMP L6; !OK -> %OPR 64;!SMA; %JMP L3; !NOT CHAINED FILE -> %DAC* 262; %DAC 262; !MOVE DOWN CHAIN %OPR 6144;!CLL!CLA %JMP L2 L3: %DZM* 262 %OPR 128;!SZA; %JMP L4 %MONITOR 9; !END OF FILE L4: %DAC A; !DATA ERROR %MONITOR 143; !MONITOR 15 +A L6: %DZM* 262 %DAC X %END %ROUTINESPEC PRINT CH(%INTEGER K) %ROUTINE PRINT CH %OPR 2050;!STL; %JMS* 263; !CALL OUTPUT SR %OPR 768;!SZL; %JMP* PRINTCH %DAC A %JMS* D; %LIT 157; !MONITOR 29 +A %END %INTEGERFN NEXT SYMBOL %LAC* 262 %OPR 2176;!SZA!CLL; %JMP* NEXT SYMBOL; !CHAR PENDING => L2: %JMS* 262; %OPR 768;!SZL; %JMP L5; !OK -> %OPR 64;!SMA; %JMP L3; !NOT CHAINED FILE -> %DAC* 262; %DAC 262; !MOVE DOWN CHAIN %OPR 6144;!CLL!CLA %JMP L2 L3: %DZM* 262 %OPR 128;!SZA; %JMP L4 %MONITOR 9; !END OF FILE L4: %DAC A; !DATA ERROR %MONITOR 143; !MONITOR 15 +A L5: %TAD #-32 %OPR 576;!SPA; %SAD #-22; %JMP L8; !NEWLINE -> %OPR 6144;!CLL!CLA %JMP L2 L8: %TAD #32; %DAC* 262 %END %ROUTINE READ SYMBOL(%INTEGERNAME I) I = NEXT SYMBOL %DZM* 262 %END %ROUTINE SKIP SYMBOL %JMS NEXTSYMBOL; %DZM* 262 %END %ROUTINESPEC PRINT SYMBOL(%INTEGER K) %ROUTINE PRINT SYMBOL %OPR 2626;!SPA!SNA!STL; %JMP* PRINTSYMBOL %ISZ X; %SAD NL; %DZM X; !UPDATE OUTPOS %JMS* 263; !CALL OUTPUT SR %OPR 768;!SZL; %JMP* PRINT SYMBOL %DAC A %JMS* D; %LIT 157; !MONITOR 29 +A %END %ROUTINE NEWLINE PRINT SYMBOL(NL) %END %ROUTINE NEWLINES(%INTEGER N) L1: %RETURN %IF N <= 0; NEWLINE; N = N-1 %JMP L1 %END %ROUTINE SPACE PRINT SYMBOL(' ') %END %ROUTINE SPACES(%INTEGER N) L1: %RETURN %IF N <= 0; SPACE; N = N-1 %JMP L1 %END %ROUTINE READ(%INTEGERNAME I) %INTEGER SIGN,J 1: J = NEXT SYMBOL ->2 %IF J # ' ' %AND J # NL; SKIP SYMBOL ->1 2: SIGN = J-'-' ->3 %IF SIGN # 0 SKIP SYMBOL; J = NEXT SYMBOL 3: J = J-'0' %MONITOR 14 %UNLESS J >= 0 %AND J-9 <= 0 I = J 4: SKIP SYMBOL; J = NEXT SYMBOL-'0' ->5 %UNLESS J >= 0 %AND J-9 <= 0 I = (I<<2+I)<<1+J ->4 5: I = -I %IF SIGN = 0 %END %ROUTINE WRITE(%INTEGER V,P) %INTEGER SIGN,D %ROUTINE STRIP(%INTEGER N) ->3 %IF N = -1 D = 0 1: ->2 %IF V+N < 0; V = V+N; D = D+1; ->1 2: ->4 %IF SIGN < 0 %OR D # 0 P = P+1 %RETURN 3: D = V 4: ->5 %IF SIGN < 0 SPACES(P-6); PRINT SYMBOL(SIGN); SIGN = -1 5: PRINT SYMBOL(D+'0') %END SIGN = PS ->1 %IF V >= 0; V = -V; SIGN = '-' 1: STRIP(-100000); STRIP(-10000); STRIP(-1000) STRIP(-100); STRIP(-10); STRIP(-1) %END %ROUTINE CLOSE INPUT %OPR 6145;!CLL!CLC; %JMS* 262; %DZM* 262 %LAC 260; %OPR 2056;!RCL %AND #15; %TAD 265; %DAC C %LAC* C; %DAC 262; %DZM* 262 %END %ROUTINE CLOSE OUTPUT %OPR 6145;!CLL!CLC; %JMS* 263 %END %ROUTINESPEC READ DA(%INTEGER S %INTEGERNAME BLOCK,FROM,TO) %ROUTINE READ DA %OPR 2048;!CLL; %JMS R %END %ROUTINESPEC WRITE DA(%INTEGER S %INTEGERNAME BLOCK,FROM,TO) %ROUTINE WRITE DA %OPR 2050;!STL; %JMS R %END %INTEGERFN INSTREAM %LAC 260 %END %INTEGERFN OUTSTREAM %LAC 261 %END %INTEGERFN INDEV %LAC 262; %OPR 1032;!RTL; %OPR 1032; %AND #3 %END %INTEGERFN OUTDEV %LAC 263; %OPR 1032;!RTL; %OPR 1032; %AND #3 %END %INTEGERFN INPUT %OWNINTEGER KE=36, KI=37; !!!ABS %LAC 262; %AND #8_300000; !INDEV KB? %XOR #8_100000; !NON-ZERO IF NOT %TAD* KE; %SAD* KI; %LAC* 262; !NSYM IF KB IDLE %END %ROUTINE PROMPT(%INTEGER K) %RETURN %UNLESS INPUT = 0 %LAC K; %TAD #-131072; !ADD SIGN BIT %OPR 2050;!STL; %JMS* 262; %DZM* 262 %END %INTEGERFN FREE STORE %LAC* 266; %OPR 1;!CMA; %TAD* 256; !NP - LOLIM %END %INTEGERFN TINT %OWNINTEGER IM=11; !!!ABS %IOT 2;!IOF; %LAC* IM; %DZM* IM; %IOT 34;!ION %END %INTEGERFN OUTPOS %LAC X %END %ENDOFPERM