فهرست منبع

* LONGDIV bugfixed with signed and modulo
* LONGDIV bugfix when divisor is less then 16 bits

carl 27 سال پیش
والد
کامیت
a218bfc8ce
1فایلهای تغییر یافته به همراه8 افزوده شده و 4 حذف شده
  1. 8 4
      rtl/m68k/lowmath.inc

+ 8 - 4
rtl/m68k/lowmath.inc

@@ -842,7 +842,10 @@ XDEF LONGDIV
    cmp.l       d2,d1      { is divident smaller then divisor ?    }
    bcs         @LDiv7     { yes, return immediately               }
 {;== case 2) divisor has <= 16 significant bits}
-   tst.w       d4
+   move.l      d4,d6      { put divisor in d6 register            }
+   lsr.l       #8,d6      { rotate into low word                  }
+   lsr.l       #8,d6
+   tst.l       d6
    bne         @LDiv3     { divisor has only 16 bits              }
    move.w      d1,d3      { save dividend                         }
    clr.w       d1         { divide dvd.h by dvs                   }
@@ -872,7 +875,7 @@ XDEF LONGDIV
    dbra        d3,@LDiv5
    exg         d0,d1      { put quotient and remainder in their registers}
 @LDiv7:
-   tst.w       d5         { must the remainder be corrected ?     }
+   tst.l       d5         { must the remainder be corrected ?     }
    bpl         @LDiv8
    neg.l       d1         { yes, apply sign                       }
 { the following line would be correct if modulus is defined as in algebra}
@@ -911,8 +914,9 @@ end;
 
 {
   $Log$
-  Revision 1.2  1998-06-05 12:33:16  carl
-    * single_cmp, comparison was reversed!
+  Revision 1.3  1998-07-01 14:28:32  carl
+    * LONGDIV bugfixed with signed and modulo
+    * LONGDIV bugfix when divisor is less then 16 bits
 
   Revision 1.1.1.1  1998/03/25 11:18:44  root
   * Restored version