La prima scheda acceleratrice GVP G-Force Combo 030 50 MHz “full GAL” al mondo

[World’s first full GALs GVP G-Force Combo 030 50 MHz accelerator card]


Fin dal lontano 1990 io e i miei amici amighisti non eravamo “nella media” degli utenti Amiga: la passione per la grafica 3D ci aveva travolto in pieno con programmi come Sculpt-Animate 4D, TurboSilver, Imagine e, più tardi, Real 3D e LightWave 3D.
Va da sé che la bramosia di velocità nel calcolo era all’ordine del giorno: il povero 68000 nudo e crudo arrancava… notti intere passate con l’Amiga acceso e la mattina, al risveglio, il primo pensiero non era la scuola: era quello d’accendere il 1084S e vedere “se aveva finito”!
Al fine di potenziare il mio Amiga 2000 il primo passo fu quello d’acquistare, intorno al 1991, una scheda acceleratrice, si trattava di un prodotto italiano: Hardital Big Bang.
Montava un 68030+68882 a 25 MHz e 2 Megabyte di RAM.
L’accelerazione era davvero notevole, ma buona parte del sistema (espansione RAM SupraRAM 2000 e controller HD Commodore A2090A) rimaneva a 16 bit stretta nel collo di bottiglia del bus Zorro II.
Venduta la Big Bang ad un amico (Andrea!), convinsi mio padre, fortunatamente appassionato di tecnologia anche lui, a spendere una fortuna per acquistare una splendida scheda acceleratrice GVP G-Force Combo 030 clockata a ben 50 MHz… praticamente un missile all’epoca (1992)!
Questa scheda ha potenziato il mio Amiga 2000 in tutti questi anni ed è in uso ancora oggi.
Caratteristiche:

  • CPU 68030 a 50 MHz, PGA
  • FPU 68882 a 50 MHz, PGA
  • 4 Megabyte 32-bit Fast RAM saldati on-board
  • 3 SIMM sockets (supportano solo moduli SIMM a 64 pin proprietari GVP da 1 o 4 Megabyte)
  • controller SCSI-II con chip 33C93A a 14 MHz, connettore SCSI interno 50 pin ed esterno DB25
  • 32 bit expansion bus proprietario per la potente scheda grafica GVP EGS 110/24 (un sogno, introvabile!)

Ulteriori info:
http://amiga.resource.cx/exp/gforce2030
https://bigbookofamigahardware.com/bboah/Product.aspx?id=178

Ammiratela in tutto il suo splendore originale, completa di 3 SIMM GVP da 4 Megabyte ciascuna (RAM totale 16 Megabyte):


Le schermate di Sysinfo non lasciano dubbi sulla potenza del prodotto, guardate soprattutto le performance del disco SCSI: quasi 4 Megabyte al secondo nel 1992!


L’Amiga 2000 così potenziato è stato il mio computer principale d’uso quotidiano fino al 2000-2001: oltre alla grafica 3D navigavo su Internet, gestivo la posta elettronica, masterizzavo audio CD e compilation di MP3, ecc…

Poi, per circa 15 anni, è rimasto inutilizzato nella mia cameretta a casa dei miei, ma in questi ultimi anni, col “ritorno di fiamma” della passione per il retrocomputing, l’ho riscoperto e sto cercando di restaurarlo/conservarlo al meglio.

Durante alcuni severi test di lettura/scrittura su HD mi sono accorto che alcuni file risultavano corrotti (copie non fedeli al 100% del file d’origine):


Ho cominciato ad indagare per capire quale potesse essere la fonte del problema.
Il primo indiziato è stato il disco fisso: ne ho messo un altro (grazie Matte!) ma il problema persisteva identico.
Provando e riprovando ho notato che gli erorri erano assenti a sistema appena acceso (da freddo) ma si presentavano sempre più numerosi via via che passavano i minuti.
Di conseguenza, ho pensato potesse essere un problema di surriscaldamento: su questa scheda ci sono 8 PAL che diventano bollenti, si fa fatica ad appoggiarci sopra i polpastrelli!


