[Z80] Z²80 (ZZ80/Z280) : Un Z80 virtuel en DIP40 entièrement compatible avec un NOS/CMOS Z80 mais offrant un jeu étendu

Pour parler de toutes les réalisations récentes qui ne sont pas directement destinées à être utilisées avec une machine (ou une catégorie de machines) précise.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
hlide
Messages : 3507
Inscription : 29 nov. 2017 10:23

[Z80] Z²80 (ZZ80/Z280) : Un Z80 virtuel en DIP40 entièrement compatible avec un NOS/CMOS Z80 mais offrant un jeu étendu

Message par hlide »

J'avais dans l'esprit de créer un PCB intégrant un RP2040 qui s'insère dans le socle DIP40 à la place d'un vrai Z80, l'un des deux cœurs servant à émuler fidèlement un Z80 puis un ZZ80 (Z280 en bus Z80) tout en gardant une compatibilité à 100% avec le Z80.

Mais pour débuter, j'ai pensé plus judicieux de commencer le développement à partir d'un PCB existant basé sur Teensys 4.1 (https://microcorelabs.wordpress.com/202 ... model-iii/) beaucoup plus cher à produire mais qui pourrait aider à prototyper un Z²80/ZZ80 (sorte de Z280 sur bus Z80 et qui sera 100% compatible en instruction avec le Z80).

J'ai examiné plusieurs processeurs (Z180, Z280, Z380, eZ80) et pu constaté que la compatibilité à 100% (incluant les instructions non officielles) n'était pas vraiment au rendez-vous.
- Le Z180 n'est pas attractif (il offre pas grand chose et probablement le moins compatible avec le Z80).
- Le Z280 m'a impressionné car il offre réellement des opérations 8 et 16-bit plus completes avec un mode d'adressage plus étendu car en plus du (hl), (ix/iy + nn) et (nnnn), on a : (hl+nnnn), (ix/iy + nnnn), (pc+nnnn), (sp+nnnn), (hl+ix), (hl+iy) et (ix+iy).
- Le Z380 semble reprendre à partir du Z180 avec la reprise des IXL/IYL et IXH/IYH qui manquait dans le Z180 mais pas le formidable mode d'adressage du Z280.
- Le eZ80 semble aussi reprendre du Z180 ou Z380 limité à 24-bit au lieu de 32-bit.

Objectifs :

- compatibilité 100% Z80 NMOS/CMOS (paramétrable). Aussi bien en timing et en comportement qu'en nombre réel d'instruction.

- enrichir le Z80 avec un jeu d'instruction étendu hérité du Z280 qui devra respecter la comptabilité 100% du Z80.

- permettre optionnellement de réduire les cycles d'instructions quand cela est possible par divers moyen (paramétrable).

Je vais rester encore vague sur les idées que je compte implémenter. Il sera destiné à tourner sur toute machine à base de Z80. A noter que j'espère également que ce Z²80 pourra tourner sur un Amstrad CPC et contourner les contraintes de timings lié au GA sur l'accès DRAM.

Malheureusement la liste des opcodes du Z280 n'est pas obtenable électroniquement et celle que j'ai trouvé contenait des erreurs er manquait beaucoup d'instruction. Je l'ai donc corrigé et complété avec les opcodes du Z80 (chaque ROW indiquant la valeur de l'opcode principal avec une première ligne des instructions Z280 par suffix suivi de la deuxième ligne pour celles du Z80 - avec dans l'idée que l'instruction définie pour le Z80 l'emporte si elle diffère de l'instruction définie du Z280) :
Full Z280 Opcode List - summary.txt
(74.95 Kio) Téléchargé 57 fois
Voici les PCB que j'ai reçus :
IMG_20221216_170120 - Copy.jpg
IMG_20221216_170120 - Copy.jpg (682.73 Kio) Consulté 1885 fois
J'ai pu acquérir sur Amazon deux Teensys 4.1 à moins de 40 € la pièce, mais depuis c'est passé au-dessus de 50 €. :/
Avatar de l’utilisateur
pascalien
Messages : 989
Inscription : 21 janv. 2019 23:40
Localisation : 93200 ST DENIS
Contact :

Re: [Z80] Z²80 (ZZ80/Z280) : Un Z80 virtuel en DIP40 entièrement compatible avec un NOS/CMOS Z80 mais offrant un jeu éte

Message par pascalien »

Pour le Z280, j'ai une doc zilog technical manual preliminary 1987 348 pages.
C'est celle la qui a des erreurs?

le RP2040 c'est 133MHz et leTensy 600Mhz.
Est ce suffisant?

Je viens de lire ces articles qui utilisent pour l'emulation d'une machine complète un fpga.

https://www.mister-fpga.fr/presentation-mister/
https://www.mister-fpga.fr/presentation ... -les-fpga/

Sinon, pour un 6502 à 100MHz:
http://www.e-basteln.de/computing/65f02/65f02/
Avatar de l’utilisateur
hlide
Messages : 3507
Inscription : 29 nov. 2017 10:23

Re: [Z80] Z²80 (ZZ80/Z280) : Un Z80 virtuel en DIP40 entièrement compatible avec un NOS/CMOS Z80 mais offrant un jeu éte

Message par hlide »

Non, je fais allusion à cette page sur laquelle j'ai basé mon fichier avec des corrections : https://mdfs.net/Docs/Comp/Z280/OpList. Pour le PDF, c'est du scan sans OCR donc difficile d'extraire du texte - j'ai du faire ce boulot d'aller-retour entre ce fichier et ce PDF.

Le RP2040 peut monter jusqu'à 400 MHz mais ce n'est pas l'objet de ce projet. Je ne cherche pas à faire de l'overclocking avec le ZZ80 mais plutôt des cycles plus courts et d'augmenter le jeu d'instruction avec une vraie gestion de pile et la possibilité d'avoir du code et des données relogeables. Notamment, le jeu d'instruction du Z280 permet à des langages comme le C, le PASCAL ou d'autre de créer du code optimal - ce qui n'est pas le cas avec du Z80. Le fait de pouvoir faire tourner un ZZ80 entièrement avec la mémoire interne du Teensys (ou RP2040) fait que les accès mémoire n'ont plus besoin de se synchroniser avec l'horloge externe du Z80 et d'accélérer drastiquement la vitesse comme si on avait overclocké l'horloge externe mais ce n'est pas mon objectif principal. On peut aussi s'en servir pour réduire les instructions à 1 cycle. J'ai plein d'idée à ce sujet.

Le FPGA, c'est une chose que je "connais" bien avant que je me mette à la collection des rétro 8-bit (j'ai dû commencé aux alentours de 2017). Je m'étais déjà intéressé à l'époque d'Archos avec son Jukebox MP3 (j'ai travaillé là-bas) et je voulais faire programmer des CPU modernes dès cette époque mais ça coûtait cher et les kits de développement ne m'aidaient pas beaucoup à me mettre dans le bain.

Oui, je connais le 65F02 : j'ai voulu m'en faire un mais à ce moment-là, une partie des sources manquait (https://forum.system-cfg.com/viewtopic. ... 36#p206636). Je n'ai pas cherché à le refaire. Le Teensys est plus simple et quand même moins cher. Avec le RP2040, on ferait encore bien moins cher sans chercher à faire du 100 MHz virtuel (qui n'est pas mon but du tout).
Répondre