* DIVIDE DOUBLE-WD BY WD GIVING DBLWD                   HEADER  CR.BDIVW0001.000
*                                                                       0002.000
*              DIVIDE DOUBLE-WORD BY WORD GIVING DOUBLE-WORD            0003.000
*                                                                       0004.000
         M.PGM     CR.BDIVW,MPX-32,3.6.1,00                             0005.000
         DEF   CR.BDIVW                                                 0006.000
*                                                                       0007.000
* DIVIDE (R6,R7) BY R5 AND SAVE RESULT IN (R6,R7)                       0008.000
*                                                                       0009.000
         M.REQS                                                         0010.000
         COBOLDAT                                                       0011.000
*                                                                       0012.000
* INTERNAL DATA                                                         0013.000
*                                                                       0014.000
         ORG   WORKAREA                                                 0015.000
TEMP     RES   1D                                                       0016.000
NEG      RES   1W                                                       0017.000
         REL                                                            0018.000
*                                                                       0019.000
* IF (R6,R7) IS NEGATIVE THEN NEGATE IT                                 0020.000
*                                                                       0021.000
CR.BDIVW ZBM   1,NEG          CLEAR NEG FLAG                            0022.000
         TBR   R6,0           IF (R6,R7) >= 0                           0023.000
         BNS   DIV               THEN GOTO DIV                          0024.000
         STD   R6,TEMP                                                  0025.000
         LND   R6,TEMP           ELSE NEGATE TEMP                       0026.000
         SBM   1,NEG                  AND SET NEG FLAG                  0027.000
*                                                                       0028.000
* DETERMINE FIRST WORD OF QUOTIENT                                      0029.000
*                                                                       0030.000
DIV      STW   R7,TEMP+1W                                               0031.000
         TRR   R6,R7                                                    0032.000
         ES    R6                                                       0033.000
         DVR   R5,R6                                                    0034.000
         STW   R7,TEMP                                                  0035.000
*                                                                       0036.000
* DETERMINE THIRD HALF WORD OF QUOTIENT                                 0037.000
*                                                                       0038.000
         ZR    R7                                                       0039.000
         SRAD  R6,16                                                    0040.000
         ORMH  R7,TEMP+4                                                0041.000
         DVR   R5,R6                                                    0042.000
         STH   R7,TEMP+2H                                               0043.000
*                                                                       0044.000
* DETERMINE FOURTH HALF WORD OF QUOTIENT                                0045.000
*                                                                       0046.000
         ZR    R7                                                       0047.000
         SRAD  R6,16                                                    0048.000
         ORMH  R7,TEMP+3H                                               0049.000
         DVR   R5,R6                                                    0050.000
         STH   R7,TEMP+3H                                               0051.000
         TRR   R6,R5                                                    0052.000
         LD    R6,TEMP                                                  0053.000
         TBM   1,NEG          IF NEG FLAG IS SET                        0054.000
         BNS   RET                                                      0055.000
         LND   R6,TEMP           THEN NEGATE RESULT                     0056.000
RET      TRSW  0              RETURN                                    0057.000
         END                                                            0058.000
