Logicielsmoto.com

Nous sommes le 28 Mar 2024, 14:32

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 
Auteur Message
 Sujet du message: C6809 version 0.81
MessagePosté: 09 Mar 2010, 15:54 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Bon ben finalement, ce sera la version 0.81, toujours à l'adresse : http://www.pulsdemos.com/c6809.html.

Un gros bug a été corrigé : le buffer de la ligne d'assemblage n'était pas assez grand, ce qui faisait que sa mise à jour empiétait sur le contenu d'autres registres (un cas de "software failure"). Mais c'est réparé :D


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: C6809 version 0.81
MessagePosté: 10 Mar 2010, 00:13 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Il y a une typo dans les commentaires!
avant a écrit:
* Analyse et copie d'une ligne du source pour scan/assemblage
après a écrit:
* Analyse et copie dg'une ligne du source pour scan/assemblage

S'il n'y a que ca, c'est pas grave. Mais j'ai vu ceci:
Code:
 for (i=(int)strlen(argv[argp])-1; i>=0; i--)
             if (argv[argp][i] < 0x20)
                 argv[argp][i] = '\0';
             else break;
et si je ne m'abuse, on écrit dans une chaine argv[] venant de l'environnement exterieur. Sur certains OS les chaines sont dans une sections READONLY et ca bloquerait à ce niveau là si un argument contient un caractère ascii plus petit que ' ' (space, 0x20).

