Logicielsmoto.com

Nous sommes le 28 Mar 2024, 14:53

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 111 messages ]  Aller à la page Précédente  1 ... 3, 4, 5, 6, 7, 8  Suivante
Auteur Message
 Sujet du message:
MessagePosté: 30 Aoû 2006, 12:32 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Samuel Devulder a écrit:
Il n'y a pas l'equivalent d'un UNSET ?


Malheureusement non. Pas dans Assembler en tous cas. Mais c'est une bonne idée, tiens.... :good:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 30 Aoû 2006, 13:07 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Si j'ai bonne mémoire on peut raccourcir
Code:
               SUBD     2,S
               BCC        DIV1
               ADDD    2,S

Et

Code:
               STD       2,S
               PULS     D,X


A vos neurones. Sachant qu'il faut considérer la routine de Tomix revisé par Prehisto ;)

[Edit]Je m'a planté dans le mode édit. :D


Dernière édition par jasz le 30 Aoû 2006, 13:47, édité 3 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 30 Aoû 2006, 13:11 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
jasz a écrit:
On peut raccourcir
Code:
               STD       2,S
               PULS     D,X



Heu... peut-etre:
Code:
    LDX   ,++S
    LEAS 2,S


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 30 Aoû 2006, 13:13 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Il faut que D pointe le quotien ;)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 30 Aoû 2006, 13:19 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
jasz a écrit:
Il faut que D pointe le quotien ;)


Ah je m'ai goure je crois reprenons:
Code:
 STD       2,S
               PULS     D,X

Donc D recupere la data 16bits pointee par S et X celle de D a l'entree:
Code:
   TFR   D,X
   LDD   ,S++
   LEAS  2,S
Mais je vois pas bien le gain.. sauf qu'on evite d'ecrire en ram des trucs immediatements relus apres.

sam (je seche)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 30 Aoû 2006, 13:45 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
:oops: j'ai édité mon précedent message. :oops:



Je vais te donner un coup de pouce. Regarde
Code:
               SUBD     2,S
               BCC        DIV1
               ADDD    2,S

Ici il y a une action inutile sous condition.

Et là sans condition

Code:
               STD       2,S
               PULS     D,X


;)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 30 Aoû 2006, 13:55 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
jasz a écrit:
Je vais te donner un coup de pouce.


Ben pas mieux.. le addd ne fait qu'annuler la soustraction si celle ci donne un resultat negatif. Je vois pas comment faire mieux localement.

sam (in ze 6-rage)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 30 Aoû 2006, 14:53 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
jasz a écrit:
Si j'ai bonne mémoire on peut raccourcir
Code:
               SUBD     2,S
               BCC        DIV1
               ADDD    2,S


Non, je ne pense pas, Jasz. Le SUBD positionne le bit C de CC selon le signe de la différence. Si la différence est positive, le nombre n'est pas rétabli. SI elle est négative, oui. Et le bit de CC est maintenu à cause du dépassement dans l'addition Je pense que tout est important et que cette formulation est effectivement irréductible.

Si D < 2,S, on ne soustrait pas 2,S mais le bit C de CC est à 1
Si D >= 2,S, on soustrait, mais le bit C de CC est à 0

jasz a écrit:
Code:
               STD       2,S
               PULS     D,X


Attention! La valeur contenue dans D se retrouve dans X au dépilement.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Opcodes (non) documentes
MessagePosté: 30 Aoû 2006, 18:59 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Tomix3 a écrit:
..liste d'opcodes illegaux...


Sur la liste issue de la communaute des utilisateurs de Dragon http://redvip.homelinux.net/varios/texts/Dragon/UNDOCOPS.HTM, j'ai trouve des differences avec ta liste. C'est surtout lie entre NEG et COM:
Code:
Op Mne      Mode   ~   #   Comment
02 NEG/COM   Direct   6       2   If cc.c = 0 then NEG <$xx (op $00)
               If cc.c = 1 then COM <$xx (op $03)
               (<$xx) = not(<$xx) + not(cc.c)

3e RESET   Inherent  -   1   Forces internal Reset, disables
               interrupts.

41 NEGA    Inherent  2       1       Same as 40
42 COMA    Inherent  2       1       Same as 43

51 NEGB    Inherent  2       1       Same as 50
52 COMB    Inherent  2       1       Same as 53

