Logicielsmoto.com

Nous sommes le 14 Déc 2019, 01:47

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 104 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6, 7  Suivante
Auteur Message
 Sujet du message:
MessagePosté: 28 Aoû 2006, 19:48 
Hors ligne

Inscription: 27 Avr 2006, 09:04
Messages: 101
@Prehisto
Pour ceux qui ne voient pas pour la racine carree, vous pouvez essayer une routine de division 8 et 16 bits.
Genre:
- pour la division 8 bits: faire A/B avec le resultat qq part et le modulo autre part. Registres au choix.
- pour la division 16 bits: Faire D/Y avec resultat et modulo dans vos registres au choix.

Sinon pour la racine carree, j'apporte le meme genre de precision:
- pour la racine 8 bits: Calculer la racine entiere de la valeur contenue dans B. Registre destination comme ca vous arrange.
- pour la racine 16 bits: Calculer la racine entiere de D...

a+
Seg.


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

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
Daniel Coulom a écrit:
Prehisto a écrit:
LEAY ,Y (comme LEAX ,X) positionne non seulement le bit Z mais aussi le bit N de CC, ce que les tables des instructions 6809 ne stipulent pas.

Merci pour cette précieuse information. Il en sera tenu compte dans la prochaine version de l'émulateur dcmoto ;)

Daniel


Si tu as du temps libre un de ces jours, tu peux même tester les codes machine non officiels, voir quel effet ils produisent et les implémenter. Des fois qu'un programmeur malicieux se risque à les utiliser...

Au fait, j'ai parlé dans un topique du 6309. Nous n'en avons pas sous la main, mais il serait possible de l'émuler sous... émulateur.

Mis à part ça, quelque chose qui ne prendrait pas trop de temps (il suffirait de savoir où intercepter ou bien changer un peu le code dans la ROM "Exploitation de fichiers") serait d'initialiser automatiquement la date du jour à chaque retour à la page de menu des TO.


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

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
Tomix3 a écrit:
@Prehisto
Pour ceux qui ne voient pas pour la racine carree, vous pouvez essayer une routine de division 8 et 16 bits.
Genre:
- pour la division 8 bits: faire A/B avec le resultat qq part et le modulo autre part. Registres au choix.
- pour la division 16 bits: Faire D/Y avec resultat et modulo dans vos registres au choix.

Sinon pour la racine carree, j'apporte le meme genre de precision:
- pour la racine 8 bits: Calculer la racine entiere de la valeur contenue dans B. Registre destination comme ca vous arrange.
- pour la racine 16 bits: Calculer la racine entiere de D...

a+
Seg.


Il est clair que ce qui échappe au commun des thomsonistes est loin d'être un obstacle pour toi. Ce que je veux dire, c'est que toute cette démonstration sur la racine carrée est passée au-dessus de beaucoup de gens ici, comme un avion qui vole tellement haut qu'on ne l'entend même pas passer le mur du son :)

Le titre du topique est "Gagner des cycles machine" ("machine" qui aurait dû rester au singulier, mais bon peu importe...). Le but du jeu est de présenter un programme assez court formulé en assembleur 6809 qui puisse être optimisé en nombre de cycles et/ou en occupation mémoire. Il s'agit simplement d'une joute amicale, ne nous brusque pas :)


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

Inscription: 27 Avr 2006, 09:04
Messages: 101
@Prehisto
Euh... :) Tu exageres un peu la, j'ai remarque quelques developpeurs inities au 6809 sur le forum. Et puis, une routine de division, c'est relativement basic.
Pour t'en convaincre, voici la mienne:
Code:
****** Division 8 bits ******
****** A:Divid B:Divis ******
DIVIS8  PSHS    B,X
            CLRB
            LDX     #8
DIVI81  ROLA
            ROLB
            SUBB    ,S
            BCC     DIVI82
            ADDB    ,S
DIVI82  LEAX    -1,X
            BNE     DIVI81
            ROLA
            COMA
            LEAS    1,S
            PULS    X,PC
****** Res:A    Rest:B ******

Bon, cette routine date d'il y a 15 ans au moins.

La routine de racine carree, je l'avais faite pour faire du trace de cercle a l'epoque.

a+
Seg.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 28 Aoû 2006, 22:28 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 592
Localisation: Provence (France)
Prehisto a écrit:
Si tu as du temps libre un de ces jours, tu peux même tester les codes machine non officiels, voir quel effet ils produisent et les implémenter. Des fois qu'un programmeur malicieux se risque à les utiliser...