Pour faire propre il faudrait recopier argv[][] dans une mémoire propre au programme (malloc). Perso je ferais un truc dans le genre:
Code:
{
    char **my_argv = malloc(sizeof(char*)*argc);
    int i;
    for(i=0; i<argc; ++i) {
       unsigned char *src, *dst;
       my_argv[i] = dst = malloc(strlen(src = argv[i])+1);
       while(*src>=32u) *dst++ = *src++;
       *dst = '\0';
    }
    argv = my_argv;
}
(bon ok c'est crado, il manque des tests de malloc qui échouent, mais ca devrait marcher).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 08:23 
Hors ligne

Inscription: 28 Jan 2007, 14:00
Messages: 33
Merci pour cet assembleur.
J'aurais bientôt l'occasion de m'en servir...
J'espère qu'il me fera enfin aimer programmer en 6809, là où a09.exe m'en a dégouté, à cause de ses nombreux bugs !

Je vous ferais part de mes commentaires.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: C6809 version 0.81
MessagePosté: 10 Mar 2010, 08:59 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Samuel Devulder a écrit:
(bon ok c'est crado, il manque des tests de malloc qui échouent, mais ca devrait marcher).

Pas aussi crado que ce que j'avais fait, à l'évidence. Mais bon, ça fonctionnait bien sur toutes mes plateformes. Il faut croire que les plateformes qui ne concluent pas les chaines argv (comme Linux) par un '\0' autorisent l'écriture, et que celles qui le font (comme Windows) l'interdisent. Je vais rectifier.

Ceci étant dit, je rappelle à nouveau à tous mes motivations à propos de C6809. Je n'ai écrit ce programme que dans le but de comprendre le fonctionnement d'assemblage d'un source ASM dans Assembler - et donc dans MacroAssembler -, mon but caché étant de réécrire entièrement MacroAssembler et l'optimiser au maximum pour ajouter toutes les options que je voulais tout en restant sur une seule banque, ainsi que de diffuser librement les sources ASM pour maintenance. De fil en aiguille, c'est devenu un programme diffusable. Mais ça reste pour l'instant à l'état de prototype, étant momentanément occupé par d'autres réalisations.

Je vais essayer de trouver du temps pour m'en occuper plus intensivement, ainsi que de MacroAssembler, puisque ce programme semble avoir plus de succès que prévu :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 10:16 
Hors ligne

Inscription: 28 Jan 2007, 14:00
Messages: 33
Alors, j'ai juste regardé vite fait. J'essaie d'assembler un de mes sources existants que je compilais avec a09 (avec des FCB manuels pour les bugs de saut).

Quelques remarques:
- Les commentaires doivent commencer par "*" et durent jusqu'à la fin de la ligne.
- Les labels doivent être le premier caractère de la ligne et ne doivent pas être suffixés par ":"
- Le source doit commencer par (main)FILENAME.EXT
- les options -c -bl -bd sont un mystère pour moi (probablement parce que je générais les fichiers .bin directement avec des FCB)... Enfin je vais trouver je pense.

Questions:
- intérêt de mettre un filename dans (main) ?
- Y a-t-il un opérateur de décalage binaire ? Je l'utilise ici:
Code:
LDA   #LOADADDR>>8
SETDP   *>>8


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 10:53 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
megar a écrit:
Alors, j'ai juste regardé vite fait. J'essaie d'assembler un de mes sources existants que je compilais avec a09 (avec des FCB manuels pour les bugs de saut).

Quelques remarques:
- Les commentaires doivent commencer par "*" et durent jusqu'à la fin de la ligne.
- Les labels doivent être le premier caractère de la ligne et ne doivent pas être suffixés par ":"

... comme Assembler ou MacroAssembler :) Et c'est le but : utiliser la même syntaxe, pour même transférer les sources crées avec C6809 en fichiers Thomson ASM.

megar a écrit:
- les options -c -bl -bd sont un mystère pour moi (probablement parce que je générais les fichiers .bin directement avec des FCB)... Enfin je vais trouver je pense.

Ce sont des options. Tu as le temps pour les découvrir.

megar a écrit:
Questions:
- intérêt de mettre un filename dans (main) ?

Si tu demandes la création des sources ASM, ce nom de fichier sera utilisé comme nom de fichier du source ASM.


megar a écrit:
- Y a-t-il un opérateur de décalage binaire ? Je l'utilise ici:
Code:
LDA   #LOADADDR>>8
SETDP   *>>8

Comme pour Assembler et MacroAssembler : "<" pour les décalages à gauche, "<-" pour les décalages à droite.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 11:42 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Version 0.82 en attente (nouveau topic)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 11:45 
Hors ligne

Inscription: 28 Jan 2007, 14:00
Messages: 33
Merci pour ta réponse rapide !! C'est très cool de ta part !


Ah. Et il y a une doc quelque part pour ces logiciels ?




Autres questions:
--------
Est-ce normal que :
Code:
mask1   FCB   $80, $40, $20, $10, $08, $04, $02, $01
mask2   FCB   $80,$40,$20,$10,$08,$04,$02,$01

mask1 renvoie "Missing Operand"
mask2 fonctionne.

C'est un bug ?
De la même maniere LDA #(1+2) fonctionne, mais pas LDA #(1 + 2)


--------
Quel est le moyen le plus élégant d'écrire
Code:
SUBB #'0'





--------
chars FCB "ABCDEF"
-> missing operand
comment faire ? (normal ou bug) ?
Je ne veux pas utiliser FCS "ABCDEF" parce que cette directive rajoute un \0 à la fin de la chaine.





--------
Comment écrire :
Code:
mess   FCS "AAAAaaaaaaaaaaAAAAAbbbbbbbbbbAAAAAAAAAA12345678901234567890123456789"


La chaine semble trop longue, j'ai un "Missing information". Normal ou bug ? Je suis obligé de couper en deux ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 11:59 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
megar a écrit:
Merci pour ta réponse rapide !! C'est très cool de ta part !

J'ai même eu le temps de préparer la version 0.82 de C6809 et de la mettre en ligne :)

megar a écrit:
Ah. Et il y a une doc quelque part pour ces logiciels ?

Oui, la doc d'Assembler ou de MacroAssembler.

megar a écrit:
Est-ce normal que :
Code:
mask1   FCB   $80, $40, $20, $10, $08, $04, $02, $01
mask2   FCB   $80,$40,$20,$10,$08,$04,$02,$01

mask1 renvoie "Missing Operand"
mask2 fonctionne.

C'est un bug ?
De la même maniere LDA #(1+2) fonctionne, mais pas LDA #(1 + 2)

Evite les espaces entre les arguments.

megar a écrit:
Quel est le moyen le plus élégant d'écrire
Code:
SUBB #'0'

Code:
SUBB #'0

Une seule apostrophe, car deux apostrophes se rapporte à une donnée 16 bits.

megar a écrit:
chars FCB "ABCDEF"
-> missing operand
comment faire ? (normal ou bug) ?
Je ne veux pas utiliser FCS "ABCDEF" parce que cette directive rajoute un \0 à la fin de la chaine.

chars FCC "ABCDEF"

megar a écrit:
Comment écrire :
Code:
mess   FCS "AAAAaaaaaaaaaaAAAAAbbbbbbbbbbAAAAAAAAAA12345678901234567890123456789"


La chaine semble trop longue, j'ai un "Missing information". Normal ou bug ? Je suis obligé de couper en deux ?

Coupe !
40 caractères maximum pour chaque ligne de code (commentaires exclus).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 12:20 
Hors ligne

Inscription: 28 Jan 2007, 14:00
Messages: 33
Prehisto a écrit:
Oui, la doc d'Assembler ou de
MacroAssembler.


Bon, ben je vais essayer de trouver ça !
--> j'ai trouvé la doc ici : http://dcmoto.free.fr/prog/284/index.html

prehisto a écrit:
Evite les espaces entre les arguments.

Dommage... C'est plus lisible avec des espaces. Mais c'est pas grave.

prehisto a écrit:
Code:
SUBB #'0

Une seule apostrophe, car deux apostrophes se rapporte à une donnée 16 bits.

Merci !! J'aurais pas trouvé, et j'aurais mis $30, ce qui est quand même moins élégant !

prehisto a écrit:
chars FCC "ABCDEF"

Parfait, merci !


prehisto a écrit:
coupe !

Arg !!
Bon, je vais m'y faire. Après tout, si les bugs de sauts ne sont pas présents, c'est un sacrifice que je ferais.




Dernières questions :
Les instructions suivantes ne fonctionnent pas:
Code:
   LEAY   police,PC
   CLRD      *   A=0

j'ai Bad Operand et Expression Error.

Promis, après je t'embête plus !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 12:33 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
megar a écrit:
prehisto a écrit:
Evite les espaces entre les arguments.

Dommage... C'est plus lisible avec des espaces. Mais c'est pas grave.

Exigence d'Assembler.

megar a écrit:
prehisto a écrit:
coupe !

Arg !!
Bon, je vais m'y faire. Après tout, si les bugs de sauts ne sont pas présents, c'est un sacrifice que je ferais.

Fais toutes tes premières lignes en FCC et la dernière en FCS.

megar a écrit:
Dernières questions :
Les instructions suivantes ne fonctionnent pas:
Code:
   LEAY   police,PC
   CLRD      *   A=0

j'ai Bad Operand et Expression Error.


Code:
LEAY     police,PC

LEAY police,PCR

Code:
CLRD      *   A=0

CLRD n'existe pas en assembleur 6809. Ca doit correspondre à un CLRA/CLRB, ou à un LDD #0.

megar a écrit:
Promis, après je t'embête plus !

Mais continue à m'"embêter" autant que tu voudras. Je suis là pour ça :D


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 13:24 
Hors ligne

Inscription: 28 Jan 2007, 14:00
Messages: 33
Ayé !
Citation:
000000 Total Errors


Merci !

Je savais pas pour CLRD ! Effectivement, A09, traduisait par CLRA CLRB (2 octets, 4 cycles).
J'ai remplacé par LDA #0 (2 octets, 2 cycles !)
Je suis pas un pro, j'ai pas écrit grand chose en 6809. J'ai juste découvert le 6809 en ecrivant la RuizDemo.

Bon, maintenant que ca assemble, je vais regardé si tout est identique à la sortie de a09, et je vais enfin pouvoir enlever les bidouilles du genre
Code:
FCB   $30,$8c,masks-*-3   *   LEAX   masks,PCR


Merci Prehisto pour cet outil, et pour ton aide.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 13:49 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
megar a écrit:
Je savais pas pour CLRD ! Effectivement, A09, traduisait par CLRA CLRB (2 octets, 4 cycles).
J'ai remplacé par LDA #0 (2 octets, 2 cycles !)

CLRA fait même 1 octet/2 cycles : gain de place !

megar a écrit:
Je suis pas un pro,

On a quand même du mal à te croire :lol: La RuizDemo, c'était quand même du niveau bac Thomson +5.

megar a écrit:
j'ai pas écrit grand chose en 6809. J'ai juste découvert le 6809 en ecrivant la RuizDemo.

Et ce fut un départ fulgurant.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 10 Mar 2010, 17:04 
Hors ligne

Inscription: 28 Jan 2007, 14:00
Messages: 33
Merci c'est gentil.
Pourtant, tout ça ne représente pas beaucoup de code 6809. Il y a le dictionnaire du mini-jeux, aussi, que j'ai d'abord du coder à la main faute d'assembleur sur pc.

Après pour Ruiz, tout le travail a été fait en amont. Je compte ressortir les codes pour les expliquer, un de ces jours.

Grâce à c6809, j'ai enfin un vrai assembleur. a09 m'a dépanné, mais il était tellement truffé de bugs qu'il était désagréable de travailler avec. Donc de grands mercis !


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 19 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