Post recenti

Pagine: 1 ... 8 9 [10]
91
Io mi riferivo a istruzioni inserite in una Routine di Servizio di un IRQ Raster Interrupt
Però nel tuo primo post mi era sembrato che tu parlassi della routine di setup, non della routine di servizio.
Ad ogni modo, con riferimento al tuo primo post dove si parlava di prestazioni, va detto che tutti i precalcoli, i precaricamenti e le istruzioni di profilassi "superflue" vengono eseguite praticamente sempre nella routine di setup, che a differenza della routine di servizio viene eseguita una sola volta.
92
Aiuto & Domande / Tastiera TYPE 2
« Ultimo post da commodorista il 05 Novembre 2020, 22:41:51 »
Salve a tutti, volevo chiedere una piccola informazione. Ho controllato sul forum ma non mi pare di aver trovato discussioni simili. Vengo al dunque. Nell'acquistare alcuni ricambi ho avuto l'occasione di acquistare anche una tastiera che però, ahimè, è mancante del tasto "freccia a SX" posto in alto a SX della tastiera. Ho per questo contattato chi lo aveva a disposizione e l'ho acquistato. Nel montarlo, però, ho notato una notevole differenza tanto che il tasto non si adattava per niente all'attacco posto sulla tastiera. Ho iniziato quindi a fare una ricerca su internet per capirci qualcosa e ho scoperto (in tutta sincerità non avevo mai avuto modo di sapere dell'esistenza) che la tastiera in mio possesso è una tastiera denominata "TYPE 2". Allora mi chiedo e vi chiedo di conoscere su quale versione di Commodore 64 è stata montata questo tipo di tastiera o (avendo anche questo dubbio) se la stessa sia stata montata su qualche versione del VIC 20. Grazie anticipatamente a chi mi darà risposta.
93
@eregil

Intanto grazie per l'esaustiva risposta.

Io mi riferivo a istruzioni inserite in una Routine di Servizio di un IRQ Raster Interrupt (che conoscono), i cui esempi sono rintracciabili anche in questo stesso Forum, e mi domandavo il motivo di tante "azioni cautelative", come la disabilitazione di tutte e 5 le sorgenti di NMI Interrupt del CIA 2 (lda #$7f; sta $dd0d) o ancora il riconoscimento (in gergo "acknowledgement" o più semplicemente "ACK") degli NMI Interrupt del CIA 2 effettuato attraverso la lettura del Registro $dd0d azzerandone, di conseguenza, il contenuto.
Nello specifico si dovrebbero prevedere periferiche collegate fisicamente alla Porta Seriale o al limite alla User Port (la Porta Parallela) di un C64 reale, su cui far girare la nostra Routine, che potrebbero provocare un NMI Interrupt e che ne giustificherebbero una disabilitazione preventiva agendo, come dettto, sul Registro $dd0d, ossia l'ICR (Interrupt Control Register) del CIA 2.
Nel caso della pressione del tasto RESTORE o di una Cartuccia ROM inserita nella Expansion Port (o Cartridge Port), agire sul suddetto Registro $dd0d NON è sufficiente in quanto bisogna crearsi una propria Routine di Servizio NMI che gestisca, o meglio, disabiliti opportunamente gli eventi di cui prima (Pressione Tasto RESTORE, ecc.).
Indipendentemente dai dettagli specifici di quali tecniche di programmazione adottare per la gestione degli Interrupt (IRQ o NMI), diciamo che il principio di base (soprattutto caro ai democoders) è quello di creare le condizioni opportune per far girare la propria routine in qualsiasi condizione.
Saluti.
94
@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.txt

Le 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=1837
https://ready64.org/smf/index.php?topic=3646

Spero di essere stato utile.
95
In definitiva, nell'ottica della costante ricerca di un'ottimizzazione spinta, assillo continuo dei democoder, risulta davvero un controsenso utilizzare delle istruzioni superflue che sprecano cicli macchina e byte!
Una possibile risposta potrebbe essere in questo breve estratto di "Mapping The C64" (è riferito a CIA1 mappato a $dc0d, ma vale anche per CIA2 mappato a $dd0d)
Citazione
You should note, however, that reading this register clears it, so you should preserve its contents in RAM if you want to test more than one bit.
In altre parole, bisognerebbe capire che fine fa il contenuto dell'accumulatore dopo quella LDA $DD0D.
96
Segnalazione News / Robot in PETSCII dall'8-bit Guy, ci siamo quasi
« Ultimo post da Major Sludgebucket il 03 Novembre 2020, 09:37:53 »
Pare in dirittura d'arrivo l'annunciato titolo dalle sembianze molto "lasersquadiane" chiamato Petrobots. Questa è la versione C64, se ben ricordo l'idea era partita dal PET e credo che la star di YouTube voglia sfornarne qualche altra versione per le altre macchine Commodore che usano questa stessa variante del sistema di codifica ASCII.

Ultimo aggiornamento: https://www.youtube.com/watch?v=GxTcd0Nxb58
Origine del progetto: https://www.youtube.com/watch?v=uyf7tiSO9vo
97
Salve,
mi domando il perché in Rete, nel Setup delle IRQ Raster Interrupt Routine, spesso vengono inserite le segg. istruzioni:

lda #$7f
sta $dd0d
lda $dd0d

L'unica sorgente che, a seguito del power up del C64, può generare un Interrupt (di tipo IRQ) è il Timer A del CIA 1 che triggera un IRQ Interrupt ogni 1/60 secondo.
Il suddetto Timer A è controllato dal bit 0 del Registro $dc0d (ICR del CIA 1).
Dunque, al fine di disabilitare il Timer A, è sufficiente inserire nel Setup della nostra Raster Interrupt Routine:

lda #$01
sta $dc0d

Il Registro $dd0d è invece legato al CIA 2 e agli Interrupt di tipo NMI.
L'unica sorgente, del suddetto Registro,  che potrebbe triggerare un NMI Interrupt è la Porta RS-232 del C64 SE e SOLO SE alla predetta porta è collegata fisicamente una periferica!
L'altra possibile sorgente di un NMI Interrupt è il tasto RESTORE che NON è gestito dal CIA 2 ma è collegato DIRETTAMENTE alla NMI line del 6510.
In definitiva, nell'ottica della costante ricerca di un'ottimizzazione spinta, assillo continuo dei democoder, risulta davvero un controsenso utilizzare delle istruzioni superflue che sprecano cicli macchina e byte!
98
Aiuto & Domande / quale SD2IEC?
« Ultimo post da pepper0 il 02 Novembre 2020, 17:08:10 »
salve a tutti, volevo chiedervi quale SD1IEC dovrei prendere per leggere .D64 e .TAP?
grazie
99
Segnalazione News / Re:Stoker in lavorazione
« Ultimo post da Major Sludgebucket il 02 Novembre 2020, 10:23:36 »
Nuovo appuntamento con una delle gravidanze più faticose di sempre.

https://www.youtube.com/watch?v=RCRLlbJOSG8
100
Lungo articolo tecnico di Kodiak (il coder del famoso Parallaxian, quell'incredibile titolo alla Choplifter con una spruzzata di Falcon Patrol che fece tanto parlare tempo fa). Vengono spiegati i magheggi dietro gli strati di parallasse nelle sezioni caratterizzate da inseguimenti https://kodiak64.com/blog/wild-wood-deconstructed
Pagine: 1 ... 8 9 [10]