1 /EFOC0B -- PS/8 FOCAL LIBRARY ROUTINES 2 /VERSION FOR ETOS WITH INTERRUPTS REMOVED 3 4 5 6 /ASSEMBLY INSTRUCTIONS: 7 8 /.R PAL8 9 /*EFOCLB,EFOCLBARG 2500 11623 5244 JMP ETERMN /T 2501 11624 0212 ECHOLST,0212 /N-ERROR IN FORMAT 2502 11625 0377 0377 /F 2503 11626 5250 JMP ETERM+1 /'EVAL' FOUND A TERMINATOR WHICH WAS NOT 2504 /END OF EXPRESSION (NOT ERROR!) 2505 11627 1136 ETERM1, TAD CFRSX /SET PT1. 2506 11630 3030 DCA PT1 /TO POINT TO ZERO 2507 11631 1111 TAD M2 /TEST FOR UNARY OPERATIONS 2508 11632 1054 TAD SORTCN 2509 11633 7450 SNA 2510 11634 5247 JMP ETERM /CREATE DUMMY FOR UNARY MINUS 2511 11635 7001 IAC 2512 11636 7650 SNA CLA 2513 11637 5323 JMP ARGNXT /IGNORE UNARY PLUS 2514 11640 1054 TAD SORTCN /TEST FOR NULL PARENS. 2515 11641 1121 TAD M11 2516 11642 7710 SPA CLA 2517 11643 5363 JMP ELPAR /MIGHT BE AN L-PAR. 2518 11644 4562 ETERMN, TSTLPR 2519 11645 7410 SKP 2520 11646 4566 ERROR4 /OPERATOR MISSING BEFORE PAREN 2521 11647 1054 ETERM, TAD SORTCN /SET FROM "TESTC"-"SORTC" 2522 11650 3024 DCA THISOP 2523 11651 1024 TAD THISOP 2524 11652 1121 TAD M11 2525 11653 7700 SMA CLA /END? 2526 11654 3024 DCA THISOP /"THISOP" EQUIV. TO END OF EXP. 2527 2528 11655 1024 ETERM2, TAD THISOP /COMPARE PRIORITIES 2529 11656 7041 CIA 2530 11657 1055 TAD LASTOP 2531 11660 7710 SPA CLA 2532 11661 5310 JMP EPAR /CONTINUE 2533 11662 1055 TAD LASTOP /FIND OPERATION 2534 11663 7112 CLL RTR 2535 11664 7012 RTR 2536 11665 1331 TAD OPTABL 2537 11666 3274 DCA FLOP 2538 11667 1055 TAD LASTOP 2539 11670 7640 SZA CLA /TEST FOR END OF DATA INTO FLOATING AC. 2540 11671 4544 POPF /GET LAST DATA 2541 11672 0044 FLAC 2542 11673 4407 FINT 2543 11674 0000 FLOP, 00 /(FLOPR I PT1)+-*/ 2544 11675 6525 FPUT I FLARGP /SAVE RESULT 2545 11676 0000 FXIT 2546 11677 1125 TAD FLARGP 2547 11700 3030 DCA PT1 2548 11701 1024 TAD THISOP 2549 11702 1055 TAD LASTOP /=0? 2550 11703 7650 SNA CLA 2551 11704 5540 POPJ /EXIT "EVAL" 2552 11705 4542 POPA /GET PRIOR OP 2553 11706 3055 DCA LASTOP 2554 11707 5255 JMP ETERM2 /COMPARE THIS OP 2555 11710 4562 EPAR, TSTLPR /TEST FOR SUB-EXPRESSION 2556 11711 7410 SKP 2557 11712 5365 JMP EPAR2 /GO EVALUATE EXPRESSION 2558 11713 1055 TAD LASTOP /CONTINUE READING THE EXPRESSION 2559 11714 4541 PUSHA /SAVE "LASTOP". 2560 11715 1030 TAD PT1 2561 11716 3320 DCA .+2 2562 11717 4543 PUSHF /SAVE LAST ARGUMENT 2563 11720 0000 00 2564 11721 1024 TAD THISOP /MORE TO COME 2565 11722 3055 DCA LASTOP 2566 11723 4545 ARGNXT, GETC /READ 1ST CHAR OF AN ARG. 2567 11724 4564 TESTC /DO SPECIAL CHECK 2568 11725 5363 JMP ELPAR /COULD BE LEFT PAREN 2569 11726 5332 JMP ENUM /N 2570 11727 5343 JMP EFUN /F 2571 11730 5220 JMP OPNEXT-2 /L 2572 11731 0430 OPTABL, FGET I PT1 /BASE FOR OPERATION COMPUTATION 2573 2574 11732 4543 ENUM, PUSHF /TO PROCESS A NUMBER,SAVE AC 2575 11733 0044 FLAC 2576 11734 1125 TAD FLARGP /SET POINTER AS FOR A VARIABLE. 2577 11735 3030 DCA PT1 2578 11736 3036 DCA INSUB /POINT TO 'GETC' AND USE CHAR 2579 11737 4530 JMS I FINPUT /READ TEXT NUMBER => (PT1) 2580 11740 4544 POPF /RESTORE THE AC 2581 11741 0044 FLAC 2582 11742 5222 JMP OPNEXT /CONTINUE 2583 11743 3056 EFUN, DCA EFOP /SET CODE 2584 11744 4545 GETC /READ FUNCTION NAME.(1,2,OR 3 LETTERS) 2585 11745 4550 SORTC /LOOK FOR TERMINATION CHARACTER. 2586 11746 1767 TERMS-1 2587 11747 5354 JMP EFUN2 /YES 2588 11750 1056 TAD EFOP /NO 2589 11751 7104 CLL RAL /MISH-MASH HASH CODE 2590 11752 1066 TAD CHAR 2591 11753 5343 JMP EFUN 2592 11754 4562 EFUN2, TSTLPR 2593 11755 4566 ERROR4 /MUST BE FOLLOWED BY PARENS TO SET ARGUMENT 2594 11756 4201 JMS ECALL /CALL "EVAL" TO COMPUTE ARGUMENT 2595 11757 4542 POPA /BRANCH ON FUNCTION CODE;RETURN VIA EFUN3I. 2596 11760 4547 SORTJ 2597 11761 2163 FNTABL-1 2598 11762 6207 FNTABF-FNTABL 2599 11763 4562 ELPAR, TSTLPR /LEFT PAREN OR FELL THROUGH FUNCTION TABLE 2600 11764 4566 ERROR4 /DOUBLE OPERATORS OR ILLEGAL FUNCTION NAME. 2601 11765 4201 EPAR2, JMS ECALL /EVALUATE NESTED EXPRESSION 2602 /-------------------------------------------------------------------- 2603 11766 4542 POPA /DUMP EXTRA ARG. 2604 11767 5535 JMP I EFUN3I 2605 2606 TERMS=. /TERMINATOR TABLE FOR 'EVAL' AND 'GETVAR' 2607 11770 0240 240 /SPACE 0 2608 11771 0253 253 /+ 1 2609 11772 0255 255 /- 2 2610 11773 0257 257 // 3 2611 11774 0252 252 /* 4 2612 11775 0336 336 /UP ARR 5 2613 11776 0250 250 /( 6 L-PARS 2614 11777 0333 333 /[ 7 2615 12000 0274 274 /< 10 2616 12001 0251 251 /) 11 R-PARS 2617 12002 0335 335 /] 12 2618 12003 0276 276 /> 13 2619 12004 0254 254 /, 14 2620 12005 0273 273 /; 15 2621 12006 0215 215 /C.R. 16 2622 12007 0275 275 /= TO END GETARG FROM 'SET' 2623 2624 2625 2626 12010 6201 GOKILL, CDF 2627 12011 3531 DCA I LIBN /ZERO 'CURRENT PROGRAM SAVED' FLAG 2628 12012 6211 CDF 10 2629 12013 5177 JMP START 2630 /----------------------------------------------------------------------- 2631 12014 1231 XABS, TAD FLARG+1 /TAKE ABSOLUTE VALUE OF FLAC 2632 12015 7710 SPA CLA /SKIP TO CONTINUE 2633 12016 4451 JMS I MINSKI /NEGATE THE FLOATING AC 2634 2635 /CONTINUATION OF FUNCTION CALLS. 2636 2637 12017 4407 EFUN3, FINT 2638 12020 7000 FNOR /NORMALIZE FUNCTION RETURN 2639 12021 6230 FPUT FLARG /SAVE FUNCTION VALUE 2640 12022 0000 FXIT 2641 12023 1125 TAD FLARGP /SET POINTER 2642 12024 3030 DCA PT1 2643 12025 4247 JMS PARTEST 2644 12026 5627 JMP I .+1 /FUNCTION RETURN IS OK 2645 12027 1622 OPNEXT 2646 2647 2648 12030 0000 FLARG, 0 /DATA TEMPORARY STORAGE 2649 12031 0000 0 2650 12032 0000 0 2651 12033 0000 0 2652 2653 12034 0003 P3, 3 2654 12035 0000 LPRTST, 0 /SKIP IF LEFT PAREN. - 'TSTLPR' 2655 12036 1054 TAD SORTCN 2656 12037 1121 TAD M11 2657 12040 7700 SMA CLA 2658 12041 5635 JMP I LPRTST /--RETURN-- 2659 12042 1054 TAD SORTCN 2660 12043 1120 TAD M5 2661 12044 7740 SMA SZA CLA 2662 12045 2235 ISZ LPRTST 2663 12046 5635 JMP I LPRTST /--RETURN-- 2664 2665 12047 0000 PARTEST,0 /TEST THE PAREN MATCHINGS 2666 12050 4542 POPA /RESTORE LAST OPERATION 2667 12051 3055 DCA LASTOP 2668 12052 4542 POPA /REVERSE THESE TWO INSTRUCTIONS 2669 12053 1234 TAD P3 2670 12054 7041 CIA /CHECK FOR PAREN MATCH. 2671 12055 1054 TAD SORTCN /(STILL SET FROM THE LAST "EVAL") 2672 12056 7640 SZA CLA /SKIP IF MATCH 2673 12057 4566 ERROR4 /PAREN ERROR 2674 12060 4545 GETC /MOVE PAST R-PAR 2675 12061 5647 JMP I PARTEST /--RETURN-- 2676 2677 /THE DELETE A LINE ROUTINE 2678 2679 12062 0000 XDELETE,0 /UNCHAIN A LINE AND RECOVER THE SPACE. 2680 12063 4555 FINDLN /SETS "THISLN" AND "LASTLN". 2681 12064 5662 JMP I XDELETE /ALREADY GONE --RETURN-- 2682 12065 2026 ISZ DEBGSW /DISABLE TRACE 2683 12066 4545 GETC /MEASURE LENGTH 2684 12067 1066 TAD CHAR 2685 12070 1116 TAD MCR 2686 12071 7640 SZA CLA 2687 12072 5266 JMP .-4 2688 12073 1017 TAD AXOUT /SAVE LAST ADDRESS 2689 12074 7040 CMA 2690 12075 1023 TAD THISLN 2691 12076 3057 DCA CNTR /LENGTH < 0 2692 12077 1132 TAD CFRS /IT IS ILLEGAL TO DELETE THE FIRST LINE 2693 12100 7041 CIA 2694 12101 1023 TAD THISLN 2695 12102 7650 SNA CLA 2696 12103 5177 JMP START /JUST IGNORE SUCH COMMANDS 2697 12104 6201 CDF /CHANGE DATA FIELD FOR 'DELETE' 2698 12105 1423 TAD I THISLN /DISCONNECT 2699 12106 3425 DCA I LASTLN 2700 12107 1132 TAD CFRS /START LIST AT TOP 2701 12110 3071 DOK, DCA T2 /EXAMINATION ADDRESS 2702 12111 1471 TAD I T2 /GET THE NEXT ADDR. 2703 12112 7450 SNA /TEST FOR END 2704 12113 5326 JMP DONE /YES-WRAP UP ALL. 2705 12114 3032 DCA T1 /SAVE NEXT ADDRESS. 2706 12115 1023 TAD THISLN /COMPARE LINE POSITIONS 2707 12116 7141 CIA CLL 2708 12117 1032 TAD T1 2709 12120 7630 SZL CLA /SKIP IF THISLN > X 2710 12121 1057 TAD CNTR /CHANGE (X) TO ACCOUNT FOR 2711 12122 1032 TAD T1 /GARBAGE COLLECTION. 2712 12123 3471 DCA I T2 2713 12124 1032 TAD T1 /GET NEXT 2714 12125 5310 JMP DOK 2715 2716 /GARBAGE COLLECTION 2717 2718 12126 7040 DONE, CMA /BACKUP L FOR XR 2719 12127 1023 TAD THISLN 2720 12130 3011 DCA XRT 2721 12131 1057 TAD CNTR /SETUP END OF HOSE 2722 12132 7040 CMA 2723 12133 1023 TAD THISLN 2724 12134 3012 DCA XRT2 2725 12135 1057 TAD CNTR /CORRECT END OF BUFFER POINTER. 2726 12136 1060 TAD BUFR 2727 12137 3060 DCA BUFR 2728 12140 1010 TAD AXIN /COMPUTE COUNT 2729 12141 7040 CMA 2730 12142 1012 TAD XRT2 2731 12143 3032 DCA T1 2732 12144 1010 TAD AXIN 2733 12145 1057 TAD CNTR 2734 12146 3010 DCA AXIN 2735 12147 1412 TAD I XRT2 /SIPHON LOWER PART. 2736 12150 3411 DCA I XRT 2737 12151 2032 ISZ T1 2738 12152 5347 JMP .-3 2739 12153 5263 JMP XDELETE+1 /RESET 'LASTLN','THISLN', AND DATA FIELD. 2740 2741 2742 12154 0000 CHIN, 0 /READ IN A CHARACTER SUBR. - "READC" 2743 12155 4464 JMS I INDEV 2744 12156 3066 DCA CHAR 2745 12157 4547 SORTJ /USE 'SORTJ' INSTEAD OF 'SORTC' 2746 12160 1623 ECHOLST-1 /SO 'SORTCN' DOESN'T GET KILLED 2747 12161 5704 ECHOGO-ECHOLST 2748 12162 4551 PPRNT, PRINTC /ECHO THE INPUT 2749 12163 5754 JMP I CHIN /--RETURN-- 2750 /------------------------------------------------------------------- 2751 2752 2753 FNTABL=. 2754 12164 2533 2533 /FABS 2755 12165 2650 2650 /FSGN 2756 12166 2636 2636 /FITR 2757 12167 2565 2565 /FDIS 2758 12170 2630 2630 /FRAN 2759 12171 2637 2637 /FJOY 2760 12172 2572 2572 /FATN 2761 12173 2624 2624 /FEXP 2762 12174 2625 2625 /FLOG 2763 12175 2654 2654 /FSIN 2764 12176 2575 2575 /FCOS 2765 12177 2702 2702 /FSQT 2766 12200 1140 1140 /FIN 2767 12201 2672 2672 /FOUT 2768 12202 2604 2604 /FIND 2769 2770 /ERASE SINGLE LINES, GROUPS, OR VARIABLES 2771 2772 12203 4564 ERASE, TESTC /TEST THE SECOND WORD, IF ANY. 2773 /--------------------------------------------------------------------- 2774 12204 5236 JMP ERVX /ERASE VARIABLES 2775 12205 5221 JMP ERL /LINES OR GROUPS 2776 12206 5212 JMP .+4 /ERROR 2777 12207 1066 TAD CHAR /ALL TEXT 2778 12210 1112 TAD MINUSA 2779 12211 7440 SZA 2780 12212 4566 ERROR3 /BAD ARG FOR ERASE. 2781 12213 1134 ERT, TAD ENDT /ERASE ALL TEXT ** 2782 12214 3060 DCA BUFR 2783 12215 6201 CDF 2784 12216 3532 DCA I CFRS /ERASE ALL TEXT 2785 12217 5437 JMP I GOK 2786 12220 5177 JMP START /POINTERS MAY BE DIFFERENT NOW. 2787 12221 4554 ERL, GETLN /ERASE LINES. 2788 12222 1060 TAD BUFR /PROTECT REST OF TEXT. 2789 12223 3010 DCA AXIN 2790 12224 4565 ERG, DELETE /EXTRACT ONE LINE 2791 12225 2023 ISZ THISLN 2792 12226 1065 TAD NAGSW 2793 12227 7700 SMA CLA 2794 12230 4570 JMS I DTHIS /TAD I THISLN 2795 12231 4563 TSTGRP /DONE ERASING GROUP? 2796 12232 5437 JMP I GOK /YES, ERASE 'CURRENT PROGRAM SAVED' FLAG 2797 12233 4570 JMS I DTHIS /TAD I THISLN 2798 12234 3067 DCA LINENO 2799 12235 5224 JMP ERG 2800 12236 1133 ERVX, TAD END /ZERO VARIABLES (BUT NOT SECRET VARIABLES) 2801 12237 3031 DCA LASTV 2802 12240 5540 POPJ 2803 2804 2805 /ROUTINE CALLED VIA "FINDLN": 2806 2807 /SEARCH FOR A GIVEN LINE I.D. =[ "LINENO" ] 2808 /1ST RETURN IF NOT FOUND, 2809 /2AND IF FOUND. 2810 /"THISLN" = FOUND LINE OR NEXT LARGER. 2811 /"LASTLN" = LESSER AND/OR LAST. 2812 /"TEXTP" IS SET 2813 2814 12241 0000 XFIND, 0 2815 12242 1132 TAD CFRS /INITIALIZE POINTERS TO FIRST LINE 2816 12243 3025 DCA LASTLN 2817 12244 1132 TAD CFRS 2818 12245 3023 FINDN, DCA THISLN /SAVE THIS ONE 2819 12246 1023 TAD THISLN 2820 12247 3011 DCA XRT 2821 12250 1067 TAD LINENO 2822 12251 7141 CLL CMA IAC /CLEAR LINK AND NEGATE LINENO. 2823 12252 4572 JMS I DXRT /TAD I XRT 2824 12253 7450 SNA 2825 12254 5265 JMP FEND3-1 /FOUND IT. 2826 12255 7630 SZL CLA 2827 12256 5266 JMP FEND3 /PAST IT. 2828 12257 1023 TAD THISLN /MOVE POINTERS 2829 12260 3025 DCA LASTLN 2830 12261 4570 JMS I DTHIS /TAD I THISLN 2831 12262 7440 SZA 2832 12263 5245 JMP FINDN /NOT YET 2833 12264 7410 SKP 2834 12265 2241 ISZ XFIND /2ND EXIT = FOUND 2835 12266 1023 FEND3, TAD THISLN /1ST RETURN = NOT FOUND 2836 12267 7001 IAC 2837 12270 3017 DCA AXOUT /SET "TEXTP". 2838 12271 3020 DCA XCT 2839 12272 5641 JMP I XFIND /--RETURN-- 2840 2841 2842 12273 0000 UTRA, 0 /UNPACK CHARACTER. - "GETC" 2843 12274 4327 JMS GET1 2844 12275 7710 UTE, SPA CLA /NORM & EXTEND 2845 12276 1002 TAD C100 /300-337 & 340-376 2846 12277 1356 TAD M137 /240-276 & 200-236 2847 12300 1066 TAD CHAR 2848 12301 7450 SNA 2849 12302 5315 JMP UTX /"?" FOUND 2850 12303 1075 TAD P337 2851 12304 3066 UTQ, DCA CHAR 2852 12305 1026 TAD DEBGSW 2853 12306 1100 TAD DMPSW 2854 12307 7650 SNA CLA /PRINT ONLY IF BOTH ARE ZERO. 2855 12310 4551 PRINTC 2856 12311 5673 JMP I UTRA /--RETURN-- 2857 12312 4327 EXTR, JMS GET1 2858 12313 7040 CMA 2859 12314 5275 JMP UTE 2860 12315 1026 UTX, TAD DEBGSW /TEST FOR TRACE-ENABLED 2861 12316 7640 SZA CLA 2862 12317 5325 JMP .+6 2863 12320 1100 TAD DMPSW /FLIP THE TRACE FLOP 2864 12321 7650 SNA CLA 2865 12322 7001 IAC 2866 12323 3100 DCA DMPSW 2867 12324 5274 JMP UTRA+1 /GET NEXT CHARACTER INSTEAD. 2868 12325 1110 TAD P277 /TRACE DISABLED = RETURN "?" 2869 12326 5304 JMP UTQ 2870 12327 0000 GET1, 0 /UNPACK 6-BITS 2871 12330 2020 ISZ XCT /STARTS=0 2872 12331 5344 JMP GET3 2873 12332 1021 TAD GTEM 2874 12333 0122 GEND, AND P77 2875 12334 3066 DCA CHAR /SAVE 2876 12335 1066 TAD CHAR 2877 12336 1103 TAD M77 2878 12337 7650 SNA CLA 2879 12340 5312 JMP EXTR /EXTENDED 2880 12341 1066 TAD CHAR 2881 12342 1355 TAD M40 2882 12343 5727 JMP I GET1 /--RETURN-- 2883 12344 4574 GET3, JMS I DAXOUT /TAD I AXOUT 2884 12345 3021 DCA GTEM 2885 12346 7040 CMA 2886 12347 3020 DCA XCT 2887 12350 1021 TAD GTEM 2888 12351 7112 RTR CLL 2889 12352 7012 RTR 2890 12353 7012 RTR 2891 12354 5333 JMP GEND 2892 12355 7740 M40, -40 2893 12356 7641 M137, -137 2894 12357 0000 XENDLN, 0 /TERMINATE THE BUFFERED LINE - "ENDLN" 2895 12360 6201 CDF 2896 12361 1425 TAD I LASTLN /SAVE OLD POINTER 2897 12362 3460 DCA I BUFR 2898 12363 1060 TAD BUFR /POINT TO NEW LAST LINE 2899 12364 3425 DCA I LASTLN 2900 12365 1061 TAD ADD /CHECK FOR EXTRA INFO 2901 12366 7440 SZA 2902 12367 3410 DCA I AXIN 2903 12370 1010 TAD AXIN /COMPUTE NEW END OF BUFFER 2904 12371 7001 IAC 2905 12372 3060 DCA BUFR 2906 12373 3531 DCA I LIBN /WE'VE ADDED A NEW LINE 2907 12374 6211 CDF 10 /KILL 'CURRENT PROGRAM SAVED' FLAG 2908 12375 5757 JMP I XENDLN /--RETURN-- 2909 /--------------------------------------------------------------------- 2910 2911 2912 2913 TLIST3=. /LITERAL TERMINATORS 2914 12376 1261 TASK4 /" 2915 12377 0612 PC1 /C.R. = AUTOMATIC QUOTE MATCH 2916 2917 2918 INFIX=. /DATA CONTROL CHARACTERS 2919 12400 6202 FLINTP+2 /LEFT ARROW = KILL 2920 12401 0757 INPUT+1 /RUBOUT = IGNORE 2921 12402 0757 INPUT+1 /L.F. = IGNORE 2922 12403 6250 ENDFI+5 /ALT MODE = EXIT 2923 2924 12404 0757 INPUT+1 /^L IN ASK STATEMENT, IGNORE IT 2925 12405 0001 FLTONE, 0001 /(NO RELATIVE REFERENCES) 2926 12406 2000 2000 2927 12407 0000 FLTZER, 0000 2928 12410 0000 0000 2929 12411 0000 0000 2930 12412 0000 0000 2931 12413 7766 M12, -12 /DECIMAL CONVERSION FACTOR FOR "PRNT" 2932 /---------------------------------------------------------------------- 2933 2934 2935 12414 0000 XPUSHJ, 0 2936 12415 7301 CLA CLL IAC 2937 12416 1214 TAD XPUSHJ /BUMP RETURN ADDRESS 2938 12417 4541 PUSHA /SAVE IT ON THE STACK 2939 12420 1614 TAD I XPUSHJ /GET THE ADDRESS 2940 12421 3214 DCA XPUSHJ /INDIRECT INDIRECT! 2941 12422 5614 JMP I XPUSHJ 2942 2943 12423 0000 XPRNT, 0 /PRINT A LINE NUMBER - "PRNTLN" 2944 12424 1067 TAD LINENO 2945 12425 4557 RTL6 2946 12426 0122 AND P77 2947 12427 4240 JMS PRNT /TWO DIGIT "PART" NUMBER 2948 12430 1102 TAD PER 2949 12431 4551 PRINTC /PERIOD FOR SEPARATION 2950 12432 1067 TAD LINENO 2951 12433 4240 JMS PRNT /TWO DIGIT "STEP" NUMBER. 2952 12434 1360 TAD M140 2953 12435 3066 DCA CHAR /SAVE SPACE IN CHAR. 2954 12436 4551 PRINTC /PRINT TRAILING SPACE 2955 12437 5623 JMP I XPRNT /--RETURN-- 2956 VAL=T1 2957 12440 0000 PRNT, 0 /PRINT TWO DECIMAL DIGITS 2958 12441 0106 AND P177 2959 12442 3032 DCA VAL 2960 12443 1113 TAD C260 2961 12444 3033 DCA T3 2962 12445 5250 JMP .+3 2963 12446 2033 ISZ T3 2964 12447 3032 XYZ, DCA VAL 2965 12450 1032 TAD VAL 2966 12451 1213 TAD M12 2967 12452 7500 SMA 2968 12453 5246 JMP XYZ-1 2969 12454 7200 CLA 2970 12455 1033 TAD T3 2971 12456 4551 PRINTC 2972 12457 1032 TAD VAL 2973 12460 1113 TAD C260 2974 12461 4551 PRINTC 2975 12462 5640 JMP I PRNT /--RETURN-- 2976 12463 0000 OUT, 0 /OUTPUT A CHARACTER - "PRINTC" 2977 12464 7450 SNA /USE (AC) OR (CHAR) 2978 12465 1066 TAD CHAR 2979 12466 6202 CIF 2980 12467 4703 JMS I TAB /COUNT CHARACTERS 2981 12470 5273 JMP OUTCR /IT WAS A CR, PRINT CR/LF 2982 12471 4463 JMS I OUTDEV /PRINT NORMAL CHAR 2983 12472 5663 JMP I OUT 2984 12473 1077 OUTCR, TAD CCR 2985 12474 4463 JMS I OUTDEV 2986 12475 1076 TAD CLF 2987 12476 4463 JMS I OUTDEV 2988 12477 1123 TAD C200 /PRINT 2 NULLS 2989 12500 4463 JMS I OUTDEV /AFTER EACH CR/LF 2990 12501 1123 TAD C200 2991 12502 5271 JMP OUTCR-2 2992 12503 6325 TAB, TABCNT 2993 2994 12504 0000 PACBUF, 0 /PACK A CHARACTER - "PACKC" 2995 12505 1110 TAD P277 2996 12506 7041 CIA 2997 12507 1066 TAD CHAR 2998 12510 7450 SNA /CHANGE 277 TO 337 2999 12511 1354 TAD P40 3000 12512 1101 TAD M100 3001 12513 7450 SNA /TEST FOR RUBOUT. 3002 12514 5757 JMP I RUBIT 3003 12515 1355 TAD P377 3004 12516 3071 DCA T2 /SAVE INPUT ITEM 3005 12517 1071 TAD T2 /SO THAT QUESTION DOESN'T MAKE 3006 12520 0356 AND C140 /CHAR LOOK LIKE A LEFT-ARROW 3007 12521 1360 TAD M140 3008 12522 7440 SZA /DATA WORD. 3009 12523 1356 TAD C140 3010 12524 7650 SNA CLA 3011 12525 5334 JMP ESCA /340-377 AND 200-237 3012 12526 1071 PA1, TAD T2 /240-337 3013 12527 0122 AND P77 3014 12530 7440 SZA /IGNORE 300 3015 12531 4337 JMS PCK1 3016 12532 6211 PACX, CDF 10 /RESTORE FIELD AFTER 'PACKC' 3017 12533 5704 JMP I PACBUF /--RETURN-- 3018 12534 1122 ESCA, TAD P77 3019 12535 4337 JMS PCK1 3020 12536 5326 JMP PA1 3021 12537 0000 PCK1, 0 3022 12540 2062 ISZ XCTIN /=0 TO START 3023 12541 5361 JMP ROT 3024 12542 1061 TAD ADD 3025 12543 4573 JMS I DAXIN /DCA I AXIN 3026 12544 3061 DCA ADD /CLEAR PACKING WORD /*8K* 3027 12545 1013 TAD PDLXR /CHECK FOR OVERFLOW /*8K* 3028 12546 7141 CMA IAC CLL /*8K* 3029 12547 1001 TAD P13 /RESERVATIONS FOR PUSH-DOWN LIST/*8K* 3030 12550 1010 TAD AXIN 3031 12551 7620 SNL CLA 3032 12552 5737 JMP I PCK1 /--RETURN-- 3033 12553 4566 ERROR2 /FULL BUFFER 3034 12554 0040 P40, 40 3035 12555 0377 P377, 377 3036 12556 0140 C140, 140 3037 12557 3000 RUBIT, RUB1 3038 12560 7640 M140, -140 3039 12561 4557 ROT, RTL6 /(EAE) 3040 12562 3061 DCA ADD 3041 12563 7040 CMA 3042 12564 3062 DCA XCTIN 3043 12565 5737 JMP I PCK1 3044 3045 3046 12566 0000 PS8PC, 0 /PC 3047 12567 6201 CDF 3048 12570 1422 TAD I PC 3049 12571 6211 CDF 10 3050 12572 5766 JMP I PS8PC 3051 3052 12573 0000 AXOUTD, 0 3053 12574 6201 CDF 3054 12575 1417 TAD I AXOUT 3055 12576 6211 CDF 10 3056 12577 5773 JMP I AXOUTD 3057 /INPUT OUTPUT HANDLERS -- NO INTERRUPTS 3058 *2600 3059 3060 12600 7560 MBREAK, -220 /CONTROL-P 3061 12601 7575 MCTRLC, -203 /CONTROL-C 3062 3063 12602 2016 RANRAN, ISZ RISZ /BUMP RANDOM NUMBER 3064 12603 5206 JMP XI33+1 /WHILE WAITING FOR INPUT 3065 12604 5202 JMP RANRAN /DON'T LEAVE ZERO 3066 3067 12605 0000 XI33, 0 /VIA (INDEV) 3068 12606 6031 KSF 3069 12607 5202 JMP RANRAN /BUMP RANDOM NUMBER 3070 12610 6036 KRB 3071 12611 0106 AND P177 /IGNORE PARITY BIT 3072 12612 7450 SNA 3073 12613 5206 JMP XI33+1 /IGNORE NULL 3074 12614 1123 TAD C200 /FORCE PARITY BIT ON 3075 12615 4241 JMS XTSBRK 3076 12616 5605 JMP I XI33 /--RETURN-- 3077 3078 12617 0000 XOUTL, 0 /VIA (OUTDEV) 3079 12620 3205 DCA XI33 /TEMP. STORAGE 3080 12621 1205 TAD XI33 3081 12622 6041 TSF 3082 12623 5227 JMP XOUBRK /CHECK FOR BREAK CHARS. 3083 12624 6046 TLS 3084 12625 7300 CLA CLL 3085 12626 5617 JMP I XOUTL /--RETURN-- 3086 3087 12627 7300 XOUBRK, CLA CLL 3088 12630 6031 KSF /BREAK? 3089 12631 5221 JMP XOUTL+2 /NO 3090 12632 6036 KRB /YES 3091 12633 0106 AND P177 3092 12634 1123 TAD C200 3093 12635 4241 JMS XTSBRK 3094 12636 7300 CLA CLL 3095 12637 5221 JMP XOUTL+2 3096 3097 12640 0000 XTSBSV, 0 /TEMPORARY STORAGE FOR XTSBRK 3098 12641 0000 XTSBRK, 0 /TEST FOR BREAK CHAR 3099 12642 3240 DCA XTSBSV 3100 12643 1240 TAD XTSBSV 3101 12644 1201 TAD MCTRLC 3102 12645 7650 SNA CLA 3103 12646 5255 JMP CNTRC /RETURN TO MONITOR 3104 12647 1240 TAD XTSBSV 3105 12650 1200 TAD MBREAK 3106 12651 7650 SNA CLA 3107 12652 5276 JMP RECOVR /RETURN TO * 3108 12653 1240 TAD XTSBSV /NO BREAK -- RESTORE AC 3109 12654 5641 JMP I XTSBRK 3110 3111 /HANDLE CTRL/C 3112 12655 6203 CNTRC, CIF CDF 3113 12656 5657 JMP I .+1 3114 12657 7600 7600 3115 3116 12660 0000 XKSF, 0 /TEST FOR KEYBOARD BREAK 3117 12661 6031 KSF 3118 12662 5660 JMP I XKSF /NO 3119 12663 6036 KRB 3120 12664 0106 AND P177 3121 12665 1123 TAD C200 3122 12666 4241 JMS XTSBRK 3123 12667 7300 CLA CLL /IGNORE NON-BREAK CHAR 3124 12670 5660 JMP I XKSF 3125 3126 /ERROR RECOVERY PROCEEDURE 3127 3128 12671 3272 ERROR5, DCA .+1 3129 12672 0000 ERR2, 0 3130 12673 7340 CLA CLL CMA /PUT ERROR CODE IN 'LINENO' FOR 'PRNTLN' 3131 12674 1272 TAD ERR2 3132 12675 7410 SKP 3133 12676 1123 RECOVR, TAD C200 /TELETYPE BREAK 3134 12677 3067 DCA LINENO 3135 12700 3034 DCA INBUF /AND INPUT BUFFER 3136 12701 6046 TLS /SET TTY FLAG TO PREVENT HANGUP 3137 12702 6041 TSF 3138 12703 5302 JMP .-1 3139 12704 6203 RECOVX, CIF CDF /DO LOWER FIELD FIXES 3140 JMP XRESTOR /IN FIELD 0 off page ^ 12705 5777 3141 12706 1376 RECOVY, TAD (PRINTC /'OPEN INPUT TTY:,ECHO; OPEN OUTPUT TTY:' 3142 DCA PPRNT off page ^ 12707 3775 3143 12710 1374 TAD (XI33 3144 12711 3064 DCA INDEV 3145 12712 1373 TAD (XOUTL 3146 12713 3063 DCA OUTDEV 3147 12714 1077 TAD CCR /PRINT CR/LF BEFORE ERROR MESSAGE 3148 12715 4551 PRINTC 3149 12716 1110 TAD P277 3150 12717 4551 PRINTC /PRINT A '?'? 3151 12720 4553 PRNTLN 3152 12721 2022 ISZ PC 3153 12722 4567 JMS I DPC 3154 12723 7450 SNA 3155 12724 5332 JMP .+6 3156 12725 3067 DCA LINENO 3157 12726 1101 TAD P7700 3158 12727 4551 PRINTC 3159 12730 4551 PRINTC 3160 12731 4553 PRNTLN 3161 12732 1077 TAD CCR 3162 12733 4551 PRINTC 3163 12734 5177 JMP START 3164 3165 12773 2617 PAGE 12774 2605 12775 2162 12776 4551 12777 5750 3166 /CHARACTER REMOVAL ROUTINE 3167 3168 13000 1062 RUB1, TAD XCTIN /RUBOUT ONE LETTER 3169 13001 7640 SZA CLA 3170 /---------------------------------------------------------------------- 3171 13002 5210 JMP .+6 3172 13003 1010 TAD AXIN 3173 13004 7041 CIA 3174 13005 1027 TAD PACKST 3175 13006 7700 SMA CLA /TEST NULL LINE 3176 13007 5635 JMP I RUB5 3177 13010 1245 TAD SPLAT /FOR A RUBOUT ACKNOWLEDGEMENT 3178 13011 4400 JMS I ECHOP /SHALL WE ECHO A '\'? 3179 13012 1010 TAD AXIN 3180 13013 3071 DCA T2 3181 13014 6201 CDF /LOWER FIELD TO RUBOUT TEXT 3182 13015 2062 ISZ XCTIN /TEST HALF 3183 13016 5236 JMP RUB2 3184 13017 1471 TAD I T2 /"ADD" IS FULL. 3185 13020 0122 AND P77 3186 13021 1103 TAD M77 3187 13022 7640 SZA CLA /TEST FOR EXTEND 3188 13023 5233 JMP RUB4 3189 13024 7040 RUB3, CMA /SET SWITCH 3190 13025 3062 DCA XCTIN 3191 13026 7040 CMA /BACKUP POINTER 3192 13027 1010 TAD AXIN 3193 13030 3010 DCA AXIN 3194 13031 1471 TAD I T2 /RESET ADD 3195 13032 0101 AND P7700 3196 13033 3061 RUB4, DCA ADD 3197 13034 5635 JMP I RUB5 3198 13035 2532 RUB5, PACX 3199 13036 1471 RUB2, TAD I T2 /CHECK FOR EXTENDED 3200 13037 0101 AND P7700 3201 13040 1002 TAD C100 3202 13041 7640 SZA CLA 3203 13042 5224 JMP RUB3 3204 13043 3471 DCA I T2 /SAVE CORRECTION 3205 13044 5225 JMP RUB3+1 3206 13045 0334 SPLAT, 334 3207 /SYMBOL TABLE TYPEOUT ROUTINE 3208 3209 13046 1133 TDUMP, TAD END /INIT POINTER FOR DUMP (DON'T DUMP SECRET) 3210 13047 3030 DCA PT1 3211 13050 1031 TAD LASTV /TEST FOR END OF LIST 3212 13051 7041 CIA 3213 13052 1030 TAD PT1 3214 13053 7650 SNA CLA 3215 13054 5540 POPJ 3216 13055 1430 TAD I PT1 /GET THE VARIABLE 3217 13056 6201 CDF /FOR PFOCAL 3218 13057 3714 DCA I OP+1 3219 13060 6211 CDF 10 3220 13061 1313 TAD OP /SETUP UNPACK POINTERS 3221 13062 3017 DCA AXOUT 3222 13063 3020 DCA XCT 3223 13064 4545 GETC /READ AND PRINT "XX(" 3224 13065 4551 PRINTC 3225 13066 4545 GETC 3226 13067 4551 PRINTC 3227 13070 4545 GETC 3228 13071 4551 PRINTC 3229 13072 2030 ISZ PT1 3230 13073 1430 TAD I PT1 /PRINT SUBSCRIPT TO 99 3231 13074 4712 JMS I PRNT2 3232 13075 4545 GETC /PRINT ")" 3233 13076 4551 PRINTC 3234 13077 2030 ISZ PT1 3235 13100 4407 FINT /PICK UP VALUE 3236 13101 0430 FGET I PT1 3237 13102 0000 FXIT 3238 13103 4527 JMS I FOUTPUT /PRINT VALUE 3239 13104 1077 TAD CCR 3240 13105 4551 PRINTC 3241 13106 1070 TAD GINC 3242 13107 1111 TAD M2 3243 13110 1030 TAD PT1 3244 13111 5247 JMP TDUMP+1 3245 3246 13112 2440 PRNT2, PRNT 3247 13113 0203 OP, PC0+3 3248 13114 0204 PC0+4 3249 13115 0000 0 3250 13116 0000 ECHO, 0 3251 13117 3066 DCA CHAR /SAVE IN CHAR 3252 13120 1725 TAD I PPPRNT /DO WE WANT TO PRINT? 3253 13121 7650 SNA CLA 3254 13122 5716 JMP I ECHO /NO 3255 13123 4551 PRINTC /YES 3256 13124 5716 JMP I ECHO 3257 13125 2162 PPPRNT, PPRNT 3258 3259 13126 0000 ICHARF, 0 /INPUT A CHARACTER FROM A FILE 3260 13127 6203 CIF CDF 3261 13130 4732 JMS I CHARI /CALL LOWER FIELD 3262 13131 5726 JMP I ICHARF 3263 3264 13132 5463 CHARI, ICHAR 3265 3266 13133 6202 FILER, CIF /FILE COMMANDS ('OPEN') 3267 13134 5735 JMP I .+1 3268 13135 5442 FILEST 3269 3270 13136 2605 X133P, XI33 3271 3272 13137 0000 TERMER, 0 /CHECK FOR TERMINATOR (;, CR, SPACE, 3273 13140 4550 SORTC 3274 13141 1374 GLIST-1 3275 13142 2337 ISZ TERMER 3276 13143 6203 CIF CDF 3277 13144 5737 JMP I TERMER 3278 3279 13145 0000 EOF, 0 /TRYING TO READ FROM A FILE AFTER END 3280 13146 1336 TAD X133P /(SHAME ON YOU!) 3281 13147 3064 DCA INDEV /RESET POINTER TO TTY 3282 13150 1110 TAD P277 /PRINT A '?' 3283 JMS XOUTL /ON THE TELETYPE off page ^ 13151 4777 3284 13152 4464 JMS I INDEV /READ A CHARACTER 3285 13153 5745 JMP I EOF 3286 3287 3288 13154 0000 OCHAR, 0 /OUTPUT A CHARACTER 3289 13155 3071 DCA T2 3290 13156 7410 OUTECH, SKP /ECHO ON TELETYPE? 3291 13157 5364 JMP .+5 3292 13160 1071 TAD T2 /MNO 3293 13161 7450 SNA /YES 3294 13162 7330 CLA CLL CML RAR /LET HIM PRINT NULLS! 3295 JMS XOUTL off page ^ 13163 4777 3296 13164 1071 TAD T2 3297 13165 6202 CIF 3298 13166 4770 JMS I NOCARE /OUTPUT IT 3299 13167 5754 JMP I OCHAR 3300 13170 3665 NOCARE, NOCHAR 3301 3302 13171 0000 PRINTX, 0 3303 13172 4463 JMS I OUTDEV 3304 13173 6202 CIF 3305 13174 5771 JMP I PRINTX 3306 3307 13177 2617 PAGE 3308 3309 /------------------------------------------------------------------- 3310 /TEKTRONIX 4010 GRAPHICS I/O ROUTINES 3311 3312 GS=235 3313 US=37 3314 SUB=232 3315 ENQ=205 3316 ESC=233 3317 3318 XJ=3012 3319 YJ=3112 3320 3321 3322 13200 1220 FDIS, TAD FCHKP /CHEAT LIKE HELL! 3323 13201 3151 DCA XPRNTC /KLUDGE PRINTC SO WE KNOW WHAT MODE WE'RE IN 3324 13202 4453 JMS I INTEGER /CHECK FIRST ARG (FDIS(I,X,Y)) 3325 13203 3244 DCA FDISI /SAVE FOR LATER TESTING 3326 13204 1244 TAD FDISI /ALSO TEST NOW 3327 13205 7740 SMA SZA CLA /NEGATIVE ARG MEANG START POINT PLOTTING 3328 13206 1245 TAD FDSW /ARE WE IN GRAPHICS MODE? 3329 13207 7640 C40, SZA CLA 3330 13210 5215 JMP PLOT /WE'RE IN GRAPHICS AND I WAS POSITIVE 3331 13211 1377 TAD (GS /OTHERWISE, START GRAPHICS NOW 3332 JMS XOUTL off page ^ 13212 4776 3333 13213 3232 DCA XHIGH 3334 13214 3225 DCA YHIGH 3335 13215 4537 PLOT, PUSHJ /GET X COORDINATE 3336 13216 1612 EVAL-1 /SKIP COMMA 3337 13217 4453 JMS I INTEGER 3338 13220 3274 FCHKP, DCA FCHK /TEMP 3339 13221 4537 PUSHJ /GET Y COORDINATE 3340 13222 1612 EVAL-1 /SKIP COMMA 3341 13223 4453 JMS I INTEGER 3342 13224 4245 JMS HIGH /AREN'T WE THOUGH!! 3343 13225 0000 YHIGH, 0 3344 13226 1207 TAD C40 /ADD APPROPRIATE SIGNAL BITS 3345 JMS XOUTL off page ^ 13227 4776 3346 13230 1274 TAD FCHK /SAVED X 3347 13231 4245 JMS HIGH /DO HIGH ORDER X 3348 13232 0000 XHIGH, 0 3349 13233 3274 DCA FCHK 3350 13234 1274 TAD FCHK 3351 JMS XOUTL off page ^ 13235 4776 3352 13236 1244 TAD FDISI /FIRST ARGUMENT OF FDIS 3353 13237 7700 SMA CLA 3354 13240 5535 JMP I EFUN3I /RETURN FROM VECTOR PLOTTING: I=0 OR 1 3355 13241 1274 TAD FCHK /SEND XLOW AGAIN TO BRIGHTEN POINT 3356 JMS XOUTL off page ^ 13242 4776 3357 13243 5535 JMP I EFUN3I /RETURN FROM POINT PLOTTING 3358 3359 13244 0000 FDISI, 0 /SAVED VALUE OF FIRST ARGUMENT TO FDIS 3360 3361 FDSW=. 3362 13245 0000 HIGH, 0 /SUB TO CHECK HIGH-ORDER, ONLY PRINT 3363 13246 3332 DCA FDT2 /IF DIFFERENT FROM PREVIOUS 3364 13247 1332 TAD FDT2 3365 13250 7112 CLL RTR 3366 13251 7012 RTR;RAR 13252 7010 3367 13253 0375 AND (37 3368 13254 1207 TAD C40 3369 13255 3355 DCA JFLOAT 3370 13256 1355 TAD JFLOAT 3371 13257 1645 TAD I HIGH /COMPARE WITH LAST HIGH 3372 13260 7650 SNA CLA 3373 13261 5267 JMP HXIT /OK 3374 13262 1355 TAD JFLOAT /NOT SO GOOD, PRINT IT 3375 JMS XOUTL off page ^ 13263 4776 3376 13264 1355 TAD JFLOAT 3377 13265 7141 CLL CIA 3378 13266 3645 DCA I HIGH /SAVE FOR NEXT TIME 3379 13267 2245 HXIT, ISZ HIGH /SKIP 3380 13270 1332 TAD FDT2 3381 13271 0375 AND (37 3382 13272 1002 TAD C100 /TAG BIT FOR LOW ORDER 3383 13273 5645 JMP I HIGH 3384 3385 13274 0000 FCHK, 0 /PRINTC WAS CALLED, SWITCH TO NORMAL 3386 13275 3245 DCA HIGH /SAVE CHAR IN AC 3387 13276 1374 TAD (OUT /POINTER TO OUT 3388 13277 3151 DCA XPRNTC 3389 13300 1375 TAD (US 3390 JMS XOUTL off page ^ 13301 4776 3391 13302 1245 TAD HIGH /PRINT CHAR 3392 13303 4551 PRINTC /WE RESTORED THE POINTER, REMEMBER 3393 13304 3245 DCA FDSW /RESET MODE SWITCH 3394 13305 5674 JMP I FCHK 3395 3396 13306 1373 FJOY, TAD (ESC /SEQUENCE STARTS WITH 'ESC' (4010) 3397 JMS XOUTL off page ^ 13307 4776 3398 13310 4453 JMS I INTEGER /CHECK ARG 3399 13311 7650 SNA CLA 3400 13312 1372 TAD (SUB-ENQ /ZERO, TURN ON CURSOR AND WAIT 3401 13313 1371 TAD (ENQ /NON-ZERO, READ IT NOW 3402 JMS XOUTL off page ^ 13314 4776 3403 13315 1046 TAD FLAC+2 /FOR I=1, WILL BE NO INITIAL CHAR 3404 13316 7750 SPA SNA CLA / THEREFORE, DON'T GET IT 3405 JMS XI33 /READ FIRST CHAR (STATUS OR CHAR TYPED) off page ^ 13317 4770 3406 13320 3274 DCA FCHK /TEMP 3407 13321 1367 TAD (XJ /X-COORDINATE GOES IN 'XJ' 3408 13322 4332 JMS JLOOK /PUT IT THERE 3409 13323 1366 TAD (YJ /DITTO FOR 'YJ' 3410 13324 4332 JMS JLOOK 3411 JMS XI33 /TO GET CR (AND IGNORE IT!) off page ^ 13325 4770 3412 13326 7300 CLA CLL 3413 13327 1274 TAD FCHK 3414 13330 4355 JMS JFLOAT /FLOAT FIRST CHAR FOR RETURN 3415 13331 5535 JMP I EFUN3I 3416 3417 FDT2=. 3418 13332 0000 JLOOK, 0 /CREATES VARIABLE IF NEEDED, AND 3419 13333 3056 DCA EFOP /FLOATS AND STORES CROSSHAIR COORDINATE 3420 13334 4537 PUSHJ 3421 13335 1431 GS1 /CALL 'GETVAR' 3422 JMS XI33 /GET HIGH-ORDER off page ^ 13336 4770 3423 13337 0375 AND (37 /MASK IT 3424 13340 7106 CLL RTL;RTL;RAL 13341 7006 13342 7004 3425 13343 3045 DCA FLAC+1 /SNEAKY, ISN'T IT? 3426 JMS XI33 /GET LOW-ORDER off page ^ 13344 4770 3427 13345 0375 AND (37 3428 13346 1045 TAD FLAC+1 3429 13347 4355 JMS JFLOAT /FLOAT IT 3430 13350 4407 FENT /AND PUT IT AWAY 3431 13351 7000 FNOR 3432 13352 6430 FPUT I PT1 /SET BY 'GETVAR' 3433 13353 0000 FEXT 3434 13354 5732 JMP I JLOOK 3435 3436 13355 0000 JFLOAT, 0 /FLOATS 12-BIT AC 3437 13356 3045 DCA FLAC+1 3438 13357 1001 TAD P13 /PROPER EXPONENT 3439 13360 3044 DCA FLAC 3440 13361 3046 DCA FLAC+2 3441 13362 3047 DCA FLAC+3 /CLEAR OTHER WORDS 3442 13363 5755 JMP I JFLOAT 3443 3444 3445 13366 3112 PAGE 13367 3012 13370 2605 13371 0205 13372 0025 13373 0233 13374 2463 13375 0037 13376 2617 13377 0235 3446 3447 3448 STVAR=. 3449 *5774 3450 15774 0000 MGETC, 0 /GETC FAKE FOR LOWER FIELD 3451 15775 4545 GETC 3452 15776 6202 CIF 3453 15777 5774 JMP I MGETC 3454 *6160 3455 16160 0000 THISD, 0 3456 16161 6201 CDF 3457 16162 1423 TAD I THISLN 3458 16163 6211 CDF 10 3459 16164 5760 JMP I THISD 3460 3461 16165 0000 PT1D, 0 3462 16166 6201 CDF 3463 16167 1430 TAD I PT1 3464 16170 6211 CDF 10 3465 16171 5765 JMP I PT1D 3466 3467 *6311 3468 16311 4407 XRAN, FENT /PSEUDO-RANDOM NUMBER 3469 16312 0337 FGET RNDM /X(1)=(2^17+3)*X(0) MOD 2^16 3470 16313 6040 FPUT EX1 3471 16314 0000 FEXT 3472 16315 1335 TAD M16 3473 16316 3337 DCA T1S 3474 16317 4526 JMS I DOUBLE 3475 16320 2337 ISZ T1S 3476 16321 5317 JMP .-2 3477 16322 4736 JMS I PADDR 3478 16323 4526 JMS I DOUBLE 3479 16324 4736 JMS I PADDR 3480 16325 4407 FINT 3481 16326 6337 FPUT RNDM 3482 16327 0000 FEXT 3483 16330 3044 DCA FLAC 3484 16331 7350 CLA CLL CMA RAR /=3777 3485 16332 0045 AND FLAC+1 3486 16333 3045 DCA FLAC+1 /BE POSITIVE IT'S POSITIVE 3487 16334 5535 JMP I EFUN3I 3488 3489 16335 7762 M16, -16 3490 16336 5733 PADDR, DUBLAD 3491 RNDM=. 3492 16337 0000 T1S, 0 3493 16340 4421 4421 3494 16341 3040 3040 3495 16342 0001 0001 3496 16343 0000 XRTD, 0 3497 16344 6201 CDF 3498 16345 1411 TAD I XRT 3499 16346 6211 CDF 10 3500 16347 5743 JMP I XRTD 3501 16350 0000 AXIND, 0 3502 16351 6201 CDF 3503 16352 3410 DCA I AXIN 3504 16353 6211 CDF 10 3505 16354 5750 JMP I AXIND 3506 3507 /THIS IS THE "LIBRARY HEAD" 3508 *7503 3509 3510 17503 4560 LIB, SPNOR /IGNORE SPACES 3511 17504 6041 TSF /WAIT FOR OUTPUT TO FINISH 3512 17505 5304 JMP .-1 /(DECTAPE SYSTEMS REALLY NEED THIS!) 3513 17506 6203 CIF CDF /CALL LOWER FIELD 3514 17507 5777 JMP I (LOWLIB 3515 3516 17510 1376 TAD (JMP I GOSWITCH+1 /RETURN TO APPROPRIATE ROUTINE 3517 17511 1313 TAD GOSWITCH 3518 17512 3313 DCA GOSWITCH 3519 17513 5714 GOSWITCH, JMP I .+1 3520 3521 17514 0607 PROC 3522 17515 0177 START 3523 17516 1551 LGOSUB 3524 17517 0602 GOTO+1 3525 3526 17520 4552 FIN, READC /SINGLE CHARACTER INPUT FUNCTION 3527 17521 1066 TAD CHAR /FLOAT THE CHARACTER 3528 17522 3045 DCA FLAC+1 3529 17523 3046 DCA FLAC+2 /CLEAR THE REST OF FLAC 3530 17524 3047 DCA FLAC+3 3531 17525 1001 TAD P13 /AND SET THE PROPER EXPONENT 3532 17526 3044 DCA FLAC 3533 17527 5535 JMP I EFUN3I 3534 3535 17530 2163 ECHOGO, CHIN+7 3536 17531 2163 CHIN+7 3537 3538 17532 4453 FOUT, JMS I INTEGER /SINGLE CHARACTER OUTPUT FUNCTION 3539 17533 7450 SNA 3540 17534 1124 TAD P4000 /IN CASE IT'S ZERO 3541 17535 4551 PRINTC 3542 17536 5535 JMP I EFUN3I 3543 3544 17537 0000 CPRNT, 0 /CROSS FIELD FAKES! 3545 17540 4551 PRINTC 3546 17541 6203 CIF CDF 3547 17542 5737 JMP I CPRNT 3548 3549 17543 0000 PGETLN, 0 3550 17544 4554 GETLN 3551 17545 6203 CIF CDF 3552 17546 5743 JMP I PGETLN 3553 3554 17547 1375 FRAN, TAD (XRAN /RANDOM RANDOM NUMBERS 3555 17550 3774 DCA I (PFRAN /(FIRST CALL ONLY) 3556 17551 1016 TAD RISZ /INITIALIZE 'RNDM' 3557 17552 3773 DCA I (RNDM+1 3558 17553 5775 JMP I (XRAN 3559 3560 17554 1045 XSGN, TAD FLAC+1 /REAL SIGNUM FUNCTION!! 3561 17555 7650 SNA CLA 3562 17556 5535 JMP I EFUN3I 3563 17557 4543 PUSHF 3564 17560 2405 FLTONE 3565 17561 4544 POPF 3566 17562 0044 FLAC 3567 JMP XABS off page ^ 17563 5772 3568 3569 3570 3571 3572 3573 17572 2014 PAGE 17573 6340 17574 0377 17575 6311 17576 5714 17577 6400 3574 /EFLOTB -- PS/8 FOCAL FLOATING POINT PACKAGE 3575 3576 /EXCEPT FOR NON-LISTING CODE WHICH WAS REMOVED FROM THE BEGINNING 3577 /OF THE FLOATING POINT PACKAGE, THIS SEGMENT IS IDENTICAL WITH 3578 /PFLOTA. THE CODE REMOVED ASSEMBLED INTO 14000 BUT WAS OVERLAID 3579 /BY THE INITIALIZATION (FOCN). 3580 /DECEMBER 12, 1974 3581 3582 /COPYRIGHT 1971 DIGITAL EQUIPMENT CORPORATION 3583 / MAYNARD, MASSACHUSETTS 01754 3584 3585 / 3586 /PAGE ZERO OF THE 3587 /FLOATING POINT ARITHMETIC INTERPRETER FOR FOCAL 3588 3589 3590 3591 FIELD 1 3592 3593 *40 3594 3595 10040 0000 EX1, 0 /OPERAND STORAGE 3596 10041 0000 AC1H, 0 3597 10042 0000 AC1L, 0 3598 10043 0000 OVER1, 0 3599 3600 FLAC=. /FLOATING ACCUMULATOR 3601 10044 0000 EXP, 0 /F.A. 3602 10045 0000 HORD, 0 3603 10046 0000 LORD, 0 3604 10047 0000 OVER2, 0 3605 3606 10050 0000 SIGNF, 0 /FLOATIN SIGN 3607 3608 10051 6603 MINSKI, ACMINS /NEGATE FLAC SUBROUTINE 3609 10052 0000 FISW, 0 /OUTPUT FORMAT 3610 10053 6724 INTEGER,FIX /FIX FLAC 3611 3612 3613 3614 /FUNCTIONS CONTAINED IN THIS SECTION 3615 3616 /ARTN 3617 /FEXP 3618 /FLOG 3619 /FSIN 3620 /FCOS 3621 /XSQRT 3622 /FLOATING POINT PACKAGE - EXPONENTIAL 3623 3624 GETSGN=TAD FLAC+1 3625 RETURN=JMP I EFUN3I 3626 3627 *4600+20 3628 3629 14620 1045 FEXP, GETSGN /TAKE ABSOLUTE VALUE 3630 14621 7710 SPA CLA 3631 14622 4724 JMS I NEGP 3632 14623 3033 DCA T3 /C(SIGN)=-1 IF I X2<0 3633 14624 4407 FINT 3634 14625 4313 FMUL LG2E 3635 14626 6675 FPUT I X2 3636 14627 0000 FEXT 3637 14630 4453 JMS I INTEGER /TAKE INTEGER PART 3638 14631 3325 DCA FLAG2 /SAVE LOW ORDER DATA 3639 14632 4407 FINT 3640 14633 7000 FNOR 3641 14634 6676 FPUT I XSQ2 3642 14635 0675 FGET I X2 3643 14636 2676 FSUB I XSQ2 3644 14637 6675 FPUT I X2 3645 14640 4675 FMUL I X2 3646 14641 6676 FPUT I XSQ2 3647 14642 1310 FADD DF 3648 14643 6326 FPUT TEMP 3649 14644 0305 FGET CF 3650 14645 3326 FDIV TEMP 3651 14646 2675 FSUB I X2 3652 14647 1277 FADD AF 3653 14650 6326 FPUT TEMP 3654 14651 0302 FGET BF 3655 14652 4676 FMUL I XSQ2 3656 14653 1326 FADD TEMP 3657 14654 6326 FPUT TEMP 3658 14655 0675 FGET I X2 3659 14656 3326 FDIV TEMP 3660 14657 4321 FMUL TWO 3661 14660 1316 FADD ONE 3662 14661 0000 FEXT 3663 14662 1325 TAD FLAG2 3664 14663 1044 TAD FLAC 3665 14664 3044 DCA FLAC 3666 14665 2033 ISZ T3 3667 14666 5535 RETURN 3668 14667 4407 FINT 3669 14670 6675 FPUT I X2 3670 14671 0316 FGET ONE 3671 14672 3675 FDIV I X2 3672 14673 0000 FEXT 3673 14674 5535 RETURN 3674 3675 /CONSTANTS FOR FEXP 3676 3677 14675 5322 X2, X 3678 14676 5326 XSQ2, XSQR 3679 14677 0004 AF, 0004 3680 14700 2372 2372 3681 14701 1402 1402 3682 14702 7774 BF, 7774 3683 14703 2157 2157 3684 14704 5157 5157 3685 14705 0012 CF, 0012 3686 14706 5454 5454 3687 14707 0343 0343 3688 14710 0007 DF, 0007 3689 14711 2566 2566 3690 14712 5341 5341 3691 14713 0001 LG2E, 0001 3692 14714 2705 2705 3693 14715 2435 2435 3694 14716 0001 ONE, 0001 3695 14717 2000 2000 3696 14720 0000 0000 3697 14721 0002 TWO, 0002 3698 14722 2000 2000 3699 14723 0000 0000 3700 14724 5163 NEGP, FNEG 3701 3702 14725 0000 FLAG2, 0 3703 14726 0000 TEMP, 0 3704 14727 0000 0 3705 14730 0000 0 3706 14731 0000 0 3707 3708 3709 3710 /MAIN ALGORITHM FOR ARCTANGENT 3711 3712 14732 4407 ARCALG, FINT 3713 14733 0675 FGET I X2 3714 14734 4675 FMUL I X2 3715 14735 6676 FPUT I XSQ2 3716 14736 4374 FMUL BET2 3717 14737 1371 FADD BET1 3718 14740 4676 FMUL I XSQ2 3719 14741 1366 FADD BETZ 3720 14742 6326 FPUT TEMP 3721 14743 0363 FGET ALF2 3722 14744 4676 FMUL I XSQ2 3723 14745 1360 FADD ALF1 3724 14746 4676 FMUL I XSQ2 3725 14747 1355 FADD ALFZ 3726 14750 4675 FMUL I X2 3727 14751 3326 FDIV TEMP 3728 14752 0000 FEXT 3729 14753 5754 JMP I .+1 3730 14754 5024 ARCRTN 3731 3732 3733 3734 /CONSTANTS - FLOATING ARC TANGENT 3735 14755 0000 ALFZ, 0000 3736 14756 2437 2437 3737 14757 1643 1643 3738 14760 7777 ALF1, 7777 3739 14761 3304 3304 3740 14762 4434 4434 3741 14763 7773 ALF2, 7773 3742 14764 3306 3306 3743 14765 5454 5454 3744 14766 0000 BETZ, 0000 3745 14767 2437 2437 3746 14770 1646 1646 3747 14771 0000 BET1, 0000 3748 14772 2427 2427 3749 14773 2323 2323 3750 14774 7775 BET2, 7775 3751 14775 3427 3427 3752 14776 7052 7052 3753 3754 3755 3756 /------------------------------------------------------------ 3757 /------------------------------------------------------------ 3758 /FLOATING POINT ARC TANGENT 3759 3760 *5000 3761 3762 15000 1045 ARTN, GETSGN /TAKE ABSOLUTE VALUE 3763 15001 7710 SPA CLA 3764 15002 4363 JMS FNEG 3765 15003 3033 DCA T3 3766 15004 4407 FINT 3767 15005 6635 FPUT I X1 3768 15006 2637 FSUB I CON1 3769 15007 0000 FEXT 3770 15010 1045 GETSGN 3771 15011 7710 SPA CLA 3772 15012 5221 JMP GO /LESS THAN ONE 3773 15013 4407 FINT 3774 15014 0637 FGET I CON1 3775 15015 3635 FDIV I X1 3776 15016 6635 FPUT I X1 3777 15017 0000 FEXT 3778 15020 7240 CLA CMA 3779 15021 3362 GO, DCA FLAG1 /SIGN FLAG OF RESULT 3780 15022 5623 JMP I .+1 /CALL ALGORITHM 3781 15023 4732 ARCALG 3782 15024 2362 ARCRTN, ISZ FLAG1 /RETURN HERE 3783 15025 5634 JMP I EXIT1 3784 15026 4407 FINT 3785 15027 6635 FPUT I X1 3786 15030 0636 FGET I PI2 3787 15031 2635 FSUB I X1 3788 15032 0000 FEXT 3789 15033 5634 JMP I .+1 3790 15034 5302 EXIT1, EXIT2 3791 3792 /CONSTANTS FOR ARCTANGENT 3793 15035 5322 X1, X 3794 15036 5316 PI2, PIOT 3795 15037 4716 CON1, ONE 3796 3797 3798 15040 1045 FLOG, GETSGN /FLOATING LOGARITHM 3799 15041 7450 SNA 3800 15042 4566 ERROR3 /ZERO ARGUEMENT FOR LOG 3801 15043 7710 SPA CLA 3802 15044 4566 ERROR3 /NEGATIVE ARGUMENT 3803 15045 4407 FINT 3804 15046 6756 FPUT I TEM 3805 15047 2637 FSUB I CON1 3806 15050 0000 FEXT 3807 15051 1045 GETSGN 3808 15052 7450 SNA 3809 15053 5535 RETURN 3810 15054 7700 SMA CLA 3811 15055 5264 JMP STARTL 3812 15056 4407 FINT 3813 15057 0637 FGET I CON1 3814 15060 3756 FDIV I TEM 3815 15061 6756 FPUT I TEM 3816 15062 0000 FEXT 3817 15063 7240 CLA CMA 3818 15064 3033 STARTL, DCA T3 3819 15065 1001 TAD P13 3820 15066 3044 DCA FLAC 3821 15067 7040 CMA 3822 15070 1756 TAD I TEM 3823 15071 3045 DCA FLAC+1 3824 15072 3046 DCA FLAC+2 3825 15073 3047 DCA FLAC+3 3826 15074 7001 IAC 3827 15075 3756 DCA I TEM 3828 15076 4407 FINT 3829 15077 4357 FMUL LOG2 3830 15100 6635 FPUT I X1 3831 15101 0756 FGET I TEM 3832 15102 2637 FSUB I CON1 3833 15103 6756 FPUT I TEM 3834 15104 4353 FMUL LOG8 3835 15105 1350 FADD LOG7 3836 15106 4756 FMUL I TEM 3837 15107 1345 FADD LOG6 3838 15110 4756 FMUL I TEM 3839 15111 1342 FADD LOG5 3840 15112 4756 FMUL I TEM 3841 15113 1337 FADD L4 3842 15114 4756 FMUL I TEM 3843 15115 1334 FADD L3 3844 15116 4756 FMUL I TEM 3845 15117 1331 FADD L2 3846 15120 4756 FMUL I TEM 3847 15121 1326 FADD L1 3848 15122 4756 FMUL I TEM 3849 15123 1635 FADD I X1 3850 15124 0000 FEXT 3851 15125 5634 JMP I EXIT1 3852 3853 3854 15126 0000 L1, 0000 3855 15127 3777 3777 3856 15130 7742 7742 3857 15131 7777 L2, 7777 3858 15132 4000 4000 3859 15133 4100 4100 3860 15134 7777 L3, 7777 3861 15135 2517 2517 3862 15136 0310 0310 3863 15137 7776 L4, 7776 3864 15140 4113 4113 3865 15141 7211 7211 3866 3867 /LOGARITHM CONSTANTS 3868 3869 15142 7776 LOG5, 7776 3870 15143 2535 2535 3871 15144 3301 3301 3872 15145 7775 LOG6, 7775 3873 15146 4746 4746 3874 15147 0771 0771 3875 15150 7774 LOG7, 7774 3876 15151 2236 2236 3877 15152 4304 4304 3878 15153 7771 LOG8, 7771 3879 15154 4544 4544 3880 15155 1735 1735 3881 3882 15156 4726 TEM, TEMP 3883 15157 0000 LOG2, 0 3884 15160 2613 2613 3885 15161 4414 4414 3886 15162 0000 FLAG1, 0 3887 3888 3889 3890 3891 15163 0000 FNEG, 0 3892 15164 4451 JMS I MINSKI 3893 15165 7240 CLA CMA 3894 15166 5763 JMP I FNEG 3895 3896 3897 /------------------------------------------------------------ 3898 /------------------------------------------------------------ 3899 /FLOATING POINT SINE AND COSINE 3900 3901 *5200 3902 3903 15200 4407 FCOS, FINT /COS(X)=SIN(PI/2-X) 3904 15201 6322 FPUT X 3905 15202 0316 FGET PIOT 3906 15203 2322 FSUB X 3907 15204 0000 FEXT 3908 15205 1045 FSIN, GETSGN 3909 15206 7740 SMA SZA CLA 3910 15207 5215 JMP MOD 3911 15210 1045 GETSGN 3912 15211 7700 SMA CLA 3913 15212 5535 RETURN /YES SIN(0)=0 3914 15213 4451 JMS I MINSKI 3915 15214 7040 CMA /NO:SIN(-X)=-SIN(X) 3916 15215 3033 MOD, DCA T3 3917 /REDUCE X MODULO 2 PI 3918 15216 4407 FINT 3919 15217 3306 FDIV TWOPI 3920 15220 6326 FPUT XSQR 3921 15221 0000 FEXT 3922 15222 4453 JMS I INTEGER 3923 15223 4407 FINT 3924 15224 7000 FNOR 3925 15225 6322 FPUT X 3926 15226 0326 FGET XSQR 3927 15227 2322 FSUB X 3928 15230 4306 FMUL TWOPI 3929 15231 6322 FPUT X 3930 15232 2312 FSUB PI /X 0 ? 4067 15423 5230 JMP .+5 /YES 4068 15424 7240 CLA CMA /NO, 4069 15425 1032 TAD T1 4070 15426 3333 DCA DECP /MAKE D = F-1 4071 15427 7040 CMA 4072 15430 1033 TAD T3 /COMPARE DECIMAL EXPONENT 4073 15431 7500 SMA / F-D > E? 4074 15432 7200 CLA /NO, ROUND OFF TO .F PLACES 4075 15433 1032 TAD T1 /YES 4076 15434 7510 SPA / D+E < 0 ? 4077 15435 5263 JMP FPRNT-2 /YES, NO ROUNDING NEEDED, GO TO PRINT 4078 15436 1326 TAD MD /NO, ROUND TO D+E PLACES, 4079 15437 7500 SMA /TO A MAXIMUM OF D PLACES 4080 15440 7200 CLA 4081 4082 15441 1327 R6, TAD RND2 / *ROUND UP * 4083 15442 3071 DCA T2 /SAVE NUMBER+1 OF PLACES TO ROUND TO. 4084 15443 1731 TAD I BUFST 4085 15444 1071 TAD T2 /SET UP BUFFER ADDRESS AT WHICH 4086 15445 3336 DCA PLCE /ROUNDING OFF SHOULD START 4087 15446 1071 TAD T2 4088 15447 7041 CIA /SET UP COUNT OF MAXIMUM NUMBER 4089 15450 3071 DCA T2 /OF CARRIES ALLOWABLE 4090 15451 1325 TAD K4 /LITTLE EXTRA ON FIRST DIGIT. 4091 15452 2736 RET, ISZ I PLCE /ADD 1 TO DIGIT AT CURRENT POSITION 4092 15453 1736 TAD I PLCE 4093 15454 1330 TAD OM12 4094 15455 7710 SPA CLA /CARRY REQUIRED? 4095 15456 5265 JMP FPRNT /NO, GO TO OUTPUT 4096 15457 3736 DCA I PLCE /YES, MAKE CURRENT DIGIT ZERO 4097 15460 2071 ISZ T2 /BEGINNING OF BUFFER REACHED? 4098 15461 5321 JMP DECR /NO, DECREMENT BUFFER ADDRESS AND REPEAT 4099 15462 2736 ISZ I PLCE /YES, SET MANTISSA TO 0.1 4100 15463 2033 ISZ T3 /COMPENSATE BY INCREMENTING EXPONENT 4101 15464 7200 CLA 4102 15465 1052 FPRNT, TAD FISW /AUTO-INDEX REGISTER ALREADY SET. - *PRINT* 4103 15466 7650 SNA CLA / F = 0 ? 4104 15467 5356 JMP FLOUT /YES, OUTPUT AS FLOATING NUMBER 4105 15470 1335 TAD FCOUNT 4106 15471 1033 TAD T3 4107 15472 7540 SMA SZA / E > F ? 4108 15473 5355 JMP FLOUT-1 /YES,CONVERT TO E FORMAT 4109 15474 1333 TAD DECP 4110 15475 7500 SMA / E < F-D ? 4111 15476 7200 CLA /NO, TAKE P = E 4112 15477 7041 CIA /YES, TAKE P = F-D 4113 15500 1033 TAD T3 4114 15501 7041 CIA 4115 15502 3032 DCA T1 /SET UP MINUS P 4116 15503 1033 BACK, TAD T3 /PRINT DD.DDD 4117 15504 1032 TAD T1 4118 15505 7650 SNA CLA / P = E ? 4119 15506 5343 JMP DIG /YES, PRINT DIGIT 4120 15507 1032 TAD T1 /NO, 4121 15510 7001 IAC 4122 15511 7710 SPA CLA / P > 1 ? 4123 15512 1105 TAD M20 /YES, TAKE SPACE (240-260); OTHERWISE ZERO 4124 15513 4336 IN, JMS OUTA /PRINT CHARACTER 4125 15514 2032 ISZ T1 /P CHARACTERS PRINTED? 4126 15515 5303 JMP BACK /NO 4127 15516 1102 TAD PER /YES, 4128 15517 4551 PRINTC /PRINT DECIMAL POINT 4129 15520 5303 JMP BACK 4130 4131 15521 7040 DECR, CMA /BACKUP TO TOP OF BUFFER. 4132 15522 1336 TAD PLCE 4133 15523 3336 DCA PLCE 4134 15524 5252 JMP RET 4135 15525 0004 K4, 4 4136 15526 7766 MD, -DIGITS 4137 15527 0013 RND2, DIGITS+1 4138 15530 7766 OM12, -12 4139 15531 6150 BUFST, SADR 4140 15532 6154 OPUT, OUTDG 4141 15533 0000 DECP, 0 /MODIFIABLE LOCATIONS 4142 15534 0000 SCOUNT, 0 4143 15535 0000 FCOUNT, 0 4144 PLCE=. 4145 15536 0000 OUTA, 0 /MODIFIED REGISTERS. 4146 15537 4732 JMS I OPUT /PRINT CHARACTER 4147 15540 2335 ISZ FCOUNT /F CHARACTERS PRINTED? 4148 15541 5736 JMP I OUTA /NO--RETURN-- 4149 15542 5600 JMP I TGO /YES, NUMBER FINSHED 4150 15543 7040 DIG, CMA 4151 15544 1033 TAD T3 /REDUCE E, BY 1 4152 15545 3033 DCA T3 4153 15546 2334 ISZ SCOUNT /ARE ALL SIG. FIGS. USED? 4154 15547 5353 JMP .+4 /NO 4155 15550 7040 CMA /YES, 4156 15551 3334 DCA SCOUNT /RESET COUNT TO -1 4157 15552 5313 JMP IN /AND LEAVE C(AC) = 0 4158 15553 1414 TAD I FLTXR /TAKE NEXT DIGIT FROM BUFFER 4159 15554 5313 JMP IN 4160 /DO FLOATING OUTPUT 4161 15555 7200 CLA /IF OUTPUT TOO LARGE, 4162 15556 4732 FLOUT, JMS I OPUT /PRINT "0" 4163 15557 1102 TAD PER 4164 15560 4551 PRINTC /PRINT "." 4165 15561 2200 ISZ TGO /SECOND RETURN 4166 15562 1414 TAD I FLTXR /TAKE NEXT DIGIT FROM BUFFER 4167 15563 4336 JMS OUTA /PRINT IT 4168 15564 2334 ISZ SCOUNT /TEST FOR END OF INPUT 4169 15565 5362 JMP .-3 /AND REPEAT 4170 15566 7040 CMA 4171 15567 3334 DCA SCOUNT /OUTPUT EXTRA ZEROS. 4172 15570 5363 JMP .-5 4173 15571 0000 ABSOLV, 0 4174 15572 1045 TAD HORD 4175 15573 3050 DCA SIGNF 4176 15574 1045 TAD HORD 4177 15575 7710 SPA CLA 4178 15576 4451 JMS I MINSKI 4179 15577 5771 JMP I ABSOLV /--RETURN-- 4180 4181 4182 /------------------------------------------------------------ 4183 /------------------------------------------------------------ 4184 /DOUBLE PRECISION DECIMAL-BINARY 4185 /INPUT AND CONVERSION FOR + OR - XXX... 4186 4187 *5600 4188 4189 15600 0000 DECONV, 0 4190 15601 3046 DCA LORD 4191 15602 3044 DCA EXP /ZERO THE EXPONENT AND 4192 15603 3045 DCA HORD /INITIALIZE FLOATING AC. 4193 15604 3047 DCA OVER2 4194 15605 3314 DCA DNUMBR 4195 15606 3050 DCA SIGNF 4196 15607 1066 TAD CHAR /ALLOW KEYBOARD SIGN CHECKS. 4197 15610 1264 TAD MPLUS 4198 15611 7450 SNA 4199 15612 5220 JMP .+6 /+SIGN; GET NEXT 4200 15613 1111 TAD M2 /CHECK - SIGN 4201 15614 7640 SZA CLA 4202 15615 5221 JMP .+4 4203 15616 7040 CMA /INIT SIGN CHECK TO POS. 4204 15617 3050 DCA SIGNF 4205 15620 4666 JMS I XINPUT /GET NEXT 4206 15621 1066 TAD CHAR /A SPACE PERHAPS? 4207 15622 1265 TAD MSPACE 4208 15623 7650 SNA CLA 4209 15624 5220 JMP .-4 4210 15625 4227 JMS DECON 4211 15626 5600 JMP I DECONV /--RETURN-- 4212 4213 4214 15627 0000 DECON, 0 4215 15630 1066 TAD CHAR /TEST LEAD CHARACTER FOR TERMINATOR 4216 15631 1262 TAD MINE 4217 15632 7650 SNA CLA 4218 15633 5627 JMP I DECON /E--RETURN-- 4219 15634 4561 TESTN 4220 15635 5627 JMP I DECON /.--RETURN-- 4221 15636 5247 JMP DTST /OTHER 4222 15637 1054 TAD SORTCN /N 4223 15640 3313 DSAVE, DCA DIGIT /YES 4224 15641 4267 JMS MULT10 /REMAIN MUST =0 SINCE OVERFLOW IS CHECKED 4225 15642 2314 ISZ DNUMBR /COUNT DIGITS 4226 15643 7640 SZA CLA 4227 15644 4566 ERROR2 /INPUT-OVERFLOW ERROR 4228 15645 4666 JMS I XINPUT 4229 15646 5230 JMP DECON+1 /CONTINUE 4230 15647 1066 DTST, TAD CHAR /ALLOW A-Z 4231 15650 1112 TAD MINUSA 4232 15651 7710 SPA CLA 4233 15652 5627 JMP I DECON /--RETURN-- 4234 15653 1066 TAD CHAR 4235 15654 1263 TAD MINUSZ 4236 15655 7740 SZA SMA CLA 4237 15656 5627 JMP I DECON /USE SIX BITS OF ASCII--RETURN-- 4238 15657 1066 TAD CHAR 4239 15660 0122 AND P77 4240 15661 5240 JMP DSAVE 4241 15662 7473 MINE, -305 /(7532)- FOR AMPERSAND 4242 15663 7446 MINUSZ, -332 4243 15664 7525 MPLUS, -253 4244 15665 7540 MSPACE, -240 4245 15666 0756 XINPUT, INPUT 4246 4247 4248 4249 4250 4251 15667 0000 MULT10, 0 /ROUTINE TO MULTIPLY FLAC BY TEN (10) 4252 15670 1047 TAD OVER2 4253 15671 3043 DCA OVER1 4254 15672 1046 TAD LORD /DOUBLE PRECISION WORD 4255 15673 3042 DCA AC1L /BY TEN (DECIMAL) 4256 15674 1045 TAD HORD /REMAIN=REMAINDER 4257 15675 3041 DCA AC1H 4258 15676 3312 DCA REMAIN /CLEAR OVERFLOW WORD 4259 15677 4315 JMS MULT2 /CALL SUBROUTINE TO 4260 15700 4315 JMS MULT2 /MULTIPLY BY TWO 4261 15701 4333 JMS DUBLAD /CALL DOUBLE ADD 4262 15702 4315 JMS MULT2 4263 15703 1313 TAD DIGIT /ADD LAST DIGIT RECEIVED 4264 15704 3043 DCA OVER1 4265 15705 3042 DCA AC1L 4266 15706 3041 DCA AC1H 4267 15707 4333 JMS DUBLAD 4268 15710 1312 TAD REMAIN /EXIT WITH REMAINDER 4269 15711 5667 JMP I MULT10 /IN AC--RETURN-- 4270 4271 15712 0000 REMAIN, 0 4272 4273 15713 0000 DIGIT, 0 /STORAGE FOR DIGIT 4274 15714 0000 DNUMBR, 0 /=NUMBER OF DIGITS 4275 15715 0000 MULT2, 0 /MULTIPLY OVER2, LORD, HORD BY 2 4276 15716 1047 TAD OVER2 4277 15717 7104 CLL RAL /CARRY INSERT BIT IS IN LINK 4278 15720 3047 DCA OVER2 4279 15721 1046 TAD LORD 4280 15722 7004 RAL 4281 15723 3046 DCA LORD 4282 15724 1045 TAD HORD 4283 15725 7004 RAL 4284 15726 3045 DCA HORD 4285 15727 1312 TAD REMAIN 4286 15730 7004 RAL 4287 15731 3312 DCA REMAIN 4288 15732 5715 JMP I MULT2 /--RETURN-- 4289 4290 4291 4292 4293 4294 4295 15733 0000 DUBLAD, 0 /TRIPLE PRECISION ADDITION 4296 15734 7300 CLA CLL 4297 15735 1047 TAD OVER2 4298 15736 1043 TAD OVER1 4299 15737 3047 DCA OVER2 4300 15740 7004 RAL 4301 15741 1046 TAD LORD 4302 15742 1042 TAD AC1L 4303 15743 3046 DCA LORD 4304 15744 7004 RAL 4305 15745 1045 TAD HORD 4306 15746 1041 TAD AC1H 4307 15747 3045 DCA HORD 4308 15750 7004 RAL 4309 15751 1312 TAD REMAIN /WITH OVERFLOW 4310 15752 3312 DCA REMAIN 4311 15753 5733 JMP I DUBLAD /--RETURN-- 4312 4313 15754 0000 DIV1, 0 /SHIFT OPERAND RIGHT 4314 15755 7300 CLA CLL /TRIPLE PRECISION 4315 15756 1041 TAD AC1H 4316 15757 7510 SPA 4317 15760 7120 CLL CML 4318 15761 7010 RAR 4319 15762 3041 DCA AC1H 4320 15763 1042 TAD AC1L 4321 15764 7010 RAR 4322 15765 3042 DCA AC1L 4323 15766 1043 TAD OVER1 4324 15767 7010 RAR 4325 15770 3043 DCA OVER1 4326 15771 2040 ISZ EX1 4327 15772 5754 JMP I DIV1 /--RETURN-- 4328 15773 5754 JMP I DIV1 /--RETURN-- 4329 4330 4331 /------------------------------------------------------------ 4332 /------------------------------------------------------------ 4333 *6000 4334 4335 /FLOATING OUTPUT CONVERSION ROUTINE 4336 4337 16000 0000 FLOUTP, 0 4338 16001 1335 TAD PEQ 4339 16002 4551 PRINTC /(CLA)_ TO SUPPRESS "=" 4340 16003 1045 TAD HORD /NUMBER>0?? 4341 16004 7700 SMA CLA 4342 16005 1334 TAD SMSP /PRINT "-" OR A SPACE. 4343 16006 1336 TAD SMIN 4344 16007 4551 PRINTC 4345 16010 4753 JMS I ABSOL2 4346 16011 3033 FGO2, DCA T3 /INITIALIZE DECIMAL EXPONENT 4347 16012 1044 TAD EXP /IS EXP 0 TO 4? 4348 16013 7510 SPA 4349 16014 5227 JMP FGO3 /TOO LARGE:MULTIPLY BY 1/10 4350 16015 7440 SZA 4351 16016 1341 TAD M4 4352 16017 7750 SPA SNA CLA 4353 16020 5234 JMP FGO4 4354 16021 4407 FINT 4355 16022 4744 FMUL I PPTEN 4356 16023 0000 FEXT 4357 16024 7001 IAC 4358 16025 1033 TAD T3 4359 16026 5211 JMP FGO2 4360 16027 4407 FGO3, FINT 4361 16030 4752 FMUL I TENPT 4362 16031 0000 FEXT 4363 16032 7040 CMA 4364 16033 5225 JMP .-6 4365 4366 16034 3745 FGO4, DCA I DPT /MULTIPLY BY TWO TO POSITION BIT0 4367 16035 3746 DCA I REPT /CLEAR OVERFLOW WORD 4368 16036 1350 TAD SADR /INIT BUFFER POINTER 4369 16037 3014 DCA FLTXR 4370 16040 1044 TAD EXP /COMPUTE BITS IN 1ST DIGIT 4371 16041 7140 CMA CLL 4372 16042 3354 DCA OUTDG /TEMP COUNT 4373 16043 1343 TAD DCOUNT /SETUP COUNT OF TOTAL OUTPUT 4374 16044 3044 DCA EXP 4375 16045 4526 JMS I DOUBLE /ROTATE OUT THE 1ST 4 BITS 4376 16046 2354 ISZ OUTDG 4377 16047 5245 JMP .-2 4378 16050 1746 TAD I REPT /TEST FOR 10-15,0,1-9 4379 16051 7450 SNA 4380 16052 5270 JMP FGO5 /IGNORE 1ST ZERO 4381 16053 1342 TAD FM12 4382 16054 7710 SPA CLA 4383 16055 5264 JMP .+7 /0-9 4384 16056 7001 IAC 4385 16057 3414 DCA I FLTXR /OUTPUT A 1 4386 16060 2044 ISZ EXP /COUNT THE DIGIT 4387 16061 1342 TAD FM12 /CORRECT REMAINDER 4388 16062 2033 ISZ T3 /BUMP DECIMAL EXPONENT 4389 16063 7000 NOP 4390 16064 1746 TAD I REPT /COMPUTE RESULTANT OR SECOND DIGIT 4391 16065 2033 ISZ T3 4392 16066 7000 NOP 4393 16067 7410 SKP 4394 16070 4747 FGO5, JMS I M10PT /IE. .672X10=6+.72.. ETC 4395 16071 3414 DCA I FLTXR 4396 16072 2044 ISZ EXP /ALL DIGITS OUTPUT?? 4397 16073 5270 JMP .-3 /NO: CONTINUE 4398 16074 1350 TAD SADR /INIT BUFFER POINTER 4399 16075 3014 DCA FLTXR 4400 16076 1343 TAD DCOUNT 4401 16077 4751 JMS I ROUND /OUTPUT MANTISSA 4402 16100 5600 JMP I FLOUTP /FIXED POINT DONE--RETURN-- 4403 16101 1333 TAD CHRT /PRINT "E" 4404 16102 4551 PRINTC 4405 4406 /OUTPUT THE EXPONENT 4407 4408 16103 1033 TAD T3 /TAKE ABSOLUTE VALUE OF EXPONENT 4409 16104 7510 SPA 4410 16105 7041 CIA 4411 16106 3045 DCA HORD /SAVE + POWER 4412 16107 1033 TAD T3 /PRINT SIGN 4413 16110 7700 SMA CLA 4414 16111 1111 TAD M2 4415 16112 1336 TAD SMIN 4416 16113 4551 PRINTC 4417 16114 1045 TAD HORD 4418 16115 2044 ISZ EXP 4419 16116 1337 TAD M144 4420 16117 7500 SMA 4421 16120 5315 JMP .-3 4422 16121 1340 TAD C144 4423 16122 3045 DCA HORD /SAVE TENS AND UNITS 4424 16123 7040 CMA /OUTPUT HUNDREDS 4425 16124 1044 TAD EXP 4426 16125 7440 SZA /UNLESS ZERO 4427 16126 4354 JMS OUTDG 4428 16127 1045 TAD HORD /PRINT TWO DIGITS 4429 16130 4732 JMS I PRNTI 4430 16131 5600 JMP I FLOUTP /--RETURN-- 4431 16132 2440 PRNTI, PRNT 4432 16133 0305 CHRT, 305 /E (0246) - FOR AMPERSAND 4433 16134 7763 SMSP, 240-255 / 4434 16135 0240 PEQ, 240 /CHANGED FROM "=" TO SPACE 4435 16136 0255 SMIN, 255 4436 16137 7634 M144, -144 /-100 4437 16140 0144 C144, 0144 /+100 4438 16141 7774 M4, -4 4439 16142 7766 FM12, -12 4440 16143 7765 DCOUNT, -DIGITS-1 /NUMBER OF DIGITS OUTPUT 4441 16144 6275 PPTEN, PTEN /IEI 4442 16145 5713 DPT, DIGIT 4443 16146 5712 REPT, REMAIN /OVERFLOW FROM INTEGER MULTIPLY 4444 16147 5667 M10PT, MULT10 4445 16150 7467 SADR, BUFFER-1 4446 16151 5400 ROUND, TGO /ACTUAL OUTPUT ROUTINE 4447 16152 6271 TENPT, TEN 4448 16153 5571 ABSOL2, ABSOLV 4449 16154 0000 OUTDG, 0 /OUTPUT ONE DIGIT 4450 16155 1113 TAD C260 4451 16156 4551 PRINTC 4452 16157 5754 JMP I OUTDG /--RETURN-- 4453 4454 /USED BY 8K 4455 4456 4457 4458 /------------------------------------------------------------ 4459 /------------------------------------------------------------ 4460 /FLOATING POINT INPUT 4461 4462 *6200 4463 4464 16200 0000 FLINTP, 0 /IF C(AC) = 0, USE CHAR 4465 16201 7640 SZA CLA /IF C(AC) NON-ZERO , GET NEXT 4466 16202 4706 JMS I XIN /GET FIRST CHAR 4467 16203 1066 TAD CHAR /IGNORE LEADING SPACES 4468 16204 1114 TAD M240 4469 16205 7650 SNA CLA 4470 16206 5202 JMP .-4 4471 16207 4702 JMS I DPCVPT /READ FIRST DIGIT GROUP 4472 16210 1066 TAD CHAR /AND SET "SIGNF" 4473 16211 1115 TAD MPER 4474 16212 7640 SZA CLA /ENDED BY PERIOD? 4475 16213 5221 JMP FIGO1 4476 16214 4706 JMS I XIN /YES, READ 2AND GROUP 4477 16215 3705 DCA I DPN 4478 16216 4703 JMS I DCONP 4479 16217 1705 TAD I DPN /SAVE NUMBER OF DIGITS IN T3 4480 16220 7041 CMA IAC 4481 16221 3033 FIGO1, DCA T3 /NO, 4482 16222 1310 TAD P43 4483 16223 3044 DCA EXP 4484 16224 4704 JMS I RESOL5 4485 16225 4707 JMS I INORM /NORMALIZE FIRST, THEN 4486 16226 4407 FINT 4487 16227 6430 FPUT I PT1 /SAVE NUMBER 4488 16230 0000 FEXT 4489 16231 1066 TAD CHAR 4490 16232 1301 TAD MINUSE 4491 16233 7640 SZA CLA /"E" READ IN? 4492 16234 5246 JMP ENDFI+3 /NO 4493 16235 4706 JMS I XIN /YES, READ 3RD DIGIT GROUP 4494 16236 4702 JMS I DPCVPT /I.E. CONVERT DECIMAL EXPONENT 4495 16237 4704 JMS I RESOL5 4496 16240 1047 TAD OVER2 4497 16241 1033 TAD T3 /C(SEXP)PLACES TO RIGHT 4498 16242 3033 DCA T3 /OF LAST DIGIT 4499 4500 4501 4502 4503 /COMPENSATE FOR DECIMAL EXPONENTS 4504 4505 16243 4407 ENDFI, FINT /RESTORE MANTISSA 4506 16244 0430 FGET I PT1 4507 16245 0000 FEXT 4508 16246 1033 TAD T3 /TEST DECIMAL EXPONENT 4509 16247 7450 SNA 4510 16250 5600 JMP I FLINTP /FINISHED--RETURN-- 4511 16251 7700 SMA CLA 4512 16252 5261 JMP FIGO4 4513 16253 4407 FINT /. IS TO THE LEFT: 4514 16254 4275 FMUL PTEN /TIMES .1000 4515 16255 6430 FPUT I PT1 4516 16256 0000 FEXT 4517 16257 7001 IAC 4518 16260 5266 JMP .+6 4519 16261 4407 FIGO4, FINT /. IS TO THE RIGHT: 4520 16262 4271 FMUL TEN /MULTIPLY BY 10 4521 16263 6430 FPUT I PT1 4522 16264 0000 FEXT 4523 16265 7040 CMA 4524 16266 1033 TAD T3 4525 16267 3033 DCA T3 4526 16270 5246 JMP ENDFI+3 4527 16271 0004 TEN, 0004 4528 16272 2400 2400 4529 16273 0000 0000 4530 16274 0000 0000 4531 4532 16275 7775 PTEN, 7775 4533 16276 3146 3146 4534 16277 3146 3146 /(3147) - FOR 3-WORD 4535 16300 3150 3150 4536 4537 16301 7473 MINUSE, -305 /(7532) - FOR AMPERSAND 4538 4539 16302 5600 DPCVPT, DECONV 4540 16303 5627 DCONP, DECON 4541 16304 7173 RESOL5, RESOLV 4542 16305 5714 DPN, DNUMBR 4543 16306 0756 XIN, INPUT 4544 16307 7335 INORM, DNORM 4545 16310 0043 P43, 43 4546 4547 /END OF FLOATING POINT INPUT 4548 4549 /7 FREE 4550 4551 /USED BY H.S. READER 4552 4553 /------------------------------------------------------------ 4554 /------------------------------------------------------------ 4555 *6400 4556 / FLOATING-POINT INTERPRETER FOR FOCAL. 4557 4558 16400 0000 FPNT, 0 4559 16401 7300 CLA CLL 4560 16402 7000 NOP /(DCA OVER2) - FOR 3-WORD 4561 16403 7000 NOP /(DCA OVER1) - FOR 3-WORD. 4562 16404 1600 TAD I FPNT /GET NEXT INSTRUCTION 4563 16405 7450 SNA 4564 16406 5600 JMP I FPNT /FAST EXIT--RETURN-- 4565 16407 3262 DCA JUMP 4566 16410 1262 TAD JUMP 4567 16411 0123 AND C200 /GET PAGE BIT 4568 16412 7650 SNA CLA /PAGE ZERO? 4569 16413 5216 JMP .+3 /YES 4570 16414 1104 TAD P7600 /NO 4571 16415 0200 AND FPNT /C(FPNT)0-4 CONTAINS PAGE BITS 4572 16416 3040 DCA ADDR 4573 16417 1106 TAD P177 /GET 7 BIT ADDRESS 4574 16420 0262 AND JUMP 4575 16421 1040 TAD ADDR 4576 16422 3040 DCA ADDR 4577 16423 1263 TAD INDRCT /INDIRECT BIT=1? 4578 16424 0262 AND JUMP 4579 16425 7650 SNA CLA 4580 16426 5231 JMP LOOP01 /NO-GO ON 4581 16427 1440 TAD I ADDR /YES ,DEFER ,W/O AUTO-INDEX 4582 16430 3040 DCA ADDR 4583 16431 2200 LOOP01, ISZ FPNT 4584 16432 7040 CMA 4585 16433 1040 TAD ADDR 4586 16434 3015 DCA FLTXR2 4587 16435 1262 TAD JUMP /GET COMMAND 4588 16436 7106 CLL RTL 4589 16437 7006 RTL 4590 16440 0107 AND P17 /GET BITS 0-2,IE OPCODE 4591 16441 7450 SNA 4592 16442 5267 JMP FLGT 4593 16443 1264 TAD TABLE /LOOKUP IN TABLE 4594 16444 3262 DCA JUMP 4595 16445 1662 TAD I JUMP 4596 16446 7450 SNA 4597 16447 5265 JMP FLPT 4598 16450 3262 DCA JUMP 4599 16451 1304 TAD CEX1 /SAVE FLOATING ARGUEMENT,UNLESS'GET' OR 'PUT' 4600 16452 3014 DCA FLTXR 4601 16453 1117 TAD MFLT 4602 16454 3057 DCA CNTR 4603 16455 1415 TAD I FLTXR2 4604 16456 3414 DCA I FLTXR 4605 16457 2057 ISZ CNTR 4606 16460 5255 JMP .-3 4607 16461 5662 JMP I JUMP /GO THERE 4608 4609 4610 16462 0000 JUMP, 0 4611 4612 ADDR=EX1 4613 4614 16463 0400 INDRCT, 0400 4615 16464 6573 TABLE, ITABLE 4616 16465 1303 FLPT, TAD CEXP /EXP TO (ADDR) 4617 16466 5273 JMP .+5 4618 16467 1303 FLGT, TAD CEXP /(ADDR) TO EXP 4619 16470 3015 DCA FLTXR2 4620 16471 7040 CMA 4621 16472 1040 TAD ADDR 4622 16473 3014 DCA FLTXR /SAVE 'FROM' ADDRESS 4623 16474 1117 TAD MFLT /3 OR 4 WORDS 4624 16475 3057 DCA CNTR 4625 16476 1414 TAD I FLTXR 4626 16477 3415 DCA I FLTXR2 4627 16500 2057 ISZ CNTR 4628 16501 5276 JMP .-3 4629 16502 5201 JMP FPNT+1 4630 16503 0043 CEXP, EXP-1 4631 16504 0037 CEX1, EX1-1 4632 4633 4634 16505 4765 FLSU, JMS I OPMINS /FSUB=2 - NEGATE THE OPERAND 4635 16506 4770 FLAD, JMS I ALGN /FLAD=1 - FIRST ALIGN EXPONENTS 4636 16507 5201 JMP FPNT+1 /RETURN IF NO ALIGNMENT IS POSSIBLE 4637 16510 4772 JMS I RAR2 /TRIPLE PRECISION ADDDITION 4638 16511 4771 JMS I RAR1 /SINCE BITS ARE SHIFTED 4639 16512 4773 JMS I TRAD /RIGHT 4640 16513 4767 NORF, JMS I NORM /NORMALIZE THE RESULT 4641 16514 5201 JMP FPNT+1 /HINT:USE 700X FOR FUNCTIONS. 4642 4643 /INTERPRETIVE POWER 4644 4645 16515 7000 NOP /3 FREE LOCATIONS ************ 4646 16516 7000 NOP 4647 16517 7000 NOP 4648 16520 3044 ZERO, DCA EXP /YES 4649 16521 3045 DCA HORD 4650 16522 3046 DCA LORD 4651 16523 3047 DCA OVER2 4652 16524 5201 JMP FPNT+1 4653 16525 4543 FLEX, PUSHF /AC TO A + POWER 4654 16526 0044 FLAC 4655 16527 4543 PUSHF /SETUP ARGUMENT ( THE EXPONENT) 4656 16530 0040 EX1 4657 16531 4544 POPF 4658 16532 0044 FLAC 4659 16533 4453 JMS I INTEGER /ONLY POSITIVE, INTEGER EXPONENTS 4660 16534 7510 SPA 4661 16535 5342 JMP .+5 /(COULD DIVIDE) 4662 16536 7040 CMA 4663 16537 3262 DCA JUMP /TEMP STORAGE 4664 16540 7000 NOP /(DCA OVER1) - FOR 3-WORD 4665 16541 1045 TAD HORD 4666 16542 7640 SZA CLA 4667 16543 4566 ERROR2 /TOO LARGE OR NEGATIVE EXPONENT 4668 16544 4543 PUSHF /INITIALIZE TO ONE. 4669 16545 2405 FLTONE 4670 16546 4544 POPF 4671 16547 0044 FLAC 4672 16550 4544 POPF 4673 16551 7470 ITER1 4674 16552 5360 JMP .+6 4675 16553 4543 PUSHF 4676 16554 7470 ITER1 4677 16555 4544 POPF 4678 16556 0040 EX1 4679 16557 4766 JMS I MULT /"MULT" 4680 16560 2262 ISZ JUMP 4681 16561 5353 JMP .-6 4682 16562 5201 JMP FPNT+1 4683 16563 4766 FLMY, JMS I MULT /MULTIPLY 4684 16564 5201 JMP FPNT+1 4685 /------------------------------------------------------------ 4686 4687 4688 16565 7153 OPMINS, MINUS2 4689 16566 7004 MULT, DMULT 4690 16567 7335 NORM, DNORM 4691 16570 6623 ALGN, ALIGN 4692 16571 5754 RAR1, DIV1 4693 16572 6757 RAR2, DIV2 4694 16573 5733 TRAD, DUBLAD 4695 4696 ITABLE=.-1 4697 16574 6506 FLAD 4698 16575 6505 FLSU 4699 16576 7107 FLDV 4700 16577 6563 FLMY 4701 16600 6525 FLEX 4702 16601 0000 0000 4703 16602 6513 NORF 4704 /------------------------------------------------------------ 4705 4706 16603 0000 ACMINS, 0 /ROUTINE TO COMPLEMENT FLAC - VIA "MINSKI" 4707 16604 7300 CLL CLA 4708 16605 1047 TAD OVER2 /TRIPLE PRECISION NEGATION 4709 16606 7041 CMA IAC /OF FLOATING AC 4710 16607 3047 DCA OVER2 4711 16610 1046 TAD LORD 4712 16611 7040 CMA 4713 16612 7430 SZL 4714 16613 7101 IAC CLL 4715 16614 3046 DCA LORD 4716 16615 1045 TAD HORD 4717 16616 7040 CMA 4718 16617 7430 SZL 4719 16620 7101 IAC CLL 4720 16621 3045 DCA HORD 4721 16622 5603 JMP I ACMINS /--RETURN-- 4722 4723 4724 16623 0000 ALIGN, 0 /SUBROUTINE TO ALIGN 4725 16624 1045 TAD HORD /BINARY POINTS 4726 16625 7450 SNA 4727 16626 1046 TAD LORD /IS MANTISSA ZERO? 4728 16627 7650 SNA CLA 4729 16630 5311 JMP NOX1 /YES, RESULT=OPERAND 4730 16631 1041 TAD AC1H /NO,IS OPERAND ZERO? 4731 16632 7450 SNA 4732 16633 1042 TAD AC1L 4733 16634 7450 SNA 4734 16635 1043 TAD OVER1 4735 16636 7650 SNA CLA 4736 16637 5623 JMP I ALIGN /YES--RETURN-- 4737 16640 1040 TAD EX1 4738 16641 7041 CMA IAC 4739 16642 1044 TAD EXP 4740 16643 7450 SNA /ARE EXPONENTS EQUAL? 4741 16644 5273 JMP ADONE /YES 4742 16645 3203 DCA ACMINS 4743 16646 1203 TAD ACMINS 4744 16647 7500 SMA /NO 4745 16650 7041 CIA /NEGATE AND 4746 16651 3322 DCA AMOUNT /SAVE THE DIFFERENCE 4747 16652 1322 TAD AMOUNT 4748 16653 1336 TAD TEST2 4749 16654 7710 SPA CLA /CAN THE EXPONENTS BE ALIGNED? 4750 16655 5275 JMP NOX /NO, USE LARGER OF THE TWO. 4751 16656 1203 TAD ACMINS /YES, SHIFT THE SMALLER 4752 16657 7700 SMA CLA 4753 16660 5265 JMP ASHFT 4754 16661 4357 JMS DIV2 4755 16662 2322 ISZ AMOUNT 4756 16663 5261 JMP .-2 4757 16664 5273 JMP ADONE 4758 16665 7040 ASHFT, CMA 4759 16666 1040 TAD EX1 4760 16667 3040 DCA EX1 4761 16670 4723 JMS I TAG1 4762 16671 2322 ISZ AMOUNT 4763 16672 5270 JMP .-2 4764 16673 2223 ADONE, ISZ ALIGN 4765 16674 5623 JMP I ALIGN /--RETURN-- 4766 16675 1040 NOX, TAD EX1 /MISSION IMPOSSIBLE! 4767 16676 7700 SMA CLA /CHECK FOR SIGN DIFFERENCE 4768 16677 5304 JMP NOX2 4769 16700 1044 TAD EXP 4770 16701 7700 SMA CLA 4771 16702 5623 JMP I ALIGN /-+--RETURN-- 4772 16703 5306 JMP .+3 /-- 4773 16704 1044 NOX2, TAD EXP 4774 16705 7700 SMA CLA 4775 16706 1203 TAD ACMINS /TEMP STORAGE OF DIFFERENCE. BOTH POS EXP OR BOTH NEG. 4776 16707 7740 SMA SZA CLA 4777 16710 5623 JMP I ALIGN /OK (+-)--RETURN-- 4778 16711 1040 NOX1, TAD EX1 /USE LARGER 4779 16712 3044 DCA EXP 4780 16713 1041 TAD AC1H 4781 16714 3045 DCA HORD 4782 16715 1042 TAD AC1L 4783 16716 3046 DCA LORD 4784 16717 1043 TAD OVER1 4785 16720 3047 DCA OVER2 4786 16721 5623 JMP I ALIGN /--RETURN-- 4787 16722 0000 AMOUNT, 0 4788 16723 5754 TAG1, DIV1 4789 /LEAVE 12 BIT ANSWER IN AC UPON RETURN 4790 /LEAVE FLAC AS AN INTEGER, 4791 4792 16724 0000 FIX, 0 /VIA (INTEGER) 4793 16725 4751 JMS I ABSOL 4794 16726 1044 TAD EXP /TEST FOR FRACTION 4795 16727 7750 SPA SNA CLA 4796 16730 5353 JMP FIXM /DOUBLE CHECK FOR MINUS ONE. 4797 16731 7001 IAC 4798 16732 3043 DCA OVER1 4799 16733 1350 TAD P27 /INIT ALIGNMENT 4800 16734 3040 DCA EX1 4801 16735 4223 JMS ALIGN /DO THE ALIGNMENT TO AN INTEGER 4802 16736 0043 TEST2, 0043 /ALREADY DONE; (27)-FOR 3-WORD 4803 16737 2047 ISZ OVER2 4804 16740 5344 JMP .+4 4805 16741 2046 ISZ LORD 4806 16742 7410 SKP 4807 16743 2045 ISZ HORD 4808 16744 3047 DCA OVER2 /CLEAR THE FRACTION 4809 16745 4752 JMS I RESOL 4810 16746 1046 TAD LORD /EXIT WITH LOW ORDER RESULT IN AC. 4811 16747 5724 JMP I FIX /--RETURN-- 4812 16750 0027 P27, 27 4813 16751 5571 ABSOL, ABSOLV 4814 16752 7173 RESOL, RESOLV 4815 16753 3044 FIXM, DCA EXP /CLEAR EXPONENT 4816 16754 3045 DCA HORD 4817 16755 3046 DCA LORD 4818 16756 5344 JMP TEST2+6 4819 16757 0000 DIV2, 0 /SHIFT FLAC RIGHT 4820 16760 7300 CLA CLL 4821 16761 1045 TAD HORD 4822 16762 7510 SPA 4823 16763 7020 CML 4824 16764 7010 RAR 4825 16765 3045 DCA HORD 4826 16766 1046 TAD LORD 4827 16767 7010 RAR 4828 16770 3046 DCA LORD 4829 16771 1047 TAD OVER2 4830 16772 7010 RAR 4831 16773 3047 DCA OVER2 4832 16774 2044 ISZ EXP 4833 16775 5757 JMP I DIV2 /--RETURN-- 4834 16776 5757 JMP I DIV2 /--RETURN-- 4835 /------------------------------------------------------------ 4836 SPECIAL=. /INPUT CHARACTERS 4837 16777 0337 337 /LEFT ARROW 4838 17000 0377 377 /RUBOUT 4839 17001 0212 212 /L.F. 4840 17002 0375 375 /ALT MODE 4841 17003 0214 214 /^L IS IGNORED IN AN "ASK" COMMAND 4842 4843 /(A+B+C)*(D+E+F)=A*D,A*E,B*D,B*E 4844 4845 17004 0000 DMULT, 0 /N- PRECISION MULTIPLY WITH 4846 17005 7001 IAC /PRODUCT IN TRIPLE PRECISION 4847 17006 1040 TAD EX1 /ADD EXPONENTS+1 4848 17007 4324 JMS SIGN /AND DETERMINE SIGN OF RESULT 4849 17010 7710 SPA CLA 4850 17011 4353 JMS MINUS2 4851 17012 3301 DCA DATUM-1 /INITIALIZE RESULT 4852 17013 3300 DCA DATUM-2 4853 17014 3277 DCA DATUM-3 4854 17015 3276 DCA DATUM-4 4855 17016 1045 TAD A /A*D 4856 17017 3751 SAVE /STORE IN MP2 4857 17020 1041 TAD D /SINGLE PRECISION MULTIPLY 4858 17021 4752 MULTY 4859 17022 0002 2 /ACCUMULATE STARTING IN #2 DATA WORD 4860 17023 1042 TAD E /A*E 4861 17024 4752 MULTY 4862 17025 0003 3 4863 17026 1046 TAD B /B*D 4864 17027 3751 SAVE 4865 17030 1041 TAD D 4866 17031 4752 MULTY 4867 17032 0003 3 4868 17033 1042 TAD E /B*E 4869 17034 4752 MULTY 4870 17035 0004 4 4871 17036 3275 DMULT4, DCA DATUM-5 /(JMP DMDONE)-FOR 3-WORD 4872 17037 3274 DCA DATUM-6 4873 17040 1043 TAD F /A*F 4874 17041 3751 SAVE 4875 17042 1045 TAD A 4876 17043 4752 MULTY 4877 17044 0004 4 4878 17045 1046 TAD B /B*F 4879 17046 4752 MULTY 4880 17047 0005 5 4881 17050 1047 TAD C /C*D 4882 17051 3751 SAVE 4883 17052 1041 TAD D 4884 17053 4752 MULTY 4885 17054 0004 4 4886 17055 1042 TAD E /C*E 4887 17056 4752 MULTY 4888 17057 0005 5 4889 17060 1043 TAD F /C*F 4890 17061 4752 MULTY 4891 17062 0006 6 4892 4893 17063 1301 DMDONE, TAD DATUM-1 /COPY RESULT 4894 17064 3045 DCA HORD 4895 17065 1300 TAD DATUM-2 4896 17066 3046 DCA LORD 4897 17067 1277 TAD DATUM-3 4898 17070 3047 DCA OVER2 4899 17071 4301 JMS MULDIV 4900 17072 7000 NOP /(DCA OVER2) - FOR 3-WORD 4901 17073 5604 JMP I DMULT /--RETURN-- 4902 4903 DATUM=.+6 /INTERMEDIATE STORAGE 4904 4905 /#6-LOW ORDER RESULT 4906 /#5 4907 /#4 4908 /#3 4909 /#2 4910 /#1-HIGH ORDER RESULT 4911 4912 *DATUM-1 4913 4914 17101 0000 MULDIV, 0 /TERMINATE MULTIPLY AND DIVIDE. 4915 17102 2050 ISZ SIGNF /CORRECT FOR SIGN 4916 17103 4451 JMS I MINSKI 4917 17104 4747 JMS I NORMF /SHIFT LEFT 4918 17105 7000 NOP 4919 17106 5701 JMP I MULDIV /--RETURN-- 4920 17107 1041 FLDV, TAD AC1H /4:DIVIDE 4921 17110 7650 SNA CLA 4922 17111 4566 ERROR2 /DIVISION BY ZERO 4923 17112 1040 TAD EX1 /SUBTRACT EXPONENTS+1 4924 17113 7041 CMA IAC 4925 17114 7001 IAC 4926 17115 4324 JMS SIGN /SET UP SIGNS 4927 17116 7700 SMA CLA 4928 17117 4353 JMS MINUS2 /NEGATE DIVISOR 4929 17120 4750 JMS I DIVIDE /DIVIDE 4930 17121 4301 JMS MULDIV 4931 17122 5723 JMP I .+1 4932 17123 6401 FPNT+1 4933 4934 /THIS SUBROUTINE PREPARES MULTIPLY AND DIVIDE 4935 /FOR ANY COMBINATION OF SIGNED ARGUMENTS AND FOR ZERO. 4936 /THE RESULT OF EITHER IS ZERO IF FLAC = 0. 4937 /RESULT OF MULTIPLY IS ZERO IF EITHER IS ZERO; 4938 /DIVISION BY ZERO IS CHECKED BEFORE THIS 4939 /ROUTINE IS CALLED. 4940 4941 /THE CALLING AC CONTAINS AN UPDATE VALUE FOR THE 4942 /EXPONENT. THE RETURNING AC CONTAINS THE SIGN OF 4943 /THE ARGUMENT FOR FURTHER TESTING BY EACH ROUTINE. 4944 4945 4946 17124 0000 SIGN, 0 /TEST AND SAVE SIGN OF RESULT 4947 17125 1044 TAD EXP /COMPUTE NEW EXPONENT FOR MUL-DIV. 4948 17126 3044 DCA EXP 4949 17127 1124 TAD P4000 /LOAD 4000 TO XOR THE SIGN BITS 4950 17130 0045 AND HORD 4951 17131 1041 TAD AC1H 4952 17132 7700 SMA CLA /RESULT MAY BE ZERO 4953 17133 7040 CMA 4954 17134 3050 DCA SIGNF 4955 17135 1045 TAD HORD 4956 17136 7450 SNA 4957 17137 5746 JMP I REVIT /ANSWER IS ZERO. 4958 17140 7710 SPA CLA /TAKE ABSOLUTE VALUE OF FLAC 4959 17141 4451 JMS I MINSKI 4960 17142 1041 TAD AC1H 4961 17143 7450 SNA /RESULT OF EITHER MAY BE ZERO 4962 17144 5746 JMP I REVIT 4963 17145 5724 JMP I SIGN /--RETURN-- 4964 4965 /SIGN OF RESULT = SIGNF 4966 /+=-1 4967 /-=0 4968 4969 17146 6520 REVIT, ZERO 4970 17147 7335 NORMF, DNORM 4971 17150 7261 DIVIDE, DUBDIV 4972 4973 SAVE=DCA I . 4974 17151 7256 MP2 4975 MULTY=JMS I . 4976 17152 7200 MP4 4977 4978 A=FLAC+1 4979 B=FLAC+2 4980 C=FLAC+3 4981 D=AC1H 4982 E=AC1L 4983 F=OVER1 4984 4985 4986 17153 0000 MINUS2, 0 /NEGATE OPERAND 4987 17154 7300 CLA CLL /TRIPLE PRECISION 4988 17155 1043 TAD OVER1 4989 17156 7041 CMA IAC 4990 17157 3043 DCA OVER1 4991 17160 1042 TAD AC1L 4992 17161 7040 CMA 4993 17162 7430 SZL 4994 17163 7101 IAC CLL 4995 17164 3042 DCA AC1L 4996 17165 1041 TAD AC1H 4997 17166 7040 CMA 4998 17167 7430 SZL 4999 17170 7101 IAC CLL 5000 17171 3041 DCA AC1H 5001 17172 5753 JMP I MINUS2 /--RETURN-- 5002 5003 17173 0000 RESOLV, 0 5004 17174 1050 TAD SIGNF 5005 17175 7710 SPA CLA 5006 17176 4451 JMS I MINSKI 5007 17177 5773 JMP I RESOLV /--RETURN-- 5008 /------------------------------------------------------------ 5009 /------------------------------------------------------------ 5010 *7200 5011 5012 17200 0000 MP4, 0 /SINGLE PRECISION, UNSIGNED MULTIPLY - "MULTY" 5013 17201 7450 SNA /NO RESULT ADDED IF ZERO 5014 17202 5600 JMP I MP4 /--RETURN-- 5015 5016 /FOR EAE INSERT THE FOLLOWING: 5017 5018 /7203 3206 DCA .+3 5019 /7204 1256 TAD MP2 5020 /7205 7425 MQL MUY 5021 /7206 0000 0 5022 /7207 3253 DCA MP5 5023 /7210 7501 MQA 5024 /7211 3255 DCA MP3 5025 /7212 5227 JMP .+15 5026 5027 5028 17203 3254 DCA MP1 /12 BITS BY 12 BITS 5029 17204 3253 DCA MP5 5030 17205 1257 TAD THIR 5031 17206 3255 DCA MP3 5032 17207 7100 CLL 5033 17210 1254 MP6, TAD MP1 5034 17211 7010 RAR 5035 17212 3254 DCA MP1 5036 17213 1253 TAD MP5 5037 17214 7420 SNL 5038 17215 5220 JMP .+3 5039 17216 7100 CLL 5040 17217 1256 TAD MP2 5041 17220 7010 RAR 5042 17221 3253 DCA MP5 /SAVE HIGH ORDER RESULT 5043 17222 2255 ISZ MP3 5044 17223 5210 JMP MP6 5045 17224 1254 TAD MP1 /CORRECT LOW ORDER RESULT 5046 17225 7010 RAR 5047 17226 3255 DCA MP3 5048 17227 1600 TAD I MP4 /PICKUP SCALE FACTOR 5049 17230 7041 CIA 5050 17231 1252 TAD DATUMA /COMPUTE ADDRESS 5051 17232 3254 DCA MP1 /TEMP 5052 17233 1255 TAD MP3 /LOW ORDER PART 5053 17234 7100 CLL 5054 17235 1654 TAD I MP1 /ACCUMULATE 5055 17236 3654 DCA I MP1 5056 17237 2254 ISZ MP1 5057 17240 7004 RAL 5058 17241 1253 TAD MP5 5059 17242 1654 TAD I MP1 5060 17243 3654 DCA I MP1 5061 17244 7420 SNL 5062 17245 5600 JMP I MP4 /NO CARRY--RETURN-- 5063 17246 2254 ISZ MP1 5064 17247 2654 ISZ I MP1 5065 17250 5600 JMP I MP4 /--RETURN 5066 17251 5246 JMP .-3 /CARRY AGAIN 5067 17252 7102 DATUMA, DATUM 5068 17253 0000 MP5, 0 /PRODUCT 5069 17254 0000 MP1, 0 /MULTIPLIER 5070 17255 0000 MP3, 0 5071 17256 0000 MP2, 0 /MULTIPLICAND 5072 17257 7764 THIR, -14 /12 BITS 5073 5074 5075 17260 7735 MIF, -43 /(-27) - FOR 3-WORD(=7751) 5076 5077 17261 0000 DUBDIV, 0 /2 OR 3 PRECISION DIVIDE 5078 17262 3200 DCA MP4 5079 17263 3254 DCA MP1 5080 17264 1260 TAD MIF /INIT BIT COUNTER 5081 17265 3255 DCA MP3 5082 17266 7410 SKP 5083 17267 4526 DV3, JMS I DOUBLE /SHIFT FLAC LEFT 5084 17270 7100 CLL 5085 17271 1043 TAD OVER1 5086 17272 1047 TAD OVER2 5087 17273 3253 DCA MP5 5088 17274 7004 RAL 5089 17275 1042 TAD AC1L /COMBINE ONE POSITION AND (4-WORD) 5090 17276 1046 TAD LORD 5091 17277 3256 DCA MP2 /SAVE RESULT 5092 17300 7004 RAL 5093 17301 1045 TAD HORD /ADD OVERFLOW 5094 17302 1041 TAD AC1H 5095 17303 7420 SNL /SKIP IF OVERFLOW 5096 17304 5312 JMP .+6 5097 17305 3045 DCA HORD /UPDATE FLAC 5098 17306 1253 TAD MP5 5099 17307 3047 DCA OVER2 5100 17310 1256 TAD MP2 5101 17311 3046 DCA LORD 5102 17312 7200 CLA /CLEAR ACCUMULATOR 5103 17313 1254 TAD MP1 /SAVE OVERFLOW BITS CIRCULARLY 5104 17314 7004 RAL 5105 17315 3254 DCA MP1 5106 17316 1200 TAD MP4 5107 17317 7004 RAL 5108 17320 3200 DCA MP4 5109 17321 1335 TAD DNORM 5110 17322 7004 RAL /EXTRA FOR 4-WORD 5111 17323 3335 DCA DNORM 5112 17324 2255 ISZ MP3 /TEST FOR END OF DIVIDE 5113 17325 5267 JMP DV3 5114 17326 1335 TAD DNORM 5115 17327 3045 DCA HORD 5116 17330 1200 TAD MP4 5117 17331 3046 DCA LORD 5118 17332 1254 TAD MP1 5119 17333 3047 DCA OVER2 5120 17334 5661 JMP I DUBDIV /--RETURN-- 5121 5122 5123 5124 17335 0000 DNORM, 0 /SUBROUTINE TO NORMALIZE FLAC 5125 17336 4775 JMS I ABSOL3 5126 17337 4366 JMS TEST4 5127 17340 1045 TAD HORD 5128 17341 7450 SNA /IS MANTISSA=0? 5129 17342 1047 TAD OVER2 5130 17343 7450 SNA 5131 17344 1046 TAD LORD 5132 17345 7650 SNA CLA 5133 17346 5363 JMP EXIT3 /YES 5134 17347 1045 TAD HORD 5135 17350 7104 RAL CLL 5136 17351 7710 SPA CLA /WILL SHIFT BE TOO FAR? 5137 17352 5360 JMP .+6 5138 17353 4526 JMS I DOUBLE 5139 17354 7140 CMA CLL 5140 17355 1044 TAD EXP 5141 17356 3044 DCA EXP 5142 17357 5347 JMP .-10 5143 17360 4776 JMS I RESOL3 5144 17361 4366 JMS TEST4 /DON'T LEAVE 4000 5145 17362 5735 JMP I DNORM /--RETURN-- 5146 17363 3044 EXIT3, DCA EXP /SET TO ZERO 5147 17364 5735 JMP I DNORM /--RETURN-- 5148 17365 6757 XRAR2, DIV2 5149 17366 0000 TEST4, 0 5150 17367 1045 TAD HORD /TEST FOR 4000 5151 17370 7510 SPA 5152 17371 7041 CIA 5153 17372 7710 SPA CLA 5154 17373 4765 JMS I XRAR2 /SHIFT BACK 5155 17374 5766 JMP I TEST4 /--RETURN-- 5156 5157 17375 5571 ABSOL3, ABSOLV 5158 17376 7173 RESOL3, RESOLV 5159 5160 /------------------------------------------------------------ 5161 /------------------------------------------------------------ 5162 *7400 5163 5164 5165 /PAGE 18 5166 5167 /FLOATING SQUARE ROOT FUNCTION 5168 5169 17400 4407 XSQRT, FINT 5170 17401 6274 FPUT FPAC1 /VALUE 5171 17402 0000 FEXT /NEWTON'S METHOD IS USED 5172 17403 1045 GETSGN 5173 17404 7710 SPA CLA 5174 17405 4566 ERROR2 /NUMBER IS NEGATIVE=IMAGINARY ROOTS 5175 17406 1044 TAD EXP /LINK IS =0 FROM FINT 5176 17407 7510 SPA /MATCH THE SIGN WITH LINK BIT 5177 17410 7020 CML 5178 17411 7010 RAR 5179 17412 3270 DCA ITER1 /MAKE FIRST APPROXIMATION 5180 17413 7430 SZL /TEST LSB OF EXP 5181 17414 2270 ISZ ITER1 5182 17415 7000 NOP 5183 17416 1267 TAD SQCON1 5184 17417 3271 DCA ITER1+1 5185 17420 3272 DCA ITER1+2 5186 17421 3273 DCA ITER1+3 5187 17422 1275 TAD FPAC1+1 5188 17423 7450 SNA 5189 17424 1276 TAD FPAC1+2 5190 17425 7650 SNA CLA 5191 17426 5265 JMP SQEND /NUMBER=0 5192 17427 4407 CLCU, FINT 5193 17430 0274 FGET FPAC1 5194 17431 3270 FDIV ITER1 5195 17432 1270 FADD ITER1 5196 17433 0000 FEXT 5197 5198 5199 5200 5201 17434 7240 CLA CMA 5202 17435 1044 TAD EXP 5203 17436 3044 DCA EXP 5204 17437 1044 TAD EXP 5205 17440 7041 CMA IAC 5206 17441 1270 TAD ITER1 5207 17442 7640 SZA CLA /ARE EXPONENTS EQUAL? 5208 17443 5261 JMP ROOTGO /NO 5209 17444 1045 TAD HORD /ARE HIGH-ORDER MANTISSAS EQUAL? 5210 17445 7041 CMA IAC 5211 17446 1271 TAD ITER1+1 5212 17447 7640 SZA CLA 5213 17450 5261 JMP ROOTGO /NO 5214 17451 1046 TAD LORD 5215 17452 7041 CMA IAC 5216 17453 1272 TAD ITER1+2 /DO LOW-ORDER MANTISSAS AGREE 5217 17454 7500 SMA 5218 17455 7041 CMA IAC /WITHIN ONE BIT? 5219 17456 7001 IAC 5220 17457 7700 SMA CLA 5221 17460 5535 RETURN 5222 17461 4407 ROOTGO, FINT 5223 17462 6270 FPUT ITER1 5224 17463 0000 FEXT 5225 17464 5227 JMP CLCU 5226 17465 3044 SQEND, DCA EXP 5227 17466 5535 RETURN 5228 17467 3015 SQCON1, 3015 5229 5230 BUFFER=. 5231 5232 17470 0000 ITER1, 0 5233 17471 0000 0 5234 17472 0000 0 5235 17473 0000 0 5236 5237 17474 0000 FPAC1, 0 5238 17475 0000 0 5239 17476 0000 0 5240 17477 7503 BUFFER+13 /ADDRESS OF NEXT FREE LOCATION IN 10-DIGIT VERSION. 5241 5242 5243 5244 5245 /EFOCNB -- INITIALIZATION FOR PS/8 FOCAL 5246 5247 *176 5248 10176 4000 INIT 5249 5250 *4000 5251 14000 1377 INIT, TAD (RECOVR+1 5252 14001 3176 DCA 176 5253 14002 6201 CDF 5254 14003 1776 TAD I (207 /MOVE LENGTH OF INITIAL DIALOGUE 5255 14004 6211 CDF 10 5256 14005 3060 DCA BUFR /(JUST IN CASE) 5257 14006 6040 TFL /MAKE FLAG SET 5258 14007 4537 PUSHJ 5259 14010 0420 DO+1 5260 14011 1375 TAD (4300 /"#@" FOR SYSTEM STATUS 5261 JMS LOOKUP off page ^ 14012 4774 5262 14013 7340 CLA CLL CMA 5263 14014 1030 TAD PT1 5264 14015 3030 DCA PT1 5265 14016 4407 FINT /GET SYSTEM STATUS VARIABLE 5266 14017 0430 FGET I PT1 5267 14020 6346 FPUT INITMP /SAVE IT FOR LATER 5268 14021 0000 FEXT 5269 14022 1045 TAD FLAC+1 /IF IT'S ZERO, INITIAL DIALOGUE WASN'T THERE 5270 14023 7650 SNA CLA 5271 14024 5323 JMP SECRET /ASSUME STANDARD FEATURES 5272 14025 1373 CHKLOG, TAD (100 /"A@" (KEEP SIN & COS) 5273 JMS LOOKUP off page ^ 14026 4774 5274 14027 7640 SZA CLA 5275 14030 5235 JMP CHKSIN 5276 JMS CHANGE /KILL ALL EXTENDED FUNCTIONS off page ^ 14031 4772 5277 14032 4316 SINADD-1 5278 14033 1371 TAD (TTAB-1 /SET VARIABLE BOTTOM 5279 14034 5244 JMP CHKFIL-1 5280 14035 1370 CHKSIN, TAD (200 /"B@" (KEEP ALL FUNCTIONS) 5281 JMS LOOKUP off page ^ 14036 4774 5282 14037 7640 SZA CLA 5283 14040 5245 JMP CHKFIL 5284 JMS CHANGE /KILL LOG, EXP, ATN off page ^ 14041 4772 5285 14042 4322 LOGADD-1 5286 14043 1367 TAD (5177 /AND RESET BOTTOM 5287 14044 3035 DCA BOTTOM 5288 14045 1366 CHKFIL, TAD (400 /"D@" (FILE COMMANDS) 5289 JMS LOOKUP off page ^ 14046 4774 5290 14047 7640 SZA CLA 5291 14050 5253 JMP CHKSP 5292 JMS CHANGE /KILL FILE COMMANDS off page ^ 14051 4772 5293 14052 4307 FILADD-1 5294 14053 1365 CHKSP, TAD (500 /"E@" (LEADING SPACE IN TYPE [FOR FILES]) 5295 JMS LOOKUP off page ^ 14054 4774 5296 14055 7640 SZA CLA 5297 14056 5261 JMP CHKEQ 5298 JMS CHANGE off page ^ 14057 4772 5299 14060 4336 SPADD-1 5300 14061 1364 CHKEQ, TAD (700 /"G@" ('=' IN TYPE) 5301 JMS LOOKUP off page ^ 14062 4774 5302 14063 7650 SNA CLA /REVERSE SENSE ON NON-STANDARD FEATURES 5303 14064 5267 JMP CHKCOL 5304 JMS CHANGE off page ^ 14065 4772 5305 14066 4343 EQADD-1 5306 14067 1363 CHKCOL, TAD (1000 /"H@" (FOR ':' IN ASK) 5307 JMS LOOKUP off page ^ 14070 4774 5308 14071 7650 SNA CLA 5309 14072 5275 JMP CHKAMP 5310 JMS CHANGE off page ^ 14073 4772 5311 14074 4331 COLADD-1 5312 14075 1362 CHKAMP, TAD (1100 /"I@" (FOR & INSTEAD OF E) 5313 JMS LOOKUP off page ^ 14076 4774 5314 14077 7650 SNA CLA 5315 14100 5303 JMP CHKPRC 5316 JMS CHANGE off page ^ 14101 4772 5317 14102 4352 AMPADD-1 5318 14103 1361 CHKPRC, TAD (300 /"C@" (EXTENDED PRECISION) 5319 JMS LOOKUP off page ^ 14104 4774 5320 14105 7640 SZA CLA 5321 14106 5323 JMP SECRET 5322 JMS CHANGE off page ^ 14107 4772 5323 14110 4221 FORADD-1 5324 14111 1360 TAD (-31 5325 DCA LOOKUP off page ^ 14112 3774 5326 14113 1357 TAD (7270 5327 14114 3010 DCA 10 5328 14115 1356 TAD (FORFIN-1 5329 14116 3011 DCA 11 5330 14117 1411 TAD I 11 5331 14120 3410 DCA I 10 5332 ISZ LOOKUP off page ^ 14121 2774 5333 14122 5317 JMP .-3 5334 14123 1133 SECRET, TAD END 5335 14124 3031 DCA LASTV /ERASE VARIABLES 5336 14125 1355 TAD (4100 5337 JMS LOOKUP /CREATE THE THREE SECRET VARIABLES off page ^ 14126 4774 5338 14127 1374 TAD (4200 5339 JMS LOOKUP off page ^ 14130 4774 5340 14131 1375 TAD (4300 5341 JMS LOOKUP off page ^ 14132 4774 5342 14133 7340 CLA CLL CMA 5343 14134 1030 TAD PT1 5344 14135 3030 DCA PT1 /BACKUP PT1 5345 14136 4407 FINT /RESTORE SYSTEM SECRET VARIABLE 5346 14137 0346 FGET INITMP 5347 14140 6430 FPUT I PT1 5348 14141 0000 FEXT 5349 14142 1031 TAD LASTV 5350 14143 3133 DCA END /MAKE THEM SECRET 5351 14144 5745 JMP I .+1 5352 14145 2213 ERT /ERASE ALL TEXT 5353 5354 14146 0000 INITMP, ZBLOCK 4 /HOLDING AREA FOR '#' 14147 0000 14150 0000 14151 0000 5355 5356 14155 4100 PAGE 14156 4256 14157 7270 14160 7747 14161 0300 14162 1100 14163 1000 14164 0700 14165 0500 14166 0400 14167 5177 14170 0200 14171 1264 14172 4207 14173 0100 14174 4200 14175 4300 14176 0207 14177 2677 5357 14200 0000 LOOKUP, 0 5358 14201 3056 DCA EFOP 5359 14202 4537 PUSHJ 5360 14203 1431 GS1 5361 14204 2030 ISZ PT1 5362 14205 1430 TAD I PT1 /PICK UP FIRST SIGNIFICANT WORD 5363 14206 5600 JMP I LOOKUP 5364 5365 14207 0000 CHANGE, 0 5366 14210 1607 TAD I CHANGE 5367 14211 2207 ISZ CHANGE 5368 14212 3010 DCA 10 5369 14213 1410 CLOOP, TAD I 10 5370 14214 7450 SNA 5371 14215 5607 JMP I CHANGE 5372 14216 3071 DCA T2 5373 14217 1410 TAD I 10 5374 14220 3471 DCA I T2 5375 14221 5213 JMP CLOOP 5376 5377 /THESE ARE THE LISTS TO PATCH FOCAL TO YOUR CUSTOMIZED SPECS 5378 5379 /CHANGES FOR 6-DIGIT PRECISION 5380 14222 0070 FORADD, 70 5381 14223 0005 5 5382 14224 0117 117 5383 14225 7775 7775 5384 14226 5526 5526 5385 14227 7772 7772 5386 14230 5527 5527 5387 14231 0007 7 5388 14232 1504 VARPCH 5389 14233 7000 NOP 5390 14234 6143 6143 5391 14235 7771 7771 5392 14236 6277 6277 5393 14237 3147 3147 5394 14240 6402 6402 5395 14241 3047 3047 5396 14242 6540 6540 5397 14243 3043 3043 5398 14244 6736 6736 5399 14245 0027 27 5400 14246 7036 7036 5401 14247 5263 5263 5402 14250 7105 7105 5403 14251 2047 2047 5404 14252 7072 7072 5405 14253 3047 3047 5406 14254 7260 7260 5407 14255 7751 7751 5408 14256 0000 0 5409 5410 /ADDITIONAL CHANGES FOR 6-DIGIT PRECISION -- NOT MADE WITH "CHANGE" 5411 14257 1042 FORFIN, 1042 5412 14260 1046 1046 5413 14261 3256 3256 5414 14262 7004 7004 5415 14263 1045 1045 5416 14264 1041 1041 5417 14265 7420 7420 5418 14266 5304 5304 5419 14267 3045 3045 5420 14270 1256 1256 5421 14271 3046 3046 5422 14272 7200 7200 5423 14273 1254 1254 5424 14274 7004 7004 5425 14275 3254 3254 5426 14276 1200 1200 5427 14277 7004 7004 5428 14300 3200 3200 5429 14301 2255 2255 5430 14302 5267 5267 5431 14303 1254 1254 5432 14304 3046 3046 5433 14305 1200 1200 5434 14306 3045 3045 5435 14307 5661 5661 5436 5437 14310 0226 FILADD, PUSHB /PATCH PUSHB 5438 14311 5643 MPUSHA-1+13 5439 14312 0367 PUSHB1 /PATCH PUSHB1 5440 14313 5611 5576+13 5441 14314 1201 1201 /PATCH COMGO 5442 14315 2671 ERROR5 5443 14316 0000 0 5444 5445 14317 0405 SINADD, 405 5446 14320 2671 ERROR5 5447 14321 0406 406 5448 14322 2671 ERROR5 5449 14323 0402 LOGADD, 402 5450 14324 2671 ERROR5 5451 14325 0403 403 5452 14326 2671 ERROR5 5453 14327 0404 404 5454 14330 2671 ERROR5 5455 14331 0000 0 5456 5457 14332 1216 COLADD, 1216 5458 14333 1371 1371 /'TAD ALIST' 5459 14334 1217 1217 5460 14335 4400 JMS I ECHOP 5461 14336 0000 0 5462 5463 14337 6001 SPADD, 6001 5464 14340 7300 CLA CLL /DON'T PRINT LEADING SPACE 5465 14341 6002 6002 5466 14342 7300 CLA CLL 5467 14343 0000 0 5468 5469 14344 6001 EQADD, 6001 5470 14345 1335 1335 /'TAD PEQ' 5471 14346 6002 6002 5472 14347 4551 PRINTC 5473 14350 6135 6135 5474 14351 0275 0275 /PRINT LEADING '=' 5475 14352 0000 0 5476 5477 14353 5662 AMPADD, 5662 5478 14354 7532 7532 5479 14355 6133 6133 5480 14356 0246 246 5481 14357 6301 6301 5482 14360 7532 7532 5483 14361 0000 0 5484 5485 PAGE 5486 5487 $$$$$$$$$$$ A 0045 ABSOL 6751 ABSOL2 6153 ABSOL3 7375 ABSOLV 5571 AC1H 0041 AC1L 0042 ACDF 5654 ACIF 5741 ACMINS 6603 ADD 0061 ADDR 0040 ADONE 6673 AF 4677 AGAIN 6310 ALF1 4760 ALF2 4763 ALFZ 4755 ALGN 6570 ALIGN 6623 ALIST 1367 AMOUNT 6722 AMPADD 4353 ARCALG 4732 ARCRTN 5024 ARGNXT 1723 ARTN 5000 ASHFT 6665 ASK 1211 ATEM 0036 ATLIST 1565 ATSW 1210 AUTO1 0010 unreferenced AUTO2 0011 AUTO3 0012 AUTO4 0013 AUTO5 0014 AUTO6 0015 AUTO7 0016 unreferenced AUTO8 0017 AXIN 0010 AXIND 6350 AXOUT 0017 AXOUTD 2573 B 0046 BACK 5503 BET1 4771 BET2 4774 BETZ 4766 BF 4702 BLKCNT 3655 BLLL 6526 BLOCK 6537 BLOKLP 7017 BOTTOM 0035 BUFFER 7470 BUFR 0060 BUFST 5531 C 0047 C100 0002 C140 2556 C144 6140 C200 0123 C260 0113 C3 5346 C40 3207 C5 5342 C7 5336 C7600 6432 C9 5332 CALL 7233 CCIF 3726 CCR 0077 CEX1 6504 CEXP 6503 CF 4705 CFRS 0132 CFRSX 0136 CHAINE 6600 CHANGE 4207 CHAR 0066 CHARI 3132 CHIN 2154 CHKAMP 4075 CHKCOL 4067 CHKEQ 4061 CHKFIL 4045 CHKLOG 4025 unreferenced CHKPRC 4103 CHKSIN 4035 CHKSP 4053 CHKVAR 1446 CHRT 6133 CLCU 7427 CLF 0076 CLOOP 4213 CNTR 0057 CNTRC 2655 CNTRX 1310 COLADD 4332 COMBUF 0131 unreferenced COMGO 1171 COMLIS 6355 COMLST 0774 COMMEN 0612 COMPAR 6276 CON1 5037 COUNT 7170 CPRNT 7537 CRONLY 6344 CSTAR 0225 D 0041 DATUM 7102 DATUMA 7252 DAXIN 0173 DAXOUT 0174 DCDYES 6131 DCMA 6601 unreferenced DCONP 6303 DCONT 0470 DCOUNT 6143 DEBGSW 0026 DECODE 6116 DECON 5627 DECONV 5600 DECP 5533 DECR 5521 DELETE 4565 DERR 7303 DEVC 6242 DEVHLD 0105 DEVNO 0054 DF 4710 DGRP 0424 DGRP1 0440 unreferenced DIG 5543 DIGIT 5713 DIGITS 0012 DIRLIS 7072 unreferenced DISMIS 6152 DIV1 5754 DIV2 6757 DIVIDE 7150 DLOAD 6244 DMDONE 7063 unreferenced DMPSW 0100 DMULT 7004 DMULT4 7036 unreferenced DNORM 7335 DNUMBR 5714 DO 0417 DOK 2110 DONE 2126 DOONE 0462 DOUBLE 0126 DPC 0167 DPCVPT 6302 DPN 6305 DPT 6145 DPT1 0171 DSAVE 5640 DTHIS 0170 DTST 5647 DUBDIV 7261 DUBLAD 5733 DV3 7267 DXRT 0172 E 0042 ECALL 1601 ECHCHK 6102 ECHFLG 0047 ECHGO 6041 ECHO 3116 ECHOGO 7530 ECHOLS 1624 ECHOP 0000 EFOP 0056 EFUN 1743 EFUN2 1754 EFUN3 2017 EFUN3I 0135 ELPAR 1763 END 0133 ENDFI 6243 ENDLN 4556 ENDT 0134 ENQ 0205 ENUM 1732 EOF 3145 EPAR 1710 EPAR2 1765 EQADD 4344 ERASE 2203 ERG 2224 ERL 2221 ERR2 2672 ERROR 7244 ERROR1 4463 ERROR2 4566 ERROR3 4566 ERROR4 4566 ERROR5 2671 ERT 2213 ERVX 2236 ESC 0233 ESCA 2534 ETERM 1647 ETERM1 1627 ETERM2 1655 ETERMN 1644 EVAL 1613 EX1 0040 EXIT1 5034 EXIT2 5302 EXIT3 7363 EXP 0044 EXTENS 0031 EXTR 2312 F 0043 FADD 11000 FCDF 5670 FCHK 3274 FCHKP 3220 FCIF 5721 FCONT 1101 FCOS 5200 FCOUNT 5535 FDIS 3200 FDISI 3244 FDIV 13000 FDSW 3245 FDT2 3332 FEND3 2266 FENT 4407 FETCHE 6602 FEXP 4620 FEXT 0000 FGET 10000 FGO2 6011 FGO3 6027 FGO4 6034 FGO5 6070 FIGO1 6221 FIGO4 6261 FILADD 4310 FILER 3133 FILEST 5442 FILGO 6365 FILIST 6764 FIN 7520 FINCR 1065 FIND 0551 FIND1 0555 FINDLN 4555 FINDN 2245 FINFIN 1137 FINKP 1133 FINPUT 0130 FINT 4407 FISW 0052 FIX 6724 FIXM 6753 FJOY 3306 FL100 0302 FLAC 0044 FLAD 6506 FLAG1 5162 FLAG2 4725 FLARG 2030 FLARGP 0125 FLDSET 5743 FLDV 7107 FLEX 6525 FLGT 6467 FLIMIT 1075 FLINTP 6200 FLIST1 0575 FLIST2 0572 FLMY 6563 FLNGTH 0052 FLOG 5040 FLOP 1674 FLOUT 5556 FLOUTP 6000 FLP5 0305 FLPT 6465 FLSU 6505 FLTONE 2405 FLTXR 0014 FLTXR2 0015 FLTZER 2407 FM12 6142 FMUL 14000 FNEG 5163 FNOR 7000 FNTABF 0373 FNTABL 2164 FOCTXT 7343 FOR 1041 FORADD 4222 FORFIN 4257 FOUT 7532 FOUTPU 0127 FPAC1 7474 FPNT 6400 FPOW 15000 unreferenced FPRNT 5465 FPUT 16000 FRAN 7547 FSIN 5205 FSUB 12000 FXIT 0000 GECALL 1556 GEND 2333 GET1 2327 GET3 2344 GETARG 1401 GETC 4545 GETDEV 7152 GETLN 4554 GETLP 1411 GETSGN 1045 GETVAR 1405 GINC 0070 GLIST 1375 GLOOP 1435 GLOOP1 1457 GNAME 6016 GO 5021 GOK 0037 GOKILL 2010 GONE 0232 GOSUB 6701 GOSUB1 6601 GOSWIT 7513 GOTO 0601 GRPTST 0744 GS 0235 GS1 1431 GSERCH 1422 GTEM 0021 GTMON 6143 GZERR 0361 HANDAD 6200 HANDOK 6265 HIGH 3245 HND 7223 HORD 0045 HXIT 3267 IBAR 0212 IBLK 5472 ICHAR 5463 ICHAR1 5503 ICHAR2 5505 unreferenced ICHAR3 5513 unreferenced ICHARF 3126 IECALL 1037 IF 1013 IF1 1035 IF3 1025 IGNOR 0217 ILIST 0771 IN 5513 INBLK 0067 INBUF 0034 INCHT 5545 INDEV 0064 INDRCT 6463 INFIX 2400 INHND 0073 INIT 4000 INITMP 4146 INLIST 0567 INORM 6307 INPUT 0756 INPUTX 0271 INSUB 0036 INTEGE 0053 IOPEN 5600 IOWAIT 6137 IPART 1040 IPNFLG 0051 IPNTR 5544 IRETN 0227 IRST 5615 ITABLE 6573 ITEMP 5543 ITER1 7470 JFLOAT 3355 JLOOK 3332 JUMP 6462 K4 5525 KCF 6030 unreferenced L1 5126 L2 5131 L3 5134 L4 5137 LASTLN 0025 LASTOP 0055 LASTV 0031 LBLOCK 7023 LCON 0370 unreferenced LENF1 6660 LEXIT 7144 unreferenced LG2E 4713 LGOSUB 1551 LIB 7503 LIBBLK 0055 LIBDEV 6534 LIBFIL 0104 LIBHND 0061 LIBLEN 6533 LIBN 0131 LIBRAR 7000 LIBX 7060 LINE0 0210 LINE1 0224 LINENO 0067 LIST3 0077 LIST6 0073 LIST7 0075 LISTFL 0032 LISTGO 1365 LNGTH 7235 LOAD 6606 unreferenced LOADGO 6620 LOG2 5157 LOG5 5142 LOG6 5145 LOG7 5150 LOG8 5153 LOGADD 4323 LOOKUP 4200 LOOP01 6431 LOOP2 7027 LOOP3 7142 LORD 0046 LOWLIB 6400 LPRTST 2035 M100 0101 M10PT 6147 M11 0121 M12 2413 M137 2356 M140 2560 M144 6137 M16 6335 M2 0111 M20 0105 M240 0114 M260 1524 M271 1525 M4 6141 M40 2355 M5 0120 M77 0103 MAKV1 1475 MAKVAR 1464 MBREAK 2600 MCOM 1136 unreferenced MCR 0116 MCTRLC 2601 MD 5526 MEQ 1135 MF 0600 MFLT 0117 MGETC 5774 MGETLN 7337 MIF 7260 MINE 5662 MINSKI 0051 MINUS2 7153 MINUSA 0112 MINUSE 6301 MINUSZ 5663 MOD 5215 MODIFY 1313 MP1 7254 MP2 7256 MP3 7255 MP4 7200 MP5 7253 MP6 7210 MPD2 5656 MPD3 5705 MPER 0115 MPLUS 5664 MPOPA 5732 MPRINT 6321 MPUSHA 5631 MSEX 6761 MSORTC 5755 MSORTJ 6737 MSPACE 5665 MULDIV 7101 MULT 6566 MULT10 5667 MULT2 5715 MULTY 4752 NAGSW 0065 NAME 6000 NAMEC 6031 NAMECT 6135 NAMLOC 0026 NAMPT 7234 NEGATE 4451 NEGP 4724 NEND 7136 NEWDEV 0033 NEWLIN 6352 NLOOP 7110 NMBASE 6133 NOCARE 3170 NOCHAR 3665 NORF 6513 NORM 6567 NORMF 7147 NOSAVE 6720 NOTEQ 6221 NOX 6675 NOX1 6711 NOX2 6704 NPACK 7305 NPRNT 7132 NXTVAR 1443 O2 3724 O3 3730 O7600 3751 OBLK 3716 OCHAR 3154 OCHCT 3770 OCHK 7270 OCLCHK 7330 OCLOSE 3636 OCLOSR 6555 OLNGTH 3767 OM12 5530 ONE 4716 ONMTMP 5546 OOPEN 5400 OOVER 3742 OP 3113 OPEN 7200 OPMINS 6565 OPNEXT 1622 OPNFLG 0050 OPTABL 1731 OPTR1 3765 OPTR2 3766 OPUT 5532 ORST 5425 OSETUP 3753 OTHER 7214 OUT 2463 OUTA 5536 OUTBLK 0074 OUTCR 2473 OUTDEV 0063 OUTDG 6154 OUTECH 3156 OUTHND 0100 OVER1 0043 OVER2 0047 P13 0001 P15 1264 P17 0107 P177 0106 P2000 0372 P27 6750 P277 0110 P3 2034 P337 0075 P377 2555 P40 2554 P4000 0124 P43 6310 P7600 0104 P77 0122 P7700 0101 P7740 0371 PA1 2526 PACBUF 2504 PACKC 4546 PACKST 0027 PACX 2532 PADDR 6336 PALG 5261 PARTES 2047 PATCH 7141 PBACK 1305 PC 0022 PC0 0200 PC1 0612 PCHECK 5245 PCK1 2537 PCOMGO 6423 PD2 0476 PD3 0507 PDELET 7252 PDERR 5646 PDIGIT 7121 PDLXR 0013 PEQ 6135 PER 0102 PERD 6071 PERDSW 6134 PEXIT 0022 PFRAN 0377 PGETLN 7543 PI 5312 PI2 5036 PIOT 5316 PLCE 5536 PLOT 3215 POINT 0033 POINT4 6530 POINT6 6662 POINT7 7167 unreferenced POPA 4542 POPF 4544 POPJ 5540 PPPRNT 3125 PPRNT 2162 PPTEN 6144 PRETRN 6540 PRINTC 4551 PRINTX 3171 PRNT 2440 PRNT2 3112 PRNTI 6132 PRNTLN 4553 PROC 0607 PROCES 0606 PS8PC 2566 PSAVE 6436 PSIN 0165 unreferenced PT1 0030 PT1D 6165 PTABLE 7162 PTEMP 0311 PTEN 6275 PTEST 1564 PUSHA 4541 PUSHB 0226 PUSHB1 0367 PUSHF 4543 PUSHJ 4537 PUTDEV 6560 PXKSF 0634 R6 5441 RANRAN 2602 RAR1 6571 RAR2 6572 RDIV 0152 RDPTR 5525 READC 4552 RECORD 6536 RECOVR 2676 RECOVX 2704 unreferenced RECOVY 2706 REMAIN 5712 REPT 6146 RESOL 6752 RESOL3 7376 RESOL5 6304 RESOLV 7173 RESTOR 3614 RET 5452 RETRN 1557 RETRY 6231 RETURN 5535 REVIT 7146 RISZ 0016 RND2 5527 RNDM 6337 ROOTGO 7461 ROT 2561 ROUND 6151 RT 3730 RTL6 4557 RUB1 3000 RUB2 3036 RUB3 3024 RUB4 3033 RUB5 3035 RUBIT 2557 SADR 6150 SAVBLK 6504 SAVE 3751 SAVEPT 6470 SAVER 6433 SBAR 1337 SCHAR 1330 SCONT 1325 SCOUNT 5534 SECRET 4123 SECRTV 0175 SET 1041 SEX 1166 SEXC 0740 SFOUND 1343 SGOT 1347 SHNDLR 0040 SIGN 7124 SIGNF 0050 SINADD 4317 SLOT 6206 SMIN 6136 SMSP 6134 SORTB 1142 SORTC 4550 SORTCN 0054 SORTJ 4547 SP 1526 SPACE 1312 SPADD 4337 SPECIA 6777 SPLAT 3045 SPNOR 4560 SQCON1 7467 SQEND 7465 SRETN 0261 SRNLST 1361 START 0177 STARTL 5064 STARTV 0133 STBLK 0053 STVAR 3400 SUB 0232 SUBS 1515 SWAPIN 7275 T1 0032 T1S 6337 T2 0071 T3 0033 TAB 2503 TABC 1307 TABCNT 6325 TABCPT 6354 TABLE 6464 TAG1 6723 TASK 1213 TASK4 1261 TCRLF 1257 TCRLF2 1254 TDUMP 3046 TEM 5156 TEM7 0035 TEMP 4726 TEN 6271 TENPT 6152 TERMER 3137 TERMS 1770 TEST2 6736 TEST4 7366 TESTA 0350 TESTC 4564 TESTGO 7064 TESTN 4561 TESTRM 4462 TEXTP 0017 TGETC 4441 TGETLN 4502 TGO 5400 THIR 7257 THISD 6160 THISLN 0023 THISOP 0024 TINTR 1247 TLIST 1376 TLIST2 1402 TLIST3 2376 TPOPA 4442 TPOPF 4445 TPRINT 4501 TPUSHA 4443 TPUSHF 4444 TQUOT 1240 TRAD 6573 TRND 1311 TSORTJ 4446 TSPNOR 4503 TSTGRP 4563 TSTLPR 4562 TT 6136 TTAB 1265 TTYIN 5627 TTYOUT 5440 TTYTXT 6735 TWO 4721 TWOPI 5306 TYPE 1212 TYPE2 1234 US 0037 USR 0021 UTE 2275 UTQ 2304 UTRA 2273 UTX 2315 VAL 0032 VARPCH 1504 WALL 0664 WORDS 0004 WRITE 0635 WTEST2 0653 WTESTG 0667 WX 0673 X 5322 X1 5035 X133P 3136 X2 4675 XABS 2014 XCHAR 0037 XCHIN 0566 XCNTR 0020 XCT 0020 XCTIN 0062 XDELET 2062 XENDLN 2357 XFIND 2241 XFIND1 0565 XFORM 7317 XGETC 7347 XGETLN 0315 XHIGH 3232 XI33 2605 XIN 6306 XINPUT 5666 XINT 1351 XJ 3012 XKSF 2660 XOUBRK 2627 XOUTL 2617 XPOPA 0520 XPOPJ 1561 XPRNT 2423 XPRNTC 0151 XPUSHA 1354 XPUSHJ 2414 XRAN 6311 XRAR2 7365 XRESTO 5750 XRT 0011 XRT2 0012 XRTD 6343 XRTL6 0412 XSGN 7554 XSORTC 0721 XSPNOR 1515 XSQ2 4676 XSQR 5326 XSQRT 7400 XT3 0717 XTESTC 0700 XTESTN 1531 XTSBRK 2641 XTSBSV 2640 XTSPNO 6726 XYZ 2447 YBLK 5404 unreferenced YHIGH 3225 YINT 5402 YJ 3112 Z1467 0546 Z3 0547 ZERFND 1506 ZERO 6520 ZERROR 0543 ZERSCH 1530 ZERSW 0034 ZFOUND 0550 ZLOOP 7106 ZSERCH 0525