Questa sezione descrive le mappe registro dei Chips Personalizzati Commodore C64 . E' intenso per il programmatore interessato, che vuole analizzare i programmi C64 scritto di altri o addirittura scritti di suo. Se sei solo interessato a giocare il tuo preferito gioco, allora non hai bisogno di preoccuparti riguardo questi dettagli.
D.1 VIC 6567 (Video Controller) - D000-D02E
D000: Sprite#0 Posizione-X (Bits 7…0, Bit 8 è immagazzinato in D010)
D001: Sprite#0 Y-Posizione (Bits 7…0)
L'angolo Alto/Sinistra dello Schermo ha coordinate X/Y 24/50.
D002/D003: come D000/D001, ma per Sprite#1
D004/D005: come D000/D001, ma per Sprite#2
D006…D00F: come D000/D001, ma per Sprites#3…7
D010: Sprite Posizione-X High Bits
1 Bit per Sprite (Bit 0 per Sprite#0, Bit 1 per Sprite#1…)
D011: Control Res: 1
Bit 7: Bit 8 per D012
Bit 6: 1: Modalità Testo Colore Esteso
Bit 5: 0: Modalità Testo ~ 1: Modalità Bitmap
Bit 4: 0: Schermo Disabilito ~ 1: Schermo Abilito
Bit 3: 0: 24 Linee/Schermo ~ 1: 25 Linee/Schermo
Bits 2…0: Scrolling Dolce Posizione-Y
D012: Lettura: Linea Di Scansione Corrente (Bits 7…0, Bit 8 è disponibile in D011)
Scrittura: Scanline che crea un'interruzione raster
D013: Penna Ottica Pos-X (Bits 8…1)
D014: Penna Ottica Pos-Y (Bits 7…0)
D015: Abilita Sprite (Bit 0 per Sprite#0, Bit 1 per Sprite#1…)
D016: Control Res: 2
Bits 7…5: Non usato
Bit 4: 1: Modalità Multi Colore
Bit 3: 0: 38 Carat/Linea ~ 1: 40 Carat/Linea
Bits 2…0: scrolling Dolce Posizione-X
D017: Sprite Scale Doppia Larghezza
1 Bit per Sprite (Bit 0 per Sprite#0, Bit 1 per Sprite#1…)
D018: Registro Indirizzo Video
Bits 7…4: Bits 13…10 di VideoRAM Indir.
Bits 3…1: Bits 13…11 di CharacterRAM Indir. in Modalità Testo
Bits 3: Bit 13 di Bitmap Addr in Modalità Bitmap
Bit 0: Non usato
Bits 15…14 di ambedue valori sono immagazzinati (negati) in DD00 (CIA2).
I bits più bassi (9/10…0) sono sempre 0.
D019: Registro Interrupt Pendenti
Bit 7: 1: Almeno 1 interruzione in attesa
Bits 6…4: Non usato
Bit 3: 1: Penna ottica interruzione in attesa
Bit 2: 1: Sprite/Sprite Collision interruzione in attesa
Bit 1: 1: Sprite/Sfondo Collision interruzione in attesa
Bit 0: 1: Raster interruzione in attesa
D01A: Registro Interrupt Mask
Bits 7…4: Non usato
Bit 3: 1: Penna ottica interruzione abilitato
Bit 2: 1: Collisione Sprite/Sprite interruzione abilitato (vedi D01E)
Bit 1: 1: Collisione Sprite/Sfondo interruzione abilitato (vedi D01F)
Bit 0: 1: Raster interruzione abilitato (vedi D012)
D01B: Priorità Sprite/Sfondo
1 Bit per Sprite (Bit 0 per Sprite#0, Bit 1 per Sprite#1…)
0: Lo Sprite è 'di fronte' lo sfondo
1: Lo Sprite è 'dietro' lo sfondo
D01C: Sprite MultiColore (Bit 0 per Sprite#0, Bit 1 per Sprite#1…)
D01D: Scala Sprite Doppia Altezza
1 Bit per Sprite (Bit 0 per Sprite#0, Bit 1 per Sprite#1…)
D01E: Rilevazione Collisione Sprite/Sprite
1 Bit per Sprite (Bit 0 per Sprite#0, Bit 1 per Sprite#1…)
D01F: Rilevazione Collisione Sprite/Sfondo
1 Bit per Sprite (Bit 0 per Sprite#0, Bit 1 per Sprite#1…)
D020: Border Colore
Tutti i registro Colore usano solo bits 0…3; Bits 7…4 sono non usato.
D021: Colore Sfondo
D022: Colore Sfondo #1 per Multi Colore/Modalità Colore Estesa
D023: Colore Sfondo #2 per Multi Colore/Modalità Colore Estesa
D024: Colore Sfondo #3 per Modalità Testo Colore Estesa
D025: Sprite Multi Colore #0 per Sprites Multi Colore
D026: Sprite Multi Colore #1 per Sprites Multi Colore
D027: Colore Sprite per Sprite #0
D028: Colore Sprite per Sprite #1
D029…D02E: Colore Sprite per Sprites #2…7
I puntatori sono immagazzinati a VideoRAM+03F8…03FF; 1 Byte per Sprite per Bits 13…6. Bits 15…14 sono immagazzinati (invertiti) a DD00 Bits 1…0. Bits 5…0 sono sempre 0.
D.2 SID 6581 (Dispositivo di Interfaccia de Suono) - D400-D41C
D400: Oscillatore#1: Controllo Frequenza: Bits 7…0
D401: Oscillatore#1: Controllo Frequenza: Bits 15…8
Per convertire il valore da Controllo Frequenza a Frequenza attuale
multiplo di (Sistema Clock Rate / 2^24)
D402: Oscillatore#1: Larghezza Pulsazione per Onda Rettangolare: Bits 7…0
D403: Oscillatore#1: Larghezza Pulsazione per Onda Rettangolare: Bits 11…8
D404: Controllo Oscillatore#1
Bits 7…4: Seleziona un il Forma d'onda. Solo 1 forma d'onda può essere
selezionato a qualsiasi tempo (no mix!)
Bit 7: Disturbo
Bit 6: Rettangolo
Bit 5: Dente
Bit 4: Trianglo
Bit 3: Test Bit - 1: Bloca Oscillatore
Bit 2: Ringmodulation
Bit 1: Sincronizzazione
Bit 0: Gate: Abilita Oscillatore
Transizione 0->1 inizia Attack-Decay-Sustain-Cycle
Transizione 1->0 inizia Release Phase
D405: Oscillatore#1: Forma di Inviluppo
Bits 7…4: Velocità Attack
Bits 3…0: Velocità Decay
D406: Oscillatore#1: Forma di Inviluppo
Bits 7…4: Livello di Sostegno
Bits 3…0: Velocità di Rilascio
D407…D40D: come D400…D406, ma per Oscillatore#2
D40E…D414: come D400…D406, ma per Oscillatore#3
D415: Filtro Controllo Freq.: Bits 2…0
D416: Filtro Controllo Freq.: Bits 10…3
Per convertire da Controllo Valore Filtro Freq. in attuale
Filtro Frequenza multipla di 5.8 e aggiungi 30 Hz.
D417: Controllo Filtro/Risonanza
Bits 7…4: Intensità Risonanza
Bit 3: 1: Filtro abilitato per segnale esterno
Bit 2: 1: Filtro abilitato per Oscillatore#3
Bit 1: 1: Filtro abilitato per Oscillatore#2
Bit 0: 1: Filtro abilitato per Oscillatore#1
D418: Filtro Controlllo/Volume
Bit 7: 1: Muta Oscillatore#3
Bit 6: 1: Filtro agisce come filtro Passa-Alto
Bit 5: 1: Filtro agisce come filtro Passa-Banda
Bit 4: 1: Filtro agisce come filtro Passa-Basso
Bits 3…0: Volume
D419: Posizione Paddle 1
D41A: Posizione Paddle 2
D41B: Stato Corrente dell'Oscillatore#3's Onda
D41C: Stato Corrente dell'Oscillatore#3's Inviluppo
Dx00: Port A Registro Dati
Dx01: Registro Dati Porta B
Dx02: Registro Direzione Dati Porta A (0: Input ~ 1: Output)
Dx03: Registro Direzione Dati Porta B (0: Input ~ 1: Output)
Dx04: Timer A Bits 7…0
Lettura: Stato Corrente di Timer A
Scrittura: Valore da essere caricato al prossimo avvio di Timer A
Dx05: Timer A Bits 15…8
Lettura: Stato Corrente di Timer A
Scrittura: Valore da essere caricato al prossimo avvio di Timer A
Dx06: Timer B Bits 7…0
Dx07: Timer B Bits 15…8
Dx08: Tempo di Giorno/Sveglia 10mo Secondo
Lettura: Tempo del Giorno 10mo Secondo in Formato BCD (Bits 3…0)
Scrivi e Controlla Ris: B Bit 7 = 0:
Imposta Tempo del Giorno 10mo Secondo
Scrivi e Controlla Ris: B Bit 7 = 1:
Imposta Tempo Sveglia 10mo Secondo
Dx09: Tempo di Secondo Giorno/Sveglia (Formato BCD)
Modi di accesso come Dx08
Dx0A: Tempo di Giorno/Sveglia Minuti (Formato BCD)
Modi di accesso come Dx08
Dx0B: Tempo di Giorno/Sveglia Ore (Formato BCD)
Bit 7: 0: AM ~ 1: PM
Modi di accesso come Dx08
Lettura Dx0B ritarda il Tempo del Giorno.
Lettura Dx08 rilascia il Ritardo.
Dx0C: Registro Dati Seriale
Dx0D: Registro Controllo Interrupt
Bit 7: Lettura: Almeno 1 origne interruzione è in attesa
Leggendo la Ris. Controllo di Interrupt: pulisce tutti Bits.
Scrittura: 0: Ogni 1 Bit pulisce il corrispondente Mask Bit
Gli altri Bits rimangono inalterati.
1: Ogni 1 Bit imposta il corrispondente Mask Bit
Gli altri Bits rimangono inalterati.
Bits 6…5: Non usato (sempre 0)
Bit 4: Segnale su Pin FLAG
Bit 3: Ris. Dati Seriali: Pieno/Vuoto
Bit 2: Il Tempo Sveglia eguaglia il Tempo del Giorno
Bit 1: Timer B Sotto Flusso
Bit 0: Timer A Sotto Flusso
Leggendo la Ris. Controllo di Interruzione: pulisce tutti i Bits.
Dx0E: Registro Controllo A
Bit 7: Velocità Innesco Tempo del Giorno: 0: 60 Hz ~ 1: 50 Hz
Bit 6: Direzione Dati Seriali: 0: Input ~ 1: Output
Bit 5: Fonte Innesco Timer A: 0: Sistema Clock ~ 1: CNT-Pin
Bit 4: 1: Forza Carico di Timer A
Bit 3: 0: Timer A Automaticalmente riparte dopo che il Conto alla Rovescia è
completo
1: Timer A è fermo quando il Conto alla Rovescia è completo.
Bit 2: 0: Ogni Sotto Flusso di Timer A causa Pin PB6 ad andare alto
per 1 ciclo di clock
1: Ogni Sotto Flusso di Timer A sbarra il Pin PB6.
Bit 1: Sotto Flusso di Timer A è indicato su Pin PB6.
Bit 0: Timer A abilitato: 1: Go ~ 0: Stop
Dx0F: Registro Controllo B
Bit 7: 0: Imposta Tempo del Giorno ~ 1: Imposta Tempo Sveglia
Bits 6…5: Fonte Innesco Timer B
00: Orologio Sistema ~ 01: CNT-Pin
10: Sotto Flusso Timer A ~ 11: Sotto Flusso Timer A se CNT=1
Bits 4…0: come DC0E ma per Timer B e Pin PB7
DC00: CIA1 Porta A
Bits 7…0: Unione Selezione Fila Tastiera
Bits 7…6: Unione Selezione impostazione Paddle (solo 1 bit può essere attivo)
Bit 4: Joystick#2 Fuoco
Bit 3: Joystick#2 Destra
Bit 2: Joystick#2 Sinistra
Bit 1: Joystick#2 Giù
Bit 0: Joystick#2 Su
DC01: CIA1 Porta B
Bits 7…0: Risultato Colonna Tastiera
Bit 4: Joystick#1 Fuoco
Bit 3: Joystick#1 Destra
Bit 2: Joystick#1 Sinistra
Bit 1: Joystick#1 Giù
Bit 0: Joystick#1 Su
DC0D: CIA1 Ris. Controllo Interr.:
Bit 4 (FLAG Pin): Input Dati Nastro Dati
DD00: CIA2 Porta A
Bit 7: IEC-Bus: DATA Input
Bit 6: IEC-Bus: CLOCK Input
Bit 5: IEC-Bus: DATA Output
Bit 4: IEC-Bus: CLOCK Output
Bit 3: IEC-Bus: ATN Output
Bit 2: RS232: TXD (solo con Cartuccia RS232)
Bit 1…0: Alta Ordine Bits (15…14) di Indir. Video (invertito)
DD01: CIA2 Porta B (solo con Cartuccia RS232)
Bit 7: RS232: DSR (Data Set Ready)
Bit 6: RS232: CTS (Clear to Send)
Bit 4: RS232: DCD (Dati Carrier Detect)
Bit 3: RS232: RI (Ring Indicator)
Bit 2: RS232: DTR (Dati Terminal Ready)
Bit 1: RS232: RTS (Request to Send)
Bit 0: RS232: RXD (Receive Data)
DD0D: CIA2 Ris. Controllo Interr.:
Bit 4 (FLAG Pin): RS232: RXD (solo con RS232 Cartuccia)
D.4 Porta CPU 6510
0000: Registro Direzione Dati Porta CPU: 0: Input ~ 1: Output
0001: Registro Direzione Dati Porta CPU
Bits 7…6: Non Implementato
Bit 5: Nastro: Motore (invertito)
Bit 4: Nastro: Pulsante Play
Bit 3: Nastro: Dati Uscita
Bits 2…0: Seleziona una Configurazione di Memoria
Lettura: $A000-BFFF $D000-DFFF $E000-FFFF
000: RAM RAM RAM
001: RAM ROM RAM
010: RAM ROM ROM
011: ROM ROM ROM
100: RAM RAM RAM
101: RAM I/O RAM
110: RAM I/O ROM
111: ROM I/O ROM
Scrittura: $A000-BFFF $D000-DFFF $E000-FFFF
0xx: RAM RAM RAM
100: RAM RAM RAM
101: RAM I/O RAM
11x: RAM I/O RAM