home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 86 / asm / source / routines / mul8x8.asm < prev    next >
Encoding:
Assembly Source File  |  2001-07-01  |  1.3 KB  |  61 lines

  1. ;----------------------------------------------------------------------
  2. ; Fast 8-bit Multiply by Dan Eble
  3. ;----------------------------------------------------------------------
  4. ; Input:  A, L
  5. ; Output: HL= A*L
  6. ;         DE is modified
  7. ;         Flags are modified
  8. ; 64 bytes, 253-305 t-states (avg 272)
  9. ;----------------------------------------------------------------------
  10. MUL_AxL:
  11.         ld d,0         ; setup: DE = HL = L (zero-extended)
  12.         ld e,l
  13.         ld h,d
  14.         rrca           ; check bit 0
  15.         jr c,MAxL_0
  16.         ld l,d         ; if 0, make total 0
  17. MAxL_0:
  18.         sla e          ; DE = 2*DE
  19.         rl d
  20.         rrca           ; check bit 1
  21.         jr nc,MAxL_1
  22.         add hl,de      ; if 1, add to total
  23. MAxL_1:
  24.         sla e
  25.         rl d
  26.         rrca
  27.         jr nc,MAxL_2
  28.         add hl,de
  29. MAxL_2:
  30.         sla e
  31.         rl d
  32.         rrca
  33.         jr nc,MAxL_3
  34.         add hl,de
  35. MAxL_3:
  36.         sla e
  37.         rl d
  38.         rrca
  39.         jr nc,MAxL_4
  40.         add hl,de
  41. MAxL_4:
  42.         sla e
  43.         rl d
  44.         rrca
  45.         jr nc,MAxL_5
  46.         add hl,de
  47. MAxL_5:
  48.         sla e
  49.         rl d
  50.         rrca
  51.         jr nc,MAxL_6
  52.         add hl,de
  53. MAxL_6:
  54.         sla e
  55.         rl d
  56.         rrca
  57.         ret nc
  58.         add hl,de
  59.         ret
  60.  
  61. .end