MSX Village forum

Les Villageois POKE "universel"

Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 16/12/2016 à 14h04
Tout le monde ici connaît ce POKE -1,(15-PEEK(-1)\16)*17 qui permet d’éviter des bugs de chargement.
Mais il fait quoi au juste ce POKE ? On parle parfois de « mettre 64Ko en ligne », ça veut dire quoi ?
A-t-il le même effet sur une machine dotée de 64Ko min d’origine que sur une machine de 8/16/32Ko avec une extension mémoire de 64Ko en slot1 ? Edité par Visiteur Le 16/12/2016 à 14h08
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 16/12/2016 à 15h18
http://www.msxvillage.fr/forum/topic.php?id=1243&pt=1#m25294

(C'est explqué dans le complément plus bas)

Edit: J'ai du réédité vite fait le complément car les caractères "\" avaient disparus (sans doute pendant la mise à jour du site). :sick Edité par GDX Le 16/12/2016 à 15h34
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 16/12/2016 à 17h21
GDX:
C'est explqué dans le complément plus bas

Dans ton exemple en asm, il faut modifier la ligne "OR" en "OR B" :top


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 20/12/2016 à 23h02
Merci de vos lumières, vous devriez mettre tout ça dans le wiki.
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 29/12/2016 à 23h32
GDX:
Le POKE modifie donc uniquement les registres secondaires du Slot primaire la RAM. Les 64Ko doivent donc se trouver dans le même Slot pour que ça fonctionne. Cette condition est nécessaire au bon fonctionnent de ce POKE.

Est-ce que ça veut dire qu'avec un MSX 32Ko auquel on ajouterait une extension de 32Ko, le poke universel ne fonctionnerait pas ?
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 30/12/2016 à 09h49
Tout à fait. Et si tu prends une extension de 64Ko (dans un Slot étendu ou pas), ça ne marchera pas forcément non plus car au démarrage, le MSX cherche la RAM dans les Slots de 0 à 3 bank par bank et sélectionne la première trouvée. Si la RAM interne se trouve dans le Slot 0, elle sera toujours prise comme RAM principale.
Pour que ça marche, il faut que le développeur tienne compte de tout ça.

Ça fait plaisir de voir un qui suit. :top Edité par GDX Le 30/12/2016 à 13h18
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 30/12/2016 à 18h47
Je pense donc je suis ;)
Sous Basic, y-a-t-il moyen de savoir (peek / poke) dans quel slot se trouve la RAM interne ?
Autre question, comment on fait l'anti-slash (\) sur un clavier azerty Philips NMS8255 ?
   
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 561

Le 30/12/2016 à 19h36
il est impossible de savoir où se situe la ram interne


DONALD TRUMP IS FAST APPROACHING
NEMESIS ! RETURN IMMEDIATELY !
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 31/12/2016 à 10h34
La façon de trouver la Ram dépend de l'environnement au démarrage.

- Sous Basic ou au démarrage d'une ROM, il y a forcément de la RAM sur la plage la plus haute donc il suffit de lire le registre des Slots primaires avec la routine du Bios RSLREG (00138h), ou au port 0A8H quand il n'y a pas le choix, et secondaires à l'adresse 0FFFFh. Seules les bits 7 et 6 serviront.

- Le DOS ou Disk-Basic indique le slot de la Ram principale pour chaque plage de 0F341h à 0F344h.

Je te conseille de lire le PDF "Pratique du MSX", si tu veux en savoir plus.

   
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 561

Le 01/01/2017 à 14h41
Victor parlait de la ram interne, celle à l'intérieur du msx


DONALD TRUMP IS FAST APPROACHING
NEMESIS ! RETURN IMMEDIATELY !
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 07/01/2017 à 16h13
C'est étonnant si on peut "lire" le contenu des slots primaires que l'on ne puisse pas déterminer où se trouve la RAM interne à l'init. J'ai dit une bétise ?
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 08/01/2017 à 11h00
Quel est l'intérêt de pouvoir différencier la RAM interne et l'externe ?
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 08/01/2017 à 21h58
Dans mon cas aucun et ce n'est pas là la question. Je ne cherche pas à dissocier RAM interne et externe, je souhaiterais identifier dans quel slot se trouve la RAM après l'initialisation d'un MSX quel que soit son modèle quand on arrive au Basic.
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 01/02/2017 à 15h08
Compte tenu des contraintes pour que ce POKE fonctionne, il n'est finalement pas si "universel" que ça... En fonction du MSX utilisé, le résultat est complètement aléatoire.
J'ai trouvé, en partie, la réponse à mon interrogation sur la présence ou non de RAM dans les slots en feuilletant "Le livre du MSX" et particulièrement la page 12.
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 20/02/2017 à 22h17
GDX:
Le "poke universel" n'est valable que pour les MSX ayant la RAM principale dans un Slot secondaire. C'est à dire très peu de MSX1 et pas beaucoup de MSX2. En France, ce poke est très répandu car nous avons eu droit à très peu de modèles MSX2. Sur ces modèles (sauf le HB-500) le poke marche mais il ne marche plus si l'on met une extension de mémoire. Bref, ce poke est très très loin d'être universel.

Nous sommes d'accord.
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie