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