; ************************************************************************************************************* ; ********* arvutab Kuu tõusu/loojangu ajad ******************************************************************* ; ************************************************************************************************************* ; konstandid: ; P1=3,14159265=80490FDB ; P2=6.2831853=81490FDB ; 2P2=12.566370614359 = 82490FDB ; R1=P1/180=790EFA35 ; K1=15*R1*1.0027379=7D066885(0.26251616804303625);7D066885 calc_moon_times:movlw HIGH(ajatsoon) movwf TBLPTRH movlw LOW(ajatsoon) movwf TBLPTRL clrf TBLPTRU ; bcf FPFLAGS,RND bcf FPFLAGS,SAT TBLRD*+ bcf viga btfsc TABLAT,.7 ; arvesta ajatsooni märki ! bsf viga ; on miinus !!! movlw .24 movwf AARGB3 clrf AARGB2 call AD2aarg1 call FLO3232U call a2b movf TABLAT,W andlw 0x0F ; miinuse märk maha movwf AARGB3 clrf AARGB2 call AD2aarg1 call FLO3232U btfsc viga ; arvesta ajatsooni märki ! bsf AARGB0,.7 ; on miinus !!! call FPD32 ; Z0=tsoon/24 LFSR .0,AEXP LFSR .1,Z0 call a2b2 ; seivi Z0 movlw HIGH(.360) movwf AARGB2 movlw LOW(.360) movwf AARGB3 call AD2aarg1 call FLO3232U call a2b movlw HIGH(pikkus) movwf TBLPTRH movlw LOW(pikkus) movwf TBLPTRL clrf TBLPTRU TBLRD*+ movff TABLAT,AEXP ; pikkus TBLRD*+ movff TABLAT,AARGB0 TBLRD*+ movff TABLAT,AARGB1 TBLRD*+ movff TABLAT,AARGB2 call FPD32 ; pikkus L5=L5/360 LFSR .0,AEXP LFSR .1,L5 call a2b2 ; seivi movlw HIGH(laius) movwf TBLPTRH movlw LOW(laius) movwf TBLPTRL clrf TBLPTRU TBLRD*+ movff TABLAT,_B5 ; laius TBLRD*+ movff TABLAT,_B5+.1 TBLRD*+ movff TABLAT,_B5+.2 TBLRD*+ movff TABLAT,_B5+.3 ; GOSUB 760 - kalender movf paevad,W call bcd2bin movwf AARGB3 clrf AARGB2 call AD2aarg1 call FLO3232U LFSR .0,AEXP LFSR .1,DAY call a2b2 ; seivi päevad movf kuud,W call bcd2bin movwf AARGB3 clrf AARGB2 call AD2aarg1 call FLO3232U LFSR .0,AEXP LFSR .1,MONTH call a2b2 ; seivi kuud movf aasta,W call bcd2bin movwf AARGB3 clrf AARGB2 call AD2aarg1 call FLO3232U movlw 0x89 movwf BEXP movlw 0x7A movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPA32 ; aastat + 2000 LFSR .0,AEXP LFSR .1,YEAR call a2b2 ; seivi aastas (4-kohaline) ; D1=int(DAY); F=DAY-D1-0,5 = 7E000000=0,5 LFSR .0,DAY LFSR .1,AEXP call a2b2 ; päevad call FLOOR32 ; int ; call INT3232 ; int(DAY) ; call AD2aarg1 ; call FLO3232U call a2b LFSR .0,AEXP LFSR .1,_D1 call a2b2 ; seivi int(päevad) call a2b LFSR .0,DAY LFSR .1,AEXP call a2b2 ; päevad- int(päevad) call FPS32 movlw 0x7E ; -0,5 movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call FPS32 LFSR .0,AEXP LFSR .1,F call a2b2 ; seivi F ; J=-Int(7*(Int(M+9)/12)+Y)/4 movf kuud,W call bcd2bin addlw .9 ; +9 movwf AARGB3 clrf AARGB2 call AD2aarg1 call FLO3232U movlw 0x82 ; /12 movwf BEXP movlw 0x40 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPD32 call FLOOR32 ; int ; call INT3232 ; int ; call AD2aarg1 ; call FLO3232U LFSR .0,YEAR LFSR .1,BEXP call a2b2 call FPA32 movlw 0x81 movwf BEXP movlw 0x00 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPD32 ; /4 movlw 0x81 movwf BEXP movlw 0x60 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPM32 ; *7 call FLOOR32 ; int ; call INT3232 ; int ; call AD2aarg1 ; call FLO3232U bsf AARGB0,.7 ; miinus LFSR .0,AEXP LFSR .1,_J call a2b2 ; seivi J movf kuud,W call bcd2bin movwf PRODL movlw .9 cpfsgt PRODL goto gs760v ; kuud < 9 movlw .9 subwf PRODL,W movwf PRODL ; seivi A ajutiselt. bcf viga ; Märk positiivne goto gs760 gs760v: movlw .9 movwf PRODL movf kuud,W ; kuu <9 -> konvertida pole vaja ! subwf PRODL,F bsf viga ; märk negatiivne gs760: movff PRODL,AARGB3 clrf AARGB2 call AD2aarg1 call FLO3232U movlw 0x81 movwf BEXP movlw 0x60 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPD32 ; /7 call FLOOR32 ; int ; call INT3232 ; int ; call AD2aarg1 ; call FLO3232U btfsc viga ; muuda märki kui vaja bsf AARGB0,.7 LFSR .0,YEAR LFSR .1,BEXP call a2b2 call FPA32 call FLOOR32 ; int ; call INT3232 ; int ; call AD2aarg1 ; call FLO3232U movlw 0x85 movwf BEXP movlw 0x48 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPD32 ; /100 call FLOOR32 ; int ; call INT3232 ; int ; call AD2aarg1 ; call FLO3232U movlw 0x7F movwf BEXP movlw 0x00 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPA32 ; +1 call FLOOR32 ; int ; call INT3232 ; int ; call AD2aarg1 ; call FLO3232U movlw 0x80 movwf BEXP movlw 0x40 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPM32 ; *3 movlw 0x81 movwf BEXP movlw 0x00 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPD32 ; /4 call FLOOR32 ; int ; call INT3232 ; int ; call AD2aarg1 ; call FLO3232U bsf AARGB0,.7 ; miinus LFSR .0,AEXP LFSR .1,_J3 call a2b2 ; seivi J3 (ajutiselt) LFSR .0,MONTH LFSR .1,AEXP call a2b2 ; kuud movlw 0x82 movwf BEXP movlw 0x10 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPD32 ; /9 movlw 0x87 movwf BEXP movlw 0x09 movwf BARGB0 movlw 0x80 movwf BARGB1 clrf BARGB2 call FPM32 ; *275 87098000 call FLOOR32 ; int ; call INT3232 ; int ; call AD2aarg1 ; call FLO3232U LFSR .0,_D1 LFSR .1,BEXP call a2b2 ; + int(päevad) call FPA32 LFSR .0,_J3 LFSR .1,BEXP call a2b2 ; + J3 call FPA32 LFSR .0,_J LFSR .1,BEXP call a2b2 ; +J call FPA32 LFSR .0,AEXP LFSR .1,_J call a2b2 ; seivi J LFSR .0,YEAR LFSR .1,AEXP call a2b2 ; aastad movlw 0x87 movwf BEXP movlw 0x37 movwf BARGB0 movlw 0x80 movwf BARGB1 clrf BARGB2 call FPM32 ; *367 87378000 movlw 0x80 movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call FPA32 ; +2 movlw 0x93 movwf BEXP movlw 0x52 movwf BARGB0 movlw 0x16 movwf BARGB1 movlw 0x18 movwf BARGB2 call FPA32 ; +1721027 93521618 LFSR .0,_J LFSR .1,BEXP call a2b2 ; + J call FPA32 LFSR .0,AEXP LFSR .1,_J call a2b2 ; seivi uus J movff F+.1,WREG ; kui F>=0 -> ret 760 andlw 0x80 btfsc ZERO goto gs760_end movlw 0x7F movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call FPS32 ; J-1 LFSR .0,AEXP LFSR .1,_J call a2b2 ; seivi uus J LFSR .0,F LFSR .1,AEXP call a2b2 movlw 0x7F movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call FPA32 ; F+1 LFSR .0,AEXP LFSR .1,F call a2b2 ; seivi uus F gs760_end: LFSR .0,_J LFSR .1,AEXP call a2b2 ; T=(J-2451545)+F movlw 0x94 movwf BEXP movlw 0x15 movwf BARGB0 movlw 0xA1 movwf BARGB1 movlw 0x64 movwf BARGB2 call FPS32 ; 2451545 9415A164 LFSR .0,F LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,T ; seivi T call a2b2 ; gs245 movlw 0x8E movwf BEXP movlw 0x0E movwf BARGB0 movlw 0xAD movwf BARGB1 movlw 0x00 movwf BARGB2 call FPD32 ; T0=T/36525 8E0EAD00 LFSR .0,AEXP LFSR .1,T0 ; seivi T0 call a2b2 movlw 0x96 movwf BEXP movlw 0x03 movwf BARGB0 movlw 0xD6 movwf BARGB1 movlw 0xB9 movwf BARGB2 call FPM32 ; *8640184.813 9603D6B9 movlw 0x8D movwf BEXP movlw 0x3C movwf BARGB0 movlw 0x5D movwf BARGB1 movlw 0x00 movwf BARGB2 call FPA32 ; +24110.5 8D3C5D00 LFSR .0,AEXP LFSR .1,_S ; seivi S call a2b2 LFSR .0,Z0 LFSR .1,AEXP ; Z0*86636.6 call a2b2 movlw 0x8F movwf BEXP movlw 0x29 movwf BARGB0 movlw 0x36 movwf BARGB1 movlw 0x4D movwf BARGB2 call FPM32 ; *86636.6 8F29364D LFSR .0,_S LFSR .1,BEXP ; + S call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_S ; seivi S call a2b2 LFSR .0,L5 LFSR .1,AEXP ; L5*86400 call a2b2 movlw 0x8F movwf BEXP movlw 0x28 movwf BARGB0 movlw 0xC0 movwf BARGB1 movlw 0x00 movwf BARGB2 call FPM32 ; *86400 8F28C000 LFSR .0,_S LFSR .1,BEXP ; + S call a2b2 call FPA32 movlw 0x8F movwf BEXP movlw 0x28 movwf BARGB0 movlw 0xC0 movwf BARGB1 movlw 0x00 movwf BARGB2 call FPD32 ; /86400 8F28C000 LFSR .0,AEXP LFSR .1,_S ; seivi S call a2b2 call FLOOR32 ; int ; call INT3232 ; int ;; call AD2aarg1 ; call FLO3232U call a2b LFSR .0,_S LFSR .1,AEXP ; S-int(S) call a2b2 call FPS32 movlw 0x87 movwf BEXP movlw 0x34 movwf BARGB0 movlw 0x00 movwf BARGB1 movlw 0x00 movwf BARGB2 call FPM32 ; *360 87340000 rida270:;R1=790EFA35 movlw 0x79 movwf BEXP movlw 0x0E movwf BARGB0 movlw 0xFA movwf BARGB1 movlw 0x35 movwf BARGB2 call FPM32 ; *PII/180 790EFA35 LFSR .0,AEXP LFSR .1,T0 ; seivi T0 call a2b2 rida40: LFSR .0,T LFSR .1,AEXP ; T=T+Z0 call a2b2 LFSR .0,Z0 LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,T ; seivi T call a2b2 movlw .0 ; teeb 3* movwf transfcount1 pos_loop: call gosub495 LFSR .0,_A5 ; seivi A5 LFSR .1,_Ma call copy_matr LFSR .0,_D5 ; seivi D5 LFSR .1,_Ma+.4 call copy_matr LFSR .0,_R5 ; seivi R5 LFSR .1,_Ma+.8 call copy_matr LFSR .0,T LFSR .1,AEXP ; T=T+0.5 call a2b2 movlw 0x7E movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,T ; seivi T call a2b2 incf transfcount1,F movf transfcount1,W sublw .3 btfss ZERO goto pos_loop ; tsykelda 3* ; rida 95 LFSR .0,_Ma+.12 LFSR .1,AEXP ; M(2,1) >M(1,1) ? Siis W=1, mine reale 85 call a2b2 LFSR .0,_Ma+.0 LFSR .1,BEXP call a2b2 call TAGTB32 sublw .1 btfsc ZERO goto rida85 movlw 0x81 ; ei, siis M(2,1)=M(2,1)+P2 -> P2=6.2831853=81490FDB movwf BEXP movlw 0x49 movwf BARGB0 movlw 0x0F movwf BARGB1 movlw 0xDB movwf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,_Ma+.12 call a2b2 rida85: LFSR .0,_Ma+.24 LFSR .1,AEXP ; M(3,1) >M(2,1) ? Siis W=1, mine reale 95 call a2b2 LFSR .0,_Ma+.12 LFSR .1,BEXP call a2b2 call TAGTB32 sublw .1 btfsc ZERO goto rida95 movlw 0x81 ; ei, siis M(3,1)=M(3,1)+P2 -> P2=6.2831853=81490FDB movwf BEXP movlw 0x49 movwf BARGB0 movlw 0x0F movwf BARGB1 movlw 0xDB movwf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,_Ma+.24 call a2b2 rida95: movlw 0x84 ; Z1=R1*(90.567-41.685/(M2,3)) movwf AEXP movlw 0x26 movwf AARGB0 movlw 0xBD movwf AARGB1 movlw 0x71 movwf AARGB2 LFSR .0,_Ma+.20 LFSR .1,BEXP call a2b2 call FPD32 call a2b movlw 0x85 movwf AEXP movlw 0x35 movwf AARGB0 movlw 0x22 movwf AARGB1 movlw 0x4E movwf AARGB2 call FPS32 movlw 0x79 ; R1=790EFA35 movwf BEXP movlw 0x0E movwf BARGB0 movlw 0xFA movwf BARGB1 movlw 0x35 movwf BARGB2 call FPM32 LFSR .0,AEXP ; seivi Z1 LFSR .1,_Z1 call a2b2 LFSR .0,_B5 ; S=Sin(B5*R1) LFSR .1,AEXP call a2b2 movlw 0x79 ; R1=790EFA35 movwf BEXP movlw 0x0E movwf BARGB0 movlw 0xFA movwf BARGB1 movlw 0x35 movwf BARGB2 call FPM32 call SIN32 LFSR .0,AEXP ; seivi S LFSR .1,_S call a2b2 LFSR .0,_B5 ; C=Cos(B5*R1) LFSR .1,AEXP call a2b2 movlw 0x79 ; R1=790EFA35 movwf BEXP movlw 0x0E movwf BARGB0 movlw 0xFA movwf BARGB1 movlw 0x35 movwf BARGB2 call FPM32 call COS32 LFSR .0,AEXP ; seivi C LFSR .1,_Cc call a2b2 LFSR .0,_Z1 ; Z=Cos(Z1) LFSR .1,AEXP call a2b2 call COS32 LFSR .0,AEXP ; seivi Z LFSR .1,_Zz call a2b2 movlw 0x00 ; _M8=0 movff WREG,_M8 movff WREG,_W8 ; _W8=0 LFSR .0,_Ma+.0 ; A0 = M(1, 1) LFSR .1,_A0 call a2b2 LFSR .0,_Ma+.4 ; D0 = M(1, 2) LFSR .1,_D0 call a2b2 clrf transfcount1 ; päevade tsükkel: C0=0..23 p_tsyk: incf transfcount1,W ; P=(C0+1)/24 movwf AARGB3 clrf AARGB2 call AD2aarg1 call FLO3232U movlw 0x83 movwf BEXP movlw 0x40 movwf BARGB0 movlw 0x00 movwf BARGB1 movlw 0x00 movwf BARGB2 call FPD32 LFSR .0,AEXP ; seivi P LFSR .1,_P call a2b2 movff transfcount1,AARGB3 ; C0 ka floatida clrf AARGB2 call AD2aarg1 call FLO3232U LFSR .0,AEXP ; seivi _C0 LFSR .1,_C0 call a2b2 LFSR .0,_Ma+.0 ; F0=M(1,1) LFSR .1,_F0 call a2b2 LFSR .0,_Ma+.12 ; F1=M(2,1) LFSR .1,_F1 call a2b2 LFSR .0,_Ma+.24 ; F2=M(3,1) LFSR .1,_F2 call a2b2 call _3pointint LFSR .0,_F ; A2=F LFSR .1,_A2 call a2b2 LFSR .0,_Ma+.4 ; F0=M(1,2) LFSR .1,_F0 call a2b2 LFSR .0,_Ma+.16 ; F1=M(2,2) LFSR .1,_F1 call a2b2 LFSR .0,_Ma+.28 ; F2=M(3,2) LFSR .1,_F2 call a2b2 call _3pointint LFSR .0,_F ; D2=F LFSR .1,_D2 call a2b2 ;;; ; movlw 0x00 ; _M8=0 ; movff WREG,_M8 ; movff WREG,_W8 ; _W8=0 ;;; call test_hour_ev LFSR .0,_A2 ; A0=A2 LFSR .1,_A0 call a2b2 LFSR .0,_D2 ; D0=D2 LFSR .1,_D0 call a2b2 LFSR .0,_V2 ; V0=V2 LFSR .1,_V0 call a2b2 LFSR .0,_V0 ; määrab V0 märgi ja seivib LFSR .1,AEXP call a2b2 btfss AARGB0,.7 goto ridaa bsf V0sign goto ridab ridaa: bcf V0sign ridab: incf transfcount1,F movf transfcount1,W sublw .23 btfss ZERO goto p_tsyk ;-----; ; ptsyk end ;-----; movff _M8,WREG ; erijuhtumid addlw .0 btfss ZERO goto erijuht1 movff _W8,WREG addlw .0 btfss ZERO goto erijuht1 goto erijuht3 ; mõlemad =0 , kogu päeva maas või üleval erijuht1: movff _M8,WREG ; ainult M8=0 -> ei tõusegi addlw .0 btfss ZERO goto erijuht2 ; vaatab edasi movlw 0xFF ; et on ericase ja et ei tõuse sel päeval movff WREG,riseH ; ajad =FF -> keelatud movff WREG,riseM movff WREG,setH movff WREG,setM movlw 0x00 ; heledus nulli movff WREG,kuufaas return erijuht2: movff _W8,WREG ; ainult W8=0 -> ei looju addlw .0 btfss ZERO return ; ei ole erijuhtum movlw 0xFF ; ei looju sel päeval movff WREG,setH movff WREG,setM return erijuht3: LFSR .0,_V2 ; IF V2<0 -> kogu päeva maas LFSR .1,AEXP call a2b2 btfss AARGB0,.7 goto erijuht4 movlw 0x00 ; heledus nulli movff WREG,kuufaas movlw 0xFF movff WREG,riseH movff WREG,riseM movff WREG,setH movff WREG,setM return erijuht4: movf AEXP,W ; IF V2>0 -> kogu päeva üleval btfsc ZERO return ; ei ole ericase erijuht4a: movlw 0x00 ; terve päev üleval ehk tõuseb 00:00 movff WREG,riseH movff WREG,riseM movlw 0x23 movff WREG,setH movlw 0x59 movff WREG,setM ; ja loojub 23:59 return ;---; _3pointint: LFSR .0,_F1 ; A=F1-F0 LFSR .1,AEXP call a2b2 LFSR .0,_F0 LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_A call a2b2 LFSR .0,_F2 ; B=F2-F1-A LFSR .1,AEXP call a2b2 LFSR .0,_F1 LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_A LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_B call a2b2 LFSR .0,_P ; F=F0+P*(2*A+B*((2*P-1)) LFSR .1,AEXP call a2b2 LFSR .0,_P LFSR .1,BEXP call a2b2 call FPA32 movlw 0x7F movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call FPS32 LFSR .0,_B LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,_A LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_A LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_P LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,_F0 LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_F call a2b2 return test_hour_ev: LFSR .0,_C0 ; L0=T0+C0*K1 LFSR .1,AEXP call a2b2 movlw 0x7D ; K1=7D066885 movwf BEXP movlw 0x06 movwf BARGB0 movlw 0x68 movwf BARGB1 movlw 0x85 movwf BARGB2 call FPM32 LFSR .0,T0 LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP ; seivi _L0 LFSR .1,_L0 call a2b2 movlw 0x7D ; L2=L0+K1 7D066885 movwf BEXP movlw 0x06 movwf BARGB0 movlw 0x68 movwf BARGB1 movlw 0x85 movwf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,_L2 ; seivi _L2 call a2b2 LFSR .0,_A2 ; IF A20 then GOTO 325 LFSR .1,AEXP call a2b2 clrf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call TAGTB32 ; kui _C0 > 0 siis W=1 sublw .1 btfsc ZERO goto rida325 rida320: LFSR .0,_D0 ; V0=S*Sin(D0)+C*Cos(D0)*Cos(H0)-Z LFSR .1,AEXP call a2b2 call SIN32 LFSR .0,_S LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,AEXP ; ajutine seiv LFSR .1,tempreg call a2b2 LFSR .0,_D0 LFSR .1,AEXP call a2b2 call COS32 LFSR .0,_Cc LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,AEXP ; ajutine seiv LFSR .1,tempreg1 call a2b2 LFSR .0,_H0 LFSR .1,AEXP call a2b2 call COS32 LFSR .0,tempreg1 LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,tempreg ; liidab eelneva LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_Zz ; lahutab _Zz LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,AEXP ; seivi _V0 LFSR .1,_V0 call a2b2 btfss AARGB0,.7 ; määrab V0 märgi ja seivib goto rida325a bsf V0sign goto rida325 rida325a: bcf V0sign rida325: LFSR .0,_D2 ; V2=S*Sin(D2)+C*Cos(D2)*Cos(H2)-Z LFSR .1,AEXP call a2b2 call SIN32 LFSR .0,_S LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,AEXP ; ajutine seiv: S*Sin(D2)-> tempreg LFSR .1,tempreg call a2b2 LFSR .0,_D2 LFSR .1,AEXP call a2b2 call COS32 LFSR .0,_Cc LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,AEXP ; ajutine seiv: C*Cos(D2)-> tempreg1 LFSR .1,tempreg1 call a2b2 LFSR .0,_H2 LFSR .1,AEXP call a2b2 call COS32 LFSR .0,tempreg1 ; korrutame C*COS(D2)-ga LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,tempreg ; liidame eelnevaga, saame: S*Sin(D2)+C*Cos(D2)*Cos(H2) LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_Zz ; lahutab Z, saame tulemuse LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,AEXP ; seivi _V2 LFSR .1,_V2 call a2b2 btfsc AARGB0,.7 ; IF Sgn(V0)=Sgn(V2) then RET goto rida330 btfss V0sign return goto rida335 rida330: btfsc V0sign return rida335: LFSR .0,_D1 ; V1=S*Sin(D1)+C*Cos(D1)*Cos(H1)-Z LFSR .1,AEXP call a2b2 call SIN32 LFSR .0,_S LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,AEXP ; ajutine seiv: S*Sin(D1)-> tempreg LFSR .1,tempreg call a2b2 LFSR .0,_D1 LFSR .1,AEXP call a2b2 call COS32 LFSR .0,_Cc LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,AEXP ; ajutine seiv: C*Cos(D1)-> tempreg1 LFSR .1,tempreg1 call a2b2 LFSR .0,_H1 LFSR .1,AEXP call a2b2 call COS32 LFSR .0,tempreg1 ; korrutame S*SIN(D1)-ga LFSR .1,BEXP call a2b2 call FPM32 LFSR .0,tempreg ; liidame eelnevaga, saame: S*Sin(D2)+C*Cos(D2)*Cos(H2) LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_Zz ; lahutab Z, saame tulemuse LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,AEXP ; seiv LFSR .1,_V1 call a2b2 ;RIDA 340 ---- LFSR .0,_V1 ; A=4*(V2-2*V1+*V0) LFSR .1,AEXP call a2b2 call a2b call FPA32 ; 2*V1 call a2b LFSR .0,_V2 LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,_V0 LFSR .1,BEXP call a2b2 call FPA32 movlw 0x81 movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call FPM32 LFSR .0,AEXP ; seivi A LFSR .1,_A call a2b2 LFSR .0,_V1 ; B=4*V1-3*V0-V2 LFSR .1,AEXP call a2b2 call a2b call FPA32 call a2b call FPA32 LFSR .0,AEXP ; ajutine seiv LFSR .1,tempreg call a2b2 LFSR .0,_V0 LFSR .1,AEXP call a2b2 movlw 0x80 movwf BEXP movlw 0x40 movwf BARGB0 clrf BARGB1 clrf BARGB2 call FPM32 call a2b LFSR .0,tempreg LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,_V2 LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,AEXP ; seivi B LFSR .1,_B call a2b2 rida345: LFSR .0,_B ; D=B*B-2*A*V0 LFSR .1,AEXP call a2b2 call a2b call FPM32 LFSR .0,AEXP ; ajutine seiv LFSR .1,tempreg call a2b2 LFSR .0,_V0 LFSR .1,AEXP call a2b2 movlw 0x80 movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call FPM32 LFSR .0,_A LFSR .1,BEXP call a2b2 call FPM32 call a2b LFSR .0,tempreg LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP ; seivi D LFSR .1,_D call a2b2 btfsc AARGB0,.7 ; IF D<0 then RETURN return call SQRT32 ; D=SQRT(D) LFSR .0,AEXP ; seivi D LFSR .1,_D call a2b2 rida375: LFSR .0,_B ; E=(-B+D)/(A) LFSR .1,AEXP call a2b2 btg AARGB0,.7 ; -B ! LFSR .0,_D LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_A LFSR .1,BEXP call a2b2 call FPD32 LFSR .0,AEXP ; seivi E LFSR .1,_E call a2b2 btfsc AARGB0,.7 ; IF E>1 Or E<0 then E=(-B-D)/(A) goto rida380a ; E<0 ! movlw 0x7F movwf BEXP clrf BARGB0 clrf BARGB1 clrf BARGB2 call TAGTB32 ; kui E>1 siis W=1 sublw .1 btfsc ZERO goto rida380a ; E>1 ! goto rida385 ; ei ole täidetud see nõue rida380a: LFSR .0,_B ; E=(-B-D)/(A) LFSR .1,AEXP call a2b2 btg AARGB0,.7 ; -B ! LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_A LFSR .1,BEXP call a2b2 call FPD32 LFSR .0,AEXP ; seivi E LFSR .1,_E call a2b2 rida385: LFSR .0,_C0 ; T3=C0+E+1/120 LFSR .1,AEXP call a2b2 LFSR .0,_E LFSR .1,BEXP call a2b2 call FPA32 movlw 0x78 ; 1/120: 78088889 movwf BEXP movlw 0x08 movwf BARGB0 movlw 0x88 movwf BARGB1 movlw 0x89 movwf BARGB2 call FPA32 LFSR .0,AEXP ; seivi T3 LFSR .1,_T3 call a2b2 ; call FLOOR32 ; int(T3) call INT3232 ; int(T3) call FLO3232U LFSR .0,AEXP ; seivi H3 - tõusu-/loojanguaja tunnid LFSR .1,_H3 call a2b2 call a2b ; M3=Int((T3-H3)*60) LFSR .0,_T3 LFSR .1,AEXP call a2b2 call FPS32 movlw 0x84 ; 60: 84700000 movwf BEXP movlw 0x70 movwf BARGB0 movlw 0x00 movwf BARGB1 movlw 0x00 movwf BARGB2 call FPM32 ; call FLOOR32 ; int(M3) call INT3232 ; int(M3) call FLO3232U LFSR .0,AEXP ; seivi M3 - tõusu-/loojanguaja minutid LFSR .1,_M3 call a2b2 ;;;; Leiti miski aeg - milline nimelt ? LFSR .0,_V0 ; IF V0<0 and V2>0 then M8=1 (RISE TIME) LFSR .1,AEXP call a2b2 btfss AARGB0,.7 goto rida365 LFSR .0,_V2 LFSR .1,AEXP call a2b2 movf AEXP,W addlw .0 btfsc ZERO goto rida365 ; on null -> ei sobi ! btfsc AARGB0,.7 goto rida365 ; on <0 -> ei sobi ! LFSR .0,_H3 ; oli tõusu aeg - konverdi ja seivi LFSR .1,AEXP call a2b2 call INT3232 movf AARGB3,W call bin2bcd movff WREG,riseH LFSR .0,_M3 ; minutid LFSR .1,AEXP call a2b2 call INT3232 movf AARGB3,W call bin2bcd movff WREG,riseM movlw .1 ; märgime ää movff WREG,_M8 return ; valmis ! rida365: LFSR .0,_V0 ; IF V0>0 and V2<0 then W8=1 (FALL TIME) LFSR .1,AEXP call a2b2 movf AEXP,W addlw .0 btfsc ZERO return ; on null btfsc AARGB0,.7 return ; ei ole null, on <0 LFSR .0,_V2 ; ok, aga V2 ? LFSR .1,AEXP call a2b2 btfss AARGB0,.7 return ; ei <0 LFSR .0,_H3 ; oli loojangu aeg - konverdi ja seivi LFSR .1,AEXP call a2b2 call INT3232 movf AARGB3,W call bin2bcd movff WREG,setH LFSR .0,_M3 ; minutid LFSR .1,AEXP call a2b2 call INT3232 movf AARGB3,W call bin2bcd movff WREG,setM movlw .1 ; märgime ää movff WREG,_W8 return ; end gosub 285 ;debugA: movlw .1 ; ; return ; call wait_xs ; ; LFSR .0,AEXP ; LFSR .1,TempReg3 ; call a2b2 ; ; movlw '=' ; call s_rs_b ; LFSR .0,AEXP ; movf POSTINC0,W ; call HEX2BIN ; movf abi_H,W ; call s_rs_b ; movf abi_L,W ; call s_rs_b ;; movlw ',' ;; call s_rs_b ; movf POSTINC0,W ; call HEX2BIN ; movf abi_H,W ; call s_rs_b ; movf abi_L,W ; call s_rs_b ;; movlw ',' ;; call s_rs_b ; movf POSTINC0,W ; call HEX2BIN ; movf abi_H,W ; call s_rs_b ; movf abi_L,W ; call s_rs_b ;; movlw ',' ;; call s_rs_b ; movf POSTINC0,W ; call HEX2BIN ; movf abi_H,W ; call s_rs_b ; movf abi_L,W ; call s_rs_b ; movlw '=' ; call s_rs_b ; LFSR .0,AEXP ; call ftoa ; LFSR .0,ASCII_buf ;debugA_1: movf INDF0,W ; sublw 0x0D ; btfsc ZERO ; goto debugA_2 ; movf POSTINC0,W ; call s_rs_b ; goto debugA_1 ;debugA_2:; movlw 0x0D ; ; call s_rs_b ; movlw 0x0A ; call s_rs_b ; LFSR .0,TempReg3 ; LFSR .1,AEXP ; call a2b2 ; return ; ************************************************************************************************************* gosub495: LFSR .0,T LFSR .1,AEXP ; L=0.606434+T*0.03660110129 call a2b2 movlw 0x7A ; 7A15EB09 movwf BEXP movlw 0x15 movwf BARGB0 movlw 0xEB movwf BARGB1 movlw 0x09 movwf BARGB2 call FPM32 movlw 0x7E ; 7E1B3F42 movwf BEXP movlw 0x1B movwf BARGB0 movlw 0x3F movwf BARGB1 movlw 0x42 movwf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,_L ; seivi L call a2b2 LFSR .0,T LFSR .1,AEXP ; M=0.374897+T*0.03629164709 call a2b2 movlw 0x7A ; 7A14A68D movwf BEXP movlw 0x14 movwf BARGB0 movlw 0xA6 movwf BARGB1 movlw 0x8D movwf BARGB2 call FPM32 movlw 0x7D ; 7D3FF280 movwf BEXP movlw 0x3F movwf BARGB0 movlw 0xF2 movwf BARGB1 movlw 0x80 movwf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,_M ; seivi M call a2b2 LFSR .0,T LFSR .1,AEXP ; F=0.259091+T*0.0367481952 call a2b2 movlw 0x7A ; 7A168547 movwf BEXP movlw 0x16 movwf BARGB0 movlw 0x85 movwf BARGB1 movlw 0x47 movwf BARGB2 call FPM32 movlw 0x7D ; 7D04A793 movwf BEXP movlw 0x04 movwf BARGB0 movlw 0xA7 movwf BARGB1 movlw 0x93 movwf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,_F ; seivi F call a2b2 LFSR .0,T LFSR .1,AEXP ; D=0.827362+T*0.03386319198 call a2b2 movlw 0x7A ; 7A0AB421 movwf BEXP movlw 0x0A movwf BARGB0 movlw 0xB4 movwf BARGB1 movlw 0x21 movwf BARGB2 call FPM32 movlw 0x7E ; 7E53CDFF movwf BEXP movlw 0x53 movwf BARGB0 movlw 0xCD movwf BARGB1 movlw 0xFF movwf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,_D ; seivi D call a2b2 LFSR .0,T LFSR .1,AEXP ; N=0.347343-T*0.00014709391 call a2b2 movlw 0x72 ; 721A3D39 movwf BEXP movlw 0x1A movwf BARGB0 movlw 0x3D movwf BARGB1 movlw 0x39 movwf BARGB2 call FPM32 call a2b movlw 0x7D ; 7D31D6F1 movwf AEXP movlw 0x31 movwf AARGB0 movlw 0xD6 movwf AARGB1 movlw 0xF1 movwf AARGB2 call FPS32 LFSR .0,AEXP LFSR .1,_N ; seivi N call a2b2 LFSR .0,T LFSR .1,AEXP ; G=0.993126+T*0.0027377785 call a2b2 movlw 0x76 ; 76336C4D movwf BEXP movlw 0x33 movwf BARGB0 movlw 0x6C movwf BARGB1 movlw 0x4D movwf BARGB2 call FPM32 movlw 0x7E ; 7E7E3D81 movwf BEXP movlw 0x7E movwf BARGB0 movlw 0x3D movwf BARGB1 movlw 0x81 movwf BARGB2 call FPA32 LFSR .0,AEXP LFSR .1,_G ; seivi G call a2b2 LFSR .0,_L ; L=L-INT(L) LFSR .1,AEXP call a2b2 call FLOOR32 ; int call a2b LFSR .0,_L LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_L ; seivi L call a2b2 LFSR .0,_M ; M=M-INT(M) LFSR .1,AEXP call a2b2 call FLOOR32 ; int call a2b LFSR .0,_M LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_M ; seivi M call a2b2 LFSR .0,_F ; F=F-INT(F) LFSR .1,AEXP call a2b2 call FLOOR32 ; int call a2b LFSR .0,_F LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_F ; seivi F call a2b2 LFSR .0,_D ; D=D-INT(D) LFSR .1,AEXP call a2b2 call FLOOR32 ; int call a2b LFSR .0,_D LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_D ; seivi D call a2b2 LFSR .0,_N ; N=N-INT(N) LFSR .1,AEXP call a2b2 call FLOOR32 ; int call a2b LFSR .0,_N LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_N ; seivi N call a2b2 LFSR .0,_G ; G=G-INT(G) LFSR .1,AEXP call a2b2 call FLOOR32 ; int ; call INT3232 ; int ; call FLO3232U call a2b LFSR .0,_G LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_G ; seivi G call a2b2 LFSR .0,_L ; L=L*P2 (2*Pii) LFSR .1,AEXP call a2b2 movlw 0x81 ; 81490FDB movwf BEXP movlw 0x49 movwf BARGB0 movlw 0x0F movwf BARGB1 movlw 0xDB movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_L ; seivi L call a2b2 LFSR .0,_M ; M=M*P2 (2*Pii) LFSR .1,AEXP call a2b2 movlw 0x81 ; 81490FDB movwf BEXP movlw 0x49 movwf BARGB0 movlw 0x0F movwf BARGB1 movlw 0xDB movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_M ; seivi M call a2b2 LFSR .0,_F ; F=F*P2 (2*Pii) LFSR .1,AEXP call a2b2 movlw 0x81 ; 81490FDB movwf BEXP movlw 0x49 movwf BARGB0 movlw 0x0F movwf BARGB1 movlw 0xDB movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_F ; seivi F call a2b2 LFSR .0,_D ; D=D*2P2 (2*2*Pii) LFSR .1,AEXP call a2b2 movlw 0x82 ; 82490FDB;81490FDB movwf BEXP movlw 0x49 movwf BARGB0 movlw 0x0F movwf BARGB1 movlw 0xDB movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_D ; seivi D call a2b2 LFSR .0,_N ; N=N*P2 (2*Pii) LFSR .1,AEXP call a2b2 movlw 0x81 ; 81490FDB movwf BEXP movlw 0x49 movwf BARGB0 movlw 0x0F movwf BARGB1 movlw 0xDB movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_N ; seivi N call a2b2 LFSR .0,_G ; G=G*P2 (2*Pii) LFSR .1,AEXP call a2b2 movlw 0x81 ; 81490FDB movwf BEXP movlw 0x49 movwf BARGB0 movlw 0x0F movwf BARGB1 movlw 0xDB movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_G ; seivi G call a2b2 ; --------- V,U,W arvutamine ----- nextt: LFSR .0,_F ; V=0.39558*Sin(F+N) LFSR .1,AEXP call a2b2 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 call SIN32 movlw 0x7D ; *0.39558 7D4A8976 movwf BEXP movlw 0x4A movwf BARGB0 movlw 0x89 movwf BARGB1 movlw 0x76 movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_F ; V=V+0.082*Sin(F) LFSR .1,AEXP call a2b2 CALL SIN32 movlw 0x7B ; *0.082 7B27EF9E movwf BEXP movlw 0x27 movwf BARGB0 movlw 0xEF movwf BARGB1 movlw 0x9E movwf BARGB2 call FPM32 CALL a2b LFSR .0,_V ; V LFSR .1,AEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_M ; V=V+0.03257*SIN(M-F-N) LFSR .1,AEXP call a2b2 LFSR .0,_F ; F LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_N ; N LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x7A ; *0.03257 7A05681F movwf BEXP movlw 0x05 movwf BARGB0 movlw 0x68 movwf BARGB1 movlw 0x1F movwf BARGB2 call FPM32 LFSR .0,_V ; V LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_M ; V=V+0.01092*SIN(M+F+N) LFSR .1,AEXP call a2b2 LFSR .0,_F ; F LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_N ; N LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x78 ; *0.01092 7832E9CD movwf BEXP movlw 0x32 movwf BARGB0 movlw 0xE9 movwf BARGB1 movlw 0xCD movwf BARGB2 call FPM32 LFSR .0,_V ; V LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_M ; V=V+0.00666*SIN(M-F) LFSR .1,AEXP call a2b2 LFSR .0,_F ; F LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x77 ; *0.00666 775A3C21 movwf BEXP movlw 0x5A movwf BARGB0 movlw 0x3C movwf BARGB1 movlw 0x21 movwf BARGB2 call FPM32 LFSR .0,_V ; V LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_M ; V=V-0.00644*SIN(M+F-D+N) LFSR .1,AEXP call a2b2 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x77 ; *0.00644 775306A3 movwf BEXP movlw 0x53 movwf BARGB0 movlw 0x06 movwf BARGB1 movlw 0xA3 movwf BARGB2 call FPM32 call a2b LFSR .0,_V ; V LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_F ; V=V-0.00331*SIN(F-D+N) LFSR .1,AEXP call a2b2 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x76 ; *0.00331 7658EC96 movwf BEXP movlw 0x58 movwf BARGB0 movlw 0xEC movwf BARGB1 movlw 0x96 movwf BARGB2 call FPM32 call a2b LFSR .0,_V ; V LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_D ; V=V-0.00304*SIN(F-D) LFSR .1,BEXP call a2b2 LFSR .0,_F ; F LFSR .1,AEXP call a2b2 call FPS32 CALL SIN32 movlw 0x76 ; *0.00304 76473ABD movwf BEXP movlw 0x47 movwf BARGB0 movlw 0x3A movwf BARGB1 movlw 0xBD movwf BARGB2 call FPM32 call a2b LFSR .0,_V ; V LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_M ; V=V-0.0024*SIN(M-F-D-N) LFSR .1,AEXP call a2b2 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x76 ; *0.0024 761D4952 movwf BEXP movlw 0x1D movwf BARGB0 movlw 0x49 movwf BARGB1 movlw 0x52 movwf BARGB2 call FPM32 call a2b LFSR .0,_V ; V LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_M ; V=V+0.00226*SIN(M+F) LFSR .1,AEXP call a2b2 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x76 ; *0.00226 76141C82 movwf BEXP movlw 0x14 movwf BARGB0 movlw 0x1C movwf BARGB1 movlw 0x82 movwf BARGB2 call FPM32 LFSR .0,_V ; V LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_M ; V=V-0.00108*SIN(M+F-D) LFSR .1,AEXP call a2b2 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x75 ; *0.00108 750D8EC9 movwf BEXP movlw 0x0D movwf BARGB0 movlw 0x8E movwf BARGB1 movlw 0xC9 movwf BARGB2 call FPM32 call a2b LFSR .0,_V ; V LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_F ; V=V-0.00079*SIN(F-N) LFSR .1,AEXP call a2b2 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x74 ; *0.00079 744F1801 movwf BEXP movlw 0x4F movwf BARGB0 movlw 0x18 movwf BARGB1 movlw 0x01 movwf BARGB2 call FPM32 call a2b LFSR .0,_V ; V LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_V ; seivi V call a2b2 LFSR .0,_F ; V=V+0.00078*SIN(F+D+N) LFSR .1,AEXP call a2b2 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x74 ; *0.00078 744C78EA movwf BEXP movlw 0x4C movwf BARGB0 movlw 0x78 movwf BARGB1 movlw 0xEA movwf BARGB2 call FPM32 LFSR .0,_V ; V LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_V ; V on arvutatud !!! call a2b2 ;---------------------- LFSR .0,_M ; U=1-0.10828*COS(M) LFSR .1,AEXP call a2b2 CALL COS32 movlw 0x7B ; *0.10828 7B5DC1E8 movwf BEXP movlw 0x5D movwf BARGB0 movlw 0xC1 movwf BARGB1 movlw 0xE8 movwf BARGB2 call FPM32 call a2b movlw 0x7F ; 1 movwf AEXP movlw 0x00 movwf AARGB0 movlw 0x00 movwf AARGB1 movlw 0x00 movwf AARGB2 call FPS32 LFSR .0,AEXP LFSR .1,_U ; seivi U call a2b2 LFSR .0,_M ; U=U-0.0188*COS(M-D) LFSR .1,AEXP call a2b2 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 CALL COS32 movlw 0x79 ; *0.0188 791A0275 movwf BEXP movlw 0x1A movwf BARGB0 movlw 0x02 movwf BARGB1 movlw 0x75 movwf BARGB2 call FPM32 call a2b LFSR .0,_U ; U LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_U ; seivi U call a2b2 LFSR .0,_D ; U=U-0.01479*COS(D) LFSR .1,AEXP call a2b2 CALL COS32 movlw 0x78 ; *0.01479 787251C2 movwf BEXP movlw 0x72 movwf BARGB0 movlw 0x51 movwf BARGB1 movlw 0xC2 movwf BARGB2 call FPM32 call a2b LFSR .0,_U ; U LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_U ; seivi U call a2b2 LFSR .0,_M ; U=U+0.00181*COS(2*M-D) !!! LFSR .1,AEXP call a2b2 LFSR .0,_M LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 CALL COS32 movlw 0x75 ; *0.00181 756D3D86 movwf BEXP movlw 0x6D movwf BARGB0 movlw 0x3D movwf BARGB1 movlw 0x86 movwf BARGB2 call FPM32 LFSR .0,_U ; U LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_U ; seivi U call a2b2 LFSR .0,_M ; U=U-0.00147*COS(2*M) LFSR .1,AEXP call a2b2 LFSR .0,_M LFSR .1,BEXP call a2b2 call FPA32 CALL COS32 movlw 0x75 ; *0.00147 7540AD04 movwf BEXP movlw 0x40 movwf BARGB0 movlw 0xAD movwf BARGB1 movlw 0x04 movwf BARGB2 call FPM32 call a2b LFSR .0,_U ; U LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_U ; seivi U call a2b2 LFSR .0,_D ; U=U-0.00105*COS(D-G) LFSR .1,AEXP call a2b2 LFSR .0,_G ; G LFSR .1,BEXP call a2b2 call FPS32 CALL COS32 movlw 0x75 ; *0.00105 7509A027 movwf BEXP movlw 0x09 movwf BARGB0 movlw 0xA0 movwf BARGB1 movlw 0x27 movwf BARGB2 call FPM32 call a2b LFSR .0,_U ; U LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_U ; seivi U call a2b2 LFSR .0,_M ; U=U-0.00075*COS(M-D+G) LFSR .1,AEXP call a2b2 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_G LFSR .1,BEXP call a2b2 call FPA32 CALL COS32 movlw 0x74 ; *0.00075 74449BA6 movwf BEXP movlw 0x44 movwf BARGB0 movlw 0x9B movwf BARGB1 movlw 0xA6 movwf BARGB2 call FPM32 call a2b LFSR .0,_U ; U LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_U ; seivi U -> U on nüüd arvutatud ! call a2b2 ;---------------------- LFSR .0,_M ; W=0.10478*SIN(M) LFSR .1,AEXP call a2b2 CALL SIN32 movlw 0x7B ; *0.10478 7B5696E6 movwf BEXP movlw 0x56 movwf BARGB0 movlw 0x96 movwf BARGB1 movlw 0xE6 movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_F ; W=W-0.04105*SIN(2*F+2*N) LFSR .1,AEXP call a2b2 call a2b call FPA32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x7A ; *0.04105 7A28240B movwf BEXP movlw 0x28 movwf BARGB0 movlw 0x24 movwf BARGB1 movlw 0x0B movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_M ; W=W-0.0213*SIN(M-D) LFSR .1,AEXP call a2b2 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x79 ; *0.0213 792E7D56 movwf BEXP movlw 0x2E movwf BARGB0 movlw 0x7D movwf BARGB1 movlw 0x56 movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_F ; W=W-0.01779*SIN(2*F+N) LFSR .1,AEXP call a2b2 call a2b call FPA32 LFSR .0,_N ; +N LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x79 ; *0.01779 7911BC56 movwf BEXP movlw 0x11 movwf BARGB0 movlw 0xBC movwf BARGB1 movlw 0x56 movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_N ; W=W+0.01774*SIN(N) LFSR .1,AEXP call a2b2 CALL SIN32 movlw 0x79 ; *0.01774 7911537A movwf BEXP movlw 0x11 movwf BARGB0 movlw 0x53 movwf BARGB1 movlw 0x7A movwf BARGB2 call FPM32 LFSR .0,_W ; W LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_D ; W=W+0.00987*SIN(D) LFSR .1,AEXP call a2b2 CALL SIN32 movlw 0x78 ; *0.00987 7821B5C8 movwf BEXP movlw 0x21 movwf BARGB0 movlw 0xB5 movwf BARGB1 movlw 0xC8 movwf BARGB2 call FPM32 LFSR .0,_W ; W LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_M ; W=W-0.00338*SIN(M-2*F-2*N) LFSR .1,AEXP call a2b2 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_N ; N LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_N ; N LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x76 ; *0.00338 765D82FD movwf BEXP movlw 0x5D movwf BARGB0 movlw 0x82 movwf BARGB1 movlw 0xFD movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_G ; W=W-0.00309*SIN(G) LFSR .1,AEXP call a2b2 CALL SIN32 movlw 0x76 ; *0.00309 764A8199 movwf BEXP movlw 0x4A movwf BARGB0 movlw 0x81 movwf BARGB1 movlw 0x99 movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_F ; W=W-0.0019*SIN(2*F) LFSR .1,AEXP call a2b2 call a2b call FPA32 CALL SIN32 movlw 0x75 ; 0.0019 7579096C movwf BEXP movlw 0x79 movwf BARGB0 movlw 0x09 movwf BARGB1 movlw 0x6C movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_M ; W=W-0.00144*SIN(M+N) LFSR .1,AEXP call a2b2 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x75 ; 0.00144 753CBE62 movwf BEXP movlw 0x3C movwf BARGB0 movlw 0xBE movwf BARGB1 movlw 0x62 movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_M ; W=W-0.00144*SIN(M-2*F-N) LFSR .1,AEXP call a2b2 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x75 ; 0.00144 753CBE62 movwf BEXP movlw 0x3C movwf BARGB0 movlw 0xBE movwf BARGB1 movlw 0x62 movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_M ; W=W-0.00113*SIN(M+2*F+2*N) LFSR .1,AEXP call a2b2 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_F LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,_N LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x75 ; *0.00113 75141C82 movwf BEXP movlw 0x14 movwf BARGB0 movlw 0x1C movwf BARGB1 movlw 0x82 movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_M ; W=W-0.00094*SIN(M-D+G) LFSR .1,AEXP call a2b2 LFSR .0,_D LFSR .1,BEXP call a2b2 call FPS32 LFSR .0,_G LFSR .1,BEXP call a2b2 call FPA32 CALL SIN32 movlw 0x74 ; *0.00094 74766A55 movwf BEXP movlw 0x76 movwf BARGB0 movlw 0x6A movwf BARGB1 movlw 0x55 movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W call a2b2 LFSR .0,_M ; W=W-0.00092*SIN(2*M-D) LFSR .1,AEXP call a2b2 call a2b call FPA32 LFSR .0,_D ; D LFSR .1,BEXP call a2b2 call FPS32 CALL SIN32 movlw 0x74 ; 0.00092 74712C28 movwf BEXP movlw 0x71 movwf BARGB0 movlw 0x2C movwf BARGB1 movlw 0x28 movwf BARGB2 call FPM32 call a2b LFSR .0,_W ; W LFSR .1,AEXP call a2b2 call FPS32 LFSR .0,AEXP LFSR .1,_W ; seivi W -> w ON NÜÜD ARVUTET !!! call a2b2 ;-------------- sub 730 ---------------- LFSR .0,_V ; S=W/Sqr(U-V*V) LFSR .1,AEXP call a2b2 call a2b call FPM32 call a2b LFSR .0,_U LFSR .1,AEXP call a2b2 call FPS32 call SQRT32 call a2b LFSR .0,_W LFSR .1,AEXP call a2b2 call FPD32 LFSR .0,AEXP LFSR .1,_S ; seivi S call a2b2 LFSR .0,_S ; A5=L+Atn(S/Sqr(1-S*S)) LFSR .1,AEXP call a2b2 call a2b call FPM32 call a2b movlw 0x7F ; 1 movwf AEXP clrf AARGB0 clrf AARGB1 clrf AARGB2 clrf AARGB3 call FPS32 call SQRT32 call a2b LFSR .0,_S LFSR .1,AEXP call a2b2 call FPD32 call ATAN32 LFSR .0,_L LFSR .1,BEXP call a2b2 call FPA32 LFSR .0,AEXP LFSR .1,_A5 ; seivi A5 call a2b2 LFSR .0,_U ; S=V/Sqr(U) LFSR .1,AEXP call a2b2 call SQRT32 call a2b LFSR .0,_V LFSR .1,AEXP call a2b2 call FPD32 LFSR .0,AEXP LFSR .1,_S ; seivi S call a2b2 call a2b ; D5=Atan(S/Sqr(1-S*S)) call FPM32 call a2b movlw 0x7F ; 1 movwf AEXP clrf AARGB0 clrf AARGB1 clrf AARGB2 call FPS32 call SQRT32 call a2b LFSR .0,_S LFSR .1,AEXP call a2b2 call FPD32 call ATAN32 LFSR .0,AEXP LFSR .1,_D5 ; seivi D5 call a2b2 LFSR .0,_U ; R5=60.40974*Sqr(U) LFSR .1,AEXP call a2b2 call SQRT32 movlw 0x84 ; 60.40974 = 8471A393 movwf BEXP movlw 0x71 movwf BARGB0 movlw 0xA3 movwf BARGB1 movlw 0x93 movwf BARGB2 call FPM32 LFSR .0,AEXP LFSR .1,_R5 ; R5 on nüüd arvutatud ! call a2b2 return