| Chase H.Q. | Routines |
| Prev: CD3A | Up: Map | Next: CDEC |
|
Multiplies C by the top three bits of A then divides by 8 with rounding, on exit.
Used by the routines at sub_cbce_non_fork and build_height_table.
|
||||||||||||||
| multiply | CDD6 | LD B,$03 | 3 iterations only | |||||||||||
| CDD8 | LD E,A | Copy of multiplier to destroy | ||||||||||||
| CDD9 | XOR A | Initialise total | ||||||||||||
| mult_loop | CDDA | RL E | Shift the most significant bit out of multiplier | |||||||||||
| CDDC | JR NC,mult_continue | If the MSB was set then total += multiplicand | ||||||||||||
| CDDE | ADD A,C | |||||||||||||
| mult_continue | CDDF | ADD A,A | total <<= 1 | |||||||||||
| CDE0 | DJNZ mult_loop | While iterations remain, goto mult_loop | ||||||||||||
| CDE2 | RRA | Undo final shift | ||||||||||||
| CDE3 | SRA A | Divide by 8 with rounding | ||||||||||||
| CDE5 | SRA A | |||||||||||||
| CDE7 | SRA A | |||||||||||||
| CDE9 | ADC A,$00 | |||||||||||||
| CDEB | RET | Return | ||||||||||||
| Prev: CD3A | Up: Map | Next: CDEC |