5b DECB    Inherent  2       1       Same as 5a

61 NEG     Indexed   6+      2+      Same as 60 - not tested
62 COM     Indexed   6+      2+      Same as 63 - not tested

71 NEG     Extended  7       3       Same as 70 - not tested
72 COM     Extended  7       3       Same as 73 - not tested

87 ??
8f ??

c7 ??
cd ??
cf ??


Une autre liste ici: http://www.mdfsnet.f9.co.uk/Docs/Comp/6809/OpList

Il parait que le 6309 a des trucs super sympa aussi (des registres caches accessible uniquement par TFR, etc). Il faudrait quand meme verifier que les FF que l'on recupere d'un TFR illegal ne viennent pas d'un registre cache des fois.. Ca serait rigolo.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 30 Aoû 2006, 19:24 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Tomix3 a écrit:
$14: (1 cycle) plantage pur et dur du 6809
$15: (1 cycle) idem que $14

C'est pas la fameuse instruction HCF (Halt & Catch Fire) qui etait utilise sur le 6809 pour tester le bus d'addresse et son decodage par les chips externes au cpu (http://www.answers.com/topic/halt-and-catch-fire).

Il faudrait placer un oscillo ou un espionneur de bus en sorti d'un vrai 6809 pour s'en assurer.

sam.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 31 Aoû 2006, 16:30 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Prehisto a écrit:
jasz a écrit:
Si j'ai bonne mémoire on peut raccourcir
Code:
               SUBD     2,S
               BCC        DIV1
               ADDD    2,S


Non, je ne pense pas, Jasz.]

En fait j'avais pensé en tenant compte que D=>Divis et X=>Divid à:

Code:
               CMPD     ,S
               BLT        DIV1
               SUBD    ,S


Ce qui aurait permis de se passer du STD à la fin de la routine.

Prehisto a écrit:
Attention! La valeur contenue dans D se retrouve dans X au dépilement.

Oui, je n'avais pas fait attention au départ et après test ma formule fonctionne mais X se retrouve avec $FFFF dans une division sans reste.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 31 Aoû 2006, 17:47 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
jasz a écrit:
En fait j'avais pensé en tenant compte que D=>Divis et X=>Divid à:

Code:
               CMPD     ,S
               BLT        DIV1
               SUBD    ,S


Ce qui aurait permis de se passer du STD à la fin de la routine.


... sauf que CMPD nécessite malheureusement 1 octet (et quelques cycles) de plus que SUBD.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 31 Aoû 2006, 18:08 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Je pense que nous pouvons reprendre notre petite joute, si tu as d'autres idées...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 31 Aoû 2006, 21:06 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Une pas très facile, mais:
- Je l'ai spreadée un peu partout
- J'avoue l'avoir aussi tirée d'un programme de jeu
C'est pourquoi je ne ferai pas trop attendre pour la réponse.

Code:
          CMPA        #10
          BLO          HEX
          ADDA       #7
HEX   ADDA       #$30


Il s'agit donc de convertir toute valeur hexadécimale comprise de 0 à 15 en chiffre exprimé en ASCII ('0'-'9'/'A'-'F').
On gagne 2 octets et quelques cycles.

Petit indice: On opère bien avec l'accumulateur A et non l'accumulateur B, car une des instructions utilisées n'existe pas pour B.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 01 Sep 2006, 09:13 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Prehisto a écrit:
Code:
          CMPA        #10
          BLO          HEX
          ADDA       #7
HEX   ADDA       #$30


Il y a les ajustement decimaux pour les histoires de conversion hexa/decimal: "DAA".. mais la je ne pense pas que ce soit le truc.. peut-etre que l'utilisation du half-carry en revanche...
Code:
    ADDA #$30 
    <banchement si H=0 vers L2>
    ADDA #7
L1: suite...

Mais bon j'suis meme pas sur qu'il existe un branchement suivant le half-carry. Sinon il y a le coup du tableau tout con:
Code:
TAB FCB /0123456789ABCDEF/
    LEAX TAB,PCR
    LDA  A,X

mais bon ca doit pas etre ca.

sam (qui cherche...)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 111 messages ]  Aller à la page Précédente  1 ... 3, 4, 5, 6, 7, 8  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 33 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com