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