PHC-25 extension MEGA-X


Menu Bricolages

Cette extension permet de rajouter :
  • RAM 32 Ko

  • Cartouche ROM 128 Ko

  • PSG AY-3-8910

  • 2 ports Joystick

  • Connecteur USB loader
  • Bouton reset
  • 2 bus d'extensions supplémentaires

  • Ajout dans le BIOS de l'ordinateur de nouvelles fonctionnalités. (uniquement pour la version PAL)


La machine ne possède de base ni de port joystick, ni de puce sonore, et n'à que 16Ko de RAM,
Il existe une extension officielle qui permettait de rajouter un PSG AY-3-8910 et 2 ports joysticks, sans ajout de RAM, mais elle est très difficile a trouver.
Pour cette raison j'ai entrepris de faire une extension qui reprenne non seulement les possibilités de celle d'origine mais en rajoutant en plus des fonctionnalités supplémentaires (RAM, ROM, ....).

Pour cette extension j'ai choisi d'en faire une version qui soit logeable sous la machine, ce qui est moins encombrant qu'une extension qui soit derrière la machine, et comme la machine est petite et pas très haute cela ne gêne pas l'usage du clavier.



Le BIOS (BASIC) du PHC-25 est logé sur 3 eproms de 8 Ko et est toujours sur support.
Ce qui est bien pratique pour les modifications et ajouts.
J'ai pu loger de nouvelles fonctionnalités dans le BIOS comme ULOAD pour charger des programmes par USB directement depuis un PC.

L'extension ce connecte avec un petit câble plat connecté sur le bus d'extension du PHC-25 raccordé à l'extension MEGA-X.
L'extension doit être alimentée par USB (5V)
J'ai intégré aussi 2 leds témoins permettant de savoir lorsque l'ordinateur et l'extension sont sous tension.
Sur le PHC-25 il manque un bouton reset qui est quand même bien pratique quand il y en a un, j'ai donc intégré un bouton reset sur l'interface MEGA-X.


ROM & RAM


La memory map du PHC-25 permet d'utiliser l'espace non alloué entre $8000-$BFFF, mais malheureusement les signaux présents sur le bus d'extension ne permettent d'utiliser que 8Ko que j'ai attribué à la plage $8000-$9FFF.

Donc cet espace est partagé entre la RAM et la ROM additionnel et donc partitionné par bloc de 8Ko, ce qui fait 4 blocs pour la RAM et 16 blocs pour la ROM (cartouche).
Pour gérer la pagination j'ai attribué 3 ports du Z80 : $F0-$F2 (détaillé dans la documentation).
On ne peut accéder au même moment ou à la RAM ou la ROM puisqu'ils occupent la même plage mémoire.
Cela n'empêche pas de faire un accès à l'un puis à l'autre pour par exemple transférer des octets de la ROM vers la RAM.

La cartouche peut être autobootable c'est à dire qu'au démarrage de l'ordinateur ou au reset le BIOS va exécuter le programme présent sur la cartouche, cela est configurable lors de la création du programme à mettre sur la cartouche en rajoutant un flag spécifique (détail dans la documentation).

Que ça soit la RAM additionnelle ou la cartouche tout est accessible directement depuis le Basic, ou bien entendue avec un programme assembleur.

AY-3-8910

Le PSG est un classique AY-3-8910 que l'on trouve sur beaucoup de machines des années 80/90 (CPC, MSX, SPECTRUM,...).
de plus il intègre 2 ports I/O 8 bits ce qui permet dans le cas présent de rajouter simplement 2 ports joystick.

