1: / Long remainder
   2: 
   3: .globl  alrem
   4: .globl  csv, cret
   5: alrem:
   6:         jsr     r5,csv
   7:         mov     8.(r5),r3
   8:         sxt     r4
   9:         bpl     1f
  10:         neg     r3
  11: 1:
  12:         cmp     r4,6.(r5)
  13:         bne     hardlrem
  14:         mov     4.(r5),r0
  15:         mov     2(r0),r2
  16:         mov     (r0),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:         mov     4.(r5),r3
  41:         mov     r0,(r3)+
  42:         mov     r1,(r3)
  43:         jmp     cret
  44: 
  45: / The divisor is known to be >= 2^15.  Only 16 cycles are
  46: / needed to get a remainder.
  47: hardlrem:
  48:         mov     4.(r5),r0
  49:         mov     2(r0),r2
  50:         mov     (r0),r1
  51:         bpl     1f
  52:         neg     r1
  53:         neg     r2
  54:         sbc     r1
  55: 1:
  56:         clr     r0
  57:         mov     6.(r5),r3
  58:         bge     1f
  59:         neg     r3
  60:         neg     8.(r5)
  61:         sbc     r3
  62: 1:
  63:         mov     $16.,r4
  64: 1:
  65:         clc
  66:         rol     r2
  67:         rol     r1
  68:         rol     r0
  69:         cmp     r3,r0
  70:         blt     2f
  71:         bgt     3f
  72:         cmp     8.(r5),r1
  73:         blos    2f
  74: 3:
  75:         sob     r4,1b
  76:         br      1f
  77: 2:
  78:         sub     8.(r5),r1
  79:         sbc     r0
  80:         sub     r3,r0
  81:         sob     r4,1b
  82: 1:
  83:         mov     4.(r5),r3
  84:         tst     (r3)
  85:         bge     1f
  86:         neg     r0
  87:         neg     r1
  88:         sbc     r0
  89: 1:
  90:         mov     r0,(r3)+
  91:         mov     r1,(r3)
  92:         jmp     cret

Defined functions

alrem declared in line 3; defined in line 5; used 1 times
  • in line 3
hardlrem defined in line 47; used 1 times
  • in line 13
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 448
Valid CSS Valid XHTML 1.0 Strict