Débuter en asm 6809E sur Thomson : petit récapitulatif

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Carl, Papy.G, fneck

Avatar du membre
6502man
Messages : 9009
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par 6502man » 24 févr. 2018 00:24

Le plus pratique serait encore de pouvoir assembler directement dans l'émulateur un fichier sources ASM :D

Après c'est pas du C, mais c'est un langage comme un autre c'est vite appris, la seule difficulté c'est de s'adapter à la machine cible (adresse ROMS, ecran, I/O,...) :wink:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

__sam__
Messages : 4081
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par __sam__ » 24 févr. 2018 00:38

L'Assembleur, qui semble être le roi des langages pour les machines rétro, ne séduit plus la génération actuelle de dev.
...et c'est pourquoi la génération actuelle de dev produit de la <censuré> :)

Trèves de plaisanteries: on ne programme pas sur thomson comme on programme en 2018. Si tu te contentes du basic, et même du C, tu auras un programme juste 10x à 20x trop lent. Et je ne parle pas de bibliothèques comme BOOST où la ce sera non seulement trop lent, mais aussi juste impossible à faire tenir en mémoire.

Le 6809 est lent, très lent, très très lent par rapport à un Z80 sur les opérations venant d'un compilo C. A titre d'exemple, le simple échange entre les deux accumulateurs 8 bits prends 8 cycles (et on ne passe pas par la mémoire, c'est du registre vers registre). Dans 1ms, tu ne pourras pas échanger plus de 125 fois deux registres (tu peux diviser par 4 ou 8 si tu devais échanger un int32). Un simple algo de tri d'entiers 32bits en C prendra des plombes sur 6809, et une gestion de sprites en C est simplement trop lente pour être sérieusement exploitable. Un programme ainsi produit à partir d'un compilo "C" ne sera alors exploitable que sur émulateur en mode turbo x10, mais jamais sur une vraie machine. C'est triste, mais c'est ainsi. Le C ne te permetra sur thomson pas de faire tellement mieux que du basic. Et dans ce cas, autant utiliser le basic n'est-ce pas?

De toute façon le 6809 est bien trop lent pour les langages de haut niveau actuels, et c'est cela plus que le manque d'IDE qui rebute les jeunes qui ne savent pas coder avec l'efficacité en tête. Il y a eu plein de tentatives d'utiliser GCC6809, mais elles ont toutes échouées à devenir sérieusement exploitable. Il y a de vraies raisons à cela. Le thomson est juste trop lent et aussi trop limité en mémoire. Un code C compilé est très vite trop gros pour la petite mémoire des thomson et asthmatique à l'usage.

En outre, sur thomson tu ne peux pas, contrairement au C64 ou à l'Amstrad, te reposer sur du HW spécialisé pour alléger le travail du CPU et le rendre accessible à du code C. Non sur thomson, une gestion de sprite ou de son utilise 100% du cpu et si le code n'est pas optimisé à la main, tu n'arrives à rien. Au bout de quelques semaines le projet ne séduit plus son auteur et stoppe. Bref, c'est plus les pauvres performances des thomson qui rebuttent les développeurs plutôt que l'absence d'un environnement de dev "tip top". Il ne faut pas inverser la cause et les effets...
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Daniel
Messages : 10581
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Daniel » 24 févr. 2018 09:07

Un ordinateur actuel a un processeur à quatre coeurs 64 bits dix millions de fois plus rapide qu'un 6809 à 1MHz.
Sa ram est un milliard de fois plus grande que celle d'un MO5.

Baptiste veut programmer le 6809 avec des outils conçus pour les ordinateurs d'aujourd'hui. Cherchez l'erreur.

Nous te le disons depuis le début, Baptiste, tu fais fausse route. On ne programme pas les ordinateurs Thomson en Basic pour faire des jeux animés. On n'utilise pas davantage des langages de programmation modernes : même le C, pourtant assez proche du langage machine, n'est pas conseillé.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
Mokona
Messages : 357
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Mokona » 24 févr. 2018 09:44

Mais il me semble que c'est la première fois que c'est expliqué avec des arguments techniques précis et non un lapidaire "les jeunes ne savent pas coder".

(c'est la première fois que je le lis en tout cas, mais je n'ai pas lu l'intégralité du forum depuis sa création :) )

Et ça me donne bien envie de me tourner vers ce 6809.

Et il n'y a pas eu dans l'histoire des Thomson de langage dédié un peu plus haut niveau qui ait pu fonctionner ? On a vu dans d'autres threads que Forth sans assembleur n'était pas trop à la hauteur non plus en terme de perfs, et Forth n'est déjà pas bien "haut".

Avatar du membre
Carl
Modérateur
Messages : 10158
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Carl » 24 févr. 2018 09:53

Fool, je crois me souvenir d'un certain sm#gu9...que les années passent vite...:roll:

Carl

Daniel
Messages : 10581
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Daniel » 24 févr. 2018 10:17

Mokona a écrit :
24 févr. 2018 09:44
Et il n'y a pas eu dans l'histoire des Thomson de langage dédié un peu plus haut niveau qui ait pu fonctionner ?
Forth est relativement rapide, mais ne vaudra jamais le langage machine, et sa logique n'est pas évidente à maîtriser.

En désassemblant les logiciels Thomson, j'ai constaté que certains avaient probablement été compilés à partir d'un langage de haut niveau, car le langage machine ne ressemble pas à du code produit directement par un assembleur. C'est vrai en particulier pour les softs TO8 les plus récents, mais plus pour les logiciels de bureautique que pour les jeux.

Par ailleurs, il est connu qu'Infogrames avait un ordinateur MicroVax pour développer des jeux Thomson, et il est possible que certains jeux aient été compilés à partir de sources en C ou langage similaire. Mais c'est la minorité. En désassemblant on reconnaît bien dans la plupart des jeux le style des programmeurs en assembleur, avec plein d'optimisations subtiles trop complexes pour un compilateur.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
6502man
Messages : 9009
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par 6502man » 24 févr. 2018 12:03

Sur Thomson (et bien d'autres systèmes) il y a possibilité pour un débutant d'apprendre l'assembleur sans que cela soit trop difficile, je pense aux appels au moniteur système !

Ca permet à moindre frais de commencer à afficher du texte à l'écran, jouer des notes de musiques, etc etc ...

Et c'est très simple à mettre en oeuvre il suffit d'une instruction CALL $xxxx, bien entendu pour la plupart il faut des paramètres mais au pires 2 ou 3 lignes d'assignation de registres ;)

La doc du moniteur est disponible il me semble !
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

__sam__
Messages : 4081
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par __sam__ » 24 févr. 2018 12:15

@6502man oui et il y a tout ca dans les cours ASM d'hebdogiciels dont j'ai donné le pointeur plus haut. Mais si pour un jeune coder un jeu revient à réutiliser un moteur et surtout faire une planche de sprite bien à lui, il ne sera jamais content sur Thomson.

... enfin presque. En effet, il y a CartoonMaker pour ca justement sur thomson. Je l'avais à l'époque en pensant faire des jeux avec ce moteur de sprite. Il m'aurait juste fallu l'appeller depuis le basic en ajoutant quelques lignes pour la logique des ennemis. Mais bon ca marche pas. Le point clef est "juste", non c'est pas "juste" simple: l'ergonomie est moche, il est lent à charger et en plus le rendu est archi moche en cas de color-clash. J'en suis vite revenu et je n'ai gardé de lui que la musique à la guitare pendant le chargement pour faire passer le temps.

Image
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Daniel
Messages : 10581
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Daniel » 24 févr. 2018 13:50

Au début de ma carrière d'informaticien, il y avait déjà la guerre entre les partisans de l'assembleur et des langages de haut niveau. A l'époque, dans les entreprises, c'étaient Fortran et Cobol.

J'ai eu la chance de travailler successivement dans deux services informatiques, l'un programmait en assembleur l'autre en Cobol. J'ai constaté qu'il n'y avait aucune différence de productivité entre l'un et l'autre, car les programmeurs en assembleur avaient développé des fonctions et des utilitaires qu'ils réutilisaient d'un programme à l'autre, et finalement ils allaient aussi vite que les programmeurs Cobol.

Toutefois, d'un programmeur à l'autre, la productivité et la qualité pouvaient aller de zéro à l'infini. Le jour et la nuit. Mais le langage utilisé importait peu, c'est le bonhomme qui faisait la différence. Et c'est pareil pour Thomson : même en Basic, entre un bon et un mauvais il n'y a pas photo. Aujourd'hui il manque les bases de fonctionnement des processeurs dans la formation des informaticiens. J'en ai rencontrés qui ne savent pas comment sont représentés les nombres (entiers signés, non signés, virgule flottante, etc.). Certains ne connaissent même pas l'hexadécimal et pour eux un dump mémoire est aussi difficile à déchiffrer qu'un texte en chinois.
Daniel
L'obstacle augmente mon ardeur.

Fool-DupleX
Messages : 993
Enregistré le : 06 avr. 2009 12:07

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Fool-DupleX » 24 févr. 2018 16:24

@Carl : aïe, heureusement que tu ne l'as pas répété trois fois, il t'emportait dans les ténèbres :lol:

Sur Thomson, on a quand même eu droit à quelques langages : BASIC, LOGO (il n'y a pas que la tortue, c'est un puissant langage de manipulation de données), LSE (Langage Sans Espoir selon moi), Forth, Pascal Base, Pascal UCSD et Prolog.

Le plus simple en natif : BASIC. Le plus performant et le plus "moderne" : Pascal. Pascal Base était pas mal, mais buggé. Il y a aussi une solution intermédiaire peu connue : BASIC + Speedy Wonder. On écrit son code en BASIC tout à fait normal et Speedy Wonder le compile. Je vous invite à l'essayer.

Sur des langages plus populaires comme le C, le très gros handicap du 6809, c'est son manque cruel de registres de travail. Lorsque j'avais bossé sur gcc6809 avec Eric Botcazou, une fois sur deux, le back-end de gcc jetait l'éponge à cause de ça. Du coup, ca oblige à faire des pirouettes qui prennent beaucoup de place en mémoire et sont lentes. Et on retombe sur le propos de Sam. Pour le reste, je suis d'accord avec Daniel et l'assembleur me semble in fine la meilleure solution. Il pourrait être intéressant de proposer une librairie de fonctions par contre, pour accélérer le dev.

CMOC semble écrit from scratch et avec le 6809 en ligne de mire. C'est le premier compilateur C (et peut-être bien le dernier) qui me semble intéressant pour les Thomson. Donc à suivre, à mon avis.

Ensuite, il y a les outils annexes. Je suis assez d'accord que c'est un peu de brique et de broc, surtout pour transférer les données. Daniel nous ventera sa solution à base de carte SD, mais pour le reste ?

Récemment, Exocet nous a montré ce qu'il est possible de faire avec Grafx2 et ça me conforte dans l'idée qu'un outil pratique et confortable c'est bien, mais avoir du talent, c'est mieux. Et là, je rejoins le propos de Daniel !

Pour le son, je crois que ça se passe de commentaire, mais je suis persuadé qu'il y encore énormément à faire de ce côté-là.

Et pour reboucler sur le propos de 6502man, je rappelle, comme je le fais chaque fois qu'on me demande comment débuter, l'excellent et très progressif livre "Passez facilement du BASIC au langage machine". Oui, un LIVRE ! :lol:

hlide
Messages : 425
Enregistré le : 29 nov. 2017 10:23

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par hlide » 25 févr. 2018 21:03

Daniel a écrit :
24 févr. 2018 10:17
En désassemblant on reconnaît bien dans la plupart des jeux le style des programmeurs en assembleur, avec plein d'optimisations subtiles trop complexes pour un compilateur.
En même temps, les compilateurs de cette époque n'étaient pas aussi évolués que de nos jours. Avec l'optimisation global du programme qui réécrit tout le programme avec en option la possibilité d'utiliser le résultat du profilage, ce n'est pas l'assembliste humain qui saura le faire - surtout avec les ordinateurs modernes.
Modifié en dernier par hlide le 25 févr. 2018 21:15, modifié 1 fois.

hlide
Messages : 425
Enregistré le : 29 nov. 2017 10:23

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par hlide » 25 févr. 2018 21:11

Daniel a écrit :
24 févr. 2018 13:50
Aujourd'hui il manque les bases de fonctionnement des processeurs dans la formation des informaticiens. J'en ai rencontrés qui ne savent pas comment sont représentés les nombres (entiers signés, non signés, virgule flottante, etc.). Certains ne connaissent même pas l'hexadécimal et pour eux un dump mémoire est aussi difficile à déchiffrer qu'un texte en chinois.
Ca, c'est très vrai. Ils ne connaissent même pas ce que c'est une pile, alors ne parlons pas des registres. Quand ils déboguent sous Visual C++, ils se demandent comment une valeur d'une variable locale n'est pas accessible sous leur souris. Ben ouais, la valeur est dans un registre à cet endroit du code natif que représente ta ligne de code C++. Tant que ça ne passe pas dans la pile, tu ne peux la voir - c'est quoi la pile ? - ...

Baptiste
Messages : 98
Enregistré le : 11 mars 2013 15:17
Localisation : Vernouillet (78)

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Baptiste » 26 févr. 2018 09:38

6502man a écrit :
24 févr. 2018 00:24
Le plus pratique serait encore de pouvoir assembler directement dans l'émulateur un fichier sources ASM :D

Après c'est pas du C, mais c'est un langage comme un autre c'est vite appris, la seule difficulté c'est de s'adapter à la machine cible (adresse ROMS, ecran, I/O,...) :wink:
Oui, je suis d'accord. Développer en assembleur, pourquoi pas, mais au moins avec un assembleur intégré à l'émulateur. Comme pour WinAPE ou WinCPC. L'assembleur du Z80, je crois que s'il n'y avait pas eu ce type de fonctionnalité sur l'émulateur, je ne m'y serai jamais approché.

De même, peut-on exécuter DCMOTO en ligne de commande avec une configuration particulière et une K7 ou une image disquette précise ? Si oui, quels sont les paramètres a passer ?
Et pour FDUTILS ? Existe t-il un moyen de créer une disquette en ligne de commande en lui passant des arguments ?

Ensuite, pourquoi n'existe t-il pas une version comme FDUTILS mais pour les K7 ? Aujourd'hui, pour passer un fichier BASIC dans mon fichier K7, je dois utiliser txt2k7.exe sous DOSBOX. Pas vraiment pratique...

Si déjà on avait le moyen de se simplifier la création de nos support pour ému, ce serait déjà très bien.
Rien ne sert de courir, en plus tu risques de tomber.

Avatar du membre
Mokona
Messages : 357
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Mokona » 26 févr. 2018 10:20

hlide a écrit :
25 févr. 2018 21:11
Quand ils déboguent sous Visual C++, ils se demandent comment une valeur d'une variable locale n'est pas accessible sous leur souris. Ben ouais, la valeur est dans un registre à cet endroit du code natif que représente ta ligne de code C++. Tant que ça ne passe pas dans la pile, tu ne peux la voir - c'est quoi la pile ? - ...
Ça, si Visual ne le fait pas, c'est entièrement la faute de Visual. Clion (dont le debuggeur n'est qu'une vue graphique de gdb) affiche très bien les valeurs mêmes locales. Il n'y a même pas besoin de toucher à la souris, les valeurs sont visualisées à la volée à côté de leurs assignations, directement dans l'affichage du code source.

Mais c'est vrai que Visual a souvent du mal à retrouver la trace des valeurs de symboles dès que le code est un peu trop optimisé (pas encore essayé avec VS2017 s'il y a des améliorations).

Avatar du membre
Mokona
Messages : 357
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Débuter en asm 6809E sur Thomson : petit récapitulatif

Message par Mokona » 26 févr. 2018 10:25

Baptiste a écrit :
26 févr. 2018 09:38
Ensuite, pourquoi n'existe t-il pas une version comme FDUTILS mais pour les K7 ? Aujourd'hui, pour passer un fichier BASIC dans mon fichier K7, je dois utiliser txt2k7.exe sous DOSBOX. Pas vraiment pratique...
Réponse hyper simple : parce que tu ne l'as pas encore fait !

Quand on a un besoin d'outil, qu'il n'existe pas (ou qu'on ne le trouve pas), et que c'est l'affaire de quelques heures de dev (le temps de trouver la doc, de la comprendre et de mettre au point)...

Répondre