La prima azione che ho pensato di fare è stata quella di migliorare il flusso d’aria che raffredda la scheda: le 8 PAL si trovano vicine al fianco dell’alimentatore dell’A2000, fianco che è privo di asole per il passaggio d’aria (le asole sono presenti soltanto sul lato frontale).


Mi sono quindi trasformato in un fresatore 😀 ed ho fresato 38 asole sul fianco dell’alimentatore rivolto verso la scheda acceleratrice; inoltre, per mantenere un flusso d’aria veloce, ho parzializzato le asole originali incollando un lamierino all’interno dell’alimentatore stesso.


Infine, ho applicato un dissipatore di alluminio su ciascuna PAL:


I successivi test di lettura/scrittura su HD hanno mostrato un notevole miglioramento, gli errori erano pochissimi, ma qualche errorino rimaneva… non potevo accettarlo… 😉


La convinzione che il problema potesse essere il risultato di anni di forte surriscaldamento di queste benedette PAL mi ha spinto a cercare una strada per sostituirle.
Ma come fare?
Parallelamente, l’amico Nicola stava sperimentando la lettura di alcune PAL e la loro sostituzione con GAL (chip più moderni) programmate in modo da risultare perfettamente compatibili.
Le GAL sono chip più performanti e non scaldano come le PAL.
Avete capito, ora il nostro comune obiettivo sfidante era chiaro: dovevamo in tutti i modi riuscire a sostituire le 8 PAL con 8 GAL! 😀

Il primo problema da risolvere era ovviamente quello di reperire il codice con cui gli ingegneri della GVP avevano programmato le 8 PAL: sul web non si trovava nulla di nulla!
Abbiamo quindi tentato di leggere il codice delle PAL, ma tutte 8 sono risultate protette… delusione totale!!!

A questo punto, incredibilmente, il destino si è fatto vivo: Nicola ha trovato ed acquistato (fra l’altro a Rubiera, di fianco a casa!) una rara scheda praticamente IDENTICA alla mia, eccola qua:


Era un chiaro segnale che non dovevamo per nessun motivo mollare, anzi: dovevamo puntare ancora più dritti verso il nostro obiettivo! 😀
Infatti, incredibilmente, la lettura delle 8 PAL della scheda di Nicola ha avuto pieno successo, nemmeno una è risultata protetta! Questa cosa ci ha davvero sorpreso, mai ce lo saremmo aspettato.

Le PAL presenti sulla mia scheda (REV 3 – 1.02) sono:

  • U34-74F4 AMD PAL20L8-5PC
  • U35-5F54 MMI PAL16L8DCN
  • U36-90C6 TI TIBPAL20R6-7CNT
  • U37-4D7B AMD PAL16L8-5PC
  • U38-38CC AMD PAL16L8-5PC
  • U39-F029 AMD PAL20L8-7PC
  • U40-B520 AMD PAL16L8-5PC
  • U53-A2B1 AMD PAL20L8-7PC

Le PAL presenti sulla scheda di Nicola (REV 3 – 1.03) sono:

  • U34-74F4 TI TIBPAL20L8-5CNT
  • U35-5F54 MMI PAL16L8DCN
  • U36-90C6 AMD PAL20R6-7PC
  • U37-4D7B AMD PAL16L8-5PC
  • U38-38CC AMD PAL16L8-5PC
  • U39-F029 AMD PAL20L8-7PC
  • U40-B520 AMD PAL16L8-5PC
  • U53-A2B1 AMD PAL20L8-7PC

Si tratta, sostanzialmente, di 2 set di PAL identici: tutti i checksum coincidono!

Bene, eravamo finalmente in possesso dei file JED contenenti le programmazioni delle 8 PAL, ed era già un bel risultato perché, in caso di rottura, avremmo avuto la possibilità di ricreare una PAL sostitutiva.
Ma il nostro obiettivo, come detto, era di creare un set di 8 GAL sostitutive.
Nicola, ormai esperto dopo aver smanettato per giorni con diversi software, è riuscito a convertire i file JED delle PAL in 8 file GJD pronti per programmare 8 GAL.

