Routines 
Prev: 2382  Up: Map  Next: 24B7 
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.


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.  
2491  ADD A,$04  Add 4, giving the arccount 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 arccount.  
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 mem4)  
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 mem1)  
24A8  DEFB $01  exchange: Z, SIN (G/2*A), G/A  
24A9  DEFB $C0  st_mem_0: (G/A is copied to mem0)  
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*S1  
24B1  DEFB $1B  negate: Z, 12*S*S=COS (G/A)  
24B2  DEFB $C3  st_mem_3: (COS (G/A) is copied to mem3)  
24B3  DEFB $02  delete: Z  
24B4  DEFB $38  end_calc  
24B5  POP BC  Restore the arccount to B.  
24B6  RET  Finished. 
Prev: 2382  Up: Map  Next: 24B7 