HARDWAREMONTAGES ★ POKROM (RADIO-PLANS N°517) ★

Pokrom (Radio-Plans n°517)Hardware Montages
Si à l'allumage de votre CPC 464 / 664 / 6128 AMSTRAD, vous souhaitez (comme le BASIC Locomotive) disposer immédiatement de vos RSX préférées : nouvelles commandes, Sprite, texte... ou Booter des programmes contenus dans des mémoires supplémentaires, améliorer et augmenter le système d'exploitation (ex : mini GEM, Booter le CPM, etc...), c'est POKROM qu'il vous faut ! Cette carte est à même d'assurer toutes les fonctions décrites et bien d'autres... Elle augmentera aussi la mémoire morte de votre CPC de 2 ou 8 K octets.

Il existe actuellement dans le commerce des cartes appelées “ROM extensions” ou “cartouches CPC”, qui utilisent comme composant principal une EPROM. De ce fait, elles imposent les contraintes de programmation des EPROM's : disposer d'un programmateur, d'un effa-ceur, de beaucoup de temps pour les transferts et les manipulations. C'est bien lourd pour la mise au point des programmes et les tests !

Notre interface POKROM va rendre désormais la programmation des ROM extensions plus facile, plus rapide et pour un coût -avec une mémoire 2 Ko (6116) -dérisoire.

LES POSSIBILITES DE POKROM

Deux types de mémoires statiques peuvent prendre place sur le “support composant” de la carte : une 2 kO :6116-2) ou 8 kO (6264-2).

Le choix s'effectuera par déplacement d'un cavalier.

La possibilité d'être un véritable SUPPORT EPROM 8 k pour CPC a été prévue, ce qui permettra lorsque tout sera au point d'utiliser POKROM comme lecteur d'EPROM 8 k (2764).

Un inverseur ECRITURE/LECTURE autorise le dialogue en RAM ou l'émulation ROM EXTENSION - SUPPORT EPROM.

Un deuxième inverseur permet de déconnecter l'interface et donc la rendre “invisible" à l'ordinateur lors de la mise sous tension.

Une pile bas de gamme 4,5 V sauvegardera “en STAND-BY” les données de la RAM statique lorsque l'ordinateur sera éteint. La longévité de sauvegarde est d'au moins un mois. On pourra la doubler en choisissant une pile alcaline.

Bref rappel

L'espace mémoire réservé aux ROMS extensions se situe de &C000 à —FFFF. Un numéro est attribué pour chacunes d'entres elles, codé sur le bus de données. Sur 6128, un maximum de 251 ROMS extensions est autorisé. La ROM disquette (AMSDOS) a le numéro 7, celle du BASIC 0 (système). Sur 464, 252 ROM extensions peuvent être connectées, car la ROM disquettes n'est pas intégrée (figure 1).

Principe

