Derniers sujets
» ORIC-1 sur LE BON COIN
Résultat inattendu en langage machine EmptyHier à 23:46 par kenneth

» rs
Résultat inattendu en langage machine EmptyHier à 19:47 par Dom50

» De l'ORiC au FESTIVAL REPLAY à Mouans-Sartoux
Résultat inattendu en langage machine EmptyHier à 6:22 par didierv

» le forum fourre tout
Résultat inattendu en langage machine EmptyHier à 0:30 par maximus

» HRC (Hires RLE Compressed)
Résultat inattendu en langage machine EmptyJeu 17 Oct 2019 - 23:09 par Symoon

» CEO-MAG 354
Résultat inattendu en langage machine EmptyDim 13 Oct 2019 - 10:14 par didierv

» Version compatible 64 bits de WAVtoTAP ?
Résultat inattendu en langage machine EmptySam 12 Oct 2019 - 16:48 par markerror

» Lot de livres et revues Oric sur LBC
Résultat inattendu en langage machine EmptyVen 11 Oct 2019 - 21:37 par didierv

» Écriture stylée sur MCP 40
Résultat inattendu en langage machine EmptyDim 6 Oct 2019 - 17:38 par Dbug

» CEO-MAG 353
Résultat inattendu en langage machine EmptyDim 6 Oct 2019 - 15:27 par Symoon

» Vieumikro 2019
Résultat inattendu en langage machine EmptyLun 30 Sep 2019 - 16:34 par Hialmar

» [sujet Public] - le Ceo-Mag
Résultat inattendu en langage machine EmptyDim 29 Sep 2019 - 22:31 par didierv

» Vidéos en anglais
Résultat inattendu en langage machine EmptyDim 29 Sep 2019 - 15:22 par Dbug

» Nouvelles commandes SEDORIC
Résultat inattendu en langage machine EmptySam 28 Sep 2019 - 20:57 par Sheld67

» A venir: nouvelle version TAP2WAV
Résultat inattendu en langage machine EmptyMer 25 Sep 2019 - 21:03 par Symoon

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

Récupérer mon mot de passe

Statistiques
Nous avons 193 membres enregistrés
L'utilisateur enregistré le plus récent est Oric Man

Nos membres ont posté un total de 7948 messages dans 685 sujets
Portail ORIC




Résultat inattendu en langage machine

Aller en bas

Résultat inattendu en langage machine Empty Résultat inattendu en langage machine

Message par Sheld67 le Dim 26 Avr 2015 - 19:14

Salut la Communauté,

Je refais appel à vous pour solutionner un résultat inattendu en langage machine.

Toujours pour les besoins du jeu 'Black Mamba', j'ai programmé le code ci-dessous qui gère l'affichage de pièges à l'écran :


LTRAP      ldx TRAP_NUMBER
               bmi LTRAP_FLASH ; pas de tirage aléatoire si déjà 10 pièges affichés
               lda #100
               jsr LRANDOM ; génère un entier compris entre 1 et 100 et le place dans Y
               cpy #99 ; si tirage aléatoire > 99 (niveau 1) alors afficher piège
               bcc LTRAP_FLASH ; sinon passer à l'animation 'flash' du piège
               lda #33 ; caractère à afficher = piège
               jsr LGENERATE_CHAR ; positionne le piège de manière aléatoire à l'écran
               dec TRAP_NUMBER ; diminue le nombre de pièges affichables


La variable TRAP_NUMBER est initialisée à 9 en début de jeu: on ne peut donc normalement avoir qu'un maximum de 10 pièges affichés à l'écran.

Il se trouve que le résultat obtenu est un affichage en continu de pièges à l'écran, comme si la variable TRAP_NUMBER n'était jamais décrémentée.
C'est d'ailleurs un peu ce qui se passe après vérification au débuggeur d'Euphoric.

Une idée de la manière de percer ce mystère ?


Dernière édition par Sheld67 le Mar 29 Mar 2016 - 22:09, édité 2 fois
Sheld67
Sheld67

Messages : 61
Date d'inscription : 06/04/2014

Revenir en haut Aller en bas

Résultat inattendu en langage machine Empty Re: Résultat inattendu en langage machine

Message par kenneth le Dim 26 Avr 2015 - 20:47

