Je viens de finir de tester les premiers exemplaires de la carte Gemini. Il s'agit d'une extension mémoire de 1Mo pour Amstrad Plus. Contrairement aux autres extensions disponibles, Gemini surveille l'état de l'ASIC pour éviter un conflit lorsque celui ci est mappé en mémoire.
Pour l'instant le seul logiciel concerné par ce cas particulier est le Soundtracker DMA.
Inscription : 28 Août 2008, 23:41 Message(s) : 266
Salut
J'ai lu ce que tu expliques sur tes pages. Merci pour ton investissement sur le sujet.
As tu une idée des extensions qui sont concernées par le problème que tu évoques ? Car tu indiques que le hardware peut être endommagé. Aussi ce serait bien de savoir ce qu'il faut éviter d'utiliser ? (au moins les extensions sorties après 1991 et ou le problème a été noté)
Peux tu dire ce qui se passe exactement (software, hardware)? Ce serait plus formel d'avoir un programme spécifique pour tester ce problème, plutôt que de lister des softs incompatibles.
Le problème est qu'on peut mapper en même temps l'ASIC et une page d'extension mémoire à la même adresse. Par exemple si on mappe l'ASIC et en même temps on mappe les 64Ko de RAM d'extension.
En écriture, ça ne pose pas trop souci, simplement l'écriture sera faite à la fois dans l'ASIC et dans l'extension mémoire.
Par contre en lecture, l'ASIC et la RAM étendue vont essayer en même temps d'envoyer une réponse au z80. Selon le modèle exact de RAM utilisée, l'un des deux va probablement l'emporter sur l'autre, mais cela produit un court-circuit pendant la durée de l'accès mémoire concerné. Ce qui est pas très bon pour le matériel. Je ne pense pas qu'il y ait eu de dommages importants à cause de ça, ça fait probablement chauffer les composants un peu plus que d'habitude, mais pas jusqu'à faire des dégats irréversibles à ma connaissance. Le matériel du CPC et du Plus est quand même plutôt résistant à ce genre de choses (contrairement au PCW par exemple, dont l'ASIC est beaucoup moins résistant).
Je ne crois pas qu'aucune extension mémoire existante traite ce cas particulier correctement, c'est sûr que non pour les extensions DKTronics et pour la X-Mem par exemple (Toto a annoncé qu'il travaillait sur le sujet pour cette dernière). Le test est simple à faire: par exemple lancer la démo CRTC3 ou le Soundtracker DMA, qui sont tous les deux équipés d'un code de test au démarrage pour vérifier si le problème est présent.
Le test peut être fait comme ceci (sans risque si on ne fait que des écritures dans la zone mémoire concernée): - Mapper de la RAM d'extension à l'adresse 4000-7fff - Mapper l'ASIC - écrire dans l'ASIC - Démapper l'ASIC Si la RAM est modifiée par l'écriture dans l'ASIC, c'est que l'extension mémoire ne se comporte pas correctement.
Dans un cas un peu particulier, l'extension Nova est également concernée si on essaie de la mapper à une adresse occupée par l'ASIC. La recommandation est simplement d'éviter cette configuration, ce qui ne pose pas vraiment problème pour Nova (il suffit de choisir une autre adresse).
dans le cas de l'écriture, si tu as des graphs "sous" la page Asic, ça va corrompre les graphs si c'est du code ou de la data compressée, tu casses tout concernant les extensions mémoires existantes, il n'y a à ma connaissance que la MEMcard de RAM7 qui gérait les commutations Asic de façon sommaire mais efficace
Inscription : 13 Jan 2010, 14:25 Message(s) : 2274
La X-MEM décode A8 pour permettre de toujours accéder à la RAM interne (CPC ou Plus) via le port #7E. En connaissance de cause, un logiciel conçu pour Amstrad Plus qui a besoin de mapper les I/O de l'ASIC peut y accéder en toute tranquillité s'il le souhaite. (La X-MEM+ ainsi que la Play2CPC décodent RMR2 car suffisemment de place dans le CPLD pour se faire)
Lors de l'utilisation d'une extension mémoire standard, le fait de repasser par &C0 permet de s'assurer que l'on aura toujours l'ASIC mappé ensuite pour aller écrire dedans sans écraser la RAM. Un logiciel peut le faire sans soucis (discutable pour une démo). Enfin, il n'est pas possible que l'ASIC puisse lire la RAM d'extension mappée à la même adresse, car pour se faire il faudrait qu'il soit capable de driver les lignes d'adresses et de contrôles du Z80.
J'ai un probleme avec cette carte. Je l'utilise pour le moment uniquement en CPM comme une ram disk en c: La carte est bien reconnue par le CP/M, mais j'ai des plantages aléatoires alors que ca marche très bien avec la RAM-DISK sous WINAPE, ou sur disquette sans l'extension branchée. J'ai remarqué aussi que dès que l'ASIC est ouvert par un programme (en CP/M) la diode verte s'allume (signe que l'ASIC est ouvert?) mais la diode reste allumée alors que je ferme bien l'ASIC dans le prog (elle devrait s'éteindre je pense?). De retour au BASIC la diode verte reste allumée mais ça "tape" pourtant dans la RAM et pas dans l'ASIC de &4000 à &7fff. Quand je dis ouvrir l'ASIC je ne parle pas de la séquence de "délockage" mais bien des actions OUT &7F00,&B8 et OUT &7F00,&A0. Bref que veut dire exactement la diode verte ? (et la rouge d'ailleurs)
Le pb est le même en config 512ko ou 1Mo. Connaissez-vous un utilitaire pour vérifer l'intégritité d'une carte d'extension RAM?
PS : je me demande si le pb ne viendrait pas du fait que les anciennes extension DK'Tronics démarrait avec une RAM où tout est remis à zéro (???) , alors que la carte carte Gemini ne se réinitialise pas à zéro immédiatement: même après un arrêt (coupure alim) si il n'est pas trop long on retrouve des données sur le disque ... Mais j'imagine que c'est instable ... Peut-etre que le patch du CPM pour gérer le RAM disk part du principe que tout est à zéro au démarrage ? En tout cas c'est clair qu'il n'efface rien car on peut éteindre électriquement le CPC, le rallumer et on retrouve le contenu du disque C: (même après 5 minutes... bon j'éteins tout et on verra demain lol) PS2 : pas besoins d'attendre demain... Si j'éteins le CPC et le moniteur le contenu de C: disparait ! C'est vraiment bizarre ... Si j'éteins le CPC Plus mais pas le moniteur le contenu de C: reste... je ne comprends pas comment c'est possible !
Le souci des extensions mémoires avec l'Asic, c'est quand une page externe est connectée en #4000 : Typiquement OUT &7F00,&C4
L'extension ne peut pas savoir que l'Asic est connectée et toute écriture dans l'Asic se fera aussi dans la mémoire étendue
Ceci étant dit, tu peux vérifier ça avec une petite manip!
connexion C4, écrire #DD en #4000 delock ASIC connecter page ASIC écrire #11 en #4000 (en fait seul #01 sera écrit, inutile de lire, les 4 bits supérieurs seront "aléatoires") déconnecter page ASIC lire en #4000 si tu lis #DD la Gemini a bien fonctionné en détectant la connexion ASIC et n'écrivant pas dans la RAM étendue
pour tes soucis aléatoires, peut-être simplement débrancher, nettoyer, rebrancher, des fois c'est capricieux les connexions!
L'extension ne peut pas savoir que l'Asic est connectée et toute écriture dans l'Asic se fera aussi dans la mémoire étendue
Bonjour, justement la carte Gemini est conçue spécialement pour éviter ce problème: elle décode les accès à l'asic pour savoir si sa page est mappée ou non. Lorque l'ASIC est mappé, l'extension mémoire se désactive dans la plage 4000-7fff pour laisser l'espace libre.
Les leds indiquent:
led verte: l'asic est délocké avec la séquence de out led rouge: l'asic est mappé en mémoire (C'est écrit sur le circuit imprimé à côté des leds)
la méroire n'est pas initialisée à 0 sur aucune vraie extension mémoire, il n'y a que winape qui fait ça. Elle contient en général un motif avec des blocs alternés à 00 ou FF, et éventuellement des restes de ce qui était stocké. Ça s'efface plus ou roins rapidement quand l'alimentation électrique est déconnectée. Sur la Gemini c'est de la mémoire "statique": il n'y a pas besoin de la rafraichir, et le contenu peut persister plutôt longtemps, mais ce n'est pas fiable si l'alimentation électrique est coupée. Si le logiciel détecte des données toujours présentes, effectivement ça peut poser problème. On peut garder la carte alimentée indépendament du cpc dans ce cas pour mieux conserver les données, par exemple avec le connecteur d'alimentation supplémentaire de la mother x4.
led verte: l'asic est délocké avec la séquence de out led rouge: l'asic est mappé en mémoire (C'est écrit sur le circuit imprimé à côté des leds)
la méroire n'est pas initialisée à 0 sur aucune vraie extension mémoire, il n'y a que winape qui fait ça. Elle contient en général un motif avec des blocs alternés à 00 ou FF, et éventuellement des restes de ce qui était stocké. Ça s'efface plus ou roins rapidement quand l'alimentation électrique est déconnectée. Sur la Gemini c'est de la mémoire "statique": il n'y a pas besoin de la rafraichir, et le contenu peut persister plutôt longtemps, mais ce n'est pas fiable si l'alimentation électrique est coupée. Si le logiciel détecte des données toujours présentes, effectivement ça peut poser problème. On peut garder la carte alimentée indépendament du cpc dans ce cas pour mieux conserver les données, par exemple avec le connecteur d'alimentation supplémentaire de la mother x4.
J'espère que ça répond à toutes les questions?
Super ! Merci. En effet la diode rouge clignote beaucoup lol... Je pense que les données altérées sont bien le probleme parceque ca fonctionne très bien avec WInAPE en émulation Ram Disk. Ce n'est pas l'ASIC comme je l'ai envisagé avant car je peux avoir des pb sans. J'ai la mother x4, reste à ajouter l'alim. le fait que la RAM devienne ainsi quasi permanente est un gros plus... D'autant plus que par un curieux hasard (?) suivant qu'on switche entre 512ko et 1Mo on accéde deux ram disks différentes de 512Ko reconnues comme c: en CPM
Un petit cas d'usage filmé à l'arrache (baisser le son lol) ici : (bon pas de lien possible c'est dans le goupe FACEBOOK Amstradiens en réponse à un sujet sur un bouquin Turbo Pascal sous CPM). En tout cas les acces RAM DISK dépotent ;D
Un petit hors sujet sur l'accès ASIC en Turbo pascal (ou autre langage compilé j'imagine) : En fait je met toutes mes routines de gestion de l'ASIC en RAM basse <&4000 et les paramêtres entre mon programme et ces routines passent par la pile ou les registres Z80. Ca marche très bien même si évidement ça ralenti un peu car il y énormément de cycles d'ouverture et de fermeture de la plage ASIC. Si une procdéure qui est en &6000 cherche à accéder à l'ASIC, il passe les paramètres soit dans les registres du Z80, soit par la pile (qui ne doit pas être entre &4000 et &8000 évidemment), le sous programme <4000 ouvre l'asic fait ce qu'il a faire et referme l'ASIC avant le return. En Turbo pascal c''est quasiment natif car le code commence toujours en bas de la mémoire et monte vers le haut, les variables sont en haut (vers &FFxx) et descendent vers le bas, et ce qui est au milieu est réservé à la mémoire dynamique (ce que le pascal appelle le HEAP (le tas) pour les pointeurs etc, c'est la chose où il faut être vigilant). Les parametres entre procdure pascal s'échange nativement avec les registres du Z80 ou la pile.
Bon j'ai eu un peu de temps pour retester. Le pb semble plus basique en fait. je penche pour le câble centronics CPC+ coté connectique CPC qui semble mal serti. Le bout en plastique qui doit faire pression sur la parti centronic ne tient pas du tout. Ca doit se clipser j'imagine mails impossible. Si je compare à mon Gotek externe lui ne bouge pas d'un poil. De plus j'ai eu un plantage en bougeant un peu le CPC. Je vais commander un autre adaptateur centronics. Qu'en pensez-vous ? Je peux faire un photo si ca peut aider
J'ai enfin eu un peu de temps pour pousser mes tests. Sans entrer dans le détail :
- Ce n'est pas le cable Centronics du 6128+ - Ce n'est pas le 6128+ - Ca ne semble pas être la carte Genimi vu le résulat de tests de RAM (mais les softs que j'ai trouvé ne sont pas clairs sur ce qu'ils font exactement). tester également les RSX dk'tronic en basic : ça fonctionne ( mais c'est limité à 256ko) - la même config CPM+ fonctionne très bien avec WinApe et Caprice forever (encore que j'ai cherché sans succès une .CPR du 6128+ en francais, donc pas la même ROM que le 6128+ hdw qui a une cartouche BASIC+Burnin'rubbers en français)
Sur mon 6128+ hdw avec la carte : - La carte Gemini est bien reconnue. Le disque RAM C: de 444Ko s'initialise - Ca marche plus ou moins longtemps mais ça finit toujours par planter (reboot, figeage de l'écran avec ou sans parasite). même soucis que le switch soit en 512Ko ou 1Mo - Ce n'est pas l'ASIC. Une simple copie de A: vers C: peut planter (ou pas)
Je vois 3 possibilités : - Mes images CPM+ sont incorrectes (mais pourquoi ça fonctionne en émulation alors) ? (j'ai testé c'est pas ça) - La Gemini a un soucis avec les organisations mémoires C1, C2, C3 qu'utilise le CPM - Pb dans l'initialisation du disque C: qui est assez spéciale. Voir https://www.seasip.info/Cpm/cpm3semi.html Extrait : "The first memory bank of the ramdisc is paged in, and the system checks that the first byte of each directory entry is either 0E5h or 00h-0Fh. If it is not, the entire first bank is cleared to 0E5h"
Bref : - Je vais commencer par refaire un disque boot CPM+ le plus basique possible (fait ça change rien)
EDIT : Décidemment, j'abondonne impossible de faire fonctionner correctement le RAM disc en CPM+.
Je joins ici une disquette bootable CPM3, si quelqu'un pouvait faire un essai pour savoir si c'est pas ma carte Gemini qui déconne ;D Pour tester faire :
ùCPM -> Le CPM se lance, un drive C: de 444KB maxi doit se créer si le CPC a une extention RAM compatible Dk'Tronics PIP c:=*.* ->va copier tous les fichiers sur c: ... Est-ce que ca marche ? c: -> va sur le ram disc dir -> affiche les fichiers Si vous avez un 6128+, tester : DSP Trek manara comete -> affiche 3 images en overscan et palette 4096 couleurs
A noter que le drive B: est ici un lecteur format vortex 720KB (gotek en fait) mais peu importe ...
Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum