Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

Bonjour à tous,
Dans Ma collection à moa, j'ai présenté une ancienne centrale DTMF (à tonalité) équipée de plusieurs modules ayant chacun une carte Processeur à base de Z80.
Centrale téléphonique DTMF à base de Z80
Centrale téléphonique DTMF à base de Z80
IMG_3815-(lowres).JPG (135.33 Kio) Consulté 2435 fois
Et sa belle carte CPU Z80
Carte CPU Z80 - Centrale Téléphonique
Carte CPU Z80 - Centrale Téléphonique
base-board-(lowres).jpg (234.02 Kio) Consulté 2435 fois
En résumé rapide, une carte SPU est équipée
* Z80 @ 2Mhz
* 3x PIO (extension I/O 16 bits)
* 1x CTC (équivalent d'un timer)
* 1x 2Kio de SRAM
* 3x ROM 64 Kio

L'idée c'est de réutiliser cette carte CPU -en l'état- pour en faire des projets autour du Z80. Et qui sait -soyons optimiste- peut être même un ordinateur.

Début de l'aventure

L'aventure commence donc ICI dans "ma collection à moa" (il y a pas mal d'info croustillante et images => à lire).
Dans ces messages, il est possible d'y découvrir:
Espace d'adressage
Espace d'adressage
addressing-table.png (47.83 Kio) Consulté 2435 fois
Dépôt Github
Pour ceux que cela intéresse, j'ai aussi placé les ressources du projet dans un dépôt GitHub. Les sous-répertoires /docs/ contiennent des images et PDF (généralement plus parlant que des fichiers Kicad).

kicad-public-projects/HASKEL-Z80

La suite l'aventure

Bref, un dérapage un peu large pour rester dans "Ma collection à moa".
J'ai donc décidé d'ouvrir ce fil de discussion... parce que cela devient un vrai projet!
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

Bonsoir à tous,
J'ai publié un nouvel article sur le sujet "Retro-Ingénierie d'une carte Z80 : partie 3 - EEPROM et Interface Homme-Machine"

Au menu:

De UVProm => EEPROM

Dans les petites nouvelles, j'ai cherché à remplacer mes UVProm 27512 par des EPROMs.
Le hic... c'est que trouver des remplaçants EPROM en traversant neuf c'est quasi impossible à prix raisonnable!
27 Eur pour une EEprom 64Kio c'est un peu abuser (DigiKey)!
Bon! je fais aussi l'impasse sur Alibaba et consort (j'évite).

Je me suis donc rabattu sur un GLS27SF512 de Greenliant chez Mouser (ref: 804-GLS27SF5123C-NHE) au format PLCC-32 .

J'ai dessiné un petit adaptateur PLCC32 vers DIP28 pour faciliter la transition.
Adaptateur PLCC32 vers DIP28
Adaptateur PLCC32 vers DIP28
Sélection_196.png (48.11 Kio) Consulté 2420 fois
Avec un peu de soin, cela devrait passer sans trop de problèmes.

Interface Homme-Machine

En l'état, il n'y a pas de UART/port-série, pas de LED... juste des PIO (extension GPIO) et un CTC (timer).
J'ai aussi besoin de savoir si mes futurs premiers programmes assembleurs fonctionnent ou pas... et cela avec le moins d'instructions possibles (aller au plus simple et minimiser les difficultés).
J'ai donc décidé d'utiliser le principe de la carte digital I/O du RC2014 (Un système Z80 minimaliste de ma collection).
Module Digital I/O pour RC2014
Module Digital I/O pour RC2014
Sélection_216.png (1.28 Mio) Consulté 2420 fois
Cette carte est contrôlée directement par un port I/O du Z80... je l'ai déjà testée avec succès dans l'article Z80 - Echanges I/O et application au RC2014 avec la carte Digital I/O .