Donc sur l'interface j'ai intégré 2 ports joystick type Atari 2 boutons, il y a aussi une sortie audio au format jack (aucun son ne sort du PHC-25, il n'y à tout simplement pas de signal son généré par la machine).

Avec le Basic toutes les commandes intégrées (SOUND, PLAY,..) pour générer du son ou de la musique fonctionnent.

Par contre dans l'interface d'origine la gestion des manettes est complexifiée par l'usage de multiplexeurs  :(
Ce que je n'ai pas repris dans mon design, surtout qu'aucun soft existant n'utilise les 2 joysticks, donc le joystick 1 est utilisable en Basic normalement, par contre le joystick 2 n'est utilisable qu'en assembleur et donc pas reconnu par le Basic.
J'ai rajouté une routine assembleur au BIOS pour aider à la gestion des 2 manettes (détails dans la documentation).

USB loader

Pour permettre de charger plus rapidement des programmes que par cassette et de manière plus moderne, j'ai développé une interface que j'ai nommé USB loader.

Cela permet depuis un PC d'envoyer un programme vers le PHC-25 par le port USB, à très grande vitesse (il faut moins de 2 secondes pour charger un programme de 16Ko).

J'ai intégré une commande Basic ULOAD ce qui est plus pratique que d'avoir à faire appel à l'assembleur ;)

J'ai converti toute la ludothèque y compris les nouvelles productions, aux formats cartouches et USB, je me suis aussi amusé à faire des vidéos streamées par USB :)

Extension

J'ai intégré 2 ports d'extensions sur cette interface, ce qui permettra d'utiliser éventuellement de nouvelles extensions,
il faudra juste quel soit au format edge mâle, j'ai volontairement choisi d'utiliser ce format plutôt que l'IDC qui est sur l'ordinateur,
moins pratique car nécessite souvent l'usage d'une nappe.

Conclusion:
Je me suis bien amusé à créer cette extension pour cette machine qui au départ est plutôt limitée.
J'ai utilisé un CPLD pour toute la partie logique de décodage d'adresse et activation des différents éléments de cette extension
pour limiter le nombre de composants, et comme ce CPLD se trouve encore facilement et pas trop cher c'était un choix logique.
Ça m'a permis aussi de programmer sur une nouvelle machine, ça m'amuse toujours autant de chercher les informations
nécessaires et s'adapter aux contraintes de la machine pour en faire le maximum.

Quelques vidéos du fonctionnement de cette interface :









La documentation de l'extension PHC-25:

Le patron pour découper une plaque plexiglas ou autre :

Le modèle 3D pour ceux qui ont une imprimante 3D:


  réalisé par Cripfoun merci à lui :)




Liste des softs disponibles au formats binaires ROM ou USB :



Les binaires pour cartouches :
Compilations :
  • Fabrizio_Compil
  • InufutoCompil1
  • InufutoCompil2
  • RPUFOS_Compil

Mono soft :
Fabrizio
  • xbom
  • xchas
  • xhord
  • xsho
  • xshur
  • xsnak
  • xsting
  • xtrek
  • xverb
Inufuto
  • Aerial
  • Antiair
  • Ascend
  • Battlot
  • Bootskell
  • Cacorm
  • Cavit
  • Cracky
  • Guntus
  • Hopman
  • Impetus
  • Lift
  • Mazy
  • Mazy2
  • Mieyen
  • Neuras
  • osotos
  • Ruptus
  • Svellas
  • Yewdow
RPUFOS
  • Briques
  • City
  • dontfall
  • ordipourri
  • Phetris
  • Rapt
  • Turbo2000
  • Welcome
6502man
  • Diagnostics


Les binaires pour USBloader :
Fabrizio
  • xbom
  • xchas
  • xhord
  • xsho
  • xshur
  • xsnak
  • xsting
  • xtrek
  • xverb
Inufuto
  • Aerial
  • Antiair
  • Ascend
  • Battlot
  • Bootskell
  • Cacorm
  • Cavit
  • Cracky
  • Guntus
  • Hopman
  • Impetus
  • Lift
  • Mazy
  • Mazy2
  • Mieyen
  • Neuras
  • osotos
  • Ruptus
  • Svellas
  • Yewdow
RPUFOS
  • BriquesStellaires
  • City
  • DiagMegaX
  • dontfall
  • ordipourri
  • phc_boule(Basic)
  • phc_invasion(Basic)
  • phc_mnemo(Basic)
  • phetris_1.0_beta3
  • rapt
  • Turbo_1_1
  • welcome_1.2
Vidéos
  • SimonCatSnow
  • SimonChristmas