Advertisement
felixnardella

Fasi lunari v1.0

May 22nd, 2023
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.96 KB | None | 0 0
  1. 5 rem fasi lunari v1.0 (2023) by felix nardella
  2. 10 rem cbm 64 basic - rp-italia
  3. 15 rem main loop
  4. 20 gosub65
  5. 25 gosub70
  6. 30 gosub100
  7. 35 gosub155
  8. 40 gosub320
  9. 45 clr:gosub65
  10. 50 goto30
  11. 55 rem end main
  12. 60 rem carica sprites e giorni sett. in memoria
  13. 65 forn=0to6:readz$:a$(n)=z$:next:return
  14. 70 forn=0to63:readq:poke704+n,q:next
  15. 75 forn=0to63:readq:poke832+n,q:next
  16. 80 forn=0to63:readq:poke896+n,q:next
  17. 85 forn=0to63:readq:poke960+n,q:next
  18. 90 return
  19. 95 rem settaggi preliminari sprite
  20. 100 v=53248:ys=201:pokev+32,11:pokev+33,0
  21. 105 poke2040,11:pokev,51: pokev+1,ys:rem pointer; x,y sprite0
  22. 110 poke2044,13:pokev+8,51:pokev+9,ys:rem pointer; x,y sprite4
  23. 115 poke2041,13:pokev+2,0:pokev+3,ys:rem pointer; y sprite1
  24. 120 poke2042,14:pokev+4,0:pokev+5,ys:rem pointer; y sprite2
  25. 125 poke2043,15:pokev+6,0:pokev+7,ys:rem pointer; y sprite3
  26. 130 pokev+29,31: pokev+23,31:rem expansion x,y
  27. 135 pokev+39,7:pokev+40,0:pokev+41,0:pokev+42,0:pokev+43,7:rem color
  28. 140 pokev+21,0:pokev+27,31:rem disattiva sprites; priorita'
  29. 145 return
  30. 150 rem richiesta e controllo data
  31. 155 print"{white}{clear}calcolo della fase lunare"
  32. 160 print:input"giorno (1-31)";g
  33. 165 if g<1 or g>31 goto155
  34. 170 print:input"mese (1-12)";m
  35. 175 if m<1 or m>12 goto155
  36. 180 print:input"anno (1582-4000)";a
  37. 185 if a<1582 or a>4000 goto155
  38. 190 iy=int(a/100):aa=int(a/4):ia=int(a/400):io=int(a/19)
  39. 195 if m=2 and g=29 and a/100=iy and a/400<>ia goto155
  40. 200 if m=2 and g=29 and a/4<>aa goto155
  41. 205 if m=2 and g>29 goto155
  42. 210 if (m=11 or m=4 or m=6 or m=9)and g>30 goto155
  43. 215 rem calcolo fase lunare
  44. 220 ifm>2thenme=m-2:goto230
  45. 225 ifm<3thenme=m+10:a=a-1
  46. 230 no=a+1-io*19:ifno=0thenno=19
  47. 235 en=no*11-10:r1=en-int(en/30)*30
  48. 240 b$=str$(a):c$=left$(b$,3):a2=val(c$)
  49. 245 b=a2-15:c=int((b-int(b/25))/3)
  50. 250 d=int(b*3/4):e=d-c
  51. 255 r2=e-int(e/30)*30
  52. 260 ep=r1-r2
  53. 265 ifep<0thenep=ep+30
  54. 270 fl=g+me+ep:ifm<3thenfl=fl+1
  55. 275 iffl>29thenfl=fl-30:goto275
  56. 280 rem calcolo giorno settimana
  57. 285 ifm<3thenm=m+12
  58. 290 s=g+2*m+int((3*m+3)/5)+a+aa
  59. 295 r=iy-ia-2
  60. 300 q=s-r
  61. 305 z=q-int(q/7)*7
  62. 310 return
  63. 315 rem visualizza info
  64. 320 print:print"eta' della luna ="fl
  65. 325 print:print"epatta ="ep
  66. 330 print:print"fase lunare: ";
  67. 335 iffl=0orfl=1thenprint"luna nuova":gosub435:goto375
  68. 340 iffl<7thenprint"luna crescente":gosub450:goto375
  69. 345 iffl=7orfl=8thenprint"primo quarto":gosub470:goto375
  70. 350 iffl<14thenprint"luna gibbosa crescente":gosub490:goto375
  71. 355 iffl=15orfl=16thenprint"luna piena":gosub510:goto375
  72. 360 iffl=23orfl=24thenprint"ultimo quarto":gosub525:goto375
  73. 365 iffl>24thenprint"luna calante":gosub545:goto375
  74. 370 iffl>15thenprint"luna gibbosa calante":gosub565
  75. 375 print:print"giorno della settimana: "a$(z)
  76. 380 print:print"premi un tasto..."
  77. 385 print:print" UCCCCCCCCI"
  78. 390 print" B B"
  79. 395 print" B B"
  80. 400 print" B B"
  81. 405 print" B B"
  82. 410 print" B B"
  83. 415 print" JCCCCCCCCK";
  84. 420 poke198,0:wait198,1
  85. 425 return
  86. 430 rem luna nuova
  87. 435 pokev+21,1:rem activate sprite 0
  88. 440 return
  89. 445 rem luna crescente
  90. 450 xl=49-fl*2:gosub585:rem x sprite1
  91. 455 pokev+21,18:rem activate sprites 1,4
  92. 460 return
  93. 465 rem primo quarto
  94. 470 xl=40:gosub595:rem x sprite3
  95. 475 pokev+21,24:rem activate sprites 3,4
  96. 480 return
  97. 485 rem gibbosa crescente
  98. 490 xl=55-fl*2:gosub595:rem x sprite3
  99. 495 pokev+21,24:rem activate sprites 3,4
  100. 500 return
  101. 505 rem luna piena
  102. 510 pokev+21,16:rem activate sprite 4
  103. 515 return
  104. 520 rem ultimo quarto
  105. 525 xl=69:gosub585:rem x sprite1
  106. 530 pokev+21,18:rem activate sprites 1,4
  107. 535 return
  108. 540 rem luna calante
  109. 545 xl=113-fl*2:gosub585:rem x sprite1
  110. 550 pokev+21,18:rem activate sprites 1,4
  111. 555 return
  112. 560 rem luna gibbosa calante
  113. 565 xl=101-fl*2:gosub605:rem x sprite2
  114. 570 pokev+21,20:rem activate sprites 2,4
  115. 575 return
  116. 580 rem x sprite1
  117. 585 pokev+2,xl:return
  118. 590 rem x sprite3
  119. 595 pokev+6,xl:return
  120. 600 rem x sprite 2
  121. 605 pokev+4,xl:return
  122. 610 rem giorni settimana
  123. 615 data "sabato","domenica"
  124. 620 data "lunedi'","martedi'","mercoledi'","giovedi'","venerdi'"
  125. 625 rem luna nuova
  126. 630 data 1,252,0,6,3,0,8,0,128,16,0,64,32,0,32,64
  127. 635 data 0,16,64,0,16,128,0,8,128,0,8,128,0,8,128,0
  128. 640 data 8,128,0,8,128,0,8,128,0,8,64,0,16,64,0,16
  129. 645 data 32,0,32,16,0,64,8,0,128,6,3,0,1,252,0,0
  130. 650 rem luna piena
  131. 655 data 1,252,0,7,255,0,15,255,128,31,255,192,63,255,224,127
  132. 660 data 255,240,127,255,240,255,255,248,255,255,248,255,255,248,255,255
  133. 665 data 248,255,255,248,255,255,248,255,255,248,127,255,240,127,255,240
  134. 670 data 63,255,224,31,255,192,15,255,128,7,255,0,1,252,0,0
  135. 675 rem luna calante
  136. 680 data 3,252,0,1,255,0,0,255,128,0,255,192,0,127,224,0
  137. 685 data 63,240,0,63,240,0,31,248,0,31,248,0,31,248,0,31
  138. 690 data 248,0,31,248,0,31,248,0,31,248,0,63,240,0,63,240
  139. 695 data 0,127,224,0,255,192,0,255,128,1,255,0,3,252,0,0
  140. 700 rem luna crescente
  141. 705 data 0,63,192,0,255,128,1,255,0,3,255,0,7,254,0,15
  142. 710 data 252,0,15,252,0,31,248,0,31,248,0,31,248,0,31,248
  143. 715 data 0,31,248,0,31,248,0,31,248,0,15,252,0,15,252,0
  144. 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