Avec un tel module, il ne faut que deux instructions Assembleur pour activer des LEDs! Idéal pour tester une chaîne de compilation, le flash de mon EPROM et mes divers programmes assembleurs (je suis encore un newbie dans ce domaine).

Et Hop... encore une carte... cette fois c'est pour étendre la carte CPU.
Extension carte CPU
Extension carte CPU
Sélection_214.png (476.97 Kio) Consulté 2420 fois
En une seule carte:
  • J'ai accès à tous les signaux du Z80 (pratique pour faire du hacking)
  • Je dispose aussi d'un bus d'extension compatible RC2014. Il sera le bienvenu pour ajouter un UART le moment venu!
  • J'ai ajouté la logique d'entrée/sortie (LEDs et Boutons) directement accessible via Port 0x1C
Cette carte se connectera directement à l'emplacement du Z80...
Carte d'extension CPU (moockup)
Carte d'extension CPU (moockup)
CPU-BOARD-ADDON-assembly.jpg (409.98 Kio) Consulté 2420 fois
La suite
La prochaine étape, c'est bien évidement le montage de tout cela.
J'anticipe déjà la programmation et relecture de mon EEPROM GLS27SF512.

N'ayant aucun matériel à disposition pour cette tâche, j'ai les options suivantes:
  • soit l'achat d'un programmeur d'EEPROM (compatible Linux)
  • soit la réalisation de mon propre programmeur (avec Raspberry Pico sous MicroPython).
A méditer...
Avatar de l’utilisateur
Leraptor06
Messages : 691
Inscription : 15 févr. 2022 10:34
Localisation : Mandelieu

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par Leraptor06 »

Alors la respect! :shock:
Jp
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3054
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par Papy.G »

Cette centrale était une ferme de Z80, quasiment un super-calculateur, en somme! :lol:

Trop bien, j'adore l'idée du détournement/réutilisation.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

Merci pour vos encouragement :D
J'ai péter un plomb ce soir... j'ai fini par dessiner le schéma d'un programmeur d'EEprom (pour mes GLS27FS512) autour d'un Raspberry-Pico.
Je vais pouvoir le prototyper sur breadboard... puis essayer de le programmer en MicroPython.
Je m'amuse vraiment trop.
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

J'ai avancé sur le prototpype du programmeur d'EEPROM avec Pico et MicroPython: J'ai simplifié le schéma du programmer pour pourvoir le monter sur un breadboard (schéma complet dans les docs du dépôt)
Schéma du programmer
Schéma du programmer
PROGRAMMER-GLS27SF512-eeprom-read.jpg (375.65 Kio) Consulté 2114 fois
Et la première EEPROM en cours de lecture
Montage EEPROM reader sur breadboard
Montage EEPROM reader sur breadboard
PROGRAMMER-GLS27SF512-eeprom-read-breadboard.jpg (344.72 Kio) Consulté 2114 fois
Avec un résultat de lecture assez simple à interprèter:
Lecture EEPROM
Lecture EEPROM
rom-content.jpg (44.53 Kio) Consulté 2114 fois
Et j'ai eu un sacrée surprise en découvrant que la centrale DTMF était capable de parler :o !!!
Du coup, je comprends mieux la présence du timer CTC sur la carte (pour cadencer le rendu audio). Faudra que j'essaye de recréer quelque-chose d'audible à partir de ces données, ce serait intéressant.
Lecture EEPROM (speech data)
Lecture EEPROM (speech data)
rom-text.jpg (33.09 Kio) Consulté 2114 fois
Vivement l'arrivée de mes cartes (EEPROM PLCC32, programmeur et carte d'extension CPU).

Note:
Je me suis aussi amusé a optimiser le code de lecture des 64 Kio d'EEPROM pour passer de 126 sec (375 sec au pire) à 59 sec.
A mon avis, il faudra remplacer les 75HC595 pour encore améliorer la vitesse.
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

