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