Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 5 rem 'char escape' by f. nardella (kimono)
- 10 rem individua il primo carattere non-spazio sullo schermo,
- 15 rem lo trasforma in sprite, cancella il carattere,
- 20 rem posiziona lo sprite e lo fa muovere.
- 25 rem inizializzazione variabili
- 30 rw=0:cl=0:of=0:cc=0:sd=704:tc=0:ms=0:tp=0
- 35 gosub 100:rem cerca carattere non-spazio
- 40 rem determina direzione movimento
- 45 if cl<20 then dr=-1:goto55
- 50 dr=1
- 55 gosub 150:rem copia carattere in sprite
- 60 gosub 255:rem configura sprite
- 65 gosub 230:rem cancella carattere dallo schermo
- 70 gosub 330:rem muove sprite
- 75 goto35
- 80 rem programma terminato
- 85 print"end program"
- 90 end
- 95 rem sub: cerca carattere non-spazio
- 100 of=rw*40+cl
- 105 cc=peek(1024+of)
- 110 if cc<>32 then return:rem carattere trovato
- 115 cl=cl+1
- 120 if cl<40 goto100
- 125 cl=0:rw=rw+1
- 130 if rw<25 goto100
- 135 if rw=25goto85
- 140 return
- 145 rem sub: copia carattere in sprite
- 150 ms=peek(1):mi=peek(56334):rem salva configurazione memoria
- 155 poke 56334,peek(56334)and254:rem disabilita interrupt
- 160 poke 1,peek(1)and251:rem abilita charset rom
- 165 rem azzera area sprite
- 170 for i=0 to 63:poke sd+i,0:next
- 175 rem calcola offset nel charset
- 180 co=cc*8
- 185 rem copia 8 righe del carattere
- 190 fori=0to7
- 195 tc=peek(53248+co+i):rem legge da charset rom
- 200 poke sd+i*3,tc:rem scrive solo prima colonna sprite
- 205 next
- 210 rem ripristina configurazione memoria
- 215 poke 1,ms:poke 56334,mi
- 220 return
- 225 rem sub: cancella carattere dallo schermo
- 230 of=rw*40+cl
- 235 poke 1024+of,32
- 240 return
- 245 rem sub: configura sprite
- 250 rem imposta puntatore sprite 0
- 255 poke 2040,11
- 260 rem abilita sprite 0
- 265 poke 53269,1
- 270 rem colore sprite 0 (bianco)
- 275 poke 53287,1
- 280 rem posizione iniziale x: 24 + col * 8
- 285 sx=24+cl*8
- 290 if sx>255 then poke53264,peek(53264)or1:sx=sx-256:goto300
- 295 poke 53264,peek(53264)and254
- 300 poke 53248,sx
- 305 rem posizione iniziale y: 50 + row * 8
- 310 sy=rw*8+50
- 315 poke 53249,sy
- 320 return
- 325 rem sub: muove sprite verso destra
- 330 sx=peek(53248)
- 335 ms=peek(53264)and1:rem msb corrente
- 340 sx=sx+8*dr:rem incrementa x
- 345 if sx>255 then sx=0:ms=1-ms:poke53264,(peek(53264)and254)orms
- 350 poke 53248,sx
- 355 rem controlla se sprite ha raggiunto i bordi
- 360 if dr=-1 and ms=0 and sx<24 then gosub380:return
- 365 if dr=1 and ms=1 and sx>80 then gosub380:return
- 370 goto340
- 375 rem sub: passa al prossimo carattere
- 380 cl=cl+1
- 385 if cl<40 then return
- 390 cl=0:rw=rw+1
- 395 return
Advertisement
Comments
-
- Try thia one:
- 5 rem 'char escape' by f. nardella (kimono)
- 10 rem individua il primo carattere non-spazio sullo schermo,
- 15 rem lo trasforma in sprite, cancella il carattere,
- 20 rem posiziona lo sprite e lo fa muovere.
- 21 rem inizializzazione variabili
- 22 ? chr$(147)
- 23 ? " **** commodore 64 basic v2 ****"
- 24 ? ""
- 27 ? " 64k ram system 38911 basic bytes free"
- 28 ? ""
- 29 ? "ready."
- 30 rw=0:cl=0:of=0:cc=0:sd=704:tc=0:ms=0:tp=0
- 32 x=rnd(-ti):rem inizializza random con timer
- 35 gosub 100:rem cerca carattere non-spazio
- 40 rem determina direzione movimento
- 45 if cl<20 then dr=-1:goto55
- 50 dr=1
- 55 gosub 150:rem copia carattere in sprite
- 60 gosub 255:rem configura sprite
- 65 gosub 230:rem cancella carattere dallo schermo
- 70 gosub 330:rem muove sprite
- 75 goto35
- 80 rem programma terminato
- 85 print"end program"
- 90 end
- 95 rem sub: cerca carattere non-spazio
- 95 rem sub: scegli carattere casuale non-spazio
- 100 for tr=1 to 500
- 105 rw=int(rnd(0)*25): cl=int(rnd(0)*40)
- 110 of=rw*40+cl
- 115 cc=peek(1024+of)
- 120 if cc<>32 then return
- 125 next tr
- 130 rem se non trova niente, fine
- 135 goto 85
- 140 return
- 145 rem sub: copia carattere in sprite
- 150 ms=peek(1):mi=peek(56334):rem salva configurazione memoria
- 155 poke 56334,peek(56334)and254:rem disabilita interrupt
- 160 poke 1,peek(1)and251:rem abilita charset rom
- 165 rem azzera area sprite
- 170 for i=0 to 63:poke sd+i,0:next
- 175 rem calcola offset nel charset
- 180 co=cc*8
- 185 rem copia 8 righe del carattere
- 190 fori=0to7
- 195 tc=peek(53248+co+i):rem legge da charset rom
- 200 poke sd+i*3,tc:rem scrive solo prima colonna sprite
- 205 next
- 210 rem ripristina configurazione memoria
- 215 poke 1,ms:poke 56334,mi
- 220 return
- 225 rem sub: cancella carattere dallo schermo
- 230 of=rw*40+cl
- 235 poke 1024+of,32
- 240 return
- 245 rem sub: configura sprite
- 250 rem imposta puntatore sprite 0
- 255 poke 2040,11
- 260 rem abilita sprite 0
- 265 poke 53269,1
- 270 rem colore sprite 0 (bianco)
- 275 poke 53287,1
- 280 rem posizione iniziale x: 24 + col * 8
- 285 sx=24+cl*8
- 290 if sx>255 then poke53264,peek(53264)or1:sx=sx-256:goto300
- 295 poke 53264,peek(53264)and254
- 300 poke 53248,sx
- 305 rem posizione iniziale y: 50 + row * 8
- 310 sy=rw*8+50
- 315 poke 53249,sy
- 320 return
- 325 rem sub: muove sprite con onda sinusoidale (dx/sx + su/giu)
- 330 rem calcola X a 10 bit e inizializza fase
- 332 x10=(peek(53264)and1)*256+peek(53248)
- 334 ax=0: ay=peek(53249)
- 338 ax=ax+0.25
- 340 x10=x10+4*dr
- 342 sy=ay+16*sin(ax)
- 344 ms=int(x10/256)
- 346 poke 53264,(peek(53264)and254) or ms
- 348 poke 53248,x10-ms*256
- 350 if sy<50 then sy=50
- 352 if sy>245 then sy=245
- 354 poke 53249,int(sy)
- 356 if dr=-1 and x10<32 then gosub 380:return
- 358 if dr=1 and x10>480 then gosub 380:return
- 360 goto 338
- 365 if dr=1 and ms=1 and sx>80 then gosub380:return
- 370 goto340
- 375 rem sub: passa al prossimo carattere
- 380 cl=cl+1
- 385 if cl<40 then return
- 390 cl=0:rw=rw+1
- 395 return
Add Comment
Please, Sign In to add comment