Le Kernel (noyau du système d'exploitation) vérifie à chaque allumage de votre CPC la présence d'éventuelles ROM extensions connectées. Pour cela, un programme émet à une adresse de sortie réservée à cet effet, un octet (numéro de ROM) sur le bus de données. Il lit ensuite la première case mémoire de la ROM extension qui, suivant son contenu indiquera si il y a effectivement présence ou non d'une ROM extension.

Si oui, il en initialisera les RSXs. L'octet émis (le numéro de ROM) commence à 7 pour un 464 et à 15 pour un 6128. Il est décrémenté jusqu'à 0 (le BASIC final) afin de vérifier chacunes d'entres elles. Donc toutes les ROM extensions supérieures à 7 ou à 15 suivant le CPC ne seront pas initialisées à la mise sous tension. On pourra pourtant y accéder par l'intermédiaire d'un programme adéquat.

SCHÉMA DE L'INTERFACE

Les signaux nécessaires à la carte se trouvent (heureusement... !) sur le port extension, situé à l'arrière des CPCs. La figure 2 en donne le brochage partiel (seuls les signaux utilises sont mentionnés)..

Les curieux s'interrogeront tout de suite sur le rôle de ROMDIS : ce signal est connecté sur la pin OE barre de la ROM interne Amstrad, maintenue à 0 V par une résistance. Ceci nous permettra de déconnecter la ROM interne, en y appliquant un niveau haut. Commençons par l'analyse du décodage de CS barre, Chip Select de la mémoire supplémentaire POKROM (voir schéma figure 3). Le bus de données code le numéro de ROM. Nous nous sommes laissé la possibilité de connecter 2 interfaces POKROM. Les numéros de ROMS possibles se sélectionneront grâce au cavalier inverseur 2 chargé de décoder un 2 ou un 3 (voir figure 4). On a donc, quel que soit le numéro choisi, D1 haut, et D2 à D7 bas..

Seul D0 changera d'état suivant le numéro désiré. Les bits de données D3 à D7 passent par une porte à diodes formant un OU logique. Une telle porte est bien plus facile à mettre en œuvre qu'une succession de OU(s) intégrés. La résistance R4 polarise la sortie au 0 V lorsque toutes les entrées sont bloquées. Cette sortie est appliquée à une des entrées de la porte IC3B (NOR à 3 entrées). Le bit D2 est directement amené sur la deuxième entrée d'IC3B. Nous décoderons D0 et D1 au niveau haut avec CAV2 en position 3, par la porte NANDIC2B. Elle nous délivrera un état bas que nous appliquons à la troisième entrée d'IC3B.

CAV 2 en position 2 inverse D0 par la porte NAND IC2C. La sortie IC3B délivrera un niveau haut au moment précis où le bus de données présentera le code (l'octet) sélectionné par le cavalier. Donc deux numéros de ROM extension sont possibles (numéro 2 ou numéro 3). Attention, deux cartes POKROM nécessiteront une alimentation externe afin de ne pas tirer exagérément sur le 5 V du CPC.

Cette information issue de IC3B doit être mémorisée pour autoriser l'initialisation et l'accès à la ROM extension sélectionnée. Pour cela, le Kernel utilise une adresse réservée à cet effet en positionnant A13 à l'état bas. Nous mémoriserons alors la sortie IC3B dans la bascule IC4a.

Le signal de transition bas-haut de la bascule est confié à la porte IC3C qui décode A13, IORQ barre (demande d'entrée-sortie), WR barre (écriture sur le bus de données), à l'état bas.

Un montage temporisateur R5-C1 est placé sur le RESET barre du CPC et de la basucle IC1A. Lorsque le Kernel, pour accéder à POKROM, émettra à l'adresse réservée le bon numéro sur le bus de données, la sortie Q barre de la bascule passera au niveau bas. Un accès à une autre ROM extension, ROM basic ou ROM disquette délivrera à la sortie Q barre un état haut.

Pour adresser notre ROM extension dans la zone réservée à cet effet (&C000 à &FFFF, voir figure 5), nous décodons les bits A14 et A15 à l'état haut par l'intermédiaire de la porte NAND IC2A. Sa sortie est connectée à la première entrée de la NOR IC3A. MREQ barre (demande de lecture ou d'écriture en mémoire) et Q barre sont aussi connectés à la NOR IC3A. Nous disposons en sortie d'IC3A d'un niveau actif à l'état haut, qui par l'intermédiaire d'une diode de protection commande ROMDIS afin d'interdire tout accès à la ROM système. Il reste à inverser ce signal pour obtenir le CS barre grâce à la porte IC20. L'inverseur SWB rend possible ou non la validation du CS de POKROM.

Le schéma figure 6 montre les connexions au support. Les bus d'adresses et de données sont connectés directement à ceux du CPC, idem pour RD barre. WR barre passe par l'inverseur SWA qui, en position fermée, autorise l'écriture de la mémoire statique. CAV1 dirige sur la pin 23 du support deux signaux différents suivant que la mémoire est de 2 ou 8 kO : en position 8 c'est le bit d'adresse A11 pour les mémoires de 8 kO et en position 2 c'est WR barre pour 2 kO.

Les résistances R1, R2, R3 maintiennent grâce à la pile, un niveau haut sur les signaux de commandes quand l'ordinateur est éteint : placée en stand-by, la mémoire statique conserve son contenu.

REALISATION PRATIQUE

La figure 7 représente le circuit imprimé double face et son implantation. On pourra aisément se passer de trous métali-sés si on utilise de la barrette sécable pour construire les supports des circuits intégrés. Le connecteur à wrapper sera placé côté composants et stabilisé à 5 mm du Cl au moyen de deux colonnettes. Si on apporte un peu de soin à la réalisation, le fonctionnement de POKROM est assuré une fois ia dernière soudure refroidie.

ATTENTION : ne JAMAIS insérer ni retirer POKROM le CPC allumé (idem pour toutes les autres interfaces d'ailleurs).

LES PROGRAMMES

ROMPOL.BIN (figure 8)

Ce court programme vous permettra d'écrire ou lire dans votre ROM extension.

Nous utilisons pour cela la commande assembleur RST &18. Elle configure l'espace mémoire de &C000 à &FFFF en y connectant la ROM extension choisie. L'instruction RST &18 est suivie immédiatement de l'adresse sur deux octets, (adresse du programme à exécuter sous la configuration mémoire). Le troisième octet indique le numéro de ROM extension.

ROMPOK.BIN est placé exclusivement en &A000. L'appel du programme se fait par un CALL &A000, X, Y, Z. La valeur X représente l'adresse de départ des données que vous voulez transférer dans POKROM (préalablement logées en mémoire). L'adresse d'arrivée (Y) pour les données à transférer pourra se situer de &C000 à &C7FF ou &DFFF suivant la mémoire engagée dans le support de POKROM.

La longueur du programme est représentée par la valeur Z. Une lecture des données dans POKROM sera possible si vous mettez une valeur de départ située en ROM extension (&C000à &FFFF).

ROMRSX.BIN (figure 9)

Ce programme vous présente la structure pour intégrer des RSXs dans POKROM, disponibles dès l'allumage. Deux RSXS (IN1, IN2) sont données à titre d'exemple. Elles afficheront soit un “A”, soit un “B”. ROMRSX.BIN sera transféré dans POKROM par ROMPOK.BIN. Les programmes qui doivent figurer dans une ROM extension sont assemblés à une adresse relative à &C000, comme pour ROMRSX.BIN.

Les quatre premiers octects sont utilises par le système d'exploitation, ensuite les 5 et 6° octets représentant l'adresse où se trouve la table ASCII des noms RSX.

Suivent les sauts "JP” aux programmes correspondant à chaque RSX (ex : le 1er saut correspont à la 1ere RSX dans la table ASCII, le 2e saut à la 2e RSX, etc...).

La première RSX est auto-exécutée à l'allumage de l'ordinateur, ce qui permettra de booter modification ou programme.

Tout de suite après les sauts se trouve la table des RSXs : elle représente les caractères majuscules, codés en ASCII, des RSXs. Le dernier caractère de chaque RSX a son bit 7 à 1 pour marquer la fin. Ceci est obtenu en ajoutant &80.

TEST.BAS (figure 10)

Ce programme vous permettra de vous assurer du bon fonctionnement de l'interface et des programmes. Il charge les deux fichiers binaires. Suivre scrupuleusement les instructions relatives aux états des inverseurs.

Le succès sera visible lors de la réinitialisation du CPC : un “A" en plus de la page habituelle indiquera le bon fonctionnement de POKROM. Les deux RSXs test seront disponibles : IN1, IN2.

CONCLUSION

Vous disposez maintenant d'une extension ROM, programmable instantanément, qui vous donne facilement fa possibilité d'élaborer des programmes résidents dans vos CPCs.

Un grand merci à Jean Alary pour son aide précieuse.

Nomenclature
R1 à R3 :10 kOhm
R4 :4,7 kOhm
R5 : 2,2 kOhm

Condensateurs
C1 : 2,2 µF
C2 à C6 : 100 nF

Circuits intégrés
IC1: 6116-2 ou 6264-2 ou 2764
IC2 :74 LS 00
IC3 :74 LS 27
IC4 :74 LS 74

Diodes
D1 à D8 : 1 N 4148

Divers
Connecteur HE 902 (à wrapper)
6 picots+ 2 cavaliers
2 inverseurs sur CI
1 pile plate 4,5 V

Supports
3x14 broches
1 x 28 broches
ou l'équivalent en barettes sécables

Luc & Christian SOULARD , Radio Plans n°417

★ EDITEUR: RADIO PLANS
★ ANNÉE: 1990
★ AUTEURS: Luc SOULARD & Christian SOULARD

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» POKROM    (Radio-Plans  517)    FRENCH    LISTINGDATE: 2018-04-29
DL: 411
TYPE: PDF
SiZE: 78Ko
NOTE: Uploaded by hERMOL ; 3 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Hardware » Speicheroszilloskop selbstgebaut (Happy Computer)
» Hardware » CPC 6128 Plus - Tape Upgrade (Amstrad Action)
» Hardware » Amstrad Rom Expansion: 96k of Rom in Only Six Bits (Practical Electronics)
» Hardware » Convertisseur Analogique Digital 8 Voies (CPC Revue)
» Hardware » Tampon pour imprimante (Radio-Plans n°493)
» Hardware » µRack : AC Decoder (Radio-Plans n°496)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 553 millisecondes et consultée 2388 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.