ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:07 2020 Source File: \r1fmpy.asm 1 | *************************************************** R1G00010 2 | * * R1G00020 3 | * SUBROUTINE NAME- * R1G00030 4 | * FULL NAME- STANDARD PRECISION FLOATING- * R1G00040 5 | * POINT MULTIPLY FUNCTION. * R1G00050 6 | * CODE NAME- FMPY/FMPYX * R1G00060 7 | * PURPOSE- THIS FUNCTION COMPUTES THE PRODUCT OF* R1G00070 8 | * TWO STANDARD PRECISION FLOATING-POINT * R1G00080 9 | * NUMBERS. * R1G00090 10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* R1G00100 11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * R1G00110 12 | * SUBROUTINE LIBRARY MANUAL. * R1G00120 13 | * SPECIAL FEATURES- N/A * R1G00130 14 | * ADDITIONAL INFORMATION- * R1G00140 15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * R1G00150 16 | * SUBROUTINE LIBRARY MANUAL * R1G00160 17 | * * R1G00170 18 | *************************************************** R1G00180 LIBF FMPY -V1. 20 | LIBR R1G00200 21 | SPR R1G00210 22 | ENT FMPY R1G00220 23 | ENT FMPYX R1G00230 0000 692B 24 | FMPYX STX 1 SAVE+1 SAVE XR1 R1G00240 0001 C400 0000 25 | LD L *-* CALL+1 R1G00250 0003 7004 26 | MDX COM R1G00260 0004 6927 27 | FMPY STX 1 SAVE+1 SAVE XR1 R1G00270 0005 C400 0000 28 | LD L *-* CALL+1 R1G00280 0007 6100 29 | LDX 1 0 XR1=ZERO R1G00290 0008 D004 30 | COM STO *+4 STORE CALL+1 R1G00300 0009 2820 31 | STS STAT STORE STATUS R1G00310 000A 8028 32 | A ONE BUILD EXIT R1G00320 000B D022 33 | STO EXIT+1 R1G00330 000C 7580 0000 34 | MDX I1 *-* EFFECTIVE OP ADDR IN XR1 R1G00340 000E 1000 35 | NOP IF MDX CAUSES BR,SKIP NOP R1G00350 36 | * R1G00360 37 | *COMPUTE PRODUCT R1G00370 38 | * R1G00380 000F C900 39 | LDD 1 0 LOAD MULTIPLIER R1G00390 0010 D81F 40 | STD BARG STORE MULTIPLIER R1G00400 0011 18D0 41 | RTE 16 STORE EXPONENT IN ACC R1G00410 0012 281E 42 | STS BARG+1 STRIP OFF EXPONENT IN BARG R1G00420 0013 F01D 43 | EOR BARG+1 EXPONENENT ONLY IN ACC R1G00430 0014 837D 44 | A 3 125 ADD FAC EXPONENT LESS 128 R1G00440 0015 901C 45 | S EXES R1G00450 0016 D37D 46 | STO 3 125 STORE NEW EXPONENT IN FAC R1G00460 0017 C818 47 | LDD BARG GET MANTISSA FROM FAC R1G00470 0018 2750*4880 48 | LIBF XMDS 24-BIT PREC MPY R1G00480 0019 DB7E 49 | STD 3 126 PRODUCT PUT IN FAC R1G00490 50 | * R1G00500 51 | *GET ABSOLUTE VALUE OF MANTISSA AND NORMALIZE R1G00510 52 | * R1G00520 001A 4C10 001ER 53 | BSC L *+2,- BR IF NON-NEG R1G00530 001C 10A0 54 | SLT 32 IF NEG,REVERSE SIGN R1G00540 001D 9B7E 55 | SD 3 126 R1G00550 001E 1081 56 | SLT 1 CHECK FOR SIGNIFICANT BIT R1G00560 001F 4C08 0027R 57 | BSC L NTPOS,+ BR IF NOT PTV R1G00570 0021 C37D 58 | LD 3 125 IF PTV,DECR EXPONENT BY R1G00580 0022 9010 59 | S ONE ONE R1G00590 0023 D37D 60 | STO 3 125 R1G00600 0024 CB7E 61 | LDD 3 126 AND SHIFT MANTISSA LEFT R1G00610 0025 1081 62 | SLT 1 BY ONE R1G00620 0026 DB7E 63 | STD 3 126 R1G00630 0027 4818 64 | NTPOS BSC +- SKIP IF NOT ZERO R1G00640 0028 D37D 65 | STO 3 125 IF ZERO MAKE EXPONENT ZERO R1G00650 0029 0605*90C0 66 | LIBF FARC CHK OVERFLOW/UNDERFLOW R1G00660 002A 2000 67 | STAT LDS *-* STORE STATUS R1G00670 002B 6500 0000 68 | SAVE LDX L1 *-* STORE XR1 R1G00680 002D 4C00 0000 69 | EXIT BSC L *-* RET TO CALL+2 R1G00690 70 | * R1G00700 71 | *CONSTANTS AREA R1G00710 72 | * R1G00720 0030 0000 0000 73 | BARG DEC 0.0 STORE MULTIPLIER R1G00730 0032 0080 74 | EXES DC /80 EXPONENT EXCESS=128 R1G00740 0033 0001 75 | ONE DC 1 SINGLE WORD ONE R1G00750 0034 76 | END R1G00760 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced BARG 0030R 73 40 42 43 47 COM 0008R 30 26 EXES 0032R 74 45 EXIT 002DR 69 33 FMPY 0004R 27 FMPYX 0000R 24 NTPOS 0027R 64 57 ONE 0033R 75 32 59 SAVE 002BR 68 24 27 STAT 002AR 67 31