La mappa di memoria del VIC 20

Buongiorno Gruppo, oggi post di servizio e ultra rapido.
Vi posto l’immagine (per me molto esplicativa) della mappa di memoria del Vic20, con rappresentate le varie configurazioni della:

  • NON espansa,
  • 3K,
  • 8-16-24k.

Come potrete notare l’espansione da 3K mantiene l’area della memoria video e colore identica a quello inespanso; cambia l’inizio dell’area BASIC.
Mentre con l’espansioni 8-16-24K avete la stessa configurazione della memoria, si estende solo l’area del Basic. Io spesso vi dico di buttare dentro tutta l’espansione che avete, se il gioco non prevede l’espansione da 3K.

Solo alcuni che usano il blocco 5 non funzionano bene, ma il resto gira alla grande. Quindi il più delle volte un gioco che vuole la 8K, funziona anche con la 24K o 16K. Fatemi sapere se avete giochi che vi danno problemi e vogliono l’espansione esatta, a parte quelli che si inseriscono nel blocco 5.
Stampatela e tenetela sempre a portata di mano se volete programmare, è veramente molto utile per nascondere del codice e/o variabili senza dare fastidio al Basic.


Il microprocessore 6502 del VIC-20 può indirizzare direttamente 64 KB di memoria. Un VIC-20 di serie ha 5K RAM e 20K ROM incorporati. Inoltre 4K dell’intervallo di indirizzi accede ai dispositivi I / O, incluso il chip VIC. L’area I / O contiene anche 1K di valori a 4 bit che servono come RAM colore.
Un intervallo di 256 byte, con l’indirizzo di base divisibile anche per 256, è chiamato pagina.
La mappa di memoria è divisa in 8 blocchi, ciascuno di 8K di lunghezza e numerati da 0 a 7.

Block 0

1 KB low Memory RAM (built-in)

  • $0000-$00FF: Zeropage
  • $0100-$01FF: CPU Stack
  • $0200-$03FF: KERNAL and BASIC working areas

3 KB open area in Block 0

  • $0400-$07FF: 1 KB, accessed by RAM1 line
  • $0800-$0BFF: 1 KB, accessed by RAM2 line
  • $0C00-$0FFF: 1 KB, accessed by RAM3 line

4 KB Main RAM (built-in) in Block 0

  • $1000-$1FFF: 4 KB, Main RAM

Blocks 1-3: 8 KB Expansion Blocks

  • $2000-$3FFF: 8 KB, Expansion Block 1, accessed by BLK1 line
  • $4000-$5FFF: 8 KB, Expansion Block 2, accessed by BLK2 line
  • $6000-$7FFF: 8 KB, Expansion Block 3, accessed by BLK3 line

Block 4

4 KB Character ROMs

  • $8000-$83FF: 1 KB uppercase/glyphs
  • $8400-$87FF: 1 KB uppercase/lowercase
  • $8800-$8BFF: 1 KB inverse uppercase/glyphs
  • $8C00-$8FFF: 1 KB inverse uppercase/lowercase

4 KB I/O Blocks

I/O Block 0: VIC/VIA chips

  • $9000-$900F: VIC Registers
  • $9110-$911F: VIA #1 Registers
  • $9120-$912F: VIA #2 Registers
  • $9130-$93FF: Unused[A]

I/O Block 1: Color RAM

  • $9400-$97FF: Color RAM (1K of 4 bit nibbles)[B]

I/O Blocks 2-3: Expansion port

  • $9800-$9BFF: 1 KB, I/O Expansion 2, accessed by I/O2 line
  • $9C00-$9FFF: 1 KB, I/O Expansion 3, accessed by I/O3 line

Block 5: 8 KB Expansion Area

  • $A000-$BFFF: 8 KB, Expansion Block 5, accessed by BLK5 line. Often used for ROM cartridges. Allows autostart sequence.

Blocks 6 and 7: System ROMs

  • $C000-$DFFF: 8 KB, Block 6, BASIC Interpreter ROM
  • $E000-$FFFF: 8 KB, Block 7, KERNAL ROM
    • The top six bytes of the entire memory space are special to the 6502. They form three pairs which contain vectors:
      • 65530–65531/$FFFA–$FFFB: Non-maskable interrupt
      • 65532–65533/$FFFC–$FFFD: Reset vector; contains the address where the processor will start running on boot
      • 65534–65535/$FFFE–$FFFF: Interrupt request

Screen memory map

Following is the memory map for the default screen on an unexpanded Vic 20:

Screen Character Codes

Screen Colour Codes


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *