Derniers sujets
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité Aucun
Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion
Statistiques
Nous avons 242 membres enregistrésL'utilisateur enregistré le plus récent est AIRBUS44
Nos membres ont posté un total de 8922 messages dans 811 sujets
Développement du jeu MAGIC CIRCUS SHOW
3 participants
Forum Oric :: Forums :: Forum Public :: Assembleur
Page 1 sur 1
Développement du jeu MAGIC CIRCUS SHOW
Bonjour La Communauté,
Me voilà confronté de nouveau à de biens étranges phénomènes sur un programme en L/M (développement du jeu Magic Circus Show).
Lorsque le langage machine est appelé par un CALL#6B00 depuis la ligne 1030 du programme en Basic, je retourne aussi sec sous Basic avec le message d'erreur ?ILLEGAL QUANTITY ERROR IN 1030.
Si je tente d'appeler le même programme L/M via le débogueur Oricutron, je m'aperçoit qu'une bascule se fait en RAM Overlay à l'adresse #6DBC. Ce qui m'amène tout droit dans la commande Sedoric DIR et s'achève par le message BREAK ON BYTE #04A6 IN 1020 !
Par contre, un appel en mode direct par un CALL#6DBC de la section L/M incriminée se termine sans aucun message d'erreur.
De quoi y laisser le peu de cheveux qu'il me reste.
Quelqu'un aurait-il un début d'explications ?
Avec mes remerciements.
Sheld67
Me voilà confronté de nouveau à de biens étranges phénomènes sur un programme en L/M (développement du jeu Magic Circus Show).
Lorsque le langage machine est appelé par un CALL#6B00 depuis la ligne 1030 du programme en Basic, je retourne aussi sec sous Basic avec le message d'erreur ?ILLEGAL QUANTITY ERROR IN 1030.
Si je tente d'appeler le même programme L/M via le débogueur Oricutron, je m'aperçoit qu'une bascule se fait en RAM Overlay à l'adresse #6DBC. Ce qui m'amène tout droit dans la commande Sedoric DIR et s'achève par le message BREAK ON BYTE #04A6 IN 1020 !
Par contre, un appel en mode direct par un CALL#6DBC de la section L/M incriminée se termine sans aucun message d'erreur.
De quoi y laisser le peu de cheveux qu'il me reste.
Quelqu'un aurait-il un début d'explications ?
Avec mes remerciements.
Sheld67
Sheld67- Messages : 73
Date d'inscription : 06/04/2014
Re: Développement du jeu MAGIC CIRCUS SHOW
Bonjour,
Sans le source du programme en LM ça va être difficile de répondre.
A priori, il doit y avoir une instruction qui prooque l'activation de la RAM Overlay lorsque tu lances le programmes à partir de #6B00 et pas lorsque tu le lances en #6DBC.
Il faudrait que tu l'exécutes en pas à pas avec le debuger d'Oricutron pour voir à quel moment la bascule se fait.
Ca peut être une écriture au mauvais endroit dans la RAM qui active la RAM overlay ou un appel à une procédure Sedoric présente en RAM et qui fait cette activation (il doit y en avoir une en page 4 je pense mais je ne connais pas bien Sedoric)
Sans le source du programme en LM ça va être difficile de répondre.
A priori, il doit y avoir une instruction qui prooque l'activation de la RAM Overlay lorsque tu lances le programmes à partir de #6B00 et pas lorsque tu le lances en #6DBC.
Il faudrait que tu l'exécutes en pas à pas avec le debuger d'Oricutron pour voir à quel moment la bascule se fait.
Ca peut être une écriture au mauvais endroit dans la RAM qui active la RAM overlay ou un appel à une procédure Sedoric présente en RAM et qui fait cette activation (il doit y en avoir une en page 4 je pense mais je ne connais pas bien Sedoric)
assinie- Messages : 271
Date d'inscription : 09/02/2014
Re: Développement du jeu MAGIC CIRCUS SHOW
Faut etre vraiment malchanceux pour qu'un bug écrive a la seule addresse qui permet de switcher la mémoire overlay, et surtout y mette la bonne valeur (on a une chance sur 65536 d'écrire a la bonne place en mémoire, c'est faible)
Ce qui est plus probable, c'est que ton code est executé en etant sous Sedoric, je ne connais pas assez Sedoric, mais pendant que le basic est executé, il est possible qu'a certains moment la ROM soit switché, ne serait-ce que parce que sedoric ajoute des foctionalité a l'interpreteur basic.
Perso ton code qui est a 0x6B00 (et n'importe ou d'ailleurs) qui cherche a executer des fonction de la ROM, si le soft est fait pour etre executé sous Sedoric, soit sur que la ROM soit bien mappé (donc sauver le registre qui va bien, ecrire la valeur pour mapper la ROM, et quand tu as terminé restaurer le registre en question)
A moins que la doc de Sedoric dise explicitement "On fait attention a quand vous faite un CALL que la ROM du basic soit disponible et mappé" je ne prendrais pas ca pour argent comptent, aka, etre sur soit meme que la ROM est bien la, et ceux avant chaque appel a une fonction de la ROM.
Oh, et il ya les interruptions a prendre en compte, et c'est probablement ce qui t'arrive, si une INT arrive et que certaines choses sont mal restauré, ca peux aussi faire du caca.
Mais c'est sur que ca serait plus simple a expliquer avec le code
Ce qui est plus probable, c'est que ton code est executé en etant sous Sedoric, je ne connais pas assez Sedoric, mais pendant que le basic est executé, il est possible qu'a certains moment la ROM soit switché, ne serait-ce que parce que sedoric ajoute des foctionalité a l'interpreteur basic.
Perso ton code qui est a 0x6B00 (et n'importe ou d'ailleurs) qui cherche a executer des fonction de la ROM, si le soft est fait pour etre executé sous Sedoric, soit sur que la ROM soit bien mappé (donc sauver le registre qui va bien, ecrire la valeur pour mapper la ROM, et quand tu as terminé restaurer le registre en question)
A moins que la doc de Sedoric dise explicitement "On fait attention a quand vous faite un CALL que la ROM du basic soit disponible et mappé" je ne prendrais pas ca pour argent comptent, aka, etre sur soit meme que la ROM est bien la, et ceux avant chaque appel a une fonction de la ROM.
Oh, et il ya les interruptions a prendre en compte, et c'est probablement ce qui t'arrive, si une INT arrive et que certaines choses sont mal restauré, ca peux aussi faire du caca.
Mais c'est sur que ca serait plus simple a expliquer avec le code
Godzil- Messages : 107
Date d'inscription : 20/01/2013
Age : 42
Localisation : Entre France et UK
Re: Développement du jeu MAGIC CIRCUS SHOW
J'ai retrouvé une réponse de Fabrice F. dans mes archives et qui répond bien au problème rencontré (même si cela s'appliquait spécifiquement pour le débogueur d'Euphoric):
- un déboguage de sous-programmes qui s'exécutent en ROM peut provoquer un arrêt en RAM Overlay lorsque ledit programme en ROM va chercher des paramètres supplémentaires au moyen de la routine en $00E2 ($00E8), routine qui est modifiée par Sedoric pour faire appel à des routines en RAM Overlay.
- un repositionnement du registre PC pour exécuter du code spécifique, car une même adresse de PC existe dans plusieurs banques de mémoire. Pour éviter tout débordement en RAM Overlay, il est conseillé de ne pas saisir d'adresses supérieures à $FFFF.
La solution proposée à l'époque par Fabrice F. pour éviter de se retrouve coincé dans la RAM Overlay, était de faire un QUIT avant de lancer le programme.
- un déboguage de sous-programmes qui s'exécutent en ROM peut provoquer un arrêt en RAM Overlay lorsque ledit programme en ROM va chercher des paramètres supplémentaires au moyen de la routine en $00E2 ($00E8), routine qui est modifiée par Sedoric pour faire appel à des routines en RAM Overlay.
- un repositionnement du registre PC pour exécuter du code spécifique, car une même adresse de PC existe dans plusieurs banques de mémoire. Pour éviter tout débordement en RAM Overlay, il est conseillé de ne pas saisir d'adresses supérieures à $FFFF.
La solution proposée à l'époque par Fabrice F. pour éviter de se retrouve coincé dans la RAM Overlay, était de faire un QUIT avant de lancer le programme.
Sheld67- Messages : 73
Date d'inscription : 06/04/2014
Sujets similaires
» Magic Circus Show
» Animations sonores pour "Magic Circus Show"
» CIRCUS SUR DISQUETTE
» outil de dessin Orixel en développement
» Orix : Thread de notification sur le développement
» Animations sonores pour "Magic Circus Show"
» CIRCUS SUR DISQUETTE
» outil de dessin Orixel en développement
» Orix : Thread de notification sur le développement
Forum Oric :: Forums :: Forum Public :: Assembleur
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Dim 31 Mar 2024 - 14:35 par kenneth
» Bla Bla général du Jury
Jeu 21 Mar 2024 - 8:51 par Dom50
» carte mère Oric (re)tracée
Mar 5 Mar 2024 - 18:54 par kenneth
» Meurtre à Grande Vitesse
Dim 25 Fév 2024 - 5:09 par Iurius
» ORIC-1 sur LE BON COIN
Ven 23 Fév 2024 - 23:01 par Mcar
» ORIC ATMOS sur LE BON COIN
Dim 4 Fév 2024 - 12:06 par kiwilevrai
» Problème d'affichage des couleurs avec un Oric Atmos
Sam 27 Jan 2024 - 1:26 par pierbail
» Bienvenue dans le Forum des Oriciens
Mar 9 Jan 2024 - 12:33 par Dom50
» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
Ven 29 Déc 2023 - 14:13 par Arcade-des-Monts
» Bonnes fêtes
Mar 26 Déc 2023 - 10:21 par Dom50
» Murders in Venice / Meutres à Venise
Sam 18 Nov 2023 - 22:44 par retroric
» Un clavier PS/2 pour tester un ORIC
Dim 27 Aoû 2023 - 9:49 par Voyageur
» Disquette 3" Sedoric
Mar 1 Aoû 2023 - 14:22 par AtomeX
» faire un 6502 avec des phototransistor
Dim 16 Juil 2023 - 17:26 par Voyageur
» Oricutron linux et DSK
Jeu 29 Juin 2023 - 18:34 par Voyageur