DCMOTO - Emulateur universel Thomson 8 bits : Forum - Programmation - Pré-octet des codes opération 6809
Retour : Accueil » Programmation
Auteur Message
Daniel
Visiteur
Date : 02/02/2005 à 20h28
Quand on programme le 6809, il est quelquefois nécessaire de recourir à des astuces pour obtenir une temporisation précise au cycle près. Le groupe Puls maîtrise parfaitement ce sujet, et Yoann a donné beaucoup d'explications et de recettes sur le site pulsdemos

J'ajoute une recette personnelle, trouvée en observant le diagramme "Cycle-by-cycle performance" (fig. 17 sur la datasheet MC6809E de Motorola, voir page Documentation du site dcmoto) : dans le décodage des instructions, si le pré-octet est 0x10 ou 0x11, l'octet suivant est lu, et la boucle continue tant que l'octet lu est 0x10 ou 0x11. Dans le cas contraire, elle s'arrête et l'instruction est exécutée. Ce qui veut dire que si 10xx est une instruction valide, 1010xx l'est aussi, et par extension 1010101010.....101010xx également. On pourrait aussi intercaler des 11 dans la suite des 10, ou remplacer tous les 10 sauf le dernier par des 11. Sauf erreur de ma part, chaque pré-octet de plus ajoute un cycle d'horloge à la durée de l'opération.

Voilà l'idée, avec toutes les réserves d'usage car je ne l'ai pas encore testée. Si quelqu'un fait l'expérience, ce serait sympa de poster un petit compte-rendu.

Daniel
en haut - en bas
Fool-DupleX
Visiteur
Date : 12/04/2005 à 17h06
Cela veut-il dire que l'on pourrait aussi incrementer artificiellement le PC de n octets ? par exemple passer de $7D00 à $7D08 d'un coup en codant 101010101010xxxx ?

A checker absolument !

Fool
en haut - en bas
Yoann
Visiteur
Date : 13/04/2005 à 01h37
Le probleme, ca ne se compile pas, faut aller bidouiller a la main
en haut - en bas
Daniel
Visiteur
Date : 13/04/2005 à 08h22
Et aussi, l'intérêt est très limité, car on peut obtenir le même résultat en codant 1212121212121212

Daniel
en haut - en bas
Fool-DupleX
Visiteur
Date : 13/04/2005 à 10h21
Oui mais ca prend moins de cycles

T'en veux un peu, c'est d'la bonne...

Fool
en haut - en bas