[segue]


>>> APPROFONDIMENTO: CONVERSIONE PAL ==> GAL

Per trasformare una PAL in GAL si parte da una copia del JED, la “Fuse Map” della PAL, poi con un semplice programma di conversione a riga di comando si trasforma in una Fuse Map compatibile con la programmazione di una GAL.

Le GAL che utilizziamo per rimpiazzare le vecchie PAL, anche se di generazione successiva rispetto a quest’ultime, sono comunque una tecnologia vecchia di anni e ormai sorpassata, ora rimpiazzata dalle moderne FPGA.

Comunque in rete si possono trovare ancora due programmi, uno della Lattice PALTOGAL e uno della National PAL2GAL.

Entrambi validi e compatibili con MSDOS. È possibile comunque utilizzarli su un sistema moderno in emulazione DosBox.

Prima di mostrare come fare la conversione è bene precisare che le funzionalità delle diverse tipologie di PAL possono essere riprodotte su una sola tipologia di GAL: infatti, quest’ultime si possono configurare sia in modalità puramente combinatoria che “registered” (R).

Questo vuol dire che con una GAL16V8 o GAL20V8 possiamo programmare PAL16 L4 L6 L8 R4 o PAL20 L4 L6 L8 R4 R6 ecc…

Utilizzare PALTOGAL della Lattice è molto semplice, si possono specificare i parametri sulla riga di comando oppure eseguirlo in modalità interattiva e fornire una alla volta le informazioni necessarie.

I parametri sono tre: il file JED di input che contiene la Fuse Map della PAL, il file di output ed il numero corrispondente alla conversione che vogliamo fare.

Esempio:

paltogal.exe PAL16L8.JED GAL16V8.GJD -c 2

L’estensione GJD sul file di output non è importante, serve soltanto per identificare la tipologia del JED (GAL JED); più importante è indicare il numero di conversione adatto secondo il seguente elenco da 1 a 64:

È bene notare che questa tipologia di conversione è una “traduzione” della mappa di bit della Fuse Map: le equazioni non vengono estrapolate, l’ordine dei fattori non viene toccato e non viene eseguito nessun tipo di semplificazione.
Questo nella maggior parte dei casi può andare benissimo ma come abbiamo visto può essere necessario ottimizzare ulteriormente la programmazione con tool come WinCupl o OPALJR. Ma questa è materia per un altro articolo…



Le GAL sono state scelte come da elenco seguente:

  • U34-74F4 LATTICE GAL20V8B 15LP
  • U35-5F54 LATTICE GAL16V8D 15LP
  • U36-90C6 ATMEL ATF20V8B-15PC
  • U37-4D7B LATTICE GAL16V8D 15LP
  • U38-38CC LATTICE GAL16V8D 15LP
  • U39-F029 LATTICE GAL20V8B 15LP
  • U40-B520 LATTICE GAL16V8D 15LP
  • U53-A2B1 LATTICE GAL20V8B 15LP

NOTA per U36: utilizzando una LATTICE GAL20V8B 15LP per U36 l’acceleratrice è risultata un po’ più lenta e si sono ripresentati numerosissimi errori di scrittura su HD, invece una ATMEL ATF20V8B-15PC si è dimostrata compatibile al 100%.


Scaricate qui il set completo di file GJD pronti per programmare le 8 GAL:
[Here you can download a complete set of GJD files ready to program the 8 GALs:]

==> DOWNLOAD <==

NOTA BENE: questo set è applicabile soltanto alla G-Force 030 a 50 MHz!
[PLEASE NOTE: this set is only applicable to the G-Force 030 @ 50MHz!]

[segue]


>>> APPROFONDIMENTO: COME SI COMPORTA LA SCHEDA PRIVANDOLA DELLE PAL?

