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 :