Spiacente, questo articolo non è disponibile in inglese.
Il mio Z80 NE
a.k.a. ZDS or Z80 Darkstar
Il declino
Se avete letto l'articolo introduttivo alla Z80 di Nuova Elettronica, potete facilmente immaginare che, con il trascorrere degli anni, anche il buon vecchio Z80 andò in pensione.
Con l'arrivo in casa del primo PC IBM 8088, poi AT 286 e così via, di passo con la mia carriera professionale (oggi lavoro su cluster massivi), fu inevitabile che lo Z80 venisse progressivamente abbandonato. E così, anche se, nonostante la "concorrenza" di molto più performanti PC, la mia amata macchinina abbia caparbiamente proseguito la sua carriera per qualche anno con un programma di gestione abbonati per la rivista ferroviaria di mio padre scritto in DBII, fu inevitabile che infine trovasse la strada per la soffitta...
Tutti noi cresciamo negli anni e le prospettive cambiano. Così, ad un certo punto, come probabilmente è capitato a molti di voi, una maggiore disponibilità di tempo e una crescente nostalgia per i vecchi amori ha fatto sì che nascesse l'esigenza di "recuperare" il mio primo ed insostituibile computer.
2006, via la polvere!
Disceso dalla soffitta, non era messo poi tanto male, anche se recuperare i vari pezzi sparsi tra uno scatolone e l'altro non è stata impresa da poco.
A seguire le classiche operazioni di restauro, pulizia innanzitutto, verifica dell'alimentatore e prima ri-accensione. Sfortunatamente non ho fatto una documentazione fotografica di questa attività.
Quindi per farla breve il mio Z80 era di nuovo funzionante!
Bè non proprio.
Al primo tentativo di bootstrappare la macchina ho avuto la sgradita sorpresa di vedere che tutti i floppy del NE-DOS erano rovinati. Non solo quelli del NE-DOS a dire il vero, ma tutti in blocco, incluso quindi CP/M e qualsiasi altro software.
Sulla superficie dei floppy si era formata una specie di patina di muffa. Più tardi ho scritto un programmino per lo Z80 che fosse in grado di recuperare i settori non danneggiati. Visto che di molti floppy avevo copie multiple, in effetti, leggendo un settore da un disco, uno da un'altro, qualcosa sono riuscito a recuperare anche se questo purtroppo è quasi costata la vita ad uno dei drive Tandon da 5".
Tuttavia il problema immediato rimaneva: come caricare software sullo Z80?
All'epoca il sito di Roberto Bazzano, "The Home of Z80 NE", non esisteva e non ero ancora in contatto con altri affezionati dello Z80 NE. L'unica soluzione sembrava utilizzare la schedina parallela LX389 per realizzare una interfaccia parallela tra Z80 e PC. Anche perchè ormai il PC ospitava le immagini di tutti i dischi e il software per lo Z80 in mio possesso.
Fatta una piccola modifica su tale scheda e aggiunto il software necessario tutto si è sbloccato.
Da quel punto in poi sono nate tante idee, alcune realizzate, alcune ancora no (il tempo libero è quello che è). Non voglio annoiare nessuno e quindi vi risparmio la cronistoria delle modifiche apportate allo Z80 e del perchè alcune modifiche ne hanno richieste altre.
La documentazione del tutto è disponibile nelle pagine più in basso dove ho cercato spiegare le cose al meglio e nel dettaglio.
Qualche considerazione generale.
Tutte le modifiche, alcune realizzate poi anche con l'aiuto dell'amico Pino Giaquinto portano ad avere uno Z80NE con gli "steroidi". Questo è bello da un lato ma comporta delle rinunce dall'altro.
Per chiarire: usare ad esempio la scheda multifunzione, che si porta a bordo 768k di ram, è possibile solo rinunciando alle schede di memoria originali. Ciò che alla fine ottenete non è più esattamente in linea con lo Z80NE, ma uno ZDS come io lo chiamo o Z80 Darkstar, nomignolo che il mio Z80 ha avuto praticamente da sempre, per via del suo case nero.
L'idea è avere lo Z80 dei miei sogni e vedere fin dove è possibile portare l'architettura di base di Nuova Elettronica, senza progettare un computer da zero, come per esempio hanno fatto i ragazzi del N8VEM.
Personalmente ho risolto il problema mettendo da parte tutto il "non serve più" e duplicando "il modificato" in modo da avere l'occorrente per uno Z80NE suo gemello, puro così come mamma lo ha fatto (grazie Pino per la scheda floppy...)
Una seconda importante considerazione è la seguente: tutto il software realizzato lato PC gira ed è stato sviluppato su Linux. Questo vuol dire che se non utilizzate questo sistema operativo vi dovrete attrezzare. Il software di per se è in puro C quindi non dovrebbe essere difficile il porting su DOS/Windows utilizzando Cygwin, ma io non l'ho mai fatto. Questo sforzo spetta a voi e anzi, se ci riuscite, This email address is being protected from spambots. You need JavaScript enabled to view it. .
Tutto il software sviluppato, il software adattato (quasi tutto per il CP/M), la documentazione, i progetti e quant'altro è disponibile qui:
indipendentemente dalla descrizione dei singoli progetti che trovate sotto. Il materiale è disponibile su github sia per la facilità della distribuzione, sia perchè, bè, non ho mica smesso di lavorarci sopra... ????
Per avere una copia del repository il requisito software è avere installato "git", che è disponibile su qualunque versione di Linux o che, a vostra scelta potete compilare prelevandolo da https://git-scm.com/downloads, quindi, posizionatevi in una cartella appropriata al contesto in cui creare la sottodirectory di github e date il comando:
$ git clone https://github.com/pbetti/ZDS.git
In seguito per mantenere il repo sempre aggiornato, entrate nella cartella ZDS ed usate il comando:
$ git pull origin master
Buon divertimento!
Le modifiche realizzate e quelle in via di realizzazione sono documentate nella lista qui sotto. Cliccate sui titoli per la pagina corrispondente.
- Espandere la RAM a 60K
- Interfaccia Z80 - PC su porta parallela
- Real Time Clock per lo Z80
- Interfaccia per tastiera PS/2
- Z80NE Turbo: clock a 4MHz
- Floppy da 880Kbytes
-
Multifunction Board
- Interfaccia hard disk IDE
- 2 porte seriali 16C550
- 256Kb eeprom programmabile on board
- 768Kb RAM bancati
- La eprom da 4K e il SONE prima del SONE
- Il CP/M 3 o CP/M+
- Requisiti del sistema di sviluppo e HOWTOs
Spiacente, questo articolo non è disponibile in inglese.
Interfaccia Floppy Disk
Portiamo i floppy a 880Kbytes di capacità
Hardware
La daughter board | Cablaggio ai connettori | Modifiche a IC10 |
Il software
Spiacente, questo articolo non è disponibile in inglese.
La Multifunction Board
Scateniamo la Z80!
Hardware
La daughter board | Cablaggio ai connettori | Modifiche a IC10 |
Il software
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.