A mano a mano che sostituivo le PAL con le GAL ho provato a vedere, una ad una, come si comportava il sistema privo della PAL (zoccolo vuoto).
Di seguito elenco tutte le prove che ho fatto.

U34 zoccolo vuoto: il sistema non vede più la RAM montata sulla scheda.

U35 zoccolo vuoto: inizialmente non ho riscontrato alcuna differenza.
Ho letto che U35 è coinvolto nell’Autoconfig della memoria.
Questa scheda può configurare la sua RAM in 2 modi settando il jumper J12:
– J12 CHIUSO: i primi 8 Megabyte nello spazio Autoconfig e gli altri 8 estesi
– J12 APERTO: tutti i 16 Megabyte estesi
La mia scheda è sempre stata configurata con tutti i 16 Megabyte estesi, ecco perchè non ho notato alcuna differenza lasciando vuoto lo zoccolo di U35.

Col jumper J12 aperto (tutta la RAM estesa), la presenza o meno di U35 nello zoccolo, come detto, non comporta evidenti differenze (Sysinfo vede la sola acceleratrice e 16 Megabyte estesi):


Chiudendo il jumper J12 la differenza invece diventa tangibile.
U35 nello zoccolo (J12 CHIUSO): Sysinfo elenca una scheda di memoria (virtuale) in più, si tratta degli 8 Megabyte nello spazio Autoconfig.
Questo è confermato anche dalle successive due schermate d’informazioni sulla memoria:


U35 zoccolo vuoto (J12 CHIUSO): la scheda di memoria (virtuale) Autoconfig da 8 Megabyte sparisce e rimangono soltanto 8 Megabyte di RAM estesa.
Le schermate di Sysinfo lo confermano:


U36 zoccolo vuoto: il sistema non parte, schermo nero.

U37 zoccolo vuoto: il sistema non vede più la RAM montata sulla scheda.

U38 zoccolo vuoto: il sistema non parte, il led di power passa da bassa ad alta luminosità.

U39 zoccolo vuoto: il sistema non parte, schermo nero.

U40 zoccolo vuoto: il sistema diventa lento (~50%) e dà errori al boot.

U53 zoccolo vuoto: il sistema parte ma va in GURU ad ogni boot (errori: 8000 0003, 8000 0004 e 8000 000A).



Ed ecco la scheda acceleratrice nella sua nuova veste “full GAL”: obiettivo raggiunto il 24/10/2020! 😀


Le alte temperature delle PAL sono soltanto un ricordo: le 8 GAL rimangono praticamente fredde anche molto tempo dopo l’accensione! 😉
Ed una decina d’ore di file test continuo senza alcun errore dimostra che i problemi di scrittura sono stati finalmente risolti:


Beh, alla fine devo proprio dire che è stata un’avventura lunga ma divertente, molto emozionante… e la soddisfazione di esserci riusciti è unica, vero Nicola? 😀
Che meraviglia!


Scaricate qui il set completo di file GJD pronti per programmare le 8 GAL:
[Here you can download a complete set of GJD files ready to program the 8 GALs:]

==> DOWNLOAD <==

NOTA BENE: questo set è applicabile soltanto alla G-Force 030 a 50 MHz!
[PLEASE NOTE: this set is only applicable to the G-Force 030 @ 50MHz!]

Tagged:

User Input

  • GadgetUK164 ha detto:

    Amazing work! Could you dump U7 at some point? That’s the only PAL missing – and the one I think is faulty on my card =/

    Regards

    Chris

    • Luca B ha detto:

      Hello GadgetUK164,
      I am very happy that you liked the article and thanks for your compliments!
      I’m sorry but, at least for the moment, I don’t think I will desolder U7 to attempt a reading, especially since, probably, it will also be protected …
      U6 (MACH130) is also a chip that has been programmed but its code isn’t on the web.
      However, I agree with you: you should also be able to find / get the programming files of U6 and U7 … maybe trying to read those of a broken board, in order not to risk breaking a working one …
      If you have any news on this subject please let me know as soon as possible!
      Thank you so much.

      Luca B