Strumenti Utente

Strumenti Sito


it:midres_library:memory_layout
Traduzioni di questa pagina:


USO DELLA MEMORIA DELLA LIBRERIA MIDRES

Al fine di dare la maggior efficienza possibile al codice compilato, la libreria MIDRES introduce il minor numero di astrazioni possibili. In particolare, cerca di sfruttare le similitudini tra chipset e architetture diverse. Una delle similitudini è la mappatura in memoria delle varie funzionalità.

Qui di seguito diamo, quindi, una serie di primitive di mappatura funzionale e il relativo dispiegamento in memoria per le varie architetture.


MAPPATURA FUNZIONALE

INDIRIZZO DI PARTENZA

Ogni architettura ha un indirizzo a cui inizia il codice C compilato (il codice assembly). Di regola, tale indirizzo coincide con l'inizio del programma BASIC equivalente. Infatti, il compilatore cc65 genera il “loader” appropriato che non è altro che un “SYS” verso la prima istruzione di assembly.

A volte, a causa della sovrapposizione tra la memoria grafica e il programma BASIC, è stato necessario spostare l'indirizzo di partenza in una posizione diversa. In questo caso, è allegato un piccolo caricatore (scritto in BASIC), che si occupa di caricare da disco l'assembly nella posizione corretta prima di avviarlo.

SCREENS

Questo tipo di memoria mappa una superficie di lettere (o “tile”) composta da un certo numero di righe e di colonne. Ogni lettera (o “tile”) viene rappresentata da un numero senza segno a 8 bit. Tale numero rappresenta un indice nella memoria speciale.

TILESETS

Questo tipo di memoria contiene la rappresentazione pixel a pixel e monocromatica di ogni lettera (o “tile”) indicata dal numero senza segno a 8 bit, così come presente nella memoria video (testo).

BITBLITS

Questo tipo di memoria può essere utilizzato dalle primitive di spostamento (o “bitblit”), e non necessariamente corrisponde a qualcosa di visibile sullo schermo.


ARCHITETTURE

COMMODORE VIC 20 (inespanso)

  • INDIRIZZO INIZIALE: $1000
  • SCREENS: 1
  • TILESETS: 4 (4 ROM)
  • BITBLITS: 0


COMMODORE VIC 20 (espansione di 32KB)

  • INDIRIZZO INIZIALE: $2000
  • SCREENS: 7
  • TILESETS: 7 (3 RAM + 4 ROM)
  • BITBLITS: 6


COMMODORE 64

  • INDIRIZZO INIZIALE: $0801
  • SCREENS: 16
  • TILESETS: 6 (4 RAM + 2 ROM)
  • BITBLITS: 15


COMMODORE 16

  • INDIRIZZO INIZIALE: $1000
  • SCREENS: 3
  • TILESETS: 8 (4 RAM + 4 ROM)
  • BITBLITS: 2


COMMODORE PLUS/4

  • INDIRIZZO INIZIALE: $4000
  • SCREENS: 7
  • TILESETS: 15 (11 RAM + 4 ROM)
  • BITBLITS: 6