;---------------------------------------------------------------------- ; 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