home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / source / TeX / amiga / ldiv.asm < prev    next >
Encoding:
Assembly Source File  |  1991-06-29  |  1.4 KB  |  118 lines

  1.  
  2.  
  3.     SECTION "ldiv.asm"
  4.  
  5. ___udivsi3:
  6. __udivsi3:
  7.     move.l d2,a0         
  8.     move.l d3,a1
  9.  
  10.     moveq #0,d0         
  11.     move.l (8)(a7),d2         
  12.     beq udiv_err         
  13.     move.l (4)(a7),d1         
  14.     beq udiv_done         
  15.     cmp.l d2,d1         
  16.     bcs udiv_done
  17.     moveq #31,d0         
  18.     tst.b (4)(a7)         
  19.     bne udiv_bit
  20.     subq.l #8,d0
  21.     tst.b (5)(a7)
  22.     bne udiv_bit
  23.     subq.l #8,d0
  24.     tst.b (6)(a7)
  25.     bne udiv_bit
  26.     subq.l #8,d0
  27. udiv_bit:
  28.     btst d0,d1         
  29.     dbne d0,udiv_bit
  30.     moveq.l #1,d3         
  31.      
  32.      
  33.      
  34. udiv_sl:
  35.     btst d0,d2         
  36.     bne udiv_start         
  37.     add.l d3,d3         
  38.     add.l d2,d2         
  39.     bra udiv_sl
  40. udiv_start:
  41.      
  42.      
  43.      
  44.     moveq #0,d0         
  45. udiv_sr:
  46.     cmp.l d2,d1         
  47.     bcs udiv_s
  48.     or.l d3,d0         
  49.     sub.l d2,d1         
  50.     beq udiv_done         
  51. udiv_s:
  52.     lsr.l #1,d2         
  53.     lsr.l #1,d3         
  54.     bne udiv_sr         
  55.  
  56. udiv_done:
  57.      
  58.      
  59.     move.l a0,d2         
  60.     move.l a1,d3
  61.     rts
  62. udiv_err:
  63.     divs d2,d1         
  64.     bra udiv_done         
  65.  
  66.  
  67. ___divsi3:
  68. __divsi3:
  69.     link a4,#-2         
  70.     clr.w (-2)(a4)         
  71.  
  72.     move.l (12)(a4),d0     
  73.     bge divs1         
  74.     neg.l d0             
  75.     addq.w #1,(-2)(a4)     
  76. divs1:
  77.     move.l d0,-(sp)         
  78.     move.l (8)(a4),d0         
  79.     bge divs2         
  80.     neg.l d0             
  81.     subq.w #1,(-2)(a4)     
  82. divs2:
  83.     move.l d0,-(sp)         
  84.     jsr __udivsi3(pc)
  85.     addq.l #8,sp         
  86.     tst.w (-2)(a4)         
  87.     beq divs3         
  88.     neg.l d0             
  89. divs3:
  90.     tst.b (8)(a4)
  91.     bpl divs4
  92.     neg.l d1             
  93.  
  94.  
  95. divs4:
  96.     unlk a4             
  97.     rts             
  98.  
  99.  
  100. ;void  __asm ldiv1(register __d0 long int numer, 
  101. ;           register __d1 long int denom,
  102. ;           register __a2 ldiv_t *res);
  103.  
  104. _ldiv1:
  105.     move.l    d1,-(a7)
  106.     move.l    d0,-(a7)
  107.     jsr    __divsi3(pc)
  108.     addq.w    #8,a7
  109.     move.l    d0,(a2)
  110.     move.l    d1,4(a2)
  111.     rts
  112.  
  113.  
  114.     XDEF    _ldiv1
  115.  
  116.  
  117.     END
  118.