Routines 
Prev: 11682  Up: Map  Next: 11733 
Used by the routine at PRINT_FP.
This subroutine calculates the approximate number of digits before the decimal in x, the number to be printed, or, if there are no digits before the decimal, then the approximate number of leading zeros after the decimal. It is entered with the A register containing e', the true exponent of x, or e'2, and calculates z=log to the base 10 of (2↑A). It then sets A equal to ABS INT (z+0.5), as required, using FP_TO_A for this purpose.


LOG_2_A  11713  LD D,A  The integer A is stacked, either as 00 00 A 00 00 (for positive A) or as 00 FF A FF 00 (for negative A).  
11714  RLA  
11715  SBC A,A  
11716  LD E,A  These bytes are first loaded into A, E, D, C, B and then STK_STORE is called to put the number on the calculator stack.  
11717  LD C,A  
11718  XOR A  
11719  LD B,A  
11720  CALL STK_STORE  
11723  RST 40  The calculator is used.  
11724  DEFB 52  stk_data: log 2 to the base 10 is now stacked  
11725  DEFB 239,26,32,154,133  
11730  DEFB 4  multiply: A*log 2 i.e. log (2↑A)  
11731  DEFB 39  int: INT log (2↑A)  
11732  DEFB 56  end_calc  
The subroutine continues into FP_TO_A to complete the calculation.

Prev: 11682  Up: Map  Next: 11733 