Le projet poursuit ses avancées, mon programmeur d'EEPROM MicroPython avance... j'ai enfin réussit à écrire un contenu dans l'EEPROM puis le relire.
Programmeur d'EEPROM sous MicroPython
Programmeur d'EEPROM sous MicroPython
programmer-GLS27FS512-r2-bis.jpg (245.45 Kio) Consulté 1824 fois
27C512 EEPROM replacement
27C512 EEPROM replacement
eeprom-board-01.jpg (121.75 Kio) Consulté 1824 fois
Avec le résultat attendu à la relecture :-)
Relecture EEPROM
Relecture EEPROM
Sélection_054.png (59.8 Kio) Consulté 1824 fois
Si le sujet vous intéresse, le schéma, code d'exemple et les références sont disponibles depuis cet article de blog.

Je dois encore écrire les script python pour en faire un vrai programmeur d'EEPROM... mais le plus dure est déjà fait.
Avatar de l’utilisateur
Leraptor06
Messages : 691
Inscription : 15 févr. 2022 10:34
Localisation : Mandelieu

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par Leraptor06 »

Oh oui ca m'interesse! Bravo pour ce travail et merci du partage.
Jp
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

Je vais aussi en profiter pour poster une image du projet dans son état actuel
Carte Z80 + AddOn + Programmer
Carte Z80 + AddOn + Programmer
CPU-Board-Addon-in-situ.jpg (470.5 Kio) Consulté 1823 fois
J'approche doucement du but (réutiliser les cartes Z80 existantes).

Quelqu'un à t'il un compilateur et/ou assembleur Z80 à me recommander? (qui fonctionne sous Linux)

Bonne fin de journée,
Dominique
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

Leraptor06 a écrit : 18 juil. 2023 18:16 Oh oui ca m'interesse! Bravo pour ce travail et merci du partage.
N'hésite pas si tu as des questions...
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

Mon programmeur d'EEPROM sous MicroPython n'étant fiable qu'en lecture et après de nombreuses frustrations (, je me suis décidé à acheter un programmeur prêt à l'emploi.

J'ai opté pour l'achat d'un XGecu T56 qu'il est également possible de faire fonctionner sous Linux (grâce à Wine).
Sélection_265.png
Sélection_265.png (85.24 Kio) Consulté 1255 fois
J'ai publié deux petits tutoriels:
  • XGecu sous Linux : Installer Xgpro de votre programmeur universel XEGU T56, T48, TL866II plus sous Linux (Ubuntu/Mint)
  • XGecu pratique : Programmer une EEPROM GLS27SF512 pour remplacer une ROM 27C512
Voilà, je vais enfin pouvoir reprendre le projet là où il s'était arrêté :D
Avatar de l’utilisateur
Gods69
Messages : 374
Inscription : 29 janv. 2022 16:11
Localisation : Gan (64)

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par Gods69 »

Merci pour le tuto sur l’installation du T56 sur le Linux Mint. Malheureusement, le logiciel ne se lance pas sur le mien (Mint v.20.3)
Le programmateur semble bien reconnu par Linux... Le programme d’installation XGpro s'est bien exécuté. J'ai bien copié le .dll dans le répertoire.
Mais le logiciel ne se lance pas. (j'ai utilisé le paquet "Wine64")

Code : Tout sélectionner

gods@Amiga:~$ cd /home/gods/Bureau/XGecu
gods@Amiga:~/Bureau/XGecu$ ls
XgproV1263_Setup.exe
gods@Amiga:~/Bureau/XGecu$ wine XgproV1263_Setup.exe
wine: created the configuration directory '/home/gods/.wine'
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
0012:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
0012:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0012:err:ole:get_local_server_stream Failed: 80004002
0014:err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
0014:err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
0014:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
0014:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0014:err:ole:get_local_server_stream Failed: 80004002
Could not find Wine Gecko. HTML rendering will be disabled.
Could not find Wine Gecko. HTML rendering will be disabled.
wine: configuration in L"/home/gods/.wine" has been updated.
Could not find Wine Gecko. HTML rendering will be disabled.
0009:err:mshtml:create_document_object Failed to init Gecko, returning CLASS_E_CLASSNOTAVAILABLE
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.

Code : Tout sélectionner

[ 1548.260332] usb 5-1: new high-speed USB device number 2 using xhci_hcd
[ 1548.410578] usb 5-1: New USB device found, idVendor=a466, idProduct=0a53, bcdDevice= 1.00
[ 1548.410584] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1548.410587] usb 5-1: Product: XGecu T56 
[ 1548.410590] usb 5-1: Manufacturer: Xingong Electronics Co.Ltd

