ibm:ibm1130-lib:dmsr2v12:r2fexp_lst
R2FEXP
Table Of Contents |
---|
|
- r2fexp.lst
ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:07 2020 Source File: \r2fexp.asm 1 | *************************************************** R2D00010 2 | * * R2D00020 3 | * SUBROUTINE NAME- * R2D00030 4 | * FULL NAME- STANDARD PRECISION FLOATING- * R2D00040 5 | * POINT EXPONENTIAL FUNCTION. * R2D00050 6 | * CODE NAME- FXPN/FEXP * R2D00060 7 | * PURPOSE- THIS SUBPROGRAM COMPUTES THE FLOATING* R2D00070 8 | * POINT EXPONENTIAL OF A STANDARD PRECISION * R2D00080 9 | * FLOATING-POINT NUMBER. * R2D00090 10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* R2D00100 11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * R2D00110 12 | * SUBROUTINE LIBRARY MANUAL. * R2D00120 13 | * SPECIAL FEATURES- N/A * R2D00130 14 | * ADDITIONAL INFORMATION- * R2D00140 15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * R2D00150 16 | * SUBROUTINE LIBRARY MANUAL * R2D00160 17 | * OTHER- A PERIOD FOLLOWED BY B, APPEARING TO* R2D00170 18 | * THE RIGHT OF COMMENT, INDICATES THAT THE* R2D00180 19 | * NUMBER FOLLOWING IS THE BINARY POINT OF * R2D00190 20 | * THE NUMBER PRESENTLY IN THE ACCUMULATOR.* R2D00200 21 | * LET C REFER TO THE TRUE EXPONENT OF THE * R2D00210 22 | * INPUT ARGUMENT. * R2D00220 23 | * * R2D00230 24 | *************************************************** R2D00240 CALL FEXP -V1. 26 | SPR R2D00260 27 | ENT FEXP STANDARD FORTRAN NAME R2D00270 28 | ENT FXPN R2D00280 0000 0000 29 | FEXP DC 0 FORTRAN ENTRY R2D00290 0001 061C*58D7 30 | LIBF FGETP GET PARAMETER R2D00300 0002 0000 31 | FXPN DC 0 USER ENTRY R2D00310 0003 2864 32 | STS EXPS SAVE STATUS R2D00320 0004 6966 33 | STX 1 XR1+1 SAVE XR1 R2D00330 0005 6A67 34 | STX 2 XR2+1 SAVE XR2 R2D00340 0006 C839 35 | LDD LOG2E GET LOG2E .B1 R2D00350 0007 2750*4880 36 | LIBF XMDS MPY BY (FAC). .B1+C R2D00360 37 | * LET Y=INPUT ARGUMENT R2D00370 0008 DB7E 38 | STD 3 126 STORE Y*LOG2E IN FAC.B1+C R2D00380 0009 C37D 39 | LD 3 125 GET Y EXPONENT R2D00390 000A 9041 40 | S X SUB 128+14. C-14 R2D00400 000B 4C30 0070R 41 | BSC L OVFL,Z- BR IF Y EXPONENT TOO BIG R2D00410 000D 803F 42 | A X+1 SCALE Y EXPONENT BY 3. C+3 R2D00420 000E D003 43 | STO BUF1+1 KEEP SCALED EXPONENT R2D00430 000F 4C28 0022R 44 | BSC L SRT,+Z BR IF EXPONENT LT -3 R2D00440 0011 6500 0000 45 | BUF1 LDX L1 *-* Y EXPONENT+3 IN XR1 .C-3 R2D00450 0013 C37E 46 | LD 3 126 GET Y*LOG2E .B1+C R2D00460 0014 1891 47 | SRTR SRT 17 MOVE TO EXTENSION .B18+C R2D00470 0015 1180 48 | SLT 1 SHIFT TO EXPONENT+3 .B15 R2D00480 0016 8037 49 | A X+2 ADD IN EXCESS R2D00490 0017 D37D 50 | STO 3 125 SET THE EXPONENT OF 2=N R2D00500 0018 1010 51 | SLA 16 CLEAR ACCUMULATOR R2D00510 0019 1082 52 | SLT 2 2 BITS USED AS INDR R2D00520 001A 1001 53 | SLA 1 MPY D BY 2 R2D00530 001B D043 54 | STO D+1 R2D00540 001C CB7E 55 | LDD 3 126 GET Y*LOG2E .B1+C R2D00550 001D 1180 56 | SLT 1 CORRECT FOR EXPONENT.B-2 R2D00560 001E E030 57 | AND X+3 MAKE SIGN PTV R2D00570 001F 9030 58 | S X+4 SUB 1/8 R2D00580 0020 D829 59 | STD Z STORE REMAINING FRACTION R2D00590 0021 7031 60 | MDX EXP2 R2D00600 0022 1010 61 | SRT SLA 16 CLEAR ACCUMULATOR R2D00610 0023 90EE 62 | S BUF1+1 REVERSE EXPONENT SIGN.-C-3 R2D00620 0024 D001 63 | STO *+1 STORE PTV EXPONENT IN XR1 R2D00630 0025 6500 0000 64 | LDX L1 *-* PTV EXPONENT IN XR1 .C-3 R2D00640 0027 902A 65 | S C32 CHECK SIZE OF EXPONENT R2D00650 0028 4810 66 | BSC - BR IF IN RANGE R2D00660 0029 6120 67 | LDX 1 32 TOO BIG,SET XR1 TO 32 R2D00670 002A CB7E 68 | LDD 3 126 GET Y*LOG2E .B1+C R2D00680 002B 4828 69 | BSC +Z BR IF NOT NEG R2D00690 002C 9807 70 | SD ONE IF NEG,DECR EXPONENT BY 1 R2D00700 002D 1980 71 | SRT 1 CORRECT FOR EXPONENT.B-2 R2D00710 002E 4828 72 | BSC +Z BR IF NOT NEG R2D00720 002F 8804 73 | AD ONE IF NEG,RESTORE 1 R2D00730 0030 DB7E 74 | STD 3 126 MODIFIED Y*LOG2E IN FAC R2D00740 0031 6100 75 | LDX 1 0 XR1=ZERO R2D00750 0032 70E1 76 | MDX SRTR GO TO GET N,D,Z R2D00760 0034 0000 0001 77 | ONE DEC 1 FLT PT ONE R2D00770 0036 7FFF FFFF 78 | HELP DEC 1.999999999999B1 OVERFLOW CON R2D00780 0038 45CA E0F4 79 | M8TAB DEC 1.090507734725258B1 2**(1/8) R2D00790 003A 52FF 6B55 80 | DEC 1.296839554851010B1 2**(3/8) R2D00800 003C 62B3 9509 81 | DEC 1.542210825807941B1 2**(5/8) R2D00810 003E 7560 6374 82 | DEC 1.834008086509342B1 2**(5/8) R2D00820 0040 5C55 1D95 83 | LOG2E DEC 1.442695041288963B1 LOG BASE 2 OF E R2D00830 0042 162E 42C8 84 | A1 DEC 0.693147079B2 CONSTANTS R2D00840 0044 01EB FBDD 85 | A2 DEC 0.240226486B4 FOR R2D00850 0046 001C 6E72 86 | A3 DEC 0.0555301557B6 APPROXIMATING R2D00860 0048 0001 3B49 87 | A4 DEC 0.0096217399B8 POLYNOMIAL R2D00870 004A 0000 0000 88 | Z DEC 0 STORE REMAINDER FRACTION R2D00880 004C 008E 89 | X DC 128+14 CHK SIZE OF EXPONENT R2D00890 004D 0011 90 | DC 14+3 SCALE EXPONENT R2D00900 004E 0081 91 | DC 129 SCALE EXPONENT R2D00910 004F 7FFF 92 | DC /7FFF CHANGE SIGN TO PTV R2D00920 0050 4000 93 | DC /4000 CON OF 1/8 R2D00930 0051 3A98 94 | DC 15000 R2D00940 0052 0020 95 | C32 DC 32 R2D00950 0053 C8F6 96 | EXP2 LDD Z USE THE POLYNOMIAL .B-2 R2D00960 0054 DB7E 97 | STD 3 126 APPROXIMATION TO GET R2D00970 0055 C8F2 98 | LDD A4 2**Z .B8 R2D00980 0056 2750*4880 99 | LIBF XMDS .B6 R2D00990 0057 88EE 100 | AD A3 .B6 R2D01000 0058 2750*4880 101 | LIBF XMDS .B4 R2D01010 0059 88EA 102 | AD A2 .B4 R2D01020 005A 2750*4880 103 | LIBF XMDS .B2 R2D01030 005B 88E6 104 | AD A1 .B2 R2D01040 005C 2750*4880 105 | LIBF XMDS .B0 R2D01050 005D DB7E 106 | STD 3 126 STORE 2**Z IN FAC R2D01060 005E 6600 0000 107 | D LDX L2 *-* SET XR2 TO REFERENCE TABLE R2D01070 0060 CE00 0038R 108 | LDD L2 M8TAB GET 2**D .B1 R2D01080 0062 2750*4880 109 | LIBF XMDS (2**Z)*(2**D) .B1 R2D01090 0063 8E00 0038R 110 | AD L2 M8TAB ADD IN AO TERM .B1 R2D01100 0065 4801 111 | BSC O BR IF NO OVERFLOW R2D01110 0066 C8CF 112 | LDD HELP OVFLO DUE TO ROUND ERROR. R2D01120 0067 DB7E 113 | STD 3 126 STORE IN FAC R2D01130 0068 2000 114 | EXPS LDS *-* RESTORE STATUS R2D01140 0069 0605*90C0 115 | LIBF FARC CHECK FAC RANGE. R2D01150 006A 6500 0000 116 | XR1 LDX L1 *-* RESTORE XR1 R2D01160 006C 6600 0000 117 | XR2 LDX L2 *-* RESTORE XR2 R2D01170 006E 4C80 0002R 118 | BSC I FXPN R2D01180 0070 C37E 119 | OVFL LD 3 126 IF ARGUMENT IS MUCH TOO R2D01190 0071 D37D 120 | STO 3 125 FAR OUT OF RANGE, SET R2D01200 0072 1801 121 | SRA 1 FAC TO FORCE PROPER R2D01210 0073 D37E 122 | STO 3 126 ACTION IN FARC. R2D01220 0074 70F3 123 | MDX EXPS R2D01230 0075 124 | END R2D01240 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced A1 0042R 84 104 A2 0044R 85 102 A3 0046R 86 100 A4 0048R 87 98 BUF1 0011R 45 43 62 C32 0052R 95 65 D 005ER 107 54 EXP2 0053R 96 60 EXPS 0068R 114 32 123 FEXP 0000R 29 FXPN 0002R 31 118 HELP 0036R 78 112 LOG2E 0040R 83 35 M8TAB 0038R 79 108 110 ONE 0034R 77 70 73 OVFL 0070R 119 41 SRT 0022R 61 44 SRTR 0014R 47 76 X 004CR 89 40 42 49 57 58 XR1 006AR 116 33 XR2 006CR 117 34 Z 004AR 88 59 96
ibm/ibm1130-lib/dmsr2v12/r2fexp_lst.txt ยท Last modified: 2023/08/06 13:34 by Site Administrator