ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:07 2020 Source File: \s1eadd.asm 1 | *************************************************** S1A00010 2 | * * S1A00020 3 | * SUBROUTINE NAME- * S1A00030 4 | * FULL NAME- EXTENDED PRECISION FLOATING- * S1A00040 5 | * POINT ADD OR SUBTRACT SUBROUTINE. * S1A00050 6 | * CODE NAME- EADD/EADDX/ESUB/ESUBX * S1A00060 7 | * PURPOSE- THIS SUBPROGRAM PERFORMS A FLOATING- * S1A00070 8 | * POINT ADD OR SUBTRACT OF TWO EXTENDED * S1A00080 9 | * PRECISION NUMBERS. * S1A00090 10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* S1A00100 11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * S1A00110 12 | * SUBROUTINE LIBRARY MANUAL. * S1A00120 13 | * SPECIAL FEATURES- N/A * S1A00130 14 | * ADDITIONAL INFORMATION- * S1A00140 15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * S1A00150 16 | * SUBROUTINE LIBRARY MANUAL * S1A00160 17 | * * S1A00170 18 | *************************************************** S1A00180 LIBF EADD -V1. 20 | LIBR S1A00200 21 | EPR S1A00210 22 | ENT EADD S1A00220 23 | ENT ESUB S1A00230 24 | ENT EADDX S1A00240 25 | ENT ESUBX S1A00250 26 | * S1A00260 27 | *SUBTRACT ENTRIES S1A00270 28 | * S1A00280 0000 6939 29 | ESUB STX 1 SAVE+1 SAVE XR1 S1A00290 0001 C400 0000 30 | LD L *-* LOADER INSERT S1A00300 0003 6100 31 | LDX 1 0 XR1 NOT USED,SET TO ZERO S1A00310 0004 7003 32 | MDX ES1 S1A00320 0005 6934 33 | ESUBX STX 1 SAVE+1 S1A00330 0006 C400 0000 34 | LD L *-* LOADER INSERT S1A00340 0008 282F 35 | ES1 STS STAT S1A00350 0009 2001 36 | LDS 1 SUBTRACT ENTRY, OVERFLOW ON S1A00360 000A 700A 37 | MDX COMM S1A00370 38 | * S1A00380 39 | *ADD ENTRIES S1A00390 40 | * S1A00400 000B 692E 41 | EADD STX 1 SAVE+1 SAVE XR1 S1A00410 000C C400 0000 42 | LD L *-* LOADER INSERT S1A00420 000E 6100 43 | LDX 1 0 XR1 NOT USED,SET TO ZERO S1A00430 000F 2828 44 | STS STAT S1A00440 0010 7004 45 | MDX COMM S1A00450 0011 6928 46 | EADDX STX 1 SAVE+1 SAVE XR1 S1A00460 0012 C400 0000 47 | LD L *-* LOADER INSERT S1A00470 0014 2823 48 | STS STAT S1A00480 49 | * S1A00490 50 | *GET RETURN ADDRESS,AND LOAD ADDEND S1A00500 51 | * S1A00510 0015 D003 52 | COMM STO *+3 S1A00520 0016 8042 53 | A ONE S1A00530 0017 D024 54 | STO EXIT+1 BUILD EXIT S1A00540 0018 7580 0000 55 | MDX I1 *-* MODIFY XR1 BY OPND ADDR S1A00550 001A 1000 56 | NOP MAY SKIP S1A00560 001B C102 57 | LD 1 2 GET THE TWO WORD ADDEND S1A00570 001C 18D0 58 | RTE 16 MANTISSA TO ACC AND EXT S1A00580 001D C101 59 | LD 1 1 S1A00590 001E 4C01 004ER 60 | BSC L SARG,O IF SUB ENTRY,BR TO REVERSE S1A00600 61 | * SIGN OF SUBTRAHEND S1A00610 62 | *COMPUTE AND PERFORM SHIFT ON ADDEND,PERFORM ADD S1A00620 63 | * S1A00630 0020 D831 64 | STB STD BARG SAVE ADDEND (OR SUBTRAHEND) S1A00640 0021 C100 65 | LD 1 0 GET ADDEND EXPONENT,SAVE S1A00650 0022 D031 66 | STO TEMP S1A00660 0023 937D 67 | S 3 125 SUB AUGEND EXPONENT S1A00670 0024 4C30 003DR 68 | BSC L FLIP,-Z BR TO FLIP IF ADDEND LARGER S1A00680 0026 F02E 69 | EOR ALL1 MAKE SHIFT CONSTANT OF TWOS S1A00690 0027 8033 70 | A SRT1 COMPLEMENT OF DIFFERENCE S1A00700 0028 D006 71 | STO RTS S1A00710 0029 902D 72 | S RANGK CHECK RANGE OF SHIFT S1A00720 002A 4C30 0034R 73 | BSC L NORM+1,-Z IF GT 31,GO RET ONLY (FAC) S1A00730 002C C025 74 | LD BARG GET ADDEND S1A00740 002D 4828 75 | BSC +Z IF NEG,SUB ONE FOR 2S COMP- S1A00750 002E 9829 76 | SD D1 LEMENT ADJUSTMENT. S1A00760 002F 1880 77 | RTS SRT *-* SCALE TO MATCH AUGEND S1A00770 0030 4828 78 | BSC +Z IF NEG,RESTORE ONE S1A00780 0031 8826 79 | AD D1 S1A00790 0032 8B7E 80 | AD 3 126 PERFORM ADDITION/SUB S1A00800 81 | * S1A00810 82 | *PREPARE TO EXIT S1A00820 83 | * S1A00830 0033 DB7E 84 | NORM STD 3 126 SAVE SUM IN FAC S1A00840 0034 4C01 005BR 85 | BSC L OFLW,O IF OVFLO,BR TO SHIFT RT S1A00850 0036 1559*9500 86 | LIBF NORM NORMALIZE RSLT S1A00860 0037 0605*90C0 87 | OFT LIBF FARC SET ERROR CONDITIONS S1A00870 0038 2000 88 | STAT LDS *-* RESTORE STATUS S1A00880 0039 6500 0000 89 | SAVE LDX L1 *-* RESTORE XR1 S1A00890 003B 4C00 0000 90 | EXIT BSC L *-* RET TO MAIN PROG S1A00900 91 | * S1A00910 92 | *REVERSE THE ROLE OF ADDEND AND AUGEND S1A00920 93 | * S1A00930 003D 8018 94 | FLIP A SRTO SHIFT RT 0 CONSTANT S1A00940 003E D00A 95 | STO RTSF SAVE SCALE SHIFT S1A00950 003F 9017 96 | S RANGK CHECK RANGE OF SHIFT S1A00960 0040 4C08 0044R 97 | BSC L *+2,+ IF OUT OF RANGE,SET S1A00970 0042 C014 98 | LD RANGK SCALE SHIFT TO 31. S1A00980 0043 D005 99 | STO RTSF S1A00990 0044 C00F 100 | LD TEMP GET ADDEND EXPONENT AND S1A01000 0045 D37D 101 | STO 3 125 PUT IN FAC S1A01010 0046 CB7E 102 | LDD 3 126 GET AUGEND S1A01020 0047 4828 103 | BSC +Z IF NEG,SUB ONE FOR 2S COMP- S1A01030 0048 980F 104 | SD D1 LEMENT ADJUSTMENT. S1A01040 0049 1880 105 | RTSF SRT *-* SCALE SHIFT S1A01050 004A 4828 106 | BSC +Z IF NEG,RESTORE ONE S1A01060 004B 880C 107 | AD D1 S1A01070 004C 8805 108 | AD BARG PERFORM ADD/SUB S1A01080 004D 70E5 109 | MDX NORM RET TO NORMALIZE RSLT S1A01090 110 | * S1A01100 111 | *IF SUBTRACT ENTRY USED,REVERSE SIGN OF SUBTRAHEND S1A01110 112 | * S1A01120 004E D803 113 | SARG STD BARG SAVE ADDEND S1A01130 004F 10A0 114 | SLT 32 REVERSE SIGN, RESULT S1A01140 0050 9801 115 | SD BARG IN ACC AND EXT. S1A01150 0051 70CE 116 | MDX STB GO TO COMPUTE SUM S1A01160 117 | * S1A01170 118 | *CONSTANTS AND BUFFER AREA S1A01180 119 | * S1A01190 0052 0000 0000 120 | BARG DEC 0.0 ADDEND MANTISSA BUFFER S1A01200 0054 0000 121 | TEMP DC /0 ADDEND EXPONENT STG S1A01210 0055 FFFF 122 | ALL1 DC /FFFF TWOS COMPLEMENT MASK S1A01220 0056 1880 123 | SRTO SRT 0 SHIFT CONSTANT S1A01230 0057 189F 124 | RANGK SRT 31 SHIFT RANGE CONSTANT S1A01240 0058 0000 0001 125 | D1 DEC 1 TWO WORD ONE S1A01250 005A 8000 126 | SINK DC /8000 SIGN BIT MASK S1A01260 127 | * S1A01270 128 | *SHIFT RSLT RT ONE TO COMPENSATE FOR OVERFLOW. S1A01280 129 | * S1A01290 005B 1881 130 | OFLW SRT 1 PERFORM SHIFT AND S1A01300 005C F0FD 131 | EOR SINK CORRECT SIGN BIT. S1A01310 005D DB7E 132 | STD 3 126 S1A01320 005E C37D 133 | LD 3 125 INCREMENT RSLT EXPONENT S1A01330 005F 80F9 134 | A ONE BY ONE TO COMPENSATE FOR S1A01340 0060 D37D 135 | STO 3 125 SHIFT. S1A01350 0061 70D5 136 | MDX OFT GO TO EXIT S1A01360 005BR 137 | SRT1 EQU OFLW DEFINE SHIFT RT 1 CON S1A01370 0059R 138 | ONE EQU D1+1 DEFINE SINGLE WORD ONE S1A01380 0062 139 | END S1A01390 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced ALL1 0055R 122 69 BARG 0052R 120 64 74 108 113 115 COMM 0015R 52 37 45 D1 0058R 125 76 79 104 107 138 EADD 000BR 41 EADDX 0011R 46 ES1 0008R 35 32 ESUB 0000R 29 ESUBX 0005R 33 EXIT 003BR 90 54 FLIP 003DR 94 68 NORM 0033R 84 73 109 OFLW 005BR 130 85 137 OFT 0037R 87 136 ONE 0059R 138 53 134 RANGK 0057R 124 72 96 98 RTS 002FR 77 71 RTSF 0049R 105 95 99 SARG 004ER 113 60 SAVE 0039R 89 29 33 41 46 SINK 005AR 126 131 SRT1 005BR 137 70 SRTO 0056R 123 94 STAT 0038R 88 35 44 48 STB 0020R 64 116 TEMP 0054R 121 66 100