gods@Amiga:~/Bureau/XGecu$ sudo udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[1790.611628] remove   /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1/5-1:1.0 (usb)
KERNEL[1790.613512] unbind   /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1 (usb)
KERNEL[1790.613617] remove   /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1 (usb)
UDEV  [1790.616933] remove   /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1/5-1:1.0 (usb)
UDEV  [1790.620748] unbind   /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1 (usb)
UDEV  [1790.623521] remove   /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1 (usb)
KERNEL[1793.822696] add      /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1 (usb)
KERNEL[1793.828602] add      /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1/5-1:1.0 (usb)
KERNEL[1793.828712] bind     /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1 (usb)
UDEV  [1793.846937] add      /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1 (usb)
UDEV  [1793.854273] add      /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1/5-1:1.0 (usb)
UDEV  [1793.857520] bind     /devices/pci0000:00/0000:00:1c.6/0000:04:00.0/usb5/5-1 (usb)
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

@Gods69 ,
As tu ouvert les droits nécessaires sur les périphériques USB? cfr tuto.
Essaye de démarrer le programme XGpro depuis un terminal pour voir s'il des messages utiles ? et voir aussi le log via la commande 'dmesg' (on ne sais jamais).
Avatar de l’utilisateur
Gods69
Messages : 374
Inscription : 29 janv. 2022 16:11
Localisation : Gan (64)

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par Gods69 »

Ça donne ceci:

Code : Tout sélectionner

gods@Amiga:~/xgpro$ wine Xgpro.exe
0009:err:module:import_dll Loading library SETUPAPI.dll (which is needed by L"Z:\\home\\gods\\xgpro\\Xgpro.exe") failed (error c000012f).
0009:err:module:LdrInitializeThunk Importing dlls for L"Z:\\home\\gods\\xgpro\\Xgpro.exe" failed, status c0000135
J'ai pourtant bien copié le DLL dans le répertoire de xgpro. J'ai même mis le nom en majuscule mais c'est pareil.
Avatar de l’utilisateur
mchobby
Messages : 211
Inscription : 22 mars 2023 22:38
Localisation : Waterloo (Belgique)
Contact :

Re: Retro-ingénierie d'une carte Z80 : de la centrale DTMF vers des projets Z80

Message par mchobby »

Normalement, setupapi.dll se trouve dans le même répertoire que Xgpro.exe .
Vérifie si elle est bien là! (cfr tuto, il faut la télécharger et la placer manuellement)

J'ai vérifié chez moi et elle est bien présente dans le répertoire.

Code : Tout sélectionner

:~/Bureau/xegu$ ls
 algorithm     InfoIC2Plus.dll   LanguageDE.ini   LanguageTK.INI     Serial25Index.dat               updateII.dat          Xgpro.exe
 ATMEGA8_LED   LanguageA.INI     LanguageD.INI    LanguageUser.INI   Serialnumber                    UpdateT48.dat
 config.dat    LanguageB.INI     LanguageE.INI    Logic.lst          setupapi.dll                    updateT56.dat
 drv           LanguageCZ.INI    LanguageFR.INI   NandDLL           'T56_TL866II USER GUIDE.pdf'     UsbDriverIntall.exe
 img           language.dat      LanguageIT.INI   OtherCfg.dat       T56_TL866II编程器使用说明.pdf   UserData
Répondre