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_round
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 _floor_fastcall
219	GLOBAL _fabs_fastcall
220	GLOBAL _ceil_fastcall
221	GLOBAL _am9511_exp10
222	GLOBAL _am9511_exp2
223	GLOBAL _am9511_log2
224	GLOBAL _pow_callee
225	GLOBAL _exp_fastcall
226	GLOBAL _log10_fastcall
227	GLOBAL _log_fastcall
228	GLOBAL _am9511_atanh
229	GLOBAL _am9511_acosh
230	GLOBAL _am9511_asinh
231	GLOBAL _am9511_tanh
232	GLOBAL _am9511_cosh
233	GLOBAL _am9511_sinh
234	GLOBAL _am9511_atan2
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_round
393; ---------------------------------
394_am9511_round:
395	push	ix
396	ld	ix,0
397	add	ix,sp
398	ld	c, l
399	ld	b, h
400	ld	hl, -20
401	add	hl, sp
402	ld	sp, hl
403	ld	hl,0
404	add	hl, sp
405	ld	(ix-2),l
406	ld	(ix-1),h
407	ld	(hl), c
408	inc	hl
409	ld	(hl), b
410	inc	hl
411	ld	(hl), e
412	inc	hl
413	ld	(hl), d
414	ld	hl,0
415	add	hl, sp
416	ld	(ix-16),l
417	ld	(ix-15),h
418	push	de
419	push	bc
420	ld	e,(ix-16)
421	ld	d,(ix-15)
422	ld	hl,0x0014
423	add	hl, sp
424	ex	de, hl
425	ld	bc,0x0004
426	ldir
427	pop	bc
428	pop	de
429	ld	a,(ix-4)
430	ld	(ix-14),a
431	ld	a,(ix-3)
432	ld	(ix-13),a
433	ld	a,(ix-2)
434	ld	(ix-12),a
435	ld	a,(ix-1)
436	ld	(ix-11),a
437	xor	a, a
438	ld	(ix-4),a
439	ld	(ix-3),a
440	ld	a,(ix-12)
441	and	a,0x80
442	ld	(ix-2),a
443	ld	a,(ix-11)
444	and	a,0x7f
445	ld	(ix-1),a
446	ld	a,0x17
447l_am9511_round_00141:
448	srl	(ix-1)
449	rr	(ix-2)
450	rr	(ix-3)
451	rr	(ix-4)
452	dec	a
453	jr	NZ, l_am9511_round_00141
454	ld	l,(ix-3)
455	ld	a,(ix-4)
456	add	a,0x81
457	ld	(ix-10),a
458	ld	a, l
459	adc	a,0xff
460	ld	(ix-9),a
461	ld	a,(ix-10)
462	sub	a,0x17
463	ld	a,(ix-9)
464	rla
465	ccf
466	rra
467	sbc	a,0x80
468	jp	NC, l_am9511_round_00112
469	bit	7,(ix-9)
470	jr	Z,l_am9511_round_00106
471	ld	bc,0x0000
472	ld	e,0x00
473	ld	a,(ix-11)
474	and	a,0x80
475	ld	d, a
476	ld	a,(ix-10)
477	and	a,(ix-9)
478	inc	a
479	jp	NZ,l_am9511_round_00113
480	set	7, e
481	ld	a, d
482	or	a,0x3f
483	ld	d, a
484	jp	l_am9511_round_00113
485l_am9511_round_00106:
486	ld	(ix-4),0xff
487	ld	(ix-3),0xff
488	ld	(ix-2),0x7f
489	xor	a, a
490	ld	(ix-1),a
491	inc	a
492	jr	l_am9511_round_00146
493l_am9511_round_00145:
494	sra	(ix-1)
495	rr	(ix-2)
496	rr	(ix-3)
497	rr	(ix-4)
498l_am9511_round_00146:
499	dec	a
500	jr	NZ, l_am9511_round_00145
501	ld	l,(ix-4)
502	ld	h,(ix-3)
503	ld	(ix-8),l
504	ld	(ix-7),h
505	xor	a, a
506	ld	(ix-6),a
507	ld	(ix-5),a
508	ld	a,(ix-14)
509	and	a,(ix-8)
510	ld	(ix-4),a
511	ld	a,(ix-13)
512	and	a,(ix-7)
513	ld	(ix-3),a
514	ld	a,(ix-12)
515	and	a,(ix-6)
516	ld	(ix-2),a
517	ld	a,(ix-11)
518	and	a,(ix-5)
519	ld	(ix-1),a
520	or	a,(ix-2)
521	or	a,(ix-3)
522	or	a,(ix-4)
523	jr	NZ,l_am9511_round_00104
524	ld	l, c
525	ld	h, b
526	jp	l_am9511_round_00114
527l_am9511_round_00104:
528	ld	a,(ix-10)
529	inc	a
530	ld	bc,0x0000
531	ld	de,0x0040
532	jr	l_am9511_round_00148
533l_am9511_round_00147:
534	sra	d
535	rr	e
536	rr	b
537	rr	c
538l_am9511_round_00148:
539	dec	a
540	jr	NZ, l_am9511_round_00147
541	ld	a, c
542	add	a,(ix-14)
543	ld	c, a
544	ld	a, b
545	adc	a,(ix-13)
546	ld	b, a
547	ld	a, e
548	adc	a,(ix-12)
549	ld	e, a
550	ld	a, d
551	adc	a,(ix-11)
552	ld	d, a
553	ld	a, l
554	cpl
555	ld	l, a
556	ld	a, h
557	cpl
558	ld	(ix-4),l
559	ld	(ix-3),a
560	xor	a, a
561	ld	(ix-2),a
562	ld	(ix-1),a
563	ld	a, c
564	and	a,(ix-4)
565	ld	c, a
566	ld	a, b
567	and	a,(ix-3)
568	ld	b, a
569	ld	a, e
570	and	a,(ix-2)
571	ld	e, a
572	ld	a, d
573	and	a,(ix-1)
574	ld	d, a
575	jr	l_am9511_round_00113
576l_am9511_round_00112:
577	ld	a,(ix-10)
578	sub	a,0x80
579	or	a,(ix-9)
580	jr	NZ,l_am9511_round_00109
581	push	de
582	push	bc
583	push	de
584	push	bc
585	call	___fsadd_callee
586	jr	l_am9511_round_00114
587l_am9511_round_00109:
588	ld	l, c
589	ld	h, b
590	jr	l_am9511_round_00114
591l_am9511_round_00113:
592	ld	l,(ix-16)
593	ld	h,(ix-15)
594	ld	(hl), c
595	inc	hl
596	ld	(hl), b
597	inc	hl
598	ld	(hl), e
599	inc	hl
600	ld	(hl), d
601	ld	hl,0
602	add	hl, sp
603	ld	e, (hl)
604	inc	hl
605	ld	d, (hl)
606	inc	hl
607	ld	c, (hl)
608	inc	hl
609	ld	h, (hl)
610	ld	l,c
611	ex	de,hl
612l_am9511_round_00114:
613	ld	sp, ix
614	pop	ix
615	ret
616	SECTION IGNORE
617