Tout dépend ou est stocké TRAP_NUMBER....
Si on utilise un emplacement mémoire, il ne faut pas que le système l utilise et si on laisse la valeur dans X il faut faire un empilage-depilage avant de faire un saut dans une routine du système, ou A, X et Y on de grandes chances d être modifiés pour les besoins de la routine. Wink
kenneth
kenneth
Modérateur

Messages : 721
Date d'inscription : 13/01/2013
Age : 52
Localisation : 972

Revenir en haut Aller en bas

Résultat inattendu en langage machine Empty Re: Résultat inattendu en langage machine

Message par retroric le Dim 26 Avr 2015 - 23:49

Hello,

A la lecture, ce qui me paraît très bizarre c'est la logique d'affichage des pièges, avec des sauts effectués vers un même label (LTRAP_FLASH) dans 2 cas complètement différents:
1) si le nb de pièges à afficher est atteint on fait un saut vers LTRAP_FLASH) (BMI LTRAP_FLASH)... A ce sujet d'ailleurs, je m'attendais à trouver un "BEQ" ici plutôt qu'un "BMI"... J'avoue ne pas voir ce que fait un "BMI" ici ??
2) si le tirage aléatoire est inférieur à un seuil donné, tu fais aussi un saut vers LTRAP_FLASH (bcc LTRAP_FLASH)

Du coup, lorsque tu atteins ce fameux label LTRAP_FLASH:
- comment distingues tu si l'appel provient du cas 1) ou du cas 2)
- comment boucles-tu (dans le cas 2) sur l'affichage du prochain piège, puisqu'il te faut en toute logique te tebrancher à un moment donné vers l'instruction "dec TRAP_NUMBER"... D'ailleurs ce qui n'est pas très clair non plus, c'est si tu affiches exactement TRAP_NUMBER pièges , ou AU MAXIMUM, TRAP_NUMBER pièges ??

Dernière remarque, au sujet de ce "bMI" qui m'intrigue... Personnellement, j'évite de mélanger des instructions traitant de nombres signés (BMI) et celles traitant de nombres non signés (BCC), sinon ça complique la lecture, on ne sait plus si on manipule des nombres signés sur 7 bits ou des nombres non signés sur 8 bits...

Enfin, difficile de toutes façons de donner un diagnostic plus précis car tu ne donnes qu'une partie de ton code, il faudrait avoir la totalité de la boucle de traitement d'affichage des pièges pour identifier les problèmes possibles...

Quoi qu'il en soit... une bonne manière de percer le mystère" est comme tu l'indiques d'utiliser un débogueur, en mode pas à pas pour bien voir ce qui se passe à chaque étape... Tu dis que tu as essayé et qu'effectivement ta variable TRAP_NUMBER n'était pas décrémentée, mais as-tu réellement débuggé les instructions pas à pas ??

En espérant que ça pourra t'aider à trouver le pb dans ton code...

Bon courage,
Laurent

PS - je suis impatient d'en savoir plus sur ce "Black Mamba" en préparation !!! ;-)
retroric
retroric

Messages : 535
Date d'inscription : 09/08/2014
Age : 48
Localisation : Paris

https://github.com/retroric

Revenir en haut Aller en bas

Résultat inattendu en langage machine Empty Re: Résultat inattendu en langage machine

Message par didierv le Lun 27 Avr 2015 - 4:38

Bonjour,

A vu de nez, il n'y a pas d'anomalies.
Soit tes autres routines perturbent ce fonctionnement, soit effectivement la variable n'est pas à un endroit sécurisé du systeme.

Un petit rappel pour vérifier des cas de fonctionnement du 6502 :
http://skilldrick.github.io/easy6502/

Didier
didierv
didierv

Messages : 725
Date d'inscription : 19/01/2014
Age : 56
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

Résultat inattendu en langage machine Empty Re: Résultat inattendu en langage machine

Message par Sheld67 le Sam 30 Mai 2015 - 11:28

Merci de vous être penché sur mon sujet qui n'en était finalement pas vraiment un.

En effet, ma programmation (défectueuse) faisait que je renvoyais sans cesse à une zone d'initialisation des variables dont la variable TRAP_NUMBER qui reprenait à tout coup la valeur 9.

Pas étonnant, de fait, que le nombre de pièges s'affichant à l'écran devienne rapidement insurmontable !

Allez hop, encore un sujet résolu.
Sheld67
Sheld67

Messages : 61
Date d'inscription : 06/04/2014

Revenir en haut Aller en bas

Résultat inattendu en langage machine Empty Re: Résultat inattendu en langage machine

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum