R1FDIV

Table Of Contents
  • [00023] LIBF FDIV -V1.
r1fdiv.lst
ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov  1 19:25:07 2020
 
Source File: \r1fdiv.asm 
                             1 | *************************************************** R1C00010
                             2 | *                                                 * R1C00020
                             3 | *   SUBROUTINE NAME-                              * R1C00030
                             4 | *      FULL NAME- STANDARD PRECISION FLOATING-    * R1C00040
                             5 | *         POINT DIVIDE FUNCTION.                  * R1C00050
                             6 | *      CODE NAME- FDIV/FDIVX                      * R1C00060
                             7 | *   PURPOSE- THIS SUBPROGRAM COMPUTES THE QUOTIENT* R1C00070
                             8 | *      OF TWO STANDARD PRECISION FLOATING-POINT   * R1C00080
                             9 | *      NUMBERS.                                   * R1C00090
                            10 | *   METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* R1C00100
                            11 | *   CAPABILITIES AND LIMITATIONS- SEE IBM 1130    * R1C00110
                            12 | *      SUBROUTINE LIBRARY MANUAL.                 * R1C00120
                            13 | *   SPECIAL FEATURES- N/A                         * R1C00130
                            14 | *   ADDITIONAL INFORMATION-                       * R1C00140
                            15 | *      ESTIMATED EXECUTION TIME- SEE IBM 1130     * R1C00150
                            16 | *         SUBROUTINE LIBRARY MANUAL               * R1C00160
                            17 | *                                                 * R1C00170
                            18 | *   VERSION 2  MODIFICATION 10                      R1C00175
                            19 | *************************************************** R1C00180
LIBF FDIV  -V1.
 
                            21 |       LIBR                                          R1C00200
                            22 |       SPR                                           R1C00210
                            23 |       ENT     FDIV                                  R1C00220
                            24 |       ENT     FDIVX                                 R1C00230
0000 694E                   25 | FDIVX STX   1 SAVE+1    SAVE XR1                    R1C00240
0001 C400 0000              26 |       LD   L  *-*       CALL+1                      R1C00250
0003 7004                   27 |       MDX     COM                                   R1C00260
0004 694A                   28 | FDIV  STX   1 SAVE+1    SAVE XR1                    R1C00270
0005 C400 0000              29 |       LD   L  *-*       CALL+1                      R1C00280
0007 6100                   30 |       LDX   1 0         XR1=ZERO                    R1C00290
0008 D004                   31 | COM   STO     *+4                                   R1C00300
0009 2843                   32 |       STS     STAT                                  R1C00310
000A 804E                   33 |       A       ONE       BUILD EXIT                  R1C00320
000B D045                   34 |       STO     EXIT+1                                R1C00330
000C 7580 0000              35 |       MDX  I1 *-*       EFFECTIVE OPND ADDR IN XR1  R1C00340
000E 1000                   36 |       NOP               IF MDX CAUSES BR, SKIP NOP  R1C00350
                            37 | *                                                   R1C00360
                            38 | *DO TESTS ON DIVISOR AND COMPUTE EXPONENT OF RESULT R1C00370
                            39 | *                                                   R1C00380