J'avais commencé, il y a quelques années, en essayant de compléter une liste d'instructions non documentées trouvée sur internet. J'en ai testé quelques autres. La plupart (mais pas toutes) réagissent comme une autre instruction valide. Exemple le fameux 01, utilisé par William Hennebois dans la protection des cassettes MO d'infogrames, est un BRN. C'est la seule actuellement émulée par dcmoto.
Pour faire un travail sérieux, c'est à dire déterminer la fonction précise de l'instruction dans tous les cas de figure, il faut malheureusement beaucoup de temps. Après avoir testé deux ou trois codes j'ai abandonné, comme beaucoup d'autres. Il faudrait se partager le travail pour arriver à tout découvrir.
Et alors j'aurais un autre problème : dans dcmoto j'utilise des instructions invalides pour émuler les accès cassette et disquette, et lire la position de la souris. S'il n'y a plus un seul code opération invalide, je suis coincé :L ;)

Prehisto a écrit:
Au fait, j'ai parlé dans un topique du 6309. Nous n'en avons pas sous la main, mais il serait possible de l'émuler sous... émulateur.

L'année dernière j'ai écrit un émulateur 6803 pour l'émulateur DCAlice. J'ai pu utiliser en grande partie l'émulateur 6809 de dcmoto, si bien que tout a été écrit et testé en moins de 2 jours. Pour le 6309 ce n'est peut-être pas plus difficile.

Prehisto a écrit:
Mis à part ça, quelque chose qui ne prendrait pas trop de temps (il suffirait de savoir où intercepter ou bien changer un peu le code dans la ROM "Exploitation de fichiers") serait d'initialiser automatiquement la date du jour à chaque retour à la page de menu des TO.

A priori ça paraît effectivement très simple. Reste à trouver le temps de le faire ;)
Et puisqu'on parle d'améliorations de l'émulateur, je donne une petite info qui devrait plaire à Yoann : le désassembleur de dcmoto a été réécrit pour donner le nombre de cycles. Il reste à le tester. A noter toutefois un problème insoluble : le nombre de cycles des branchements longs dépend du contexte : si le branchement a lieu ou non, le nombre de cycles est différent. Au désassemblage on ne peut pas savoir. Je considérerai que le branchement n'a pas lieu. Il y a un problème analogue pour le RTI, dont la longueur varie en fonction du nombre de registres à dépiler.

Daniel


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 28 Aoû 2006, 23:04 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 205
Localisation: Planete Zorg (31)
Tomix3 a écrit:
Pour t'en convaincre, voici la mienne:

Il ya plus simple il me semble :tourne:

En utilisant ASL ;)


Dernière édition par jasz le 28 Aoû 2006, 23:05, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 28 Aoû 2006, 23:05 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
Daniel Coulom a écrit:
S'il n'y a plus un seul code opération invalide, je suis coincé :L ;)


Problème :L

Daniel Coulom a écrit:
Prehisto a écrit:
Au fait, j'ai parlé dans un topique du 6309. Nous n'en avons pas sous la main, mais il serait possible de l'émuler sous... émulateur.

[...] Pour le 6309 ce n'est peut-être pas plus difficile.


Tu n'aurais pas à réécrire ton émulateur, mais simplement à le compléter ;) 6309 = 6809E++

Daniel Coulom a écrit:
A noter toutefois un problème insoluble : le nombre de cycles des branchements longs dépend du contexte : si le branchement a lieu ou non, le nombre de cycles est différent. Au désassemblage on ne peut pas savoir. Je considérerai que le branchement n'a pas lieu.


Moi, je pencherais plutôt pour un branchement systématique, rapport à l'utilisation dans une boucle. Mais rien ne t'empèche d'écrire quelque chose comme "6/5".

Daniel Coulom a écrit:
Il y a un problème analogue pour le RTI, dont la longueur varie en fonction du nombre de registres à dépiler.


La seule façon de le savoir est de tracer le programme....


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 28 Aoû 2006, 23:22 
Hors ligne

Inscription: 27 Avr 2006, 09:04
Messages: 101
@Daniel
Je m'immiscie dans votre conversation puisque je suis l'auteur d'un emulateur Thomson sur Amiga...
A propos des instructions non documentees, je me les suis toutes tapees dans mon emulateur et elles n'ont rien de complique puisqu'elles representent pour la plupart des instructions qui existent deja.
Pour bien comprendre ce qu'elles representent, il faut classer les instructions sous forme de tableau.
Exemple, en instruction $40, on a le NEGA. Les instructions 41 et 42 ne sont pas documentees mais sont pourtant aussi des NEGA. Idem pour NEGB etc etc etc, quels que soient les modes d'adressages.

