; $$TABS=8 include "demo.i" sin:: ; input d0=angle output d0=sin(d0) ; trashes d1/d2,a0 clr d2 move.b d0,d2 lsr #8,d0 add d0,d0 lea sin_table(pc),a0 move 2(a0,d0.w),d1 move 0(a0,d0.w),d0 sub d0,d1 muls d2,d1 asr.l #8,d1 add d1,d0 rts cos:: ; input d0=angle output d0=cos(d0) ; trashes d1/d2,a0 clr d2 move.b d0,d2 lsr #8,d0 add d0,d0 lea sin_table(pc),a0 move 2(a0,d0.w),d1 move 0(a0,d0.w),d0 sub d0,d1 muls d2,d1 asr.l #8,d1 add d1,d0 rts sincos:: ; input d0=angle -32768 to 32767 ; output d0=sin d1=cosine ; uses interpolation ; trashes d0,a0,d1,d2,d3 move d0,d2 and #$ff,d2 lsr #8,d0 add d0,d0 lea cos_table(pc),a0 move 0(a0,d0.w),d1 move 2(a0,d0.w),d3 sub d1,d3 muls d2,d3 asr.l #8,d3 add d3,d1 lea sin_table(pc),a0 move 2(a0,d0.w),d3 move 0(a0,d0.w),d0 sub d0,d3 muls d2,d3 asr.l #8,d3 add d3,d0 rts fast_sincos:: ; input d0=angle -32768 to 32767 ; output d0=sin d1=cosine ; no interpolation ; trashes d0,a0,d1 lsr #8,d0 add d0,d0 lea cos_table(pc),a0 move 0(a0,d0.w),d1 lea sin_table(pc),a0 move 0(a0,d0.w),d0 rts sin_table dc.w 0 dc.w 804 dc.w 1608 dc.w 2411 dc.w 3212 dc.w 4011 dc.w 4808 dc.w 5602 dc.w 6393 dc.w 7180 dc.w 7962 dc.w 8740 dc.w 9512 dc.w 10279 dc.w 11039 dc.w 11793 dc.w 12540 dc.w 13279 dc.w 14010 dc.w 14733 dc.w 15447 dc.w 16151 dc.w 16846 dc.w 17531 dc.w 18205 dc.w 18868 dc.w 19520 dc.w 20160 dc.w 20788 dc.w 21403 dc.w 22006 dc.w 22595 dc.w 23170 dc.w 23732 dc.w 24279 dc.w 24812 dc.w 25330 dc.w 25833 dc.w 26320 dc.w 26791 dc.w 27246 dc.w 27684 dc.w 28106 dc.w 28511 dc.w 28899 dc.w 29269 dc.w 29622 dc.w 29957 dc.w 30274 dc.w 30572 dc.w 30853 dc.w 31114 dc.w 31357 dc.w 31581 dc.w 31786 dc.w 31972 dc.w 32138 dc.w 32286 dc.w 32413 dc.w 32522 dc.w 32610 dc.w 32679 dc.w 32729 dc.w 32758 cos_table dc.w 32767 dc.w 32758 dc.w 32729 dc.w 32679 dc.w 32610 dc.w 32522 dc.w 32413 dc.w 32286 dc.w 32138 dc.w 31972 dc.w 31786 dc.w 31581 dc.w 31357 dc.w 31114 dc.w 30853 dc.w 30572 dc.w 30274 dc.w 29957 dc.w 29622 dc.w 29269 dc.w 28899 dc.w 28511 dc.w 28106 dc.w 27684 dc.w 27246 dc.w 26791 dc.w 26320 dc.w 25833 dc.w 25330 dc.w 24812 dc.w 24279 dc.w 23732 dc.w 23170 dc.w 22595 dc.w 22006 dc.w 21403 dc.w 20788 dc.w 20160 dc.w 19520 dc.w 18868 dc.w 18205 dc.w 17531 dc.w 16846 dc.w 16151 dc.w 15447 dc.w 14733 dc.w 14010 dc.w 13279 dc.w 12540 dc.w 11793 dc.w 11039 dc.w 10279 dc.w 9512 dc.w 8740 dc.w 7962 dc.w 7180 dc.w 6393 dc.w 5602 dc.w 4808 dc.w 4011 dc.w 3212 dc.w 2411 dc.w 1608 dc.w 804 dc.w 0 dc.w -804 dc.w -1608 dc.w -2411 dc.w -3212 dc.w -4011 dc.w -4808 dc.w -5602 dc.w -6393 dc.w -7180 dc.w -7962 dc.w -8740 dc.w -9512 dc.w -10279 dc.w -11039 dc.w -11793 dc.w -12540 dc.w -13279 dc.w -14010 dc.w -14733 dc.w -15447 dc.w -16151 dc.w -16846 dc.w -17531 dc.w -18205 dc.w -18868 dc.w -19520 dc.w -20160 dc.w -20788 dc.w -21403 dc.w -22006 dc.w -22595 dc.w -23170 dc.w -23732 dc.w -24279 dc.w -24812 dc.w -25330 dc.w -25833 dc.w -26320 dc.w -26791 dc.w -27246 dc.w -27684 dc.w -28106 dc.w -28511 dc.w -28899 dc.w -29269 dc.w -29622 dc.w -29957 dc.w -30274 dc.w -30572 dc.w -30853 dc.w -31114 dc.w -31357 dc.w -31581 dc.w -31786 dc.w -31972 dc.w -32138 dc.w -32286 dc.w -32413 dc.w -32522 dc.w -32610 dc.w -32679 dc.w -32729 dc.w -32758 dc.w -32767 dc.w -32758 dc.w -32729 dc.w -32679 dc.w -32610 dc.w -32522 dc.w -32413 dc.w -32286 dc.w -32138 dc.w -31972 dc.w -31786 dc.w -31581 dc.w -31357 dc.w -31114 dc.w -30853 dc.w -30572 dc.w -30274 dc.w -29957 dc.w -29622 dc.w -29269 dc.w -28899 dc.w -28511 dc.w -28106 dc.w -27684 dc.w -27246 dc.w -26791 dc.w -26320 dc.w -25833 dc.w -25330 dc.w -24812 dc.w -24279 dc.w -23732 dc.w -23170 dc.w -22595 dc.w -22006 dc.w -21403 dc.w -20788 dc.w -20160 dc.w -19520 dc.w -18868 dc.w -18205 dc.w -17531 dc.w -16846 dc.w -16151 dc.w -15447 dc.w -14733 dc.w -14010 dc.w -13279 dc.w -12540 dc.w -11793 dc.w -11039 dc.w -10279 dc.w -9512 dc.w -8740 dc.w -7962 dc.w -7180 dc.w -6393 dc.w -5602 dc.w -4808 dc.w -4011 dc.w -3212 dc.w -2411 dc.w -1608 dc.w -804 dc.w 0 dc.w 804 dc.w 1608 dc.w 2411 dc.w 3212 dc.w 4011 dc.w 4808 dc.w 5602 dc.w 6393 dc.w 7180 dc.w 7962 dc.w 8740 dc.w 9512 dc.w 10279 dc.w 11039 dc.w 11793 dc.w 12540 dc.w 13279 dc.w 14010 dc.w 14733 dc.w 15447 dc.w 16151 dc.w 16846 dc.w 17531 dc.w 18205 dc.w 18868 dc.w 19520 dc.w 20160 dc.w 20788 dc.w 21403 dc.w 22006 dc.w 22595 dc.w 23170 dc.w 23732 dc.w 24279 dc.w 24812 dc.w 25330 dc.w 25833 dc.w 26320 dc.w 26791 dc.w 27246 dc.w 27684 dc.w 28106 dc.w 28511 dc.w 28899 dc.w 29269 dc.w 29622 dc.w 29957 dc.w 30274 dc.w 30572 dc.w 30853 dc.w 31114 dc.w 31357 dc.w 31581 dc.w 31786 dc.w 31972 dc.w 32138 dc.w 32286 dc.w 32413 dc.w 32522 dc.w 32610 dc.w 32679 dc.w 32729 dc.w 32758 dc.w 32767 dc.w 32767