1: / Long remainder
   2: 
   3: .globl  lrem
   4: .globl  csv, cret
   5: 
   6: lrem:
   7:         jsr     r5,csv
   8:         mov     10.(r5),r3
   9:         sxt     r4
  10:         bpl     1f
  11:         neg     r3
  12: 1:
  13:         cmp     r4,8.(r5)
  14:         bne     hardlrem
  15:         mov     6.(r5),r2
  16:         mov     4.(r5),r1
  17:         mov     r1,r4
  18:         bge     1f
  19:         neg     r1
  20:         neg     r2
  21:         sbc     r1
  22: 1:
  23:         clr     r0
  24:         div     r3,r0
  25:         mov     r1,r0
  26:         mov     r2,r1
  27:         div     r3,r0
  28:         bvc     1f
  29:         sub     r3,r0
  30:         div     r3,r0
  31:         tst     r1
  32:         beq     9f
  33:         add     r3,r1
  34: 1:
  35:         tst     r4
  36:         bpl     9f
  37:         neg     r1
  38: 9:
  39:         sxt     r0
  40:         jmp     cret
  41: 
  42: / The divisor is known to be >= 2^15.  Only 16 cycles are
  43: / needed to get a remainder.
  44: hardlrem:
  45:         mov     6.(r5),r2
  46:         mov     4.(r5),r1
  47:         bpl     1f
  48:         neg     r1
  49:         neg     r2
  50:         sbc     r1
  51: 1:
  52:         clr     r0
  53:         mov     8.(r5),r3
  54:         bge     1f
  55:         neg     r3
  56:         neg     10.(r5)
  57:         sbc     r3
  58: 1:
  59:         mov     $16.,r4
  60: 1:
  61:         clc
  62:         rol     r2
  63:         rol     r1
  64:         rol     r0
  65:         cmp     r3,r0
  66:         blt     2f
  67:         bgt     3f
  68:         cmp     10.(r5),r1
  69:         blos    2f
  70: 3:
  71:         sob     r4,1b
  72:         br      1f
  73: 2:
  74:         sub     10.(r5),r1
  75:         sbc     r0
  76:         sub     r3,r0
  77:         sob     r4,1b
  78: 1:
  79:         tst     4(r5)
  80:         bge     1f
  81:         neg     r0
  82:         neg     r1
  83:         sbc     r0
  84: 1:
  85:         jmp     cret

Defined functions

hardlrem defined in line 44; used 1 times
  • in line 14
lrem declared in line 3; defined in line 6; used 1 times
  • in line 3
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 475
Valid CSS Valid XHTML 1.0 Strict