1;--------------------------------------------------------
2; File Created by SDCC : free open source ANSI-C Compiler
3; Version 4.0.7 #12017 (Linux)
4;--------------------------------------------------------
5; Processed by Z88DK
6;--------------------------------------------------------
7
8	EXTERN __divschar
9	EXTERN __divschar_callee
10	EXTERN __divsint
11	EXTERN __divsint_callee
12	EXTERN __divslong
13	EXTERN __divslong_callee
14	EXTERN __divslonglong
15	EXTERN __divslonglong_callee
16	EXTERN __divsuchar
17	EXTERN __divsuchar_callee
18	EXTERN __divuchar
19	EXTERN __divuchar_callee
20	EXTERN __divuint
21	EXTERN __divuint_callee
22	EXTERN __divulong
23	EXTERN __divulong_callee
24	EXTERN __divulonglong
25	EXTERN __divulonglong_callee
26	EXTERN __divuschar
27	EXTERN __divuschar_callee
28	EXTERN __modschar
29	EXTERN __modschar_callee
30	EXTERN __modsint
31	EXTERN __modsint_callee
32	EXTERN __modslong
33	EXTERN __modslong_callee
34	EXTERN __modslonglong
35	EXTERN __modslonglong_callee
36	EXTERN __modsuchar
37	EXTERN __modsuchar_callee
38	EXTERN __moduchar
39	EXTERN __moduchar_callee
40	EXTERN __moduint
41	EXTERN __moduint_callee
42	EXTERN __modulong
43	EXTERN __modulong_callee
44	EXTERN __modulonglong
45	EXTERN __modulonglong_callee
46	EXTERN __moduschar
47	EXTERN __moduschar_callee
48	EXTERN __mulint
49	EXTERN __mulint_callee
50	EXTERN __mullong
51	EXTERN __mullong_callee
52	EXTERN __mullonglong
53	EXTERN __mullonglong_callee
54	EXTERN __mulschar
55	EXTERN __mulschar_callee
56	EXTERN __mulsuchar
57	EXTERN __mulsuchar_callee
58	EXTERN __muluchar
59	EXTERN __muluchar_callee
60	EXTERN __muluschar
61	EXTERN __muluschar_callee
62	EXTERN __rlslonglong
63	EXTERN __rlslonglong_callee
64	EXTERN __rlulonglong
65	EXTERN __rlulonglong_callee
66	EXTERN __rrslonglong
67	EXTERN __rrslonglong_callee
68	EXTERN __rrulonglong
69	EXTERN __rrulonglong_callee
70	EXTERN ___sdcc_call_hl
71	EXTERN ___sdcc_call_iy
72	EXTERN ___sdcc_enter_ix
73	EXTERN banked_call
74	EXTERN _banked_ret
75	EXTERN ___fs2schar
76	EXTERN ___fs2schar_callee
77	EXTERN ___fs2sint
78	EXTERN ___fs2sint_callee
79	EXTERN ___fs2slong
80	EXTERN ___fs2slong_callee
81	EXTERN ___fs2slonglong
82	EXTERN ___fs2slonglong_callee
83	EXTERN ___fs2uchar
84	EXTERN ___fs2uchar_callee
85	EXTERN ___fs2uint
86	EXTERN ___fs2uint_callee
87	EXTERN ___fs2ulong
88	EXTERN ___fs2ulong_callee
89	EXTERN ___fs2ulonglong
90	EXTERN ___fs2ulonglong_callee
91	EXTERN ___fsadd
92	EXTERN ___fsadd_callee
93	EXTERN ___fsdiv
94	EXTERN ___fsdiv_callee
95	EXTERN ___fseq
96	EXTERN ___fseq_callee
97	EXTERN ___fsgt
98	EXTERN ___fsgt_callee
99	EXTERN ___fslt
100	EXTERN ___fslt_callee
101	EXTERN ___fsmul
102	EXTERN ___fsmul_callee
103	EXTERN ___fsneq
104	EXTERN ___fsneq_callee
105	EXTERN ___fssub
106	EXTERN ___fssub_callee
107	EXTERN ___schar2fs
108	EXTERN ___schar2fs_callee
109	EXTERN ___sint2fs
110	EXTERN ___sint2fs_callee
111	EXTERN ___slong2fs
112	EXTERN ___slong2fs_callee
113	EXTERN ___slonglong2fs
114	EXTERN ___slonglong2fs_callee
115	EXTERN ___uchar2fs
116	EXTERN ___uchar2fs_callee
117	EXTERN ___uint2fs
118	EXTERN ___uint2fs_callee
119	EXTERN ___ulong2fs
120	EXTERN ___ulong2fs_callee
121	EXTERN ___ulonglong2fs
122	EXTERN ___ulonglong2fs_callee
123	EXTERN ____sdcc_2_copy_src_mhl_dst_deix
124	EXTERN ____sdcc_2_copy_src_mhl_dst_bcix
125	EXTERN ____sdcc_4_copy_src_mhl_dst_deix
126	EXTERN ____sdcc_4_copy_src_mhl_dst_bcix
127	EXTERN ____sdcc_4_copy_src_mhl_dst_mbc
128	EXTERN ____sdcc_4_ldi_nosave_bc
129	EXTERN ____sdcc_4_ldi_save_bc
130	EXTERN ____sdcc_4_push_hlix
131	EXTERN ____sdcc_4_push_mhl
132	EXTERN ____sdcc_lib_setmem_hl
133	EXTERN ____sdcc_ll_add_de_bc_hl
134	EXTERN ____sdcc_ll_add_de_bc_hlix
135	EXTERN ____sdcc_ll_add_de_hlix_bc
136	EXTERN ____sdcc_ll_add_de_hlix_bcix
137	EXTERN ____sdcc_ll_add_deix_bc_hl
138	EXTERN ____sdcc_ll_add_deix_hlix
139	EXTERN ____sdcc_ll_add_hlix_bc_deix
140	EXTERN ____sdcc_ll_add_hlix_deix_bc
141	EXTERN ____sdcc_ll_add_hlix_deix_bcix
142	EXTERN ____sdcc_ll_asr_hlix_a
143	EXTERN ____sdcc_ll_asr_mbc_a
144	EXTERN ____sdcc_ll_copy_src_de_dst_hlix
145	EXTERN ____sdcc_ll_copy_src_de_dst_hlsp
146	EXTERN ____sdcc_ll_copy_src_deix_dst_hl
147	EXTERN ____sdcc_ll_copy_src_deix_dst_hlix
148	EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp
149	EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp
150	EXTERN ____sdcc_ll_copy_src_hl_dst_de
151	EXTERN ____sdcc_ll_copy_src_hlsp_dst_de
152	EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm
153	EXTERN ____sdcc_ll_lsl_hlix_a
154	EXTERN ____sdcc_ll_lsl_mbc_a
155	EXTERN ____sdcc_ll_lsr_hlix_a
156	EXTERN ____sdcc_ll_lsr_mbc_a
157	EXTERN ____sdcc_ll_push_hlix
158	EXTERN ____sdcc_ll_push_mhl
159	EXTERN ____sdcc_ll_sub_de_bc_hl
160	EXTERN ____sdcc_ll_sub_de_bc_hlix
161	EXTERN ____sdcc_ll_sub_de_hlix_bc
162	EXTERN ____sdcc_ll_sub_de_hlix_bcix
163	EXTERN ____sdcc_ll_sub_deix_bc_hl
164	EXTERN ____sdcc_ll_sub_deix_hlix
165	EXTERN ____sdcc_ll_sub_hlix_bc_deix
166	EXTERN ____sdcc_ll_sub_hlix_deix_bc
167	EXTERN ____sdcc_ll_sub_hlix_deix_bcix
168	EXTERN ____sdcc_load_debc_deix
169	EXTERN ____sdcc_load_dehl_deix
170	EXTERN ____sdcc_load_debc_mhl
171	EXTERN ____sdcc_load_hlde_mhl
172	EXTERN ____sdcc_store_dehl_bcix
173	EXTERN ____sdcc_store_debc_hlix
174	EXTERN ____sdcc_store_debc_mhl
175	EXTERN ____sdcc_cpu_pop_ei
176	EXTERN ____sdcc_cpu_pop_ei_jp
177	EXTERN ____sdcc_cpu_push_di
178	EXTERN ____sdcc_outi
179	EXTERN ____sdcc_outi_128
180	EXTERN ____sdcc_outi_256
181	EXTERN ____sdcc_ldi
182	EXTERN ____sdcc_ldi_128
183	EXTERN ____sdcc_ldi_256
184	EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix
185	EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix
186	EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix
187	EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix
188	EXTERN ____sdcc_4_or_src_dehl_dst_bcix
189	EXTERN ____sdcc_4_xor_src_dehl_dst_bcix
190	EXTERN ____sdcc_4_and_src_dehl_dst_bcix
191	EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc
192	EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc
193	EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc
194	EXTERN ____sdcc_4_cpl_src_mhl_dst_debc
195	EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc
196	EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc
197	EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc
198	EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc
199	EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc
200	EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc
201
202;--------------------------------------------------------
203; Public variables in this module
204;--------------------------------------------------------
205	GLOBAL _am9511_atan2
206;--------------------------------------------------------
207; Externals used
208;--------------------------------------------------------
209	GLOBAL _hypot_callee
210	GLOBAL _ldexp_callee
211	GLOBAL _frexp_callee
212	GLOBAL _sqrt_fastcall
213	GLOBAL _sqr_fastcall
214	GLOBAL _div2_fastcall
215	GLOBAL _mul2_fastcall
216	GLOBAL _am9511_modf
217	GLOBAL _am9511_fmod
218	GLOBAL _am9511_round
219	GLOBAL _floor_fastcall
220	GLOBAL _fabs_fastcall
221	GLOBAL _ceil_fastcall
222	GLOBAL _am9511_exp10
223	GLOBAL _am9511_exp2
224	GLOBAL _am9511_log2
225	GLOBAL _pow_callee
226	GLOBAL _exp_fastcall
227	GLOBAL _log10_fastcall
228	GLOBAL _log_fastcall
229	GLOBAL _am9511_atanh
230	GLOBAL _am9511_acosh
231	GLOBAL _am9511_asinh
232	GLOBAL _am9511_tanh
233	GLOBAL _am9511_cosh
234	GLOBAL _am9511_sinh
235	GLOBAL _atan_fastcall
236	GLOBAL _acos_fastcall
237	GLOBAL _asin_fastcall
238	GLOBAL _tan_fastcall
239	GLOBAL _cos_fastcall
240	GLOBAL _sin_fastcall
241	GLOBAL _exp10_fastcall
242	GLOBAL _exp10
243	GLOBAL _mul10u_fastcall
244	GLOBAL _mul10u
245	GLOBAL _mul2
246	GLOBAL _div2
247	GLOBAL _sqr
248	GLOBAL _fam9511_f32_fastcall
249	GLOBAL _fam9511_f32
250	GLOBAL _f32_fam9511_fastcall
251	GLOBAL _f32_fam9511
252	GLOBAL _isunordered_callee
253	GLOBAL _isunordered
254	GLOBAL _islessgreater_callee
255	GLOBAL _islessgreater
256	GLOBAL _islessequal_callee
257	GLOBAL _islessequal
258	GLOBAL _isless_callee
259	GLOBAL _isless
260	GLOBAL _isgreaterequal_callee
261	GLOBAL _isgreaterequal
262	GLOBAL _isgreater_callee
263	GLOBAL _isgreater
264	GLOBAL _fma_callee
265	GLOBAL _fma
266	GLOBAL _fmin_callee
267	GLOBAL _fmin
268	GLOBAL _fmax_callee
269	GLOBAL _fmax
270	GLOBAL _fdim_callee
271	GLOBAL _fdim
272	GLOBAL _nexttoward_callee
273	GLOBAL _nexttoward
274	GLOBAL _nextafter_callee
275	GLOBAL _nextafter
276	GLOBAL _nan_fastcall
277	GLOBAL _nan
278	GLOBAL _copysign_callee
279	GLOBAL _copysign
280	GLOBAL _remquo_callee
281	GLOBAL _remquo
282	GLOBAL _remainder_callee
283	GLOBAL _remainder
284	GLOBAL _fmod_callee
285	GLOBAL _fmod
286	GLOBAL _modf_callee
287	GLOBAL _modf
288	GLOBAL _trunc_fastcall
289	GLOBAL _trunc
290	GLOBAL _lround_fastcall
291	GLOBAL _lround
292	GLOBAL _round_fastcall
293	GLOBAL _round
294	GLOBAL _lrint_fastcall
295	GLOBAL _lrint
296	GLOBAL _rint_fastcall
297	GLOBAL _rint
298	GLOBAL _nearbyint_fastcall
299	GLOBAL _nearbyint
300	GLOBAL _floor
301	GLOBAL _ceil
302	GLOBAL _tgamma_fastcall
303	GLOBAL _tgamma
304	GLOBAL _lgamma_fastcall
305	GLOBAL _lgamma
306	GLOBAL _erfc_fastcall
307	GLOBAL _erfc
308	GLOBAL _erf_fastcall
309	GLOBAL _erf
310	GLOBAL _cbrt_fastcall
311	GLOBAL _cbrt
312	GLOBAL _sqrt
313	GLOBAL _pow
314	GLOBAL _hypot
315	GLOBAL _fabs
316	GLOBAL _logb_fastcall
317	GLOBAL _logb
318	GLOBAL _log2_fastcall
319	GLOBAL _log2
320	GLOBAL _log1p_fastcall
321	GLOBAL _log1p
322	GLOBAL _log10
323	GLOBAL _log
324	GLOBAL _scalbln_callee
325	GLOBAL _scalbln
326	GLOBAL _scalbn_callee
327	GLOBAL _scalbn
328	GLOBAL _ldexp
329	GLOBAL _ilogb_fastcall
330	GLOBAL _ilogb
331	GLOBAL _frexp
332	GLOBAL _expm1_fastcall
333	GLOBAL _expm1
334	GLOBAL _exp2_fastcall
335	GLOBAL _exp2
336	GLOBAL _exp
337	GLOBAL _tanh_fastcall
338	GLOBAL _tanh
339	GLOBAL _sinh_fastcall
340	GLOBAL _sinh
341	GLOBAL _cosh_fastcall
342	GLOBAL _cosh
343	GLOBAL _atanh_fastcall
344	GLOBAL _atanh
345	GLOBAL _asinh_fastcall
346	GLOBAL _asinh
347	GLOBAL _acosh_fastcall
348	GLOBAL _acosh
349	GLOBAL _tan
350	GLOBAL _sin
351	GLOBAL _cos
352	GLOBAL _atan2_callee
353	GLOBAL _atan2
354	GLOBAL _atan
355	GLOBAL _asin
356	GLOBAL _acos
357;--------------------------------------------------------
358; special function registers
359;--------------------------------------------------------
360;--------------------------------------------------------
361; ram data
362;--------------------------------------------------------
363	SECTION bss_compiler
364;--------------------------------------------------------
365; ram data
366;--------------------------------------------------------
367
368IF 0
369
370; .area _INITIALIZED removed by z88dk
371
372
373ENDIF
374
375;--------------------------------------------------------
376; absolute external ram data
377;--------------------------------------------------------
378	SECTION IGNORE
379;--------------------------------------------------------
380; global & static initialisations
381;--------------------------------------------------------
382	SECTION code_crt_init
383;--------------------------------------------------------
384; Home
385;--------------------------------------------------------
386	SECTION IGNORE
387;--------------------------------------------------------
388; code
389;--------------------------------------------------------
390	SECTION code_compiler
391;	---------------------------------
392; Function am9511_atan2
393; ---------------------------------
394_am9511_atan2:
395	push	ix
396	ld	ix,0
397	add	ix,sp
398	ld	hl, -6
399	add	hl, sp
400	ld	sp, hl
401	ld	hl,0x0000
402	push	hl
403	push	hl
404	ld	l,(ix+6)
405	ld	h,(ix+7)
406	push	hl
407	ld	l,(ix+4)
408	ld	h,(ix+5)
409	push	hl
410	call	___fslt_callee
411	ld	(ix-6),l
412	ld	a,(ix+11)
413	and	a,0x7f
414	or	a,(ix+10)
415	or	a,(ix+9)
416	or	a,(ix+8)
417	jp	Z, l_am9511_atan2_00117
418	ld	l,(ix+8)
419	ld	h,(ix+9)
420	ld	e,(ix+10)
421	ld	d,(ix+11)
422	call	_fabs_fastcall
423	ld	(ix-5),l
424	ld	(ix-4),h
425	ld	(ix-3),e
426	ld	(ix-2),d
427	ld	l,(ix+4)
428	ld	h,(ix+5)
429	ld	e,(ix+6)
430	ld	d,(ix+7)
431	call	_fabs_fastcall
432	push	hl
433	push	de
434	ld	hl,0x0000
435	push	hl
436	push	hl
437	ld	l,(ix+10)
438	ld	h,(ix+11)
439	push	hl
440	ld	l,(ix+8)
441	ld	h,(ix+9)
442	push	hl
443	call	___fslt_callee
444	ld	(ix-1),l
445	pop	de
446	pop	bc
447	push	de
448	push	bc
449	ld	l,(ix-3)
450	ld	h,(ix-2)
451	push	hl
452	ld	l,(ix-5)
453	ld	h,(ix-4)
454	push	hl
455	call	___fslt_callee
456	bit	0,l
457	jr	NZ,l_am9511_atan2_00107
458	ld	l,(ix+10)
459	ld	h,(ix+11)
460	push	hl
461	ld	l,(ix+8)
462	ld	h,(ix+9)
463	push	hl
464	ld	l,(ix+6)
465	ld	h,(ix+7)
466	push	hl
467	ld	l,(ix+4)
468	ld	h,(ix+5)
469	push	hl
470	call	___fsdiv_callee
471	call	_atan_fastcall
472	ld	a,(ix-1)
473	or	a,a
474	ld	c,l
475	ld	b,h
476	jr	Z,l_am9511_atan2_00105
477	bit	0,(ix-6)
478	jr	NZ,l_am9511_atan2_00102
479	ld	hl,0x4049
480	push	hl
481	ld	hl,0x0fdb
482	push	hl
483	push	de
484	push	bc
485	call	___fsadd_callee
486	ld	c, l
487	ld	b, h
488	jr	l_am9511_atan2_00105
489l_am9511_atan2_00102:
490	ld	hl,0x4049
491	push	hl
492	ld	hl,0x0fdb
493	push	hl
494	push	de
495	push	bc
496	call	___fssub_callee
497	ld	c, l
498	ld	b, h
499l_am9511_atan2_00105:
500	ld	l, c
501	ld	h, b
502	jp	l_am9511_atan2_00119
503l_am9511_atan2_00107:
504	ld	l,(ix+6)
505	ld	h,(ix+7)
506	push	hl
507	ld	l,(ix+4)
508	ld	h,(ix+5)
509	push	hl
510	ld	l,(ix+10)
511	ld	h,(ix+11)
512	push	hl
513	ld	l,(ix+8)
514	ld	h,(ix+9)
515	push	hl
516	call	___fsdiv_callee
517	call	_atan_fastcall
518	ld	a,d
519	xor	a,0x80
520	ld	d,a
521	ld	a,(ix-1)
522	or	a,a
523	ld	c,l
524	ld	b,h
525	jr	Z,l_am9511_atan2_00109
526	ld	hl,0x3fc9
527	push	hl
528	ld	hl,0x0fdb
529	push	hl
530	push	de
531	push	bc
532	call	___fssub_callee
533	ld	c, l
534	ld	b, h
535	jr	l_am9511_atan2_00110
536l_am9511_atan2_00109:
537	ld	hl,0x3fc9
538	push	hl
539	ld	hl,0x0fdb
540	push	hl
541	push	de
542	push	bc
543	call	___fsadd_callee
544	ld	c, l
545	ld	b, h
546l_am9511_atan2_00110:
547	ld	l, c
548	ld	h, b
549	jr	l_am9511_atan2_00119
550l_am9511_atan2_00117:
551	ld	l,(ix+6)
552	ld	h,(ix+7)
553	push	hl
554	ld	l,(ix+4)
555	ld	h,(ix+5)
556	push	hl
557	ld	hl,0x0000
558	push	hl
559	push	hl
560	call	___fslt_callee
561	ld	a, l
562	or	a, a
563	jr	Z,l_am9511_atan2_00114
564	ld	de,0x3fc9
565	ld	hl,0x0fdb
566	jr	l_am9511_atan2_00119
567l_am9511_atan2_00114:
568	ld	a,(ix-6)
569	or	a, a
570	jr	Z,l_am9511_atan2_00118
571	ld	de,0xbfc9
572	ld	hl,0x0fdb
573	jr	l_am9511_atan2_00119
574l_am9511_atan2_00118:
575	ld	hl,0x0000
576	ld	e,l
577	ld	d,h
578l_am9511_atan2_00119:
579	ld	sp, ix
580	pop	ix
581	ret
582	SECTION IGNORE
583