Routines 
Prev: 2D2B  Up: Map  Next: 2D4F 
This subroutine returns a 'last value' on the calculator stack that is the result of converting an integer in a BASIC line, i.e. the integer part of the decimal number or the line number, to its floatingpoint form.
Repeated calls to CH_ADD_1 fetch each digit of the integer in turn. An exit is made when a code that does not represent a digit has been fetched.


INT_TO_FP  2D3B  PUSH AF  Save the first digit  in A.  
2D3C  RST $28  Use the calculator.  
2D3D  DEFB $A0  stk_zero: (the 'last value' is now zero)  
2D3E  DEFB $38  end_calc  
2D3F  POP AF  Restore the first digit.  
Now a loop is set up. As long as the code represents a digit then the floatingpoint form is found and stacked under the 'last value' (V, initially zero). V is then multiplied by 10 and added to the 'digit' to form a new 'last value' which is carried back to the start of the loop.


NXT_DGT_2  2D40  CALL STK_DIGIT  If the code represents a digit (D) then stack the floatingpoint form; otherwise return.  
2D43  RET C  
2D44  RST $28  Use the calculator.  
2D45  DEFB $01  exchange: D, V  
2D46  DEFB $A4  stk_ten: D, V, 10  
2D47  DEFB $04  multiply: D, 10*V  
2D48  DEFB $0F  addition: D+10*V  
2D49  DEFB $38  end_calc: D+10*V (this is 'V' for the next pass through the loop)  
2D4A  CALL CH_ADD_1  The next code goes into A.  
2D4D  JR NXT_DGT_2  Loop back with this code. 
Prev: 2D2B  Up: Map  Next: 2D4F 