| 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 CBD6 and main_loop_10.
|
||||||||||
| 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 |