home *** CD-ROM | disk | FTP | other *** search
- ;----------------------------------------------------------------------
- ; Fast 8-bit Multiply by Dan Eble
- ;----------------------------------------------------------------------
- ; Input: A, L
- ; Output: HL= A*L
- ; DE is modified
- ; Flags are modified
- ; 64 bytes, 253-305 t-states (avg 272)
- ;----------------------------------------------------------------------
- MUL_AxL:
- ld d,0 ; setup: DE = HL = L (zero-extended)
- ld e,l
- ld h,d
- rrca ; check bit 0
- jr c,MAxL_0
- ld l,d ; if 0, make total 0
- MAxL_0:
- sla e ; DE = 2*DE
- rl d
- rrca ; check bit 1
- jr nc,MAxL_1
- add hl,de ; if 1, add to total
- MAxL_1:
- sla e
- rl d
- rrca
- jr nc,MAxL_2
- add hl,de
- MAxL_2:
- sla e
- rl d
- rrca
- jr nc,MAxL_3
- add hl,de
- MAxL_3:
- sla e
- rl d
- rrca
- jr nc,MAxL_4
- add hl,de
- MAxL_4:
- sla e
- rl d
- rrca
- jr nc,MAxL_5
- add hl,de
- MAxL_5:
- sla e
- rl d
- rrca
- jr nc,MAxL_6
- add hl,de
- MAxL_6:
- sla e
- rl d
- rrca
- ret nc
- add hl,de
- ret
-
- .end