000F C900                   40 |       LDD   1 0         LOAD DIVISOR                R1C00390
0010 4C18 0056R             41 |       BSC  L  DIVCK,+-  GO SET ERROR IF DIVISOR=0   R1C00400
0012 D84B                   42 |       STD     BARG      OTHERWISE SAVE DIVISOR      R1C00410
0013 18D0                   43 |       RTE     16        GET SECOND WD OF DIVISOR    R1C00420
0014 284A                   44 |       STS     BARG+1    STRIP OFF EXPONENT FIELD    R1C00430
0015 F049                   45 |       EOR     BARG+1    EXPONENT ONLY IN ACC        R1C00440
0016 F043                   46 |       EOR     ALL1      ONES COMPLIMENT             R1C00450
0017 8043                   47 |       A       K1        TWOS COMPLIMENT + 128       R1C00460
0018 837D                   48 |       A     3 125       MODIFY DIVIDEND EXPONENT    R1C00470
0019 D37D                   49 |       STO   3 125       STORE NEW EXPONENT          R1C00480
001A C843                   50 |       LDD     BARG      GET LEAST SIGNIFICANT       R1C00490
001B 18D0                   51 |       RTE     16        OF DIVISOR                  R1C00500
001C 4C18 0052R             52 |       BSC  L  SKIP,+-   BR IF ZERO                  R1C00510
001E 1802                   53 |       SRA     2         SHIFT FOR EXPONENT          R1C00520
001F A37E                   54 |       M     3 126       TIMES SIGNIFICANT FAC       R1C00530
0020 A83D                   55 |       D       BARG      MOST SIGNIFICANT PART OF    R1C00540
0021 F038                   56 |       EOR     ALL1      DIVISOR. CHANGE TO 2'S      R1C00550
0022 8036                   57 |       A       ONE       COMPLEMENT AND SHIFT FOR    R1C00560
0023 188E                   58 |       SRT     14        CORRECT POSITION. SUBTRACT  R1C00570
0024 8B7E                   59 |       AD    3 126       FROM DIVIDEND.              R1C00580
0025 DB7E                   60 |       STD   3 126       SAVE ACC. & EXT.            R1C00585
                            61 | *                                                   R1C00590
                            62 | *PERFORM DIVISION ON THE MANTISSA                   R1C00600
                            63 | *                                                   R1C00605
0026 F039                   64 | DIV   EOR     DMASK     CHECK FOR /8000             R1C00610
0027 4C20 002FR             65 |       BSC  L  DIVD,Z    BRANCH NOT /8000            R1C00611
0029 18D0                   66 |       RTE     16        ROTATE BOTH 16              R1C00612
002A E037                   67 |       AND     DDMSK     CHECK FOR /FFFC             R1C00613
002B 4C20 002FR             68 |       BSC  L  DIVD,Z    BRANCH NOT ZERO             R1C00614
002D C832                   69 |       LDD     DMASK     SET ACC.+EXT.= /80000004    R1C00615
002E 7001                   70 |       MDX     DIVDE     GO TO DIVIDE                R1C00616
002F CB7E                   71 | DIVD  LDD   3 126     RESTORE ACC.+EXT. TO ORIGNL   R1C00617
0030 1882                   72 | DIVDE SRT     2         SHIFT BOTH RIGHT            R1C00620
0031 4801                   73 |       BSC     O         WAS THERE OVERFLOW          R1C00630
0032 F029                   74 |       EOR     K2        YES, RESTORE SIGN           R1C00640
0033 A82A                   75 |       D       BARG      AND DIVIDE                  R1C00650
0034 D028                   76 |       STO     Q1        SAVE 1ST HALF OF QUOTIENT   R1C00660
0035 1090                   77 |       SLT     16        BRING IN REMAINDER          R1C00670
0036 4C18 0054R             78 |       BSC  L  NOR,+-    BR ON NO REMAINDER          R1C00680
0038 1881                   79 |       SRT     1         IF THERE IS A REMAINDER     R1C00690
0039 A824                   80 |       D       BARG      DIVIDE IT AND POSITION      R1C00700
003A 188F                   81 |       SRT     15        FOR PROPER SIGNIFICANCE     R1C00710
003B 8021                   82 |       A       Q1        ADD 1ST HALF OF QUOTIENT    R1C00720
                            83 | *                                                   R1C00730
                            84 | *NORMALIZE THE QUOTIENT                             R1C00740
                            85 | *                                                   R1C00750
