Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 5 rem fasi lunari v1.0 (2023) by felix nardella
- 10 rem cbm 64 basic - rp-italia
- 15 rem main loop
- 20 gosub65
- 25 gosub70
- 30 gosub100
- 35 gosub155
- 40 gosub320
- 45 clr:gosub65
- 50 goto30
- 55 rem end main
- 60 rem carica sprites e giorni sett. in memoria
- 65 forn=0to6:readz$:a$(n)=z$:next:return
- 70 forn=0to63:readq:poke704+n,q:next
- 75 forn=0to63:readq:poke832+n,q:next
- 80 forn=0to63:readq:poke896+n,q:next
- 85 forn=0to63:readq:poke960+n,q:next
- 90 return
- 95 rem settaggi preliminari sprite
- 100 v=53248:ys=201:pokev+32,11:pokev+33,0
- 105 poke2040,11:pokev,51: pokev+1,ys:rem pointer; x,y sprite0
- 110 poke2044,13:pokev+8,51:pokev+9,ys:rem pointer; x,y sprite4
- 115 poke2041,13:pokev+2,0:pokev+3,ys:rem pointer; y sprite1
- 120 poke2042,14:pokev+4,0:pokev+5,ys:rem pointer; y sprite2
- 125 poke2043,15:pokev+6,0:pokev+7,ys:rem pointer; y sprite3
- 130 pokev+29,31: pokev+23,31:rem expansion x,y
- 135 pokev+39,7:pokev+40,0:pokev+41,0:pokev+42,0:pokev+43,7:rem color
- 140 pokev+21,0:pokev+27,31:rem disattiva sprites; priorita'
- 145 return
- 150 rem richiesta e controllo data
- 155 print"{white}{clear}calcolo della fase lunare"
- 160 print:input"giorno (1-31)";g
- 165 if g<1 or g>31 goto155
- 170 print:input"mese (1-12)";m
- 175 if m<1 or m>12 goto155
- 180 print:input"anno (1582-4000)";a
- 185 if a<1582 or a>4000 goto155
- 190 iy=int(a/100):aa=int(a/4):ia=int(a/400):io=int(a/19)
- 195 if m=2 and g=29 and a/100=iy and a/400<>ia goto155
- 200 if m=2 and g=29 and a/4<>aa goto155
- 205 if m=2 and g>29 goto155
- 210 if (m=11 or m=4 or m=6 or m=9)and g>30 goto155
- 215 rem calcolo fase lunare
- 220 ifm>2thenme=m-2:goto230
- 225 ifm<3thenme=m+10:a=a-1
- 230 no=a+1-io*19:ifno=0thenno=19
- 235 en=no*11-10:r1=en-int(en/30)*30
- 240 b$=str$(a):c$=left$(b$,3):a2=val(c$)
- 245 b=a2-15:c=int((b-int(b/25))/3)
- 250 d=int(b*3/4):e=d-c
- 255 r2=e-int(e/30)*30
- 260 ep=r1-r2
- 265 ifep<0thenep=ep+30
- 270 fl=g+me+ep:ifm<3thenfl=fl+1
- 275 iffl>29thenfl=fl-30:goto275
- 280 rem calcolo giorno settimana
- 285 ifm<3thenm=m+12
- 290 s=g+2*m+int((3*m+3)/5)+a+aa
- 295 r=iy-ia-2
- 300 q=s-r
- 305 z=q-int(q/7)*7
- 310 return
- 315 rem visualizza info
- 320 print:print"eta' della luna ="fl
- 325 print:print"epatta ="ep
- 330 print:print"fase lunare: ";
- 335 iffl=0orfl=1thenprint"luna nuova":gosub435:goto375
- 340 iffl<7thenprint"luna crescente":gosub450:goto375
- 345 iffl=7orfl=8thenprint"primo quarto":gosub470:goto375
- 350 iffl<14thenprint"luna gibbosa crescente":gosub490:goto375
- 355 iffl=15orfl=16thenprint"luna piena":gosub510:goto375
- 360 iffl=23orfl=24thenprint"ultimo quarto":gosub525:goto375
- 365 iffl>24thenprint"luna calante":gosub545:goto375
- 370 iffl>15thenprint"luna gibbosa calante":gosub565
- 375 print:print"giorno della settimana: "a$(z)
- 380 print:print"premi un tasto..."
- 385 print:print" UCCCCCCCCI"
- 390 print" B B"
- 395 print" B B"
- 400 print" B B"
- 405 print" B B"
- 410 print" B B"
- 415 print" JCCCCCCCCK";
- 420 poke198,0:wait198,1
- 425 return
- 430 rem luna nuova
- 435 pokev+21,1:rem activate sprite 0
- 440 return
- 445 rem luna crescente
- 450 xl=49-fl*2:gosub585:rem x sprite1
- 455 pokev+21,18:rem activate sprites 1,4
- 460 return
- 465 rem primo quarto
- 470 xl=40:gosub595:rem x sprite3
- 475 pokev+21,24:rem activate sprites 3,4
- 480 return
- 485 rem gibbosa crescente
- 490 xl=55-fl*2:gosub595:rem x sprite3
- 495 pokev+21,24:rem activate sprites 3,4
- 500 return
- 505 rem luna piena
- 510 pokev+21,16:rem activate sprite 4
- 515 return
- 520 rem ultimo quarto
- 525 xl=69:gosub585:rem x sprite1
- 530 pokev+21,18:rem activate sprites 1,4
- 535 return
- 540 rem luna calante
- 545 xl=113-fl*2:gosub585:rem x sprite1
- 550 pokev+21,18:rem activate sprites 1,4
- 555 return
- 560 rem luna gibbosa calante
- 565 xl=101-fl*2:gosub605:rem x sprite2
- 570 pokev+21,20:rem activate sprites 2,4
- 575 return
- 580 rem x sprite1
- 585 pokev+2,xl:return
- 590 rem x sprite3
- 595 pokev+6,xl:return
- 600 rem x sprite 2
- 605 pokev+4,xl:return
- 610 rem giorni settimana
- 615 data "sabato","domenica"
- 620 data "lunedi'","martedi'","mercoledi'","giovedi'","venerdi'"
- 625 rem luna nuova
- 630 data 1,252,0,6,3,0,8,0,128,16,0,64,32,0,32,64
- 635 data 0,16,64,0,16,128,0,8,128,0,8,128,0,8,128,0
- 640 data 8,128,0,8,128,0,8,128,0,8,64,0,16,64,0,16
- 645 data 32,0,32,16,0,64,8,0,128,6,3,0,1,252,0,0
- 650 rem luna piena
- 655 data 1,252,0,7,255,0,15,255,128,31,255,192,63,255,224,127
- 660 data 255,240,127,255,240,255,255,248,255,255,248,255,255,248,255,255
- 665 data 248,255,255,248,255,255,248,255,255,248,127,255,240,127,255,240
- 670 data 63,255,224,31,255,192,15,255,128,7,255,0,1,252,0,0
- 675 rem luna calante
- 680 data 3,252,0,1,255,0,0,255,128,0,255,192,0,127,224,0
- 685 data 63,240,0,63,240,0,31,248,0,31,248,0,31,248,0,31
- 690 data 248,0,31,248,0,31,248,0,31,248,0,63,240,0,63,240
- 695 data 0,127,224,0,255,192,0,255,128,1,255,0,3,252,0,0
- 700 rem luna crescente
- 705 data 0,63,192,0,255,128,1,255,0,3,255,0,7,254,0,15
- 710 data 252,0,15,252,0,31,248,0,31,248,0,31,248,0,31,248
- 715 data 0,31,248,0,31,248,0,31,248,0,15,252,0,15,252,0
- 720 data 7,254,0,3,255,0,1,255,0,0,255,128,0,63,192,0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement