@Attila
Dal momento che menzioni esempi trovati "in Rete", qualche link non sarebbe stato male, tanto per essere sicuri di parlare della stessa cosa e magari spiegarti il codice specifico che hai letto.
Comunque, non sono il massimo esperto di raster, ma cercherò di chiarire qualche concetto.
In primo luogo, nei limiti del possibile, il buon programmatore scrive i programmi in modo che funzionino
sempre, non in base ad assunzioni su quello che l'utente ha fatto o non ha fatto prima con il computer. Quindi, nello specifico: essendovi la possibilità di inizializzare IRQ, NMI, ecc. come si desidera, è corretto farlo, piuttosto che sperare che l'utente lanci il programma appena acceso il computer, senza aver fatto nient'altro in mezzo.
In secondo luogo, operando sui registri dei chip I/O piuttosto che in RAM, istruzioni come la LDA $dd0d, o magari delle istruzioni BIT, possono avere effetti diversi (o ulteriori) rispetto al semplice caricamento dell'accumulatore. Nello specifico: quando si accede in lettura a $dd0d, si ha l'effetto di un "acknowledgement" di un avvenuto NMI; questo sblocca la possibilità che ne sia gestito un altro. Non leggendo $dd0d nei punti giusti del codice, si può causare un blocco dell'esecuzione delle nostre routine, o altri effetti indesiderati. Puoi leggere maggiori dettagli ad esempio su:
https://the-dreams.de/articles/nmi-lock.txtLe istruzioni LDA #$7f e STA $dd0d servono invece a disabilitare tutti gli NMI gestiti dal CIA 2. Questo è utile prima di reimpostare il puntatore alla routine di gestione degli NMI oppure, ad esempio, per assicurarsi che successivamente siano abilitati solo quelli che desideriamo, a causa del funzionamento particolare di questo registro (consulta ad esempio
Commodore 64 memory map).
Ti consiglio di effettuare una ricerca e spulciare quello che trovi sul forum riguardo la programmazione del raster, in particolare ti segnalo:
https://ready64.org/smf/index.php?topic=1837https://ready64.org/smf/index.php?topic=3646Spero di essere stato utile.