Routines 
Prev: 12308  Up: Map  Next: 12480 
This subroutine is called by GET_HLxDE and by multiply to perform the 16bit multiplication as stated.
Any overflow of the 16 bits available is dealt with on return from the subroutine.


HL_HLxDE  12457  PUSH BC  BC is saved.  
12458  LD B,16  It is to be a 16bit multiplication.  
12460  LD A,H  A holds the high byte.  
12461  LD C,L  C holds the low byte.  
12462  LD HL,0  Initialise the result to zero.  
HL_LOOP  12465  ADD HL,HL  Double the result.  
12466  JR C,HL_END  Jump if overflow.  
12468  RL C  Rotate bit 7 of C into the carry.  
12470  RLA  Rotate the carry bit into bit 0 and bit 7 into the carry flag.  
12471  JR NC,HL_AGAIN  Jump if the carry flag is reset.  
12473  ADD HL,DE  Otherwise add DE in once.  
12474  JR C,HL_END  Jump if overflow.  
HL_AGAIN  12476  DJNZ HL_LOOP  Repeat until 16 passes have been made.  
HL_END  12478  POP BC  Restore BC.  
12479  RET  Finished. 
Prev: 12308  Up: Map  Next: 12480 