La Place des Développeurs ROM 48K et slots
aoineko
Membre non connecté
Conseiller Municipal
Reprise du message précédent
La première fonction à l'air OK... en dehors du fait que tu dépends des fonctions du BIOS et de sa zone de travail en RAM. Côté BIOS y a peu de risques que ça ne fonctionne pas comme prévu. Côté RAM, tu es sûr de pas écraser la zone de travail du BIOS ?Tu devais déjà valider la valeur de ta première fonction avec un programme qui la print. Essai-le sur les différents émulateurs et sur différentes configurations : slot primaire 1, slot primaire 2, slot étendu, etc.
Si tu valides que la valeur est toujours bonne, le problème vient de ta 2e fonction (ou d'ailleurs).
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Ah... trop tard
Il n'empêche ; vu ton soucis avec BlueMSX tu devrais d'abord valider ta fonction qui récupère le slotId de la cartouche.
Il n'empêche ; vu ton soucis avec BlueMSX tu devrais d'abord valider ta fonction qui récupère le slotId de la cartouche.
On est toujours ignorant avant de savoir.
Merci pour l'info Sector28
ericb59
Membre non connecté
Conseiller Municipal
Salut,
Je me dois de rendre homage à Aoineko, pour le travail qu'il fait sur sa librairie MSX. C'est vraiment dingue le boulot accompli.
Tu es vraiment très fort. J'ai beaucoup de mal à m'y retrouver dans ton code, mais c'est parce que je ne suis pas un bon codeur !
Mais tout y est, c'est du grand art.
Si tu avais entrepris ce travail il y a 3 ans, je ne me serai pas lancé dans FUSION-C
En tout cas BRAVO. Tu es un chef !
J'ai une petite demande en par contre.
Est-ce que tu peux fournir les sources de tes outils CMSXimg, CMSXmath etc... ?
Pour peut que tes sources soient en C++ je pourrai les compiler pour Mac
Merci pour tout.
Je me dois de rendre homage à Aoineko, pour le travail qu'il fait sur sa librairie MSX. C'est vraiment dingue le boulot accompli.
Tu es vraiment très fort. J'ai beaucoup de mal à m'y retrouver dans ton code, mais c'est parce que je ne suis pas un bon codeur !
Mais tout y est, c'est du grand art.
Si tu avais entrepris ce travail il y a 3 ans, je ne me serai pas lancé dans FUSION-C
En tout cas BRAVO. Tu es un chef !
J'ai une petite demande en par contre.
Est-ce que tu peux fournir les sources de tes outils CMSXimg, CMSXmath etc... ?
Pour peut que tes sources soient en C++ je pourrai les compiler pour Mac
Merci pour tout.
aoineko
Membre non connecté
Conseiller Municipal
Merci
Tous mes outils sont dispo sur GitHub :
- https://github.com/aoineko-fr/CMSXbin
- https://github.com/aoineko-fr/CMSXmath
- https://github.com/aoineko-fr/CMSXimg
A mon avis Fusion-C et MSXgl (le nouveau nom de ma lib ), ont chacune une bonne raison d'être : tout dépend des besoins.
Tous mes outils sont dispo sur GitHub :
- https://github.com/aoineko-fr/CMSXbin
- https://github.com/aoineko-fr/CMSXmath
- https://github.com/aoineko-fr/CMSXimg
A mon avis Fusion-C et MSXgl (le nouveau nom de ma lib ), ont chacune une bonne raison d'être : tout dépend des besoins.
On est toujours ignorant avant de savoir.
Très intéressant ce post, merci.
Je comprends mieux pourquoi j'avais des problèmes lorsque j'écrivais certains jeux en 32ko sur les EPROMs.
Comme le jeu commence en 0x4000 et s'étend sur deux pages il faut écrire dans l'EPROM en commençant par le second block de 16ko puis le premier.
Avec l'effet miroir on se retrouve bien avec le jeu dans le bon ordre dans les page 1 et 2.
Un petit dessin que j'avais fait pour m'y retrouver avec le CS1, CS2 et CS12 :
Je comprends mieux pourquoi j'avais des problèmes lorsque j'écrivais certains jeux en 32ko sur les EPROMs.
Comme le jeu commence en 0x4000 et s'étend sur deux pages il faut écrire dans l'EPROM en commençant par le second block de 16ko puis le premier.
Avec l'effet miroir on se retrouve bien avec le jeu dans le bon ordre dans les page 1 et 2.
Un petit dessin que j'avais fait pour m'y retrouver avec le CS1, CS2 et CS12 :
Il faut cultiver notre jardin.
ericb59
Membre non connecté
Conseiller Municipal
@Gfx. Oui quand on veut flasher une ROM 32K dans une EPROM 27C512, il faut d'abord splitter la ROM en 2 bloques de 16K, puis les concatèner en commençant par le second bloque.
@aoineko
Merci... J'avais pas vu...
Déjà celui-là c'est pas possible dû aux librairies externes que tu utilises.
@aoineko
Merci... J'avais pas vu...
Citation :
https://github.com/aoineko-fr/CMSXimg
Déjà celui-là c'est pas possible dû aux librairies externes que tu utilises.
aoineko
Membre non connecté
Conseiller Municipal
Ah... il manque CMSXtk ! J'ai commencé à y déplacer des bouts de code en commun.
Il faudrait que je fasse un repo commun avec tous les outils.
Je ferai ça quand j'aurai un moment et je te préviendrais.
Et pour info, je vais pas mal modifier les crt0 des Plain ROM (8~64K) pour permettre de gérer toutes les combinaisons (il m'en manque encore) sans avoir à ajouter encore plus de crt0.
Il faudrait que je fasse un repo commun avec tous les outils.
Je ferai ça quand j'aurai un moment et je te préviendrais.
Et pour info, je vais pas mal modifier les crt0 des Plain ROM (8~64K) pour permettre de gérer toutes les combinaisons (il m'en manque encore) sans avoir à ajouter encore plus de crt0.
On est toujours ignorant avant de savoir.
ericb59
Membre non connecté
Conseiller Municipal
@aoineko Est-ce que tu as testé une ROM 48K sur un MSX16K doté d'une extension RAM ?
J'ai un bug, pour trouver dans quel slot est la RAM...
Tu utilises quoi comme routine pour identifier la MAIN RAM ?
J'ai un bug, pour trouver dans quel slot est la RAM...
Tu utilises quoi comme routine pour identifier la MAIN RAM ?
aoineko
Membre non connecté
Conseiller Municipal
Je laisse le système trouvé la RAM pour moi.
D'après les BIOS que j'ai essayé de décortiquer, au démarrage le système :
- Sélectionne le slot 0 (ou le sous-slot 0-0) sur toutes les pages (là ou se trouve le BIOS),
- Puis recherche lui-même le premier slot/sous-slot ou se trouve de la RAM et le sélectionne dans la page 3,
- Puis recherche les entête de ROM "AB" en début de page 1 et 2.
Du coup, au démarrage de ta ROM, le slot de la RAM, c'est le slot sélectionné dans la page 3.
Sur MSX1, tu es sûr d'avoir au moins 8K de RAM à partir de E000h et sur MSX2, tu es sûr d'avoir 64K de RAM sur ce slot (dont les 16K de la page 3 sélectionnés).
Personnellement, je ne vais pas plus loin.
Vu le code que le BIOS utilise pour trouver la RAM (tentative d'écriture "brut force"), j'imagine qu'il trouvera une extension de RAM si elle est directement accessible dans un slot/sous-slot avant celui de la RAM principal.
Par contre, si c'est une RAM mappé qui passe par des I/O pour être sélectionné, ça sera certainement invisible pour la détection du BIOS (au moins sur MSX1).
D'après les BIOS que j'ai essayé de décortiquer, au démarrage le système :
- Sélectionne le slot 0 (ou le sous-slot 0-0) sur toutes les pages (là ou se trouve le BIOS),
- Puis recherche lui-même le premier slot/sous-slot ou se trouve de la RAM et le sélectionne dans la page 3,
- Puis recherche les entête de ROM "AB" en début de page 1 et 2.
Du coup, au démarrage de ta ROM, le slot de la RAM, c'est le slot sélectionné dans la page 3.
Sur MSX1, tu es sûr d'avoir au moins 8K de RAM à partir de E000h et sur MSX2, tu es sûr d'avoir 64K de RAM sur ce slot (dont les 16K de la page 3 sélectionnés).
Personnellement, je ne vais pas plus loin.
Vu le code que le BIOS utilise pour trouver la RAM (tentative d'écriture "brut force"), j'imagine qu'il trouvera une extension de RAM si elle est directement accessible dans un slot/sous-slot avant celui de la RAM principal.
Par contre, si c'est une RAM mappé qui passe par des I/O pour être sélectionné, ça sera certainement invisible pour la détection du BIOS (au moins sur MSX1).
On est toujours ignorant avant de savoir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie