Spiacente, questo articolo non è disponibile in inglese.
Lo Z80 NE nasce con due tipi si schede di memoria RAM una scheda statica da 8Kb 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 8kbytes di memoria e precisamente E000h fino a FFFFh.
Questa scelta è dovuta al fatto che in questo ultimo range di memoria sono presenti due regioni:
- La ROM di sistema, o Monitor che è allocata da F000h a FFFFh (solo da F000h a F7FFh se da due Kbytes), e, ovviamente, non può essere eliminata.
- La scheda video LX388 a bassa risoluzione utilizzava una RAM condivisa allocata da EC00h a EDFFh, bloccando di fatto tutto il range E000h-EFFFh.
Però, successivamente alla presentazione della scheda videografica LX529, che utilizza una memoria privata (non condivisa) la regione E000-EFFFh si è liberata, o almeno è libera, per tutti qulli che non utilizzano la "vecchia" scheda video. Ma nonostante questo ancora non è possibile superare il limite dei 56Kb perchè i banchi delle schede di memoria di Nuova Elettronica si basano su multipli di 8Kbytes, mentre per sfruttare gli ultimi Kbytes liberi da E000h servirebbe un banco di 4Kbytes così da arrivare a 56 + 4 = 60K di ram disponibile.
Modifiche hardware
Una possibile soluzione è quella di utilizzare due schede di memoria dinamica da 32Kbytes LX392 forzando la seconda scheda (totalmente popolata) a presentare sul bus solo 28K di memoria, cioè lasciando liberi gli ultimi 4Kbytes 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 LX392 e riguardano IC10:
- Separare i pin 2 e 3, il pin 2 deve rimanere scollegato
- Collegare il pin 2 al pin 8 del 74LS20 (come da schema sopra)
- Chiudere il ponticello P2 (P3 e P4 aperti)
- Collegare il pin 9 di IC10 al ponticello P3 in basso cioè non dal lato attualmente collegato al pin 11 sempre di IC10 (vedi foto)
Come anticipato, in questo modo la scheda è attiva a coprire tutto lo spazio di indirizzamento fino a 64Kb, 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 due o da quattro kbytes, per un totale effettivo di 60Kbytes.
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, 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.