Logicielsmoto.com
http://www.logicielsmoto.com/phpBB/

C6809 version 0.81
http://www.logicielsmoto.com/phpBB/viewtopic.php?f=10&t=359
Page 1 sur 1

Auteur:  Prehisto [ 09 Mar 2010, 15:54 ]
Sujet du message:  C6809 version 0.81

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

Auteur:  Samuel Devulder [ 10 Mar 2010, 00:13 ]
Sujet du message:  Re: C6809 version 0.81

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).

Auteur:  megar [ 10 Mar 2010, 08:23 ]
Sujet du message: 

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.

Auteur:  Prehisto [ 10 Mar 2010, 08:59 ]
Sujet du message:  Re: C6809 version 0.81

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 :)

Auteur:  megar [ 10 Mar 2010, 10:16 ]
Sujet du message: 

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

Auteur:  Prehisto [ 10 Mar 2010, 10:53 ]
Sujet du message: 

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.

Auteur:  Prehisto [ 10 Mar 2010, 11:42 ]
Sujet du message: 

Version 0.82 en attente (nouveau topic)

Auteur:  megar [ 10 Mar 2010, 11:45 ]
Sujet du message: 

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 ?

Auteur:  Prehisto [ 10 Mar 2010, 11:59 ]
Sujet du message: 

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).

Auteur:  megar [ 10 Mar 2010, 12:20 ]
Sujet du message: 

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 !

Auteur:  Prehisto [ 10 Mar 2010, 12:33 ]
Sujet du message: 

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

Auteur:  megar [ 10 Mar 2010, 13:24 ]
Sujet du message: 

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.

Auteur:  Prehisto [ 10 Mar 2010, 13:49 ]
Sujet du message: 

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.

Auteur:  megar [ 10 Mar 2010, 17:04 ]
Sujet du message: 

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 !

Page 1 sur 1 Heures au format UTC + 1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/