ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:07 2020 Source File: \s1eaxi.asm 1 | *************************************************** S1B00010 2 | * * S1B00020 3 | * SUBROUTINE NAME- * S1B00030 4 | * FULL NAME- EXTENDED PRECISION FLOATING * S1B00040 5 | * POINT A**I FUNCTION. * S1B00050 6 | * CODE NAME- EAXI/EAXIX * S1B00060 7 | * PURPOSE- THIS SUBPROGRAM COMPUTES AN EXTENDED * S1B00070 8 | * PRECISION FLOATING-POINT BASE TO AN INTEGER* S1B00080 9 | * EXPONENT. * S1B00090 10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* S1B00100 11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * S1B00110 12 | * SUBROUTINE LIBRARY MANUAL. * S1B00120 13 | * SPECIAL FEATURES- N/A * S1B00130 14 | * ADDITIONAL INFORMATION- * S1B00140 15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * S1B00150 16 | * SUBROUTINE LIBRARY MANUAL * S1B00160 17 | * * S1B00170 18 | *************************************************** S1B00180 LIBF EAXI -V1. 20 | LIBR S1B00200 21 | EPR S1B00210 22 | ENT EAXI S1B00220 23 | ENT EAXIX S1B00230 0000 6934 24 | EAXIX STX 1 SAVE+1 SAVE XR1 S1B00240 0001 C400 0000 25 | LD L *-* LOADER INSERT S1B00250 0003 7004 26 | MDX COM S1B00260 0004 6930 27 | EAXI STX 1 SAVE+1 SAVE XR1 S1B00270 0005 C400 0000 28 | LD L *-* LOADER INSERT S1B00280 0007 6100 29 | LDX 1 0 INITIALIZE XR1-NOT USED S1B00290 0008 D003 30 | COM STO *+3 S1B00300 0009 803B 31 | A ONE BUILD EXIT S1B00310 000A D02C 32 | STO EXIT+1 S1B00320 000B 7580 0000 33 | MDX I1 *-* OPND ADDR INTO XR1 S1B00330 000D 1000 34 | NOP MAY SKIP S1B00340 35 | * S1B00350 36 | *CHECK FOR SPECIAL CONDITIONS. GET ABSOLUTE VALUE S1B00360 37 | *OF I. INITIALIZE FACTOR. S1B00370 38 | * S1B00380 000E C37E 39 | LD 3 126 GET BASE=A S1B00390 000F 4C18 003ER 40 | BSC L ZOER,+- BR IF A=0 TO CHK FOR ERROR S1B00400 0011 C100 41 | LD 1 0 GET EXPONENT=I S1B00410 0012 4C18 003BR 42 | BSC L STONE,+- BR IF I=O TO RET ONE S1B00420 0014 C032 43 | LD FL1 GET FLT PT ONE S1B00430 0015 D037 44 | STO FACTR SET FACTR TO EXTENDED S1B00440 0016 C831 45 | LDD FL1+1 PRECISION FLT PT ONE-- S1B00450 0017 D836 46 | STD FACTR+1 INITIALIZE PRODUCT LOOP. S1B00460 0018 1010 47 | SLA 16 CALC ABS VALUE OF I S1B00470 0019 9100 48 | S 1 0 AND STORE IN I S1B00480 001A 4808 49 | BSC + S1B00490 001B C100 50 | LD 1 0 S1B00500 001C D029 51 | STO I S1B00510 52 | * S1B00520 53 | *COMPUTE A**I S1B00530 54 | * S1B00540 001D 058A*3580 55 | EVEN LIBF ESTO S1B00550 001E 004AR 56 | DC A A=A*A S1B00560 001F C026 57 | LD I PUT ABS VALUE OF I IN A REG S1B00570 0020 4C04 002BR 58 | BSC L MULT,E BR IF LEAST BIT OF I = ONE S1B00580 0022 1801 59 | SHRT1 SRA 1 I=I/2 S1B00590 0023 D022 60 | STO I S1B00600 0024 4C18 0031R 61 | BSC L NEGCK,+- IF I=ZERO,GO CHK FOR NEG I S1B00610 0026 054C*4000 62 | LIBF ELD OTHERWISE,GET CURRENT S1B00620 0027 004AR 63 | DC A CONTENTS OF A AND SQUARE S1B00630 0028 0551*7A00 64 | LIBF EMPY THEM,LEAVING RSLT IN FAC. S1B00640 0029 004AR 65 | DC A S1B00650 002A 70F2 66 | MDX EVEN REPEAT LOOP S1B00660 002B 0551*7A00 67 | MULT LIBF EMPY IF PRESENT I VALUE IS ODD, S1B00670 002C 004DR 68 | DC FACTR MPY FACTR BY A TO ACCOUNT S1B00680 002D 058A*3580 69 | LIBF ESTO FOR THE BIT LOST IN SHIFT. S1B00690 002E 004DR 70 | DC FACTR S1B00700 002F C016 71 | LD I RESTORE I TO A REG S1B00710 0030 70F1 72 | MDX SHRT1 RET TO SQUARE A S1B00720 73 | * S1B00730 74 | *IF I WAS NEGATIVE, TAKE RECIPROCAL OF RESULT S1B00740 75 | * S1B00750 0031 C100 76 | NEGCK LD 1 0 GET SIGN OF I S1B00760 0032 4C08 0038R 77 | BSC L RCPR,+ IF NEG,GO TO GET RECIPROCAL S1B00770 0034 6500 0000 78 | SAVE LDX L1 *-* RESTORE XR1 S1B00780 0036 4C00 0000 79 | EXIT BSC L *-* EXIT S1B00790 80 | * S1B00800 81 | *SUBROUTINES TO TAKE RECIPROCAL,OR LOAD ONE INTO S1B00810 82 | *FAC,OR SET ERROR CONDITION INDICATORS. S1B00820 83 | * S1B00830 0038 0512*5640 84 | RCPR LIBF EDVR TAKE RECIPROCAL OF FACTR S1B00840 0039 0047R 85 | DC FL1 AND PUT IN FAC. S1B00850 003A 70F9 86 | MDX SAVE GO TO EXIT S1B00860 003B 054C*4000 87 | STONE LIBF ELD A NOT ZERO,I=ZERO=RETURN S1B00870 003C 0047R 88 | DC FL1 FLT PT ONE IN FAC S1B00880 003D 70F6 89 | MDX SAVE GO TO EXIT S1B00890 003E C100 90 | ZOER LD 1 0 A=ZERO.GET SIGN OF I S1B00900 003F 4C30 0034R 91 | BSC L SAVE,-Z IF PTV,EXIT WITH FAC=ZERO S1B00910 0041 C00E 92 | LD AIEBT IF NOT PTV,TURN ON ERROR S1B00920 0042 EB7C 93 | OR 3 124 INDICATOR. S1B00930 0043 D37C 94 | STO 3 124 S1B00940 0044 70EF 95 | MDX SAVE GO TO EXIT S1B00950 96 | * S1B00960 97 | *CONSTANTS AND BUFFER AREA S1B00970 98 | * S1B00980 0045 0001 99 | ONE DC 1 SINGLE WORD ONE S1B00990 0046 100 | BSS E 0 S1B01000 0046 0000 101 | I DC 0 EXPONENT BUFFER S1B01010 0047 0081 4000 0000 102 | FL1 XFLC 1.0 EXTENDED PREC FLT PT ONE S1B01020 004A 0000 0000 0000 103 | A XFLC 0.0 BASE BUFFER S1B01030 004D 0000 0000 0000 104 | FACTR XFLC 0.0 PRODUCT BUFFER S1B01040 0050 0020 105 | AIEBT DC /20 BIT 10--A**I ERROR BIT. S1B01050 0051 106 | END S1B01060 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced A 004AR 103 56 63 65 AIEBT 0050R 105 92 COM 0008R 30 26 EAXI 0004R 27 EAXIX 0000R 24 EVEN 001DR 55 66 EXIT 0036R 79 32 FACTR 004DR 104 44 46 68 70 FL1 0047R 102 43 45 85 88 I 0046R 101 51 57 60 71 MULT 002BR 67 58 NEGCK 0031R 76 61 ONE 0045R 99 31 RCPR 0038R 84 77 SAVE 0034R 78 24 27 86 89 91 95 SHRT1 0022R 59 72 STONE 003BR 87 42 ZOER 003ER 90 40