Autore Topic: Routine Flash  (Letto 1746 volte)

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Routine Flash
« il: 26 Giugno 2006, 21:01:49 »
 Leggendo questa vecchia discussione, mi chiedevo se c'era un motivo particolare circa la scelta di usare il reverse del c64, per simulare il vero flash del c16.
Anche perchè usandolo appare il negativo durante il lampeggio e quindi si vede subito che di flash non si tratta.

Il flash su 64 io lo vedo così per esempio, oltretutto evitando di usare due cicli for.

Codice: [Seleziona]
10 print "[SU]ready64"
15 for t=1 to 150
20 if t>75 then print "[SU]       "
30 next:goto 10

 
C= - Dal 1985! Lunga vita e prosperità.

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Routine Flash
« Risposta #1 il: 26 Giugno 2006, 22:45:17 »
 Oppure usare il time$ del c64 per dare il tempo al lampeggio, tanto per non esser costretti ad usare sempre e comunque un ciclo for-next, eliminandolo così del tutto.

Codice: [Seleziona]
10 TI$="000000"
20 PRINT "[su]FLASH"
25 IF TI$="000001" THEN GOTO 30
27 GOTO 20
30 PRINT "[su]     "
40 IF TI$="000002" THEN GOTO 60
50 GOTO 30
60 GOTO 10

Anche se in questo modo, per forza di cose, il lampeggio sarà più lento.
Comunque, aveva ragione Marc=ello, è troppo bello usare il basic in modo creativo.  
C= - Dal 1985! Lunga vita e prosperità.

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Routine Flash
« Risposta #2 il: 05 Luglio 2006, 01:18:57 »
 Ho rivisto con più calma l'uso del timer come base per il tempo di lampeggio, in quanto il precedente listato era funzionante ma macchinoso.

Codice: [Seleziona]
1 IF TI$>"000001" THEN PRINT "[su]FLASH"
2 IF TI$>"000002" THEN PRINT "[su]     ":TI$="000001"
3 GOTO 1

  :D Sono molto soddisfatto perchè così la routine è ottimizzata al massimo sia come dimensioni, sia come passaggi intermedi. Inoltre il processore, sfruttando come base temporale il timer di sistema, non deve caricarsi di lavoro aggiuntivo per far calcoli, come invece avrebbe dovuto fare per esempio con un ciclo for...next o con un ciclo a variabile numerica del tipo N=N+1.
Infine, risparmio una riga ulteriore perchè non imposto TI$ all'inizio pari a "000000" tramite una ipotetica riga 0, ciò perchè usando l'operatore > piuttosto che =, essendo sicuramente al lancio del programma il timer maggiore di 1 e 2, la condizione IF sarà vera e così posso fissare la variabile nella riga 2, accorpandola al resto dell'istruzione.

 :ciauz:


 
C= - Dal 1985! Lunga vita e prosperità.

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Routine Flash
« Risposta #3 il: 05 Luglio 2006, 01:57:56 »
 
Codice: [Seleziona]
start tok64 fl4.prg
0 print"{up}"+mid$("flash     ",1+(TI/30and1)*5,5):goto
stop tok
Ci sono 1000 modi per spellare un gatto :lol:
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Routine Flash
« Risposta #4 il: 05 Luglio 2006, 19:20:06 »
 
Citazione da: "iAN CooG/HF"
Ci sono 1000 modi per spellare un gatto :lol:

 :mavieni:
C= - Dal 1985! Lunga vita e prosperità.

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Routine Flash
« Risposta #5 il: 16 Luglio 2006, 23:48:08 »
Citazione da: "iAN CooG/HF"
Ci sono 1000 modi per spellare un gatto :lol:
Stavo pensando: non dire gatto se non ce l'hai nel sacco! Cioè se tra questi modi potrebbe anche esserci l'uso dell'istruzione wait? Se si con che locazione/i?
C= - Dal 1985! Lunga vita e prosperità.

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Routine Flash
« Risposta #6 il: 17 Luglio 2006, 02:11:40 »
 Perche' no, con qualsiasi locazione che assume valori ciclici, che so, $d012 o $a2, ma l'istruzione wait e' un po' ostica da usare, c'e' stato un thread in cu se n'e' parlato. Cercalo.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Routine Flash
« Risposta #7 il: 18 Luglio 2006, 00:26:41 »
Citazione da: "iAN CooG/HF"
Perche' no, con qualsiasi locazione che assume valori ciclici, che so, $d012 o $a2, ma l'istruzione wait e' un po' ostica da usare, c'e' stato un thread in cu se n'e' parlato. Cercalo.
Il caso vuole che quello che indichi sia uno dei primi che ho letto da quando sono qui  :) Grazie per l'indicazione delle locazioni con valore ciclico, nel frattempo avevo guardato la mappa della memoria nell'appendice del manuale ed avevo messo l'occhio appunto sulla $a2, non ne avevo cavato nulla finora, ma almeno ora ho la conferma che era giusta.  
C= - Dal 1985! Lunga vita e prosperità.