Ready64 Forum

Commodore 64 => Programmazione, Grafica e Musica => Topic aperto da: Yurif999 - 25 Febbraio 2008, 17:39:41

Titolo: Bug O Cosa?
Inserito da: Yurif999 - 25 Febbraio 2008, 17:39:41
 Vorrei far notare una cosa nell'articolo "Compendio di basic" sezione programmazione ( http://ready64.org/articoli/leggi/idart/43...pendio-di-basic (http://ready64.org/articoli/leggi/idart/43/compendio-di-basic) )
in fondo all'articolo c'e' un link ad un elenco di poke/sys utili.
ad un certo punto c'e' un:
"SYS42562 NEW"
cosa significa di preciso? perche se io scrivo:
10 PRINT "PAPERINO"
e poi do SYS42562
quando faccio LIST il programma c'e' sempre...

ciao
Titolo: Bug O Cosa?
Inserito da: eregil - 25 Febbraio 2008, 21:16:27
 Effettivamente la routine di NEW nella ROM del BASIC inizia a 42562 ($A642).

Chi ha compilato la lista, perĂ², evidentemente ha annotato questa informazione senza prendersi la briga di testare la SYS.

La routine infatti inizia con BNE $A641 (dove si trova un RTS). Per come funziona l'interprete, se esegui la SYS invece di dare il comando NEW, questo BNE ha risultato positivo e la routine torna al BASIC direttamente.

Se invece hai digitato NEW, correttamente e senza parametri, il branch non avviene e la routine continua da $A644; un'occhiata al disassemblato dovrebbe essere sufficiente a riconoscere la routine (scrive il doppio 0 di fine programma all'inizio dell'area BASIC e aggiorna i puntatori).
 
Titolo: Bug O Cosa?
Inserito da: Yurif999 - 26 Febbraio 2008, 12:05:58
 si avevo notato anche io, il problema e' che se dai un SYS42564 ($A644) ottieni un effetto simile al RUN/STOP-RESTORE...
Non ho indagato piu' di tanto comunque, probabilmente quando si digita il comando NEW e si preme RETURN vengono caricati dei valori particolari nei registri o nell'accumulatore..