ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:07 2020 Source File: \r1fadd.asm 1 | *************************************************** R1A00010 2 | * * R1A00020 3 | * SUBROUTINE NAME- * R1A00030 4 | * FULL NAME- STANDARD PRECISION FLOATING- * R1A00040 5 | * POINT ADD-SUBTRACT SUBPROGRAM. * R1A00050 6 | * CODE NAME- FADD/FADDX/FSUB/FSUBX * R1A00060 7 | * PURPOSE- THIS SUBPROGRAM ADDS OR SUBTRACTS * R1A00070 8 | * TWO STANDARD PRECISION FLOATING POINT * R1A00080 9 | * NUMBERS. * R1A00090 10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* R1A00100 11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * R1A00110 12 | * SUBROUTINE LIBRARY MANUAL. * R1A00120 13 | * SPECIAL FEATURES- N/A * R1A00130 14 | * ADDITIONAL INFORMATION- * R1A00140 15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * R1A00150 16 | * SUBROUTINE LIBRARY MANUAL * R1A00160 17 | * * R1A00170 18 | *************************************************** R1A00180 LIBF FADD -V1. 20 | LIBR R1A00200 21 | SPR R1A00210 22 | ENT FADD R1A00220 23 | ENT FSUB R1A00230 24 | ENT FADDX R1A00240 25 | ENT FSUBX R1A00250 0000 693B 26 | FSUB STX 1 SAVE+1 SAVE XR1 R1A00260 0001 C400 0000 27 | LD L *-* CALL+1 R1A00270 0003 6100 28 | LDX 1 0 XR1=ZERO R1A00280 0004 7003 29 | MDX FS1 R1A00290 0005 6936 30 | FSUBX STX 1 SAVE+1 SAVE XR1 R1A00300 0006 C400 0000 31 | LD L *-* CALL+1 R1A00310 0008 2831 32 | FS1 STS STAT SAVE STATUS R1A00320 0009 2001 33 | LDS 1 SINCE SUB ENTRY IS USED PUT R1A00330 000A 700A 34 | MDX COMM OVERFLOW INDICATOR ON R1A00340 000B 6930 35 | FADD STX 1 SAVE+1 SAVE XR1 R1A00350 000C C400 0000 36 | LD L *-* CALL+1 R1A00360 000E 6100 37 | LDX 1 0 XR1=ZERO R1A00370 000F 282A 38 | STS STAT SAVE STATUS R1A00380 0010 7004 39 | MDX COMM R1A00390 0011 692A 40 | FADDX STX 1 SAVE+1 SAVE XR1 R1A00400 0012 C400 0000 41 | LD L *-* CALL+1 R1A00410 0014 2825 42 | STS STAT SAVE STATUS R1A00420 0015 D003 43 | COMM STO *+3 ST LOC OF OPND ADDR R1A00430 0016 8046 44 | A ONE R1A00440 0017 D026 45 | STO EXIT+1 BUILD EXIT R1A00450 0018 7580 0000 46 | MDX I1 *-* MODIFY XR1 BY OPND ADDR R1A00460 001A 1000 47 | NOP IF MDX CAUSES BR,SKIP NOP R1A00470 48 | * R1A00480 49 | *SAVE ADDEND MANTISSA AND EXPONENT R1A00490 50 | * R1A00500 001B C900 51 | LDD 1 0 LOAD OPERAND R1A00510 001C D839 52 | STD BARG ST OPND IN BARG R1A00520 001D 18D0 53 | RTE 16 SECOND WORD OF OPND IN ACC R1A00530 001E 2802 54 | STS *+2 STATUS INDRS SET TO ZERO R1A00540 001F 2837 55 | STS BARG+1 STRIP OFF EXPONENT R1A00550 0020 F036 56 | EOR BARG+1 EXPONENT ONLY IN ACC R1A00560 0021 2000 57 | LDS *-* RESTORE STATUS R1A00570 0022 D035 58 | STO BEX STORE EXPONENT IN BEX R1A00580 0023 4C01 0050R 59 | BSC L SARG,O BRANCH ON OVERFLOW TO SUBR R1A00590 60 | * R1A00600 61 | *DO REQUIRED ADDITION OR SUBTRACTION R1A00610 62 | * R1A00620 0025 937D 63 | CALS S 3 125 SUB FAC EXPONENT FROM BEX R1A00630 0026 4C30 003FR 64 | BSC L FLIP,-Z BR ON PTV R1A00640 0028 F030 65 | EOR ALL1 IF NEG OR ZERO,2'S CMPL R1A00650 0029 8035 66 | A SRT1 STORE SHIFT R1A00660 002A D006 67 | STO RTS R1A00670 002B 902F 68 | S RANGK SRT31 TO CHK RANGE R1A00680 002C 4C30 0036R 69 | BSC L NORM+1,-Z BR IF OUT OF RANGE R1A00690 002E C827 70 | LDD BARG IN RANGE,GET ADDEND R1A00700 002F 4828 71 | BSC +Z SKIP IF NON-NEG R1A00710 0030 982B 72 | SD D1 IF NEG,SUB 1 R1A00720 0031 1880 73 | RTS SRT *-* CORR FOR EXPONENT SHIFT R1A00730 0032 4828 74 | BSC +Z SKIP IF NON-NEG R1A00740 0033 8828 75 | AD D1 IF NEG,ADD 1 R1A00750 0034 8B7E 76 | AD 3 126 ADD FAC MANTISSA R1A00760 0035 DB7E 77 | NORM STD 3 126 STORE IN FAC R1A00770 0036 4C01 005FR 78 | BSC L OFLW,O BR IF OVERFLOW INDR ON R1A00780 0038 1559*9500 79 | LIBF NORM OTHERWISE NORMALIZE R1A00790 0039 0605*90C0 80 | OFT LIBF FARC CALL CHKING SUBR R1A00800 003A 2000 81 | STAT LDS *-* RESTORE STATUS R1A00810 003B 6500 0000 82 | SAVE LDX L1 *-* RESTORE XR1 R1A00820 003D 4C00 0000 83 | EXIT BSC L *-* BR OUT R1A00830 84 | * R1A00840 85 | *CALCULATE AND ALLOW FOR RSLT EXPONENT SHIFT R1A00850 86 | * R1A00860 003F 801A 87 | FLIP A SRTO R1A00870 0040 D00A 88 | STO RTSF CONSTRUCT EXPONENT SHIFT R1A00880 0041 9019 89 | S RANGK SUB SRT31 TO CHECK RANGE R1A00890 0042 4C08 0046R 90 | BSC L *+2,+ BR IF IN RANGE R1A00900 0044 C016 91 | LD RANGK OUT OF RANGE,SET UP SRT31 R1A00910 0045 D005 92 | STO RTSF GET ADDEND EXPONENT R1A00920 0046 C011 93 | LD BEX R1A00930 0047 D37D 94 | STO 3 125 AND PUT IN FAC R1A00940 0048 CB7E 95 | LDD 3 126 GET FAC MANTISSA R1A00950 0049 4828 96 | BSC +Z SKIP IF NON-NEG R1A00960 004A 9811 97 | SD D1 IF NEG SUB 1 R1A00970 004B 1880 98 | RTSF SRT *-* SHIFT TO ALLOW FOR EXPONENT R1A00980 004C 4828 99 | BSC +Z SKIP IF NON-NEG R1A00990 004D 880E 100 | AD D1 IF NEG ADD 1 R1A01000 004E 8807 101 | AD BARG ADD THE TWO MANTISSAS R1A01010 004F 70E5 102 | MDX NORM GO TO NORMALIZE R1A01020 103 | * R1A01030 104 | *MODIFY SIGN FOR SUBTRACT ROUTINES R1A01040 105 | * R1A01050 0050 10A0 106 | SARG SLT 32 CLEAR ACC AND EXT R1A01060 0051 9804 107 | SD BARG REVERSE SIGN OF ADDEND R1A01070 0052 D803 108 | STD BARG R1A01080 0053 C004 109 | LD BEX GET EXPONENT OF ADDEND R1A01090 0054 70D0 110 | MDX CALS R1A01100 111 | * R1A01110 112 | *CONSTANTS TABLE R1A01120 113 | * R1A01130 0056 0000 0000 114 | BARG DEC 0.0 STORE ADDEND R1A01140 0058 0000 115 | BEX DC 0 STORE ADDEND EXPONENT R1A01150 0059 FFFF 116 | ALL1 DC /FFFF ONE'S CMPL MASK R1A01160 005A 1880 117 | SRTO SRT 0 SHIFT CONSTANT R1A01170 005B 189F 118 | RANGK SRT 31 RANGE CHECK CONSTANT R1A01180 005C 0000 0001 119 | D1 DEC 1 FLT PT ONE R1A01190 005E 8000 120 | SINK DC /8000 SIGN BIT MASK R1A01200 121 | * R1A01210 122 | *DO SHIFT TO ALLOW FOR OVERFLOW R1A01220 123 | * R1A01230 005F 1881 124 | OFLW SRT 1 SHIFT RESULT RIGHT R1A01240 0060 F0FD 125 | EOR SINK AND REVERSE SIGN BIT R1A01250 0061 DB7E 126 | STD 3 126 STORE IN FAC R1A01260 0062 C37D 127 | LD 3 125 COMPENSATE BY INCRING R1A01270 0063 80F9 128 | A ONE EXPONENT BY 1 R1A01280 0064 D37D 129 | STO 3 125 R1A01290 0065 70D3 130 | MDX OFT R1A01300 131 | * R1A01310 132 | *EQUATE STATEMENTS R1A01320 133 | * R1A01330 005FR 134 | SRT1 EQU OFLW DEFINE CONSTANT SRT1 R1A01340 005DR 135 | ONE EQU D1+1 DEFINE SINGLE WORD ONE R1A01350 0066 136 | END R1A01360 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced ALL1 0059R 116 65 BARG 0056R 114 52 55 56 70 101 107 108 BEX 0058R 115 58 93 109 CALS 0025R 63 110 COMM 0015R 43 34 39 D1 005CR 119 72 75 97 100 135 EXIT 003DR 83 45 FADD 000BR 35 FADDX 0011R 40 FLIP 003FR 87 64 FS1 0008R 32 29 FSUB 0000R 26 FSUBX 0005R 30 NORM 0035R 77 69 102 OFLW 005FR 124 78 134 OFT 0039R 80 130 ONE 005DR 135 44 128 RANGK 005BR 118 68 89 91 RTS 0031R 73 67 RTSF 004BR 98 88 92 SARG 0050R 106 59 SAVE 003BR 82 26 30 35 40 SINK 005ER 120 125 SRT1 005FR 134 66 SRTO 005AR 117 87 STAT 003AR 81 32 38 42