003C DB7E                   86 | NORM  STD   3 126       STORE IN FAC                R1C00760
003D 4C10 0041R             87 |       BSC  L  *+2,-     BR IF NON-NEG               R1C00770
003F 10A0                   88 |       SLT     32        IF NEG REVERSE SIGN         R1C00780
0040 9B7E                   89 |       SD    3 126                                   R1C00790
0041 1081                   90 |       SLT     1         CHECK BIT SIGNIFICANCE      R1C00800
0042 4C08 004AR             91 |       BSC  L  NTPTV,+   BRANCH IF SIGNIFICANT       R1C00810
0044 C37D                   92 |       LD    3 125       IF NOT SIGNIFICANT,GET      R1C00820
0045 9013                   93 |       S       ONE       EXPONENT AND SUB 1          R1C00830
0046 D37D                   94 |       STO   3 125       RESTORE ALTERED EXPONENT    R1C00840
0047 CB7E                   95 |       LDD   3 126       GET MANTISSA, ALTER IT TO   R1C00850
0048 1081                   96 |       SLT     1         MATCH EXPONENT AND          R1C00860
0049 DB7E                   97 |       STD   3 126       RESTORE MANTISSA            R1C00870
004A 4818                   98 | NTPTV BSC     +-        BR IF NON-ZERO              R1C00880
004B D37D                   99 |       STO   3 125       IF ZERO,MAKE EXPONENT ZERO  R1C00890
004C 0605*90C0             100 |       LIBF    FARC      CHECK OVERFLOW/UNDERFLOW    R1C00900
004D 2000                  101 | STAT  LDS     *-*       RESTORE STATUS              R1C00910
004E 6500 0000             102 | SAVE  LDX  L1 *-*       RESTORE XR1                 R1C00920
0050 4C00 0000             103 | EXIT  BSC  L  *-*       RET TO CALL+2               R1C00930
0052 CB7E                  104 | SKIP  LDD   3 126       2ND TERM NOT SIGNIFICANT-   R1C00940
0053 70D2                  105 |       MDX     DIV       GET MANTISSA,RET TO DIV     R1C00950
0054 C008                  106 | NOR   LD      Q1        IF NO REMAINDER, GET        R1C00960
0055 70E6                  107 |       MDX     NORM      QUOTIENT AND RET TO NORM    R1C00970
0056 C002                  108 | DIVCK LD      ONE                                   R1C00980
0057 D37B                  109 |       STO   3 123       STORE DIVIDE CHECK          R1C00990
0058 70F4                  110 |       MDX     STAT                                  R1C01000
                           111 | *                                                   R1C01010
                           112 | *CONSTANTS AREA                                     R1C01020
                           113 | *                                                   R1C01030
0059 0001                  114 | ONE   DC      1         SINGLE WORD ONE             R1C01040
005A FFFF                  115 | ALL1  DC      /FFFF     USED TO GET 1'S COMPLEMENT  R1C01050
005B 0082                  116 | K1    DC      /82       CORR FACTOR FOR EXPONENT    R1C01060
005C C000                  117 | K2    DC      /C000     RESET SIGN CONSTANT         R1C01070
005D 0000                  118 | Q1    DC      /0        STORE 1ST QUOTIENT          R1C01080
005E                       119 |       BSS  E  0                                     R1C01090
005E 0000                  120 | BARG  DC      /0        STORE DIVISOR               R1C01100
005F 0000                  121 |       DC      /0                                    R1C01110
0060 8000                  122 | DMASK DC      /8000     NEGATIVE MASK               R1C01112
0061 0004                  123 |       DC      /0004     AND FORCED DIVIDEND         R1C01113
0062 FFFC                  124 | DDMSK DC      /FFFC     MASK /0003                  R1C01114
0063                       125 |       END                                           R1C01124
 
There were no errors in this assembly
 
=== CROSS REFERENCES ==========================================================
Name  Val   Defd  Referenced
ALL1  005AR  115   46   56
BARG  005ER  120   42   44   45   50   55   75   80
COM   0008R   31   27
DDMSK 0062R  124   67
DIV   0026R   64  105
DIVCK 0056R  108   41
DIVD  002FR   71   65   68
DIVDE 0030R   72   70
DMASK 0060R  122   64   69
EXIT  0050R  103   34
FDIV  0004R   28
FDIVX 0000R   25
K1    005BR  116   47
K2    005CR  117   74
NOR   0054R  106   78
NORM  003CR   86  107
NTPTV 004AR   98   91
ONE   0059R  114   33   57   93  108
Q1    005DR  118   76   82  106
SAVE  004ER  102   25   28
SKIP  0052R  104   52
STAT  004DR  101   32  110