home *** CD-ROM | disk | FTP | other *** search
/ Crazy Magazine 2 / Crazy_Magazine_2_19xx___pl_Disk_2_of_2_Side_A.atr / mksinus.asm < prev    next >
Assembly Source File  |  2023-02-26  |  4KB  |  1 lines

  1. * Ponizsza zrodlowka jest bardzo¢* schematyczna,ale dosyc przejrzysta.¢* Na samym poczatku informuje,ze mozna¢* ja BARDZO skrocic,a jej dzialanie¢* przyspieszyc.¢¢*              Kroger/Quasimodos¢¢ opt 21¢¢ts equ $80¢ma equ $81¢mk equ $82¢mn equ $83¢pom1 equ $84 !¢pom2 equ $86 !¢¢ile equ 40 * rozpietosc tablicy¢katy equ 24 * ile katow¢polowa equ 12 * polowa liczby katow¢tb1 equ $20 * tablica od $2000¢¢¢ org $9000¢¢mksinus equ *¢ lda #0¢ sta pom1¢¢* w TS numer katu¢ lda #0¢ sta ts¢sb0 equ *¢ ldx ts¢ lda sin,x¢ sta ma¢* w MA sinus kata¢ lda tab1,x¢ sta pom1+1¢¢* w slowie pom1 adres zapisywania¢* tablicy dla kata w TS¢¢ ldy #0¢sb1 equ *¢ sty mk¢* MK - liczba z zakresu <0,ILE>¢¢* -¢¢* mnozenie MA z MK¢¢ lda #0¢ sta mn¢ ldx #8¢sb2 equ *¢ lsr mk¢ bcc sb3¢ clc¢ adc ma¢sb3 equ *¢ ror @¢ ror mn¢ dex¢ bne sb2¢¢* zaokraglenie (w MN znajuje sie¢* "ulamek" z mnozenia¢¢ bit mn¢ bpl sb4¢¢ clc¢ adc #1¢¢sb4 equ *¢* zapisanie wyniku¢ sta (pom1),y¢¢ iny¢ cpy #ile¢ bne sb1¢¢* -------¢¢* aby nie powtarzac powyzszej operacji¢* dla liczb z zakresu <-ile,-1>,negu-¢* jemy znak liczb wyzej obliczonych i¢* zapisujemy je we w wlasciwym miejscu¢¢ ldx #0¢sb5 equ *¢ txa¢ tay¢ lda (pom1),y¢ pha¢ tya¢ eor #255¢ clc¢ adc #1¢ tay¢ pla¢ eor #255¢ clc¢ adc #1¢ sta (pom1),y¢¢ inx¢ cpx #ile¢ bne sb5¢¢* -------¢¢* i tak ze wszystkimi katami...¢ inc ts¢ lda ts¢ cmp #katy¢ beq sp0¢¢ jmp sb0¢¢* ---¢* ---¢¢* powyzsze dzialania dotyczyly katow¢* z zakresu <0,180),aby nie powtarzac¢* ich dla katow <180,360),negujemy¢* znaki WSZYSTKICH wyzej obliczonych¢* wynikow¢¢sp0 equ *¢ lda #0¢ sta pom1¢ sta pom2¢¢ lda #0¢ sta ts¢sp1 equ *¢ ldx ts¢ lda tab1,x¢ sta pom1+1¢ lda tab1+polowa,x¢ sta pom2+1¢¢ ldy #0¢sp2 equ *¢ lda (pom1),y¢ eor #255¢ clc¢ adc #1¢ sta (pom2),y¢ iny¢ cpy #ile¢ bne sp2¢¢ ldy #256-ile¢sp3 equ *¢ lda (pom1),y¢ eor #255¢ clc¢ adc #1¢ sta (pom2),y¢ iny¢ bne sp3¢¢ inc pom1+1¢ inc pom2+1¢¢ inc ts¢ lda ts¢ cmp #katy¢ bne sp1¢¢ rts¢¢sin equ * sinusy katow¢ dta b(0),b(33),b(66),b(98),b(128),b(156)¢ dta b(181),b(203),b(222),b(237),b(247),b(254)¢ dta b(255),b(254),b(247),b(237),b(222),b(203)¢ dta b(181),b(156),b(128),b(98),b(66),b(33)¢¢* wstepna tablica sinusow!¢* aby np obrocic szescian o kat 15 stopni,¢* nalezy korzystac z fragmentu tablicy¢* wlasciwej znajdujacej sie od adresu¢* (tb1+2)*$100 (tablica wstepna zawiera¢* tylko starsze bajty,mlodszy bajt¢* adresu jest zawsze rowny 0¢tab1 equ *¢ dta b(tb1),b(tb1+1),b(tb1+2),b(tb1+3)¢ dta b(tb1+4),b(tb1+5),b(tb1+6),b(tb1+7)¢ dta b(tb1+8),b(tb1+9),b(tb1+10),b(tb1+11)¢ dta b(tb1+12),b(tb1+13),b(tb1+14),b(tb1+15)¢ dta b(tb1+16),b(tb1+17),b(tb1+18),b(tb1+19)¢ dta b(tb1+20),b(tb1+21),b(tb1+22),b(tb1+23)¢ dta b(tb1+24),b(tb1+25),b(tb1+26),b(tb1+27)¢ dta b(tb1+28),b(tb1+29),b(tb1+30),b(tb1+31)¢ dta b(tb1+32),b(tb1+33),b(tb1+34),b(tb1+35)¢ dta b(tb1+36),b(tb1+37),b(tb1+38),l(tb1+39)¢ dta l(tb1+40),l(tb1+41),l(tb1+42),l(tb1+43)¢ dta l(tb1+44),l(tb1+45),l(tb1+46),l(tb1+47)¢¢* wstepna tablica cosinusow!¢* przesunieta o 90 stopni¢* w naszym przypadku zaczyna sie¢* od 12 kata (360/90=48/12)¢tab2 equ *¢ dta b(tb1+12),b(tb1+13),b(tb1+14),b(tb1+15)¢ dta b(tb1+16),b(tb1+17),b(tb1+18),b(tb1+19)¢ dta b(tb1+20),b(tb1+21),b(tb1+22),b(tb1+23)¢ dta b(tb1+24),b(tb1+25),b(tb1+26),b(tb1+27)¢ dta b(tb1+28),b(tb1+29),b(tb1+30),b(tb1+31)¢ dta b(tb1+32),b(tb1+33),b(tb1+34),b(tb1+35)¢ dta b(tb1+36),b(tb1+37),b(tb1+38),l(tb1+39)¢ dta l(tb1+40),l(tb1+41),l(tb1+42),l(tb1+43)¢ dta l(tb1+44),l(tb1+45),l(tb1+46),l(tb1+47)¢ dta b(tb1),b(tb1+1),b(tb1+2),b(tb1+3)¢ dta b(tb1+4),b(tb1+5),b(tb1+6),b(tb1+7)¢ dta b(tb1+8),b(tb1+9),b(tb1+10),b(tb1+11)¢¢* budowa tablic wstepnych umozliwia¢* nam bardzo elastyczne lokowanie¢* (lacznie z dzieleniem na bardzo male¢* fragmenty) tablicy wlasciwej¢¢ opt %111¢ end¢