Commodore 16: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 68:
Il C-16 era dotato di 16 kB di memoria RAM e 32 kB di memoria ROM. La RAM era la memoria volatile destinata a contenere i programmi inseriti o caricati ma, come detto, di questa solo 12 kB erano utilizzabili effettivamente dall'utente: i primi 4 kB erano infatti occupati dal sistema per i registri mappati in memoria, i puntatori a varie funzioni, i buffer di I/O e lo stack (2 kB), e dalla memoria video per la modalità testuale (2 kB, di cui 1 per i caratteri da visualizzare sullo schermo ed 1 per i loro attributi). La RAM utile scendeva a 4 kB se si attivava la modalità grafica perché il TED mappava nella RAM utente il [[buffer]] grafico, togliendo altri 8 kB.
 
Nei 32&nbsp;kB di ROM erano stipati tutti i dati necessari al funzionamento del computer: questi erano prevalentemente occupati dal KERNAL (circa 8&nbsp;kB), dall'interprete BASIC e dall'editor di schermo (circa 16&nbsp;kB), dai [[font]] (2&nbsp;kB), dal [[monitor (informatica)|monitor in linguaggio macchina]] e da tutte le routine accessorie.<ref>{{cita web|url=http://www.zimmers.net/anonftp/pub/cbm/maps/C16.MemoryMap|titolo=Mappa di memoria del Commodore 16|autore=Janne Peräaho|coautori=Anders Persson|data=09/12/1994|accesso=02/08/2012}}</ref> Qui di seguito l'allocazione della memoria del Commodore 16:<ref>{{cita web|url=https://www.c64-wiki.com/index.php/Commodore_16|titolo=Dati del C16 e allocazione della memoria|editore=c64-wiki.com|accesso=24/04/2016}}</ref>
{| class="wikitable"
! colspan="2" |Indirizzo
! rowspan="2"|Uso
|-
!Hex
!Dec
|-
|$0000-$07FF || 0000-2.047 || Pagina "zero", memoria usata come RAM di sistema
|-
|$0800-$0C00 || 2.048-3.071 || Color RAM, usata conservare i colori delle celle video in modalità testo
|-
|$0C01-$1000 || 3.072-4.095 || Video RAM, usata per memorizzare i caratteri presenti nelle singole celle video in modalità testo
|-
|$1000-$3FFF || 4.096-16.383 || RAM dedicata al BASIC (programma + variabili) - in modalità grafica quest'area viene ridotta alla sezione $1000-$17FF / 4.096-6.143 (vedi sotto)
|-
|$1800-$1BFF || 6.144-7.167 || In modalità grafica quest'area contiene la luminanza dei pixel
|-
|$1C00-$1FFF || 7.168-8.191 || In modalità grafica quest'area contiene i colori dei pixel (Color RAM)
|-
|$2000-$3FFF || 8.192-16.383 || In modalità grafica quest'area è usata come buffer grafico (Video RAM)
|-
|$4000-$7FFF || 16.384-32.767 || Indirizzi non mappati, sono lasciati liberi per eventuali espansioni di memoria
|-
|$8000-$BFFF || 32.768-49.151 || ROM contenente il BASIC V3.5
|-
|$C000-$CFFF || 49.152-53.247 || Indirizzi non mappati, sono lasciati liberi per eventuali espansioni del BASIC
|-
|$D000-$D7FF || 53.248-55.295 || ROM contenente la mappa dei caratteri
|-
|$D800-$FBFF || 55.296-64.511 || ROM contenente le routine del KERNAL
|-
|$FC00-$FCFF || 64.512-64.767 || Routine per la gestione del bank switching
|-
|$FD00-$FEFF || 64.768-65.279 || Registri di I/O
|-
|$FF81-$FFF9 || 65.409-65.529 || "Jump table" alle funzioni del KERNAL
|-
|$FFFA-$FFFB || 65.530-65.531 || Vettore per l'interrupt NMI
|-
|$FFFC-$FFFD || 65.532-65.533 || Vettore per la routine di reset
|-
|$FFFE-$FFFF || 65.534-65.535 || Routine per l'interrupt IRQ
|}
 
===I font===