home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume5 / smallc / part3 / 6809 / smod.u < prev    next >
Encoding:
Text File  |  1986-11-30  |  796 b   |  55 lines

  1. |    signed mod
  2. |    calling: (left / right)
  3. |        push left
  4. |        ldd right
  5. |        jsr smod
  6. |    result in d, arg popped.
  7. |
  8.     left=6
  9.     right=2
  10.     sign=1
  11.     count=0
  12.     return=4
  13.     CARRY=1
  14. .globl smod,mod,ASSERTFAIL
  15. .globl mrabs
  16. smod:    leas    -4(s)
  17.     std    right(s)
  18.     bne    nozero
  19.     swi2
  20.     .byte    ASSERTFAIL
  21. nozero:    jsr    mrabs
  22. mod:    clr    count(s)    | prescale divisor
  23.     inc    count(s)
  24. mscl:    inc    count(s)
  25.     aslb
  26.     rola
  27.     bpl    mscl
  28.     std    right(s)
  29.     ldd    left(s)
  30.     clr    left(s)
  31.     clr    left+1(s)
  32. mod1:    subd    right(s)    | check subtract
  33.     bcc    mod2
  34.     addd    right(s)
  35.     andcc    #~CARRY
  36.     bra    mod3
  37. mod2:    orcc    #CARRY
  38. mod3:    rol    left+1(s)    | roll in carry
  39.     rol    left(s)
  40.     lsr    right(s)
  41.     ror    right+1(s)
  42.     dec    count(s)
  43.     bne    mod1
  44.     tst    sign(s)        | sign fiddle
  45.     beq    nochg
  46.     nega
  47.     negb
  48.     sbca    #0
  49. nochg:    std    right(s)    | move return addr
  50.     ldd    return(s)
  51.     std    left(s)
  52.     ldd    right(s)
  53.     leas    6(s)
  54.     rts
  55.