Voici la liste:
$01,$02: NEG direct
$05: LSR direct
$0B: DEC direct
$41,$42: NEGA
$45: LSRA
$4B: DECA
$4E: CLRA
$51,$52: NEGB
$55: LSRB
$5E: CLRB
$61,$62: NEG indexe
$65: LSR indexe
$6B: DEC indexe
$71,$72: NEG etendu
$75: LSR etendu
$7B: DEC etendu

Il y a des exceptions pour les codes $14, $15, $18, $1B, $38, $3E, $87, $8F, $C7, $CD et $CF:
$14: (1 cycle) plantage pur et dur du 6809
$15: (1 cycle) idem que $14
$18: (3 cycles) inconnu
$1C: (2 cycles) inconnu
$38: (4 cycles) ressemble a un ANDCC ou un CWAI
$3E: (1 cycle) Reset
$87: (2 cycles) inconnu
$8F: (3 cycles) inconnu
$C7: (2 cycles) inconnu
$CD: (1 cycle) idem que $14
$CF: (1 cycle) idem que $14

Bon en fait, y a pas que des instructions non documentees, y a aussi des modes d'adressage non documentes, mais on voit ca demain car la je vais faire dodo...

Bonne nuit,

Seg.


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

Inscription: 27 Avr 2006, 09:04
Messages: 101
Ah oui, j'oubliais... Les instructions prefixees par un $10 ou $11, qui ont un 2eme code qui ne correspond a rien, pompent 1 cycle et le PC ne s'incremente que d'une adresse.

Allez, bonne nuit

Seg.


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

Inscription: 27 Avr 2006, 09:04
Messages: 101
Zut, j'ai oublie $5B dans la liste: DECB
Je crois que c'est bon pour cette nuit :)

a+
Seg.


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

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
Tomix3 a écrit:
Tu exageres un peu la, j'ai remarque quelques developpeurs inities au 6809 sur le forum.

Peut-être pas tous autant que toi...

Tomix3 a écrit:
Et puis, une routine de division, c'est relativement basic.

Evidemment, il faut savoir qu'une division, c'est une soustraction et un décalage. Mais il faut avoir fait un minimum de maths pour ça.

Tomix3 a écrit:
Pour t'en convaincre, voici la mienne:

Ta routine est effectivement très convaincante. Et très optimisée aussi.

Tomix3 a écrit:
Bon, cette routine date d'il y a 15 ans au moins.

Merci pour le coup de grâce :D


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 29 Aoû 2006, 00:23 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 443
Je propose a l'un d'entre vous de creer un topic "Le 6809 et les maths" par exemple ;) Ce genre de routine est en effet tres pratique/utile, et trouverait sa place dans un topic dedie ;)


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

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
... et commentez vos programmes, de grâce. Et ayez pour objectif que même quelqu'un qui ne connaît que le Basic puisse comprendre votre développement.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 29 Aoû 2006, 07:34 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 592
Localisation: Provence (France)
Tomix3 a écrit:
Exemple, en instruction $40, on a le NEGA. Les instructions 41 et 42 ne sont pas documentees mais sont pourtant aussi des NEGA. Idem pour NEGB etc etc etc, quels que soient les modes d'adressages.

C'est exactement ce que j'avais constaté. Mais je ne les aies pas toutes testées. Il faudrait ouvrir une liste que chacun pourrait compléter en fonction de ses découvertes. Une autre solution serait de mettre en "Open source" mon émulateur 6809. Je l'envisage depuis longtemps, et je vais probablement le faire à l'occasion de la sortie de mon nouveau projet : DCMO5-opengl, un émulateur MO5 "portable" sous Windows/Linux/MacOS/etc., à base de SDL+OpenGL.

Daniel


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

Inscription: 27 Avr 2006, 09:04
Messages: 101
@Daniel
En fait, je t'ai listé toutes les instructions non ducumentees. Je les ai toute verifie et il n'y en a pas d'autres.
Avec ca, tu couvres tous les codes qui ne correspondent a rien dans le jeu d'instructions officiel.
La ou tu peux decouvrir quelque chose, c'est seulement dans la categorie "exception". Apres quelques tests, je n'ai pas reussi a decouvrir a quoi elles correspondaient. Ceci dit, elles ont l'air d'avoir une fonction quand meme (sauf pour les instructions qui plantent le cpu). J'ai aussi pu calculer leur nombre de cycle et leur taille.

Dans les modes d'adressages indexes, il y a aussi des modes non documentes. Je posterai la liste ce soir car je n'ai pas au taf la liste de ces modes.

a+
Seg.


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

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


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