Routines |
Prev: B916 | Up: Map | Next: BADC |
This multiplies the two 8-bit values in A and E, returning a 16-bit result in HL.
Used by the routine at render_mask_buffer.
|
||||||||||||||||
multiply | BACD | LD B,$08 | Set B for eight iterations (width of multiplicands) | |||||||||||||
BACF | LD HL,$0000 | Set our accumulator to zero | ||||||||||||||
BAD2 | LD D,H | Zero D so that DE holds the full 16-bit right hand value | ||||||||||||||
Start loop
|
||||||||||||||||
multiply_0 | BAD3 | ADD HL,HL | Double our accumulator (shifting it left) | |||||||||||||
BAD4 | RLA | Shift A left. The shifted-out top bit becomes the carry flag | ||||||||||||||
BAD5 | JP NC,multiply_1 | Jump if no carry | ||||||||||||||
BAD8 | ADD HL,DE | Otherwise HL += DE | ||||||||||||||
multiply_1 | BAD9 | DJNZ multiply_0 | ...loop | |||||||||||||
BADB | RET | Return |
Prev: B916 | Up: Map | Next: BADC |