[DCALICE] Bug interruptions

Couvre tous les domaines de l'émulation logicielle ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Répondre
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

[DCALICE] Bug interruptions

Message par Daniel »

Lors du développement d'un jeu pour Alice 32/90 il est apparu une anomalie dans la musique avec l'émulateur dcalice (des parasites).
Cette anomalie est liée à l'activation très brève des interruptions pour lire le clavier. Elle n'est pas audible avec la vraie machine.

Il y a donc un bug lié aux interruptions dans dcalice. La cause probable est la persistance trop longue du signal d'interruption après son activation.
Je cherche une solution en consultant la documentation. Vous pouvez m'aider si vous savez ce qui provoque la fin du signal d'interruption.
Daniel
L'obstacle augmente mon ardeur.
Duruti
Messages : 117
Inscription : 26 janv. 2024 19:43
Localisation : Haute-Loire
Contact :

Re: [DCALICE] Bug interruptions

Message par Duruti »

Le problème est plutôt lié à la desactivation très brève des interruptions
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCALICE] Bug interruptions

Message par Daniel »

J'ai une piste : Dans dcalice, lorsque l'interruption timer est déclenchée, elle est perdue si les interruptions sont masquées.
En réalité elle reste active pendant quelques cycles. Si les interruptions sont rétablies très vite elle doit être exécutée.
Reste à trouver jusqu'à quand elle doit rester active. C'est sûrement écrit dans la documentation, il suffit de chercher...
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
gilles
Messages : 2782
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [DCALICE] Bug interruptions

Message par gilles »

Vu le schéma et la doc du 6803 je suppose que l'interruption est déclenchée via le port P21 du 6803
mais ensuite il faut émuler la totalité du bloc port 2
Ce qu'il est possible de faire c'est déjà de regarder à l'analyseur logique comment se comporte le port P21 lors de l'appui de touche (est il programmé comme entrée ou sortie).
Duruti
Messages : 117
Inscription : 26 janv. 2024 19:43
Localisation : Haute-Loire
Contact :

Re: [DCALICE] Bug interruptions

Message par Duruti »

J'avais cru comprendre que l'interrogation du clavier ne nécessite pas la gestion des interruptions.
Dans mon cas je suis obligé de couper les interruptions pour lire le clavier car je gère en même temps mon player de musique sous interruption . Et comme c'est la même adresse pour produire un son, ou pour lire le clavier je suis obligé de les couper juste le temps d'interroger le clavier. Sinon c'est le conflit.
Avatar de l’utilisateur
gilles
Messages : 2782
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [DCALICE] Bug interruptions

Message par gilles »

donc ce serait plutôt la possibilité de lire le clavier en polling seul et sans passer par l'interruption le réél "défaut". En soi c'est surtout un ajout de fonctionnalité et pas strictement un bug.
Duruti
Messages : 117
Inscription : 26 janv. 2024 19:43
Localisation : Haute-Loire
Contact :

Re: [DCALICE] Bug interruptions

Message par Duruti »

Si c'est un bug, car sur la vraie machine j'ai pas de bug, seulement sur l'emulateur, j'ai le son qui est perturbé par la lecture du clavier car l'interruption n'est pas coupé
Avatar de l’utilisateur
gilles
Messages : 2782
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [DCALICE] Bug interruptions

Message par gilles »

en émulation on fait souvent des choix et des simplifications. Et puis un jour, un programme nécessite de revoir sa méthode et de la compléter. L'utilisateur voit un bug, pour le développeur c'est un ajout de fonction.
Duruti
Messages : 117
Inscription : 26 janv. 2024 19:43
Localisation : Haute-Loire
Contact :

Re: [DCALICE] Bug interruptions

Message par Duruti »

Oui ça dépend du point de vue 🙂
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCALICE] Bug interruptions

Message par Daniel »

Comme annoncé j'ai repris toute la programmation du timer avec la documentation sous les yeux. Il y avait quelques simplifications abusives, je les ai corrigées. Malheureusement le bug est toujours présent. Quelque chose m'échappe encore, je vais continuer les recherches.

En attendant de trouver la vraie cause, j'ai fait un petit patch pour résoudre le problème provisoirement :
dcalice_20240318.zip
(138.19 Kio) Téléchargé 9 fois


[EDIT 20:30]
Finalement la dernière anomalie a été corrigée et l'émulateur fonctionne maintenant sans patch. Je publierai une version "propre" demain.

L'erreur était bien ce que je supposais :
Les interruptions timer TOF et OCF étaient actives pendant une seule instruction. Elles n'étaient jamais exécutées si à ce moment là les interruptions étaient masquées.
En réalité elles doivent rester actives jusqu'à ce qu'une condition soit remplie, et si entre temps les interruptions ne sont plus masquées elles peuvent s'exécuter. La condition est assez complexe :

timer.png
timer.png (60.31 Kio) Consulté 326 fois
Daniel
L'obstacle augmente mon ardeur.
Duruti
Messages : 117
Inscription : 26 janv. 2024 19:43
Localisation : Haute-Loire
Contact :

Re: [DCALICE] Bug interruptions

Message par Duruti »

Super merci 😃
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCALICE] Bug interruptions

Message par Daniel »

La version 2024.03.19 de l'émulateur dcalice est disponible ici --> http://alice32.free.fr/emulateur/index.html
Daniel
L'obstacle augmente mon ardeur.
Répondre