Compilateur TURBO BASIC pour Alice 32-90
Modérateurs : Papy.G, fneck, Carl
Re: Compilateur TURBO BASIC pour Alice 32-90
@_Sam_ Je n'avais pas encore poussé le raisonnement aussi loin car pour l'instant je récupère ce qu'il y a dans le BASIC en RAM et comme le BASIC est limité à 255 caractères par ligne (à vérifier sur Alice) je me disais que c'est bon, que je n'aurai pas de trop longues chaînes à récupérer.
Par exemple, dans un PRINT, je démarre après le premier guillemet et je stoppe dès que j'arrive au second.
je le stocke en mémoire et je pourrai le traiter pour de futurs calculs.
Mais je vais être forcément coincé à un moment ou à un autre pour compiler tout ça et je vais devoir appliquer ce que tu préconises.
De toute façon je travaille avec la méthode LEAN : je démarre petit, puis j'améliore par itérations.
P.S : Je sais que la longueur de la ligne de BASIC est définie sur 2 octets avant le numéro, et que le zéro est encodé en ASCII,
mais je vais mettre une ligne REM contenant une routine en langage machine contenant elle même un zéro pour voir si ça pertube le BASIC et s'il prends ça pour une fin de ligne. Je pense que non vu que la longueur de la ligne est fixée sur 2 octets au départ.
J'irai POKE quelques zéros pour le rendre fou.
Juste curieux...
Par exemple, dans un PRINT, je démarre après le premier guillemet et je stoppe dès que j'arrive au second.
je le stocke en mémoire et je pourrai le traiter pour de futurs calculs.
Mais je vais être forcément coincé à un moment ou à un autre pour compiler tout ça et je vais devoir appliquer ce que tu préconises.
De toute façon je travaille avec la méthode LEAN : je démarre petit, puis j'améliore par itérations.
P.S : Je sais que la longueur de la ligne de BASIC est définie sur 2 octets avant le numéro, et que le zéro est encodé en ASCII,
mais je vais mettre une ligne REM contenant une routine en langage machine contenant elle même un zéro pour voir si ça pertube le BASIC et s'il prends ça pour une fin de ligne. Je pense que non vu que la longueur de la ligne est fixée sur 2 octets au départ.
J'irai POKE quelques zéros pour le rendre fou.
Juste curieux...
-
- Messages : 7989
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Compilateur TURBO BASIC pour Alice 32-90
A mon avis la manip de chaines (surtout de 1ère classe) c'est trop ardu pour le moment. Tu devrais regarder les autres modèles purement numériques dans un premier temps. En effet les nombre sont plus faciles à travailler en langage machine.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Compilateur TURBO BASIC pour Alice 32-90
Lecture intéressante pour un débutant : https://www.guru99.com/fr/compiler-tutorial.html
La version française est très mal traduite (traduction automatique).
Voici la version originale : https://www.guru99.com/compiler-tutorial.html
La version française est très mal traduite (traduction automatique).
Voici la version originale : https://www.guru99.com/compiler-tutorial.html
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Compilateur TURBO BASIC pour Alice 32-90
Merci Daniel pour ce lien enrichissant.
Vouloir réinventer la roue, et si possible en commençant par une une roue carré avant de passer à une forme ronde ne fait pas avancer les choses.
L'informatique est une science qui repose donc sur des bases théoriques et techniques solides... et déjà dans les années 80 (et avant).
Donc vouloir commencer petit c'est bien... mais il faut commencer correctement, pas en bidouillant dans tous les sens et en espérant que ça va tomber en marche. Il faut déjà se documenter et apprendre les concepts de base: un compilateur est un outil complexe qui fait appel à beaucoup de notions, et qui dans ce cas demande en plus une maitrise parfaite du langage machine et de l'architecture technique de la machine cible.
Je n'ai pas compris l'idée d'aller chercher le code Basic en RAM par exemple pour générer de manière bancale ce que l'interpréteur fait déjà proprement. Un compilateur prend en entrée un code source, et génère en sortie un code assembleur cible qui sera en général linké puis assemblé.
En fait ce qu'essaie de te dire gentiment Daniel (il est gentil la, je te jure) c'est que tu fais de la merde... et qu'il n'y a rien de pédagogique à faire de la merde, même en première itération, et même si du mets du parfum en seconde itération...
Mon avis. Désolé. Mais chacun est libre de perdre son temps comme il veut bien sur... c'est l'idée de liberté.
Bon courage d'en ton aventure, le principal est d'y trouver du plaisir.
Vouloir réinventer la roue, et si possible en commençant par une une roue carré avant de passer à une forme ronde ne fait pas avancer les choses.
L'informatique est une science qui repose donc sur des bases théoriques et techniques solides... et déjà dans les années 80 (et avant).
Donc vouloir commencer petit c'est bien... mais il faut commencer correctement, pas en bidouillant dans tous les sens et en espérant que ça va tomber en marche. Il faut déjà se documenter et apprendre les concepts de base: un compilateur est un outil complexe qui fait appel à beaucoup de notions, et qui dans ce cas demande en plus une maitrise parfaite du langage machine et de l'architecture technique de la machine cible.
Je n'ai pas compris l'idée d'aller chercher le code Basic en RAM par exemple pour générer de manière bancale ce que l'interpréteur fait déjà proprement. Un compilateur prend en entrée un code source, et génère en sortie un code assembleur cible qui sera en général linké puis assemblé.
En fait ce qu'essaie de te dire gentiment Daniel (il est gentil la, je te jure) c'est que tu fais de la merde... et qu'il n'y a rien de pédagogique à faire de la merde, même en première itération, et même si du mets du parfum en seconde itération...
Mon avis. Désolé. Mais chacun est libre de perdre son temps comme il veut bien sur... c'est l'idée de liberté.
Bon courage d'en ton aventure, le principal est d'y trouver du plaisir.
Re: Compilateur TURBO BASIC pour Alice 32-90
Il y a un compilateur BASIC pour MO5 : Speedy Wonder.
C'est une tentative intéressante, mais assez décevante dans la pratique car limitée à un sous-ensemble d'instructions, avec des contraintes. Par exemple les noms de variables sont limités à un seul caractère. Toutefois, dans l'état, il pourrait servir de modèle pour un compilateur BASIC pour Alice, quitte à le perfectionner ensuite pour le rendre utilisable.
Il y a dans Speedy Wonder quelques idées originales. Par exemple il utilise l'interpréteur BASIC de Microsoft pour le contrôle de syntaxe, ce qui lui évite de le faire lui-même. Il est accompagné d'un pré-compilateur pour formater le programme source et le rendre plus facile à analyser.
On peut le considérer comme une ébauche, pouvant être assez facilement perfectionnée. Idéalement il faudrait le porter sur PC pour s'affranchir des limitations de puissance et de taille mémoire de la machine cible.
C'est une tentative intéressante, mais assez décevante dans la pratique car limitée à un sous-ensemble d'instructions, avec des contraintes. Par exemple les noms de variables sont limités à un seul caractère. Toutefois, dans l'état, il pourrait servir de modèle pour un compilateur BASIC pour Alice, quitte à le perfectionner ensuite pour le rendre utilisable.
Il y a dans Speedy Wonder quelques idées originales. Par exemple il utilise l'interpréteur BASIC de Microsoft pour le contrôle de syntaxe, ce qui lui évite de le faire lui-même. Il est accompagné d'un pré-compilateur pour formater le programme source et le rendre plus facile à analyser.
On peut le considérer comme une ébauche, pouvant être assez facilement perfectionnée. Idéalement il faudrait le porter sur PC pour s'affranchir des limitations de puissance et de taille mémoire de la machine cible.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Compilateur TURBO BASIC pour Alice 32-90
Un lecteur du forum (non inscrit) a vu ce fil de discussion. Il a lui-même développé des compilateurs et conseille ce livre :
https://en.wikipedia.org/wiki/Compilers ... _and_ToolsCompilers Principles, Techniques, and Tools
Alfred Aho, Ravi Sethi, Jeffrey D. Ullman
ISBN 0-201-10088-6
Addison Wesley
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 7989
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Compilateur TURBO BASIC pour Alice 32-90
0ui le fameux livre du dragon, un grand classique que tous les gens ayant fait des études "universitaires" sur la programmation ont (ou devraient avoir) approchés durant leurs études. (Durant les miennes, il était rouge et je n'ai pas connu le vert, c'est dire comment cela ne nous rajeunit pas).
Mais bon c'est bien au dessus de ce dont on parle ici.
A noter: l'un des auteurs (Alfred Aho) est l'auteur de la routine de recherche efficace de motif de caractère (regex) dite de Aho-Corasick utilisée dans commandes Unix GREP et AWK, outils dont il est l'auteur initial et qui sont encore pas mal utilisés de nos jours 45 ans plus tard par tous les Linuxiens de la planète.
Bref, un grand Ancien comme on en fait plus...
Mais bon c'est bien au dessus de ce dont on parle ici.
A noter: l'un des auteurs (Alfred Aho) est l'auteur de la routine de recherche efficace de motif de caractère (regex) dite de Aho-Corasick utilisée dans commandes Unix GREP et AWK, outils dont il est l'auteur initial et qui sont encore pas mal utilisés de nos jours 45 ans plus tard par tous les Linuxiens de la planète.
Bref, un grand Ancien comme on en fait plus...
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Compilateur TURBO BASIC pour Alice 32-90
Je crois qu'après ça on va pouvoir clore le sujet.
Quoique Speedy Wonder mériterait d'être repris et amélioré.
Malheureusement c'est très difficile et il faudrait y passer beaucoup de temps pour un résultat bien maigre.
L'idée d'un compilateur de langage évolué (C, Pascal, Basic, etc.) pour nos micro-ordinateur 8 bits est séduisante. Mais dans la pratique c'est voué à l'échec car il sera toujours plus performant (et pas plus long ni plus compliqué) de programmer directement en assembleur.
Avec l'assemblage sur PC et les tests dans un émulateur, c'est de loin la meilleure solution. Et plus on a d'expérience plus on privilégie cette méthode.
Quoique Speedy Wonder mériterait d'être repris et amélioré.
Malheureusement c'est très difficile et il faudrait y passer beaucoup de temps pour un résultat bien maigre.
L'idée d'un compilateur de langage évolué (C, Pascal, Basic, etc.) pour nos micro-ordinateur 8 bits est séduisante. Mais dans la pratique c'est voué à l'échec car il sera toujours plus performant (et pas plus long ni plus compliqué) de programmer directement en assembleur.
Avec l'assemblage sur PC et les tests dans un émulateur, c'est de loin la meilleure solution. Et plus on a d'expérience plus on privilégie cette méthode.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Compilateur TURBO BASIC pour Alice 32-90
le rouge est là :
https://archive.org/details/compilersprincip0000ahoa
seconde edition :
https://archive.org/details/compilersprincip0002ahoa
https://archive.org/details/compilersprincip0000ahoa
seconde edition :
https://archive.org/details/compilersprincip0002ahoa
Re: Compilateur TURBO BASIC pour Alice 32-90
tu verras que ce ne sera pas clos, car le but n'est pas le compilateur mais la discussion sans fin...Je crois qu'après ça on va pouvoir clore le sujet.
-
- Messages : 7989
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Compilateur TURBO BASIC pour Alice 32-90
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Compilateur TURBO BASIC pour Alice 32-90
Bastien... que de souvenirs, même époque que le TO7, MO5, War Games avec son IMSAI 8080...
Dernière modification par kirion le 10 mars 2024 21:01, modifié 1 fois.
Re: Compilateur TURBO BASIC pour Alice 32-90
Merci Daniel, je le lis de A à Z. Mais si tu trouves Speedy Wonder très décevant, je comprends que pour toi un compilateur, c'est du très haut niveau sinon rien.
Moi je serai déjà content si j'arrive à compiler un PONG par exemple. Et rien ne dit que je ne l'améliorerai pas petit à petit.
Mais comme je vise un truc sympa mais toi tu attends un compilateur de très haut niveau, tu ne pourras qu'être déçu.
Même si vous faîtes fermer mon topic, je continuerai à bidouiller mon compilateur de mon côté tout en créant des jeux pour Alice en assembleur.
Comme le dit Jester, il faut déjà très bien connaître l'Assembleur et l'architecture de la machine. Je suis d'accord avec ça. Excellente façon d'apprendre, même si ce n'est pas la voie traditionnelle. Ceci dit, je créerai sûrement des jeux si je n'avance pas sur le compilateur. Ce serait dommage de se décourager et de tout abandonner. Surtout que je viens d'installer ton émulateur DCalice et il est incroyable ! Félicitations.
Je continuerai d'utiliser le vrai Alice 90 pour 50% du temps car j'aime trop le côté rétro mais ton émulateur est top, donc 50% du temps aussi.
Dernière modification par David.G le 06 mars 2024 03:05, modifié 3 fois.
Re: Compilateur TURBO BASIC pour Alice 32-90
Déjà, félicitations pour ton jeu Sokoban. L'Exelvision est paraît-il en plus un machine particulièrement lente et difficile à programmer.
Donc nous ne sommes pas du tout au même niveau, je ne connais que 3 mnémoniques en assembleur pour le moment. Mais je déguste le livre de Fagot-Baraly donc j'avance.
C'est dit de façon poétique mais je vois l'idée.
Merci, je m'accroche. En fait, j'ai trouvé de bonnes idées dans ce que tu as dit. Faire ça ou passer 20 ans dans le désert à gratter le sol pour trouver des os de dinosaures, chacun trouve une façon intéressante de perdre son temps. D'ailleurs, ordinosaures et dinosaures sont de la même famille non ?
-
- Messages : 1294
- Inscription : 24 déc. 2021 09:46
- Localisation : Région parisienne
Re: Compilateur TURBO BASIC pour Alice 32-90
Très bon bouquin. J'ai encore le mien qui date de mes études. C'est la version française avec le petit dragon rouge.Daniel a écrit : ↑05 mars 2024 13:31 Un lecteur du forum (non inscrit) a vu ce fil de discussion. Il a lui-même développé des compilateurs et conseille ce livre :https://en.wikipedia.org/wiki/Compilers ... _and_ToolsCompilers Principles, Techniques, and Tools
Alfred Aho, Ravi Sethi, Jeffrey D. Ullman
ISBN 0-201-10088-6
Addison Wesley
Purple_dragon_book_b.jpg
Dernière modification par Bernouilli92 le 11 mars 2024 10:09, modifié 1 fois.