ESPANDERE LA RAM A 60K
di Piergiorgio Betti
Lo Z80 NE nasce con due tipi di schede di memoria RAM: una scheda statica da 8 KB ed una dinamica da 32 KB.
Era possibile inserire più schede di memoria, in varie combinazioni, ottenendo diversi tagli di memoria come si vede in questa tabella:
Purtroppo, in qualunque combinazione, non è possibile superare il limite dei 56K, lasciando scoperti gli ultimi 8 KBytes di memoria e precisamente E000h fino a FFFFh.
Questa scelta è dovuta al fatto che in questo ultimo range di memoria sono presenti due regioni:
Però, successivamente alla presentazione della scheda videografica LX.529 che utilizza una memoria privata (non condivisa), la regione EC00h-EDFFh si è liberata, o almeno è libera, per tutti quelli che non utilizzano la "vecchia" scheda video LX.388. Ma nonostante questo ancora non è possibile superare il limite dei 56 KB perchè i banchi delle schede di memoria di Nuova Elettronica si basano su multipli di 8 KBytes, mentre per sfruttare gli ultimi KBytes liberi da E000h servirebbe un banco di 4 KBytes così da arrivare a 56 + 4 = 60K di ram disponibile.
Modifiche hardware
Una possibile soluzione è quella di utilizzare due schede di memoria dinamica da 32 KBytes LX.392 forzando la seconda scheda (totalmente popolata) a presentare sul bus solo 28K di memoria, cioè lasciando liberi gli ultimi 4 KBytes per la EPROM di sistema.
Il "trucco" sta nel disattivarla quando sul bus vengono presentati indirizzi a partire da F000h in su, utilizzando un semplice 74LS20.
Per fare questo si può aggiungere alla scheda una piccola "daughter board" su cui montare il 74LS20 e fare una piccola modifica intorno al 74LS139, IC10 della scheda dinamica che ha la funzionalità di selettore dei due banchi di 16K dinamici.
Questo è il circuito da aggiungere:
Queste invece sono le patch da eseguire sulla LX.392 e riguardano IC10:
Come anticipato, in questo modo la scheda è attiva a coprire tutto lo spazio di indirizzamento fino a 64 KB, ma il 74LS20 aggiuntivo provvederà a disabilitarla ogni volta che sul bus è presente un indirizzo nel range Fxxxh, lasciando libero lo spazio occupato dalla EPROM, sia che sia da uno, da due o da quattro KBytes, per un totale effettivo di 60 KBytes.
Qualche foto indicativa (cliccare sull'immagine per ingrandire):
La daughter board | Cablaggio ai connettori | Modifiche a IC10 |
Il software
Il NE-DOS è un sistema operativo allocato nella parte bassa della memoria a partire dalla locazione 0h, e questo gli consente di poter eseguire automaticamente il sizing della RAM disponibile.
Quindi utilizzando il NE-DOS non è necessario nulla per usare gli ultimi 4K appena aggiunti.
Un discorso diverso però vale per il CP/M o SONE come lo chiama Nuova Elettronica.
Il CP/M usa uno schema di allocazione diverso. Per il CP/M 2.2, quale è il SONE, il tipico schema di utilizzo della RAM è questo:
Le posizioni dei componenti del CP/M (CCP+BDOS+BIOS) sono prefissate al caricamento del sistema operativo, pertanto per passare da un sistema a 56K ad uno a 60K sono necessarie delle operazioni di adattamento del CP/M stesso.
NOTA: una modifica molto simile è presente nello schema elettrico della scheda LX.392 modificato da Constantinos Haritakis (sviluppatore di Nuova Elettronica) e scaricabile qui.