Prev: 37AA Up: Map Next: 37DA
37B5: THE 'SINE' FUNCTION (offset +1F)
 The address of this routine is found in the table of addresses. It is called via the calculator literal +1F by the routines at DRAW, CD_PRMS1 and tan. It is also called indirectly via fp_calc_2. This subroutine handles the function SIN X and is the third of the four routines that use the series generator to produce Chebyshev polynomials. The approximation to SIN X is found as follows: i. The argument X is reduced to W, such that SIN (π*W/2)=SIN X. Note that -1<=W<=1, as required for the series to converge. ii. The argument Z=2*W*W-1 is formed. iii. The series generator is used to return (SIN (π*W/2))/W. iv. Finally a simple multiplication by W gives SIN X. sin 37B5 RST \$28 X Perform step i. 37B6 DEFB \$39 get_argt: W Perform step ii. The subroutine from now on is common to both the SINE and COSINE functions. C_ENT 37B7 DEFB \$31 duplicate: W, W 37B8 DEFB \$31 duplicate: W, W, W 37B9 DEFB \$04 multiply: W, W*W 37BA DEFB \$31 duplicate: W, W*W, W*W 37BB DEFB \$0F addition: W, 2*W*W 37BC DEFB \$A1 stk_one: W, 2*W*W, 1 37BD DEFB \$03 subtract: W, 2*W*W-1=Z Perform step iii, passing to the series generator the parameter '6' and the six constants required. 37BE DEFB \$86 series_06: W, Z 37BF DEFB \$14,\$E6 37C1 DEFB \$5C,\$1F,\$0B 37C4 DEFB \$A3,\$8F,\$38,\$EE 37C8 DEFB \$E9,\$15,\$63,\$BB,\$23 37CD DEFB \$EE,\$92,\$0D,\$CD,\$ED 37D2 DEFB \$F1,\$23,\$5D,\$1B,\$EA At the end of the last loop the 'last value' is (SIN (π*W/2))/W. Perform step iv. 37D7 DEFB \$04 multiply: SIN (π*W/2)=SIN X (or COS X) 37D8 DEFB \$38 end_calc 37D9 RET Finished: 'last value'=SIN X (or COS X).
 Prev: 37AA Up: Map Next: 37DA