La Place des Développeurs Nestor Basic problemes de memoire ? !
ericb59
Membre non connecté
Conseiller Municipal
hello,
je viens de m'apercevoir de quelque chose de tres ennuyeux pour la suite de la programmation de mon jeu...
Sur un Msx2 de 128k de ram, Nestor Basic permet d'acceder à toute la ram libre par le biais de segments de memoires de 16k
ainsi, la fonction e=usr(1):print p(2) , retourne le chiffre 8
pour 8 segments de 16K
si je lance nestor Basic depuis une cartouche SD qui demarre sous Msxdos,
la mêmem fonction me retourne 5 segments de 16k de libres
et si je demarre le Msx2 avec la cartouche SD sans passer par MSDoS, alors il me retourne
6 segments 16k de libres.
donc mon probleme c'est de savoir pourquoi 3 ou 2 segments de 16K de la ram ne sont plus accessibles si j'ai une cartouche SD dans le Msx ?
et si il y a moyen de les liberer ?
je viens de m'apercevoir de quelque chose de tres ennuyeux pour la suite de la programmation de mon jeu...
Sur un Msx2 de 128k de ram, Nestor Basic permet d'acceder à toute la ram libre par le biais de segments de memoires de 16k
ainsi, la fonction e=usr(1):print p(2) , retourne le chiffre 8
pour 8 segments de 16K
si je lance nestor Basic depuis une cartouche SD qui demarre sous Msxdos,
la mêmem fonction me retourne 5 segments de 16k de libres
et si je demarre le Msx2 avec la cartouche SD sans passer par MSDoS, alors il me retourne
6 segments 16k de libres.
donc mon probleme c'est de savoir pourquoi 3 ou 2 segments de 16K de la ram ne sont plus accessibles si j'ai une cartouche SD dans le Msx ?
et si il y a moyen de les liberer ?
igal
Membre non connecté
Conseiller Municipal
Si je me trompe pas, c'est le fonctionnement élémentaire du msx qui veut ça.
A savoir que selon le "genre" de cartouches utilisées, le msx réserve une petite partie de ram pour utiliser la rom en "reflet".
Si j'ai bien compris, les cartouches utilisant des pages de 16 ko vont utiliser un reflet sur une surface de ram de 16 ko.
Selon la cartouche les 16 ko de reflet peuvent être utilisés de tel a tel emplacement.. pareil pour les konami 8 ou konami 16, Ascii etc etc..
Je peux me tromper mais je crois que c'est ça
A savoir que selon le "genre" de cartouches utilisées, le msx réserve une petite partie de ram pour utiliser la rom en "reflet".
Si j'ai bien compris, les cartouches utilisant des pages de 16 ko vont utiliser un reflet sur une surface de ram de 16 ko.
Selon la cartouche les 16 ko de reflet peuvent être utilisés de tel a tel emplacement.. pareil pour les konami 8 ou konami 16, Ascii etc etc..
Je peux me tromper mais je crois que c'est ça
ericb59
Membre non connecté
Conseiller Municipal
GDX :
Sans doute parce que le DOS2 rérerve des pages pour lui.
ericb59 :
donc mon probleme c'est de savoir pourquoi 3 ou 2 segments de 16K de la ram ne sont plus accessibles si j'ai une cartouche SD dans le Msx ?
Sans doute parce que le DOS2 rérerve des pages pour lui.
Est il possible de zapper cette réservation et de libérer la mémoire ?
Il doit y avoir une commande DOS pour parametrer le nombre de page à réserver pour le buffer du DOS2.
Edit : Essaie la commande "Buffers". La commande est expliquée au lien suivant.
http://msx.hansotten.com/uploads/msxdocs/command.txt
Il semble que tu peux mettre 2 minimum au lieu de 5 par défaut. Edité par GDX Le 27/03/2016 à 09h58
Edit : Essaie la commande "Buffers". La commande est expliquée au lien suivant.
http://msx.hansotten.com/uploads/msxdocs/command.txt
Il semble que tu peux mettre 2 minimum au lieu de 5 par défaut. Edité par GDX Le 27/03/2016 à 09h58
ericb59
Membre non connecté
Conseiller Municipal
@GDX J'ai essayé avec Buffers 2
La commande est bien prise en compte. Mais en revenant au Basic, puis en affichant le nombre de segments libres dans Nestor Basic j'ai toujours 5
@TurboSeb. Je n'ai pas de cartouche uniquement DOS2. Mais le problème est identique avec une cartouche IDE SUNRISE par exemple.
La commande est bien prise en compte. Mais en revenant au Basic, puis en affichant le nombre de segments libres dans Nestor Basic j'ai toujours 5
@TurboSeb. Je n'ai pas de cartouche uniquement DOS2. Mais le problème est identique avec une cartouche IDE SUNRISE par exemple.
ericb59
Membre non connecté
Conseiller Municipal
Rectificatif. J'ai une cartouche DOS2
et j'ai fait le test. Si je boot sur une Disquette Dos2 avec la cartouche DOS2.20
Nestor Basic m'affiche toujours 5 segments libres.
Hors, j'ai besoin de mes 8 Segments libres pour mon jeu
bon sang...
et j'ai fait le test. Si je boot sur une Disquette Dos2 avec la cartouche DOS2.20
Nestor Basic m'affiche toujours 5 segments libres.
Hors, j'ai besoin de mes 8 Segments libres pour mon jeu
bon sang...
ericb59
Membre non connecté
Conseiller Municipal
C'est sans doute un effet normal en fait ...
Je viens de lire dans la doc de NEstor Basic :
"Full access to all te available memory of the computer (all existing memory
in the case of DOS 1, all free memory in the case of DOS 2), up to 4 Mb."
Sous entendu que DOS2 se réserve de la mémoire.
Je viens de lire dans la doc de NEstor Basic :
"Full access to all te available memory of the computer (all existing memory
in the case of DOS 1, all free memory in the case of DOS 2), up to 4 Mb."
Sous entendu que DOS2 se réserve de la mémoire.
le MSXDOS 2 se reserve des pages de 16k pour travailler
par exemple la gestion d'un CD-ROM demande une page de 16K supplémentaire
il ne faut pas utiliser les pages réservées sous risque de plantage
c'est pour ça aussi qu'il ne faut programmer avec le programme de crack du DOS 2 qui permet de lire les pages mais utiliser les jetons du MSXDOS 2
par exemple la gestion d'un CD-ROM demande une page de 16K supplémentaire
il ne faut pas utiliser les pages réservées sous risque de plantage
c'est pour ça aussi qu'il ne faut programmer avec le programme de crack du DOS 2 qui permet de lire les pages mais utiliser les jetons du MSXDOS 2
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie