Routines
 Prev: 2382 Up: Map Next: 24B7
247D: THE 'INITIAL PARAMETERS' SUBROUTINE
This subroutine is called by both CIRCLE and DRAW to set their initial parameters. It is called by CIRCLE with X, Y and the radius Z on the top of the stack, reading upwards. It is called by DRAW with its own X, Y, SIN (G/2) and Z, as defined in DRAW i., on the top of the stack. In what follows the stack is only shown from Z upwards.
The subroutine returns in B the arc-count A as explained in both CIRCLE and DRAW, and in mem-0 to mem-5 the quantities G/A, SIN (G/2*A), 0, COS (G/A), SIN (G/A) and G. For a circle, G must be taken to be equal to 2π.
Output
B Arc count
CD_PRMS1 247D RST \$28 Z
247E DEFB \$31 duplicate: Z, Z
247F DEFB \$28 sqr: Z, SQR Z
2480 DEFB \$34 stk_data: Z, SQR Z, 2
2481 DEFB \$32,\$00
2483 DEFB \$01 exchange: Z, 2, SQR Z
2484 DEFB \$05 division: Z, 2/SQR Z
2485 DEFB \$E5 get_mem_5: Z, 2/SQR Z, G
2486 DEFB \$01 exchange: Z, G, 2/SQR Z
2487 DEFB \$05 division: Z, G*SQR Z/2
2488 DEFB \$2A abs: Z, G'*SQR Z/2 (G'=ABS G)
2489 DEFB \$38 end_calc: Z, G'*SQR Z/2=A1, say
248A CALL FP_TO_A A1 to A from the stack, if possible.
248D JR C,USE_252 If A1 rounds to 256 or more, use 252.
248F AND \$FC 4*INT (A1/4) to A.
2493 JR NC,DRAW_SAVE Jump if still under 256.
USE_252 2495 LD A,\$FC Here, just use 252.
DRAW_SAVE 2497 PUSH AF Now save the arc-count.
2498 CALL STACK_A Copy it to calculator stack too.
249B RST \$28 Z, A
249C DEFB \$E5 get_mem_5: Z, A, G
249D DEFB \$01 exchange: Z, G, A
249E DEFB \$05 division: Z, G/A
249F DEFB \$31 duplicate: Z, G/A, G/A
24A0 DEFB \$1F sin: Z, G/A, SIN (G/A)
24A1 DEFB \$C4 st_mem_4: (SIN (G/A) is copied to mem-4)
24A2 DEFB \$02 delete: Z, G/A
24A3 DEFB \$31 duplicate: Z, G/A, G/A
24A4 DEFB \$A2 stk_half: Z, G/A, G/A, 0.5
24A5 DEFB \$04 multiply: Z, G/A, G/2*A
24A6 DEFB \$1F sin: Z, G/A, SIN (G/2*A)
24A7 DEFB \$C1 st_mem_1: (SIN (G/2*A) is copied to mem-1)
24A8 DEFB \$01 exchange: Z, SIN (G/2*A), G/A
24A9 DEFB \$C0 st_mem_0: (G/A is copied to mem-0)
24AA DEFB \$02 delete: Z, SIN (G/2*A)=S
24AB DEFB \$31 duplicate: Z, S, S
24AC DEFB \$04 multiply: Z, S*S
24AD DEFB \$31 duplicate: Z, S*S, S*S
24AE DEFB \$0F addition: Z, 2*S*S
24AF DEFB \$A1 stk_one: Z, 2*S*S, 1
24B0 DEFB \$03 subtract: Z, 2*S*S-1
24B1 DEFB \$1B negate: Z, 1-2*S*S=COS (G/A)
24B2 DEFB \$C3 st_mem_3: (COS (G/A) is copied to mem-3)
24B3 DEFB \$02 delete: Z
24B4 DEFB \$38 end_calc
24B5 POP BC Restore the arc-count to B.
24B6 RET Finished.
 Prev: 2382 